From e454b5296ccd541e53aaebaaacf8f5d1c5e1a6dd Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 19 Aug 2023 00:01:06 +0200 Subject: [PATCH 001/356] Feat: initial commit of reactive chainmanager --- go.mod | 6 +- go.sum | 5 + pkg/protocol/chainmanagerv1/chain.go | 57 ++++++++ pkg/protocol/chainmanagerv1/commitment.api.go | 55 +++++++ pkg/protocol/chainmanagerv1/commitment.go | 134 ++++++++++++++++++ pkg/protocol/chainmanagerv1/constants.go | 1 + pkg/protocol/chainmanagerv1/utils.go | 16 +++ tools/evil-spammer/go.mod | 4 +- tools/evil-spammer/go.sum | 2 + tools/gendoc/go.mod | 6 +- tools/gendoc/go.sum | 3 + tools/genesis-snapshot/go.mod | 4 +- tools/genesis-snapshot/go.sum | 2 + 13 files changed, 285 insertions(+), 10 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/chain.go create mode 100644 pkg/protocol/chainmanagerv1/commitment.api.go create mode 100644 pkg/protocol/chainmanagerv1/commitment.go create mode 100644 pkg/protocol/chainmanagerv1/constants.go create mode 100644 pkg/protocol/chainmanagerv1/utils.go diff --git a/go.mod b/go.mod index ea93797c3..9c61f6307 100644 --- a/go.mod +++ b/go.mod @@ -15,7 +15,7 @@ require ( github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d + github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6 github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d @@ -57,7 +57,7 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/eclipse/paho.mqtt.golang v1.4.3 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/ethereum/go-ethereum v1.12.0 // indirect + github.com/ethereum/go-ethereum v1.12.2 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/felixge/fgprof v0.9.3 // indirect github.com/fjl/memsize v0.0.1 // indirect @@ -148,7 +148,7 @@ require ( go.uber.org/fx v1.20.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.25.0 // indirect - golang.org/x/exp v0.0.0-20230724220655-d98519c11495 // indirect + golang.org/x/exp v0.0.0-20230810033253-352e893a4cad // indirect golang.org/x/image v0.9.0 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect diff --git a/go.sum b/go.sum index 802d092ea..d8d261632 100644 --- a/go.sum +++ b/go.sum @@ -95,6 +95,8 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum/go-ethereum v1.12.0 h1:bdnhLPtqETd4m3mS8BGMNvBTf36bO5bx/hxE2zljOa0= github.com/ethereum/go-ethereum v1.12.0/go.mod h1:/oo2X/dZLJjf2mJ6YT9wcWxa4nNJDBKDBU6sFIpx1Gs= +github.com/ethereum/go-ethereum v1.12.2 h1:eGHJ4ij7oyVqUQn48LBz3B7pvQ8sV0wGJiIE6gDq/6Y= +github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= @@ -268,6 +270,8 @@ github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d h1:ggHDv github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d h1:usox/ZLeIDMBs0vyxzxZ4gmqSAGtPEKHF7ss6A/5/R0= github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6 h1:IkP9D1XcpdWiYCbQsql6ZRWlkakgYSCxHTAGthD0qAA= +github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d h1:HvTox3m7aBI4c7iIOqPHFPEIbGh9nBg4plq+MguQy3E= github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d h1:c+tEbtsVysxgtiRHGC/LxaH73p3vRoHu13NKgQLTzMw= @@ -641,6 +645,7 @@ golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98y golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20230724220655-d98519c11495 h1:zKGKw2WlGb8oPoRGqQ2PT8g2YoCN1w/YbbQjHXCdUWE= golang.org/x/exp v0.0.0-20230724220655-d98519c11495/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230810033253-352e893a4cad/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.9.0 h1:QrzfX26snvCM20hIhBwuHI/ThTg18b/+kcKdXHvnR+g= golang.org/x/image v0.9.0/go.mod h1:jtrku+n79PfroUbvDdeUWMAI+heR786BofxrbiSF+J0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go new file mode 100644 index 000000000..3f4479b1d --- /dev/null +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -0,0 +1,57 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + iotago "github.com/iotaledger/iota.go/v4" +) + +const ( + // SyncWindow defines the maximum amount of slots that a node requests on top of its latest verified commitment. + SyncWindow = 20 + + // WarpSyncOffset defines how many slots a commitment needs to be behind the latest commitment to be requested by + // the warp sync process. + WarpSyncOffset = 2 +) + +type Chain struct { + latestCommitmentIndex reactive.Variable[iotago.SlotIndex] + latestVerifiedCommitmentIndex reactive.Variable[iotago.SlotIndex] + + // syncThreshold defines an upper bound for the range of slots that are being fed to the engine as part of the sync + // process (sync from past to present preventing the engine from running out of memory). + syncThreshold reactive.Variable[iotago.SlotIndex] + + // warpSyncThreshold defines a lower bound for where the warp sync process starts (to not requests slots that we are + // about to commit ourselves once we are in sync). + warpSyncThreshold reactive.Variable[iotago.SlotIndex] +} + +func NewChain() *Chain { + c := &Chain{ + latestCommitmentIndex: reactive.NewVariable[*Commitment](), + latestVerifiedCommitmentIndex: reactive.NewVariable[*Commitment](), + } + + c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + return latestVerifiedCommitmentIndex + 1 + SyncWindow + }, c.latestVerifiedCommitmentIndex) + + c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + return latestCommitmentIndex - WarpSyncOffset + }, c.latestCommitmentIndex) + + return c +} + +func (c *Chain) LatestVerifiedCommitmentIndex() reactive.Variable[iotago.SlotIndex] { + return c.latestVerifiedCommitmentIndex +} + +func (c *Chain) SyncThreshold() reactive.Variable[iotago.SlotIndex] { + return c.syncThreshold +} + +func (c *Chain) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { + return c.warpSyncThreshold +} diff --git a/pkg/protocol/chainmanagerv1/commitment.api.go b/pkg/protocol/chainmanagerv1/commitment.api.go new file mode 100644 index 000000000..6808f4807 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment.api.go @@ -0,0 +1,55 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +func (c *Commitment) Chain() reactive.Variable[*Chain] { + return c.chain +} + +func (c *Commitment) Solid() reactive.Event { + return c.solid +} + +func (c *Commitment) Verified() reactive.Event { + return c.verified +} + +func (c *Commitment) ParentVerified() reactive.Event { + return c.parentVerified +} + +func (c *Commitment) BelowSyncThreshold() reactive.Event { + return c.belowSyncThreshold +} + +func (c *Commitment) BelowWarpSyncThreshold() reactive.Event { + return c.belowWarpSyncThreshold +} + +func (c *Commitment) BelowLatestVerifiedCommitment() reactive.Event { + return c.belowLatestVerifiedCommitment +} + +func (c *Commitment) Evicted() reactive.Event { + return c.evicted +} + +func (c *Commitment) ParentAboveLatestVerifiedCommitment() reactive.Variable[bool] { + return c.parentAboveLatestVerifiedCommitment +} + +func (c *Commitment) AboveLatestVerifiedCommitment() reactive.Variable[bool] { + return c.aboveLatestVerifiedCommitment +} + +func (c *Commitment) InSyncWindow() reactive.Variable[bool] { + return c.inSyncWindow +} + +func (c *Commitment) RequiresWarpSync() reactive.Variable[bool] { + return c.requiresWarpSync +} + +func (c *Commitment) ChainSuccessor() reactive.Variable[*Commitment] { + return c.chainSuccessor +} diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go new file mode 100644 index 000000000..68261f329 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -0,0 +1,134 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/iota-core/pkg/model" + iotago "github.com/iotaledger/iota.go/v4" +) + +type Commitment struct { + *model.Commitment + + chain reactive.Variable[*Chain] + solid reactive.Event + verified reactive.Event + parentVerified reactive.Event + belowSyncThreshold reactive.Event + belowWarpSyncThreshold reactive.Event + belowLatestVerifiedCommitment reactive.Event + evicted reactive.Event + parentAboveLatestVerifiedCommitment reactive.Variable[bool] + aboveLatestVerifiedCommitment reactive.Variable[bool] + inSyncWindow reactive.Variable[bool] + requiresWarpSync reactive.Variable[bool] + chainSuccessor reactive.Variable[*Commitment] +} + +func NewCommitment(commitment *model.Commitment) *Commitment { + c := &Commitment{ + Commitment: commitment, + + chain: reactive.NewVariable[*Chain](trapdoor), + solid: reactive.NewEvent(), + verified: reactive.NewEvent(), + parentVerified: reactive.NewEvent(), + belowSyncThreshold: reactive.NewEvent(), + belowWarpSyncThreshold: reactive.NewEvent(), + belowLatestVerifiedCommitment: reactive.NewEvent(), + evicted: reactive.NewEvent(), + parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), + chainSuccessor: reactive.NewVariable[*Commitment](), + } + + c.aboveLatestVerifiedCommitment = reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentVerified, verified bool) bool { + return parentAboveLatestVerifiedCommitment || (parentVerified && !verified) + }, c.parentAboveLatestVerifiedCommitment, c.parentVerified, c.verified) + + c.inSyncWindow = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { + return belowSyncThreshold && aboveLatestVerifiedCommitment + }, c.belowSyncThreshold, c.aboveLatestVerifiedCommitment) + + c.requiresWarpSync = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { + return inSyncWindow && belowWarpSyncThreshold + }, c.inSyncWindow, c.belowWarpSyncThreshold) + + return c +} + +func (c *Commitment) RegisterParent(parent *Commitment) { + parent.RegisterChild(c, c.inheritChain(parent)) + + c.solid.InheritFrom(parent.solid) + c.parentVerified.InheritFrom(parent.verified) + c.parentAboveLatestVerifiedCommitment.InheritFrom(parent.aboveLatestVerifiedCommitment) + + // triggerEventIfIndexBelowThreshold triggers the given event if the commitment's index is below the given chain + // threshold. It only monitors the chain threshold after the corresponding parent event was triggered (to avoid + // unnecessary listeners by the chain property to unaffected commitments). + triggerEventIfIndexBelowThreshold := func(eventFunc func(*Commitment) reactive.Event, thresholdFunc func(*Chain) reactive.Variable[iotago.SlotIndex]) { + eventFunc(parent).OnTrigger(func() { + unsubscribe := thresholdFunc(c.chain.Get()).OnUpdate(func(_, latestVerifiedCommitmentIndex iotago.SlotIndex) { + if c.Index() < latestVerifiedCommitmentIndex { + eventFunc(c).Trigger() + } + }) + + eventFunc(c).OnTrigger(unsubscribe) + }) + } + + triggerEventIfIndexBelowThreshold((*Commitment).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedCommitmentIndex) + triggerEventIfIndexBelowThreshold((*Commitment).BelowSyncThreshold, (*Chain).SyncThreshold) + triggerEventIfIndexBelowThreshold((*Commitment).BelowWarpSyncThreshold, (*Chain).WarpSyncThreshold) +} + +func (c *Commitment) RegisterChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { + c.chainSuccessor.Compute(func(currentSuccessor *Commitment) *Commitment { + return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) + }) + + unsubscribe := c.chainSuccessor.OnUpdate(onSuccessorUpdated) + + c.evicted.OnTrigger(unsubscribe) +} + +// inheritChain returns a function that implements the chain inheritance rules. +// +// It must be called whenever the successor of the parent changes as we spawn a new chain for each child that is not the +// direct successor of a parent, and we inherit its chain otherwise. +func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { + var ( + spawnedChain *Chain + unsubscribe func() + ) + + return func(_, successor *Commitment) { + switch successor { + case nil: + panic("successor must not be nil") + case c: + if spawnedChain != nil { + // TODO: spawnedChain.Dispose() + spawnedChain = nil + } + + if unsubscribe == nil { + unsubscribe = parent.chain.OnUpdate(func(_, chain *Chain) { + c.chain.Set(chain) + }) + } + default: + if unsubscribe != nil { + unsubscribe() + unsubscribe = nil + } + + if spawnedChain == nil { + spawnedChain = NewChain() + + c.chain.Set(spawnedChain) + } + } + } +} diff --git a/pkg/protocol/chainmanagerv1/constants.go b/pkg/protocol/chainmanagerv1/constants.go new file mode 100644 index 000000000..3534c2169 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/constants.go @@ -0,0 +1 @@ +package chainmanagerv1 diff --git a/pkg/protocol/chainmanagerv1/utils.go b/pkg/protocol/chainmanagerv1/utils.go new file mode 100644 index 000000000..29a123425 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/utils.go @@ -0,0 +1,16 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" +) + +func trapdoor(currentValue *Chain, newValue *Chain) *Chain { + return lo.Cond(currentValue != nil, currentValue, newValue) +} + +func inheritTo(target reactive.Variable[bool]) func(bool, bool) { + return func(_, newValue bool) { + target.Set(newValue) + } +} diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index a00f6e395..a69aa654c 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -10,7 +10,7 @@ require ( github.com/AlecAivazis/survey/v2 v2.3.7 github.com/iotaledger/hive.go/app v0.0.0-20230817124507-83988a14d80d github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d + github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6 github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d github.com/iotaledger/hive.go/logger v0.0.0-20230817124507-83988a14d80d @@ -28,7 +28,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/eclipse/paho.mqtt.golang v1.4.3 // indirect - github.com/ethereum/go-ethereum v1.12.0 // indirect + github.com/ethereum/go-ethereum v1.12.2 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/google/go-cmp v0.5.9 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index f04154c84..196a3c092 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -61,6 +61,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum/go-ethereum v1.12.0 h1:bdnhLPtqETd4m3mS8BGMNvBTf36bO5bx/hxE2zljOa0= github.com/ethereum/go-ethereum v1.12.0/go.mod h1:/oo2X/dZLJjf2mJ6YT9wcWxa4nNJDBKDBU6sFIpx1Gs= +github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= @@ -177,6 +178,7 @@ github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d h1:ggHDv github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d h1:usox/ZLeIDMBs0vyxzxZ4gmqSAGtPEKHF7ss6A/5/R0= github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d h1:HvTox3m7aBI4c7iIOqPHFPEIbGh9nBg4plq+MguQy3E= github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d h1:c+tEbtsVysxgtiRHGC/LxaH73p3vRoHu13NKgQLTzMw= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 502e42502..41c54c3dc 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -25,7 +25,7 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/eclipse/paho.mqtt.golang v1.4.3 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/ethereum/go-ethereum v1.12.0 // indirect + github.com/ethereum/go-ethereum v1.12.2 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/fbiville/markdown-table-formatter v0.3.0 // indirect github.com/felixge/fgprof v0.9.3 // indirect @@ -58,7 +58,7 @@ require ( github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d // indirect github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d // indirect github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6 // indirect github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d // indirect github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d // indirect github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d // indirect @@ -147,7 +147,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.25.0 // indirect golang.org/x/crypto v0.12.0 // indirect - golang.org/x/exp v0.0.0-20230724220655-d98519c11495 // indirect + golang.org/x/exp v0.0.0-20230810033253-352e893a4cad // indirect golang.org/x/image v0.9.0 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index cd2c71afc..7add7885b 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -95,6 +95,7 @@ github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum/go-ethereum v1.12.0 h1:bdnhLPtqETd4m3mS8BGMNvBTf36bO5bx/hxE2zljOa0= github.com/ethereum/go-ethereum v1.12.0/go.mod h1:/oo2X/dZLJjf2mJ6YT9wcWxa4nNJDBKDBU6sFIpx1Gs= +github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= @@ -270,6 +271,7 @@ github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d h1:ggHDv github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d h1:usox/ZLeIDMBs0vyxzxZ4gmqSAGtPEKHF7ss6A/5/R0= github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d h1:HvTox3m7aBI4c7iIOqPHFPEIbGh9nBg4plq+MguQy3E= github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d h1:c+tEbtsVysxgtiRHGC/LxaH73p3vRoHu13NKgQLTzMw= @@ -640,6 +642,7 @@ golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98y golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20230724220655-d98519c11495 h1:zKGKw2WlGb8oPoRGqQ2PT8g2YoCN1w/YbbQjHXCdUWE= golang.org/x/exp v0.0.0-20230724220655-d98519c11495/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230810033253-352e893a4cad/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.9.0 h1:QrzfX26snvCM20hIhBwuHI/ThTg18b/+kcKdXHvnR+g= golang.org/x/image v0.9.0/go.mod h1:jtrku+n79PfroUbvDdeUWMAI+heR786BofxrbiSF+J0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 70ab10d63..8ae8ffb82 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -21,7 +21,7 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect - github.com/ethereum/go-ethereum v1.12.0 // indirect + github.com/ethereum/go-ethereum v1.12.2 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/uuid v1.3.0 // indirect github.com/holiman/uint256 v1.2.3 // indirect @@ -30,7 +30,7 @@ require ( github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d // indirect github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d // indirect github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6 // indirect github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d // indirect github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d // indirect github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 1525a96aa..42ee486c7 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -12,6 +12,7 @@ github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etly github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/ethereum/go-ethereum v1.12.0 h1:bdnhLPtqETd4m3mS8BGMNvBTf36bO5bx/hxE2zljOa0= github.com/ethereum/go-ethereum v1.12.0/go.mod h1:/oo2X/dZLJjf2mJ6YT9wcWxa4nNJDBKDBU6sFIpx1Gs= +github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= github.com/fjl/memsize v0.0.1 h1:+zhkb+dhUgx0/e+M8sF0QqiouvMQUiKR+QYvdxIOKcQ= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= @@ -35,6 +36,7 @@ github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d h1:ggHDv github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d h1:usox/ZLeIDMBs0vyxzxZ4gmqSAGtPEKHF7ss6A/5/R0= github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d h1:HvTox3m7aBI4c7iIOqPHFPEIbGh9nBg4plq+MguQy3E= github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d h1:c+tEbtsVysxgtiRHGC/LxaH73p3vRoHu13NKgQLTzMw= From 5009a8448567b56e151b7efc1d6cc6a5678e0e5c Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 19 Aug 2023 00:04:59 +0200 Subject: [PATCH 002/356] Refactor: removed unused code --- pkg/protocol/chainmanagerv1/commitment.go | 2 +- pkg/protocol/chainmanagerv1/constants.go | 1 - pkg/protocol/chainmanagerv1/utils.go | 16 ---------------- 3 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 pkg/protocol/chainmanagerv1/constants.go delete mode 100644 pkg/protocol/chainmanagerv1/utils.go diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 68261f329..ee41e9aa3 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -29,7 +29,7 @@ func NewCommitment(commitment *model.Commitment) *Commitment { c := &Commitment{ Commitment: commitment, - chain: reactive.NewVariable[*Chain](trapdoor), + chain: reactive.NewVariable[*Chain](), solid: reactive.NewEvent(), verified: reactive.NewEvent(), parentVerified: reactive.NewEvent(), diff --git a/pkg/protocol/chainmanagerv1/constants.go b/pkg/protocol/chainmanagerv1/constants.go deleted file mode 100644 index 3534c2169..000000000 --- a/pkg/protocol/chainmanagerv1/constants.go +++ /dev/null @@ -1 +0,0 @@ -package chainmanagerv1 diff --git a/pkg/protocol/chainmanagerv1/utils.go b/pkg/protocol/chainmanagerv1/utils.go deleted file mode 100644 index 29a123425..000000000 --- a/pkg/protocol/chainmanagerv1/utils.go +++ /dev/null @@ -1,16 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/lo" -) - -func trapdoor(currentValue *Chain, newValue *Chain) *Chain { - return lo.Cond(currentValue != nil, currentValue, newValue) -} - -func inheritTo(target reactive.Variable[bool]) func(bool, bool) { - return func(_, newValue bool) { - target.Set(newValue) - } -} From ae35238f457e9eb44ffd61aac846ded988f4b6df Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 19 Aug 2023 01:43:13 +0200 Subject: [PATCH 003/356] Feat: improved code --- pkg/protocol/chainmanagerv1/chain.go | 17 +++- pkg/protocol/chainmanagerv1/commitment.api.go | 55 ------------- .../chainmanagerv1/commitment_metadata.api.go | 55 +++++++++++++ .../{commitment.go => commitment_metadata.go} | 81 +++++++++++-------- .../commitment_metadata_test.go | 53 ++++++++++++ 5 files changed, 170 insertions(+), 91 deletions(-) delete mode 100644 pkg/protocol/chainmanagerv1/commitment.api.go create mode 100644 pkg/protocol/chainmanagerv1/commitment_metadata.api.go rename pkg/protocol/chainmanagerv1/{commitment.go => commitment_metadata.go} (50%) create mode 100644 pkg/protocol/chainmanagerv1/commitment_metadata_test.go diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 3f4479b1d..61abf2780 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -1,6 +1,8 @@ package chainmanagerv1 import ( + "fmt" + "github.com/iotaledger/hive.go/ds/reactive" iotago "github.com/iotaledger/iota.go/v4" ) @@ -18,6 +20,8 @@ type Chain struct { latestCommitmentIndex reactive.Variable[iotago.SlotIndex] latestVerifiedCommitmentIndex reactive.Variable[iotago.SlotIndex] + evicted reactive.Event + // syncThreshold defines an upper bound for the range of slots that are being fed to the engine as part of the sync // process (sync from past to present preventing the engine from running out of memory). syncThreshold reactive.Variable[iotago.SlotIndex] @@ -29,8 +33,9 @@ type Chain struct { func NewChain() *Chain { c := &Chain{ - latestCommitmentIndex: reactive.NewVariable[*Commitment](), - latestVerifiedCommitmentIndex: reactive.NewVariable[*Commitment](), + evicted: reactive.NewEvent(), + latestCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), + latestVerifiedCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), } c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { @@ -44,6 +49,14 @@ func NewChain() *Chain { return c } +func (c *Chain) RegisterCommitment(commitment *CommitmentMetadata) { + fmt.Println("RegisterCommitment", commitment.ID(), "as index", commitment.Index()) +} + +func (c *Chain) UnregisterCommitment(commitment *CommitmentMetadata) { + fmt.Println("UnregisterCommitment", commitment.ID(), "as index", commitment.Index()) +} + func (c *Chain) LatestVerifiedCommitmentIndex() reactive.Variable[iotago.SlotIndex] { return c.latestVerifiedCommitmentIndex } diff --git a/pkg/protocol/chainmanagerv1/commitment.api.go b/pkg/protocol/chainmanagerv1/commitment.api.go deleted file mode 100644 index 6808f4807..000000000 --- a/pkg/protocol/chainmanagerv1/commitment.api.go +++ /dev/null @@ -1,55 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/ds/reactive" - -func (c *Commitment) Chain() reactive.Variable[*Chain] { - return c.chain -} - -func (c *Commitment) Solid() reactive.Event { - return c.solid -} - -func (c *Commitment) Verified() reactive.Event { - return c.verified -} - -func (c *Commitment) ParentVerified() reactive.Event { - return c.parentVerified -} - -func (c *Commitment) BelowSyncThreshold() reactive.Event { - return c.belowSyncThreshold -} - -func (c *Commitment) BelowWarpSyncThreshold() reactive.Event { - return c.belowWarpSyncThreshold -} - -func (c *Commitment) BelowLatestVerifiedCommitment() reactive.Event { - return c.belowLatestVerifiedCommitment -} - -func (c *Commitment) Evicted() reactive.Event { - return c.evicted -} - -func (c *Commitment) ParentAboveLatestVerifiedCommitment() reactive.Variable[bool] { - return c.parentAboveLatestVerifiedCommitment -} - -func (c *Commitment) AboveLatestVerifiedCommitment() reactive.Variable[bool] { - return c.aboveLatestVerifiedCommitment -} - -func (c *Commitment) InSyncWindow() reactive.Variable[bool] { - return c.inSyncWindow -} - -func (c *Commitment) RequiresWarpSync() reactive.Variable[bool] { - return c.requiresWarpSync -} - -func (c *Commitment) ChainSuccessor() reactive.Variable[*Commitment] { - return c.chainSuccessor -} diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.api.go b/pkg/protocol/chainmanagerv1/commitment_metadata.api.go new file mode 100644 index 000000000..ed0ffdd8f --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.api.go @@ -0,0 +1,55 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +func (c *CommitmentMetadata) Chain() reactive.Variable[*Chain] { + return c.chain +} + +func (c *CommitmentMetadata) Solid() reactive.Event { + return c.solid +} + +func (c *CommitmentMetadata) Verified() reactive.Event { + return c.verified +} + +func (c *CommitmentMetadata) ParentVerified() reactive.Event { + return c.parentVerified +} + +func (c *CommitmentMetadata) BelowSyncThreshold() reactive.Event { + return c.belowSyncThreshold +} + +func (c *CommitmentMetadata) BelowWarpSyncThreshold() reactive.Event { + return c.belowWarpSyncThreshold +} + +func (c *CommitmentMetadata) BelowLatestVerifiedCommitment() reactive.Event { + return c.belowLatestVerifiedCommitment +} + +func (c *CommitmentMetadata) Evicted() reactive.Event { + return c.evicted +} + +func (c *CommitmentMetadata) ParentAboveLatestVerifiedCommitment() reactive.Variable[bool] { + return c.parentAboveLatestVerifiedCommitment +} + +func (c *CommitmentMetadata) AboveLatestVerifiedCommitment() reactive.Variable[bool] { + return c.aboveLatestVerifiedCommitment +} + +func (c *CommitmentMetadata) InSyncWindow() reactive.Variable[bool] { + return c.inSyncWindow +} + +func (c *CommitmentMetadata) RequiresWarpSync() reactive.Variable[bool] { + return c.requiresWarpSync +} + +func (c *CommitmentMetadata) ChainSuccessor() reactive.Variable[*CommitmentMetadata] { + return c.chainSuccessor +} diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go similarity index 50% rename from pkg/protocol/chainmanagerv1/commitment.go rename to pkg/protocol/chainmanagerv1/commitment_metadata.go index ee41e9aa3..de9d79bd6 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -7,26 +7,27 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -type Commitment struct { +type CommitmentMetadata struct { *model.Commitment - chain reactive.Variable[*Chain] - solid reactive.Event - verified reactive.Event - parentVerified reactive.Event - belowSyncThreshold reactive.Event - belowWarpSyncThreshold reactive.Event - belowLatestVerifiedCommitment reactive.Event - evicted reactive.Event - parentAboveLatestVerifiedCommitment reactive.Variable[bool] - aboveLatestVerifiedCommitment reactive.Variable[bool] - inSyncWindow reactive.Variable[bool] - requiresWarpSync reactive.Variable[bool] - chainSuccessor reactive.Variable[*Commitment] + chain reactive.Variable[*Chain] + solid reactive.Event + verified reactive.Event + parentVerified reactive.Event + belowSyncThreshold reactive.Event + belowWarpSyncThreshold reactive.Event + belowLatestVerifiedCommitment reactive.Event + evicted reactive.Event + parentAboveLatestVerifiedCommitment reactive.Variable[bool] + directlyAboveLatestVerifiedCommitment reactive.Variable[bool] + aboveLatestVerifiedCommitment reactive.Variable[bool] + inSyncWindow reactive.Variable[bool] + requiresWarpSync reactive.Variable[bool] + chainSuccessor reactive.Variable[*CommitmentMetadata] } -func NewCommitment(commitment *model.Commitment) *Commitment { - c := &Commitment{ +func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { + c := &CommitmentMetadata{ Commitment: commitment, chain: reactive.NewVariable[*Chain](), @@ -38,12 +39,16 @@ func NewCommitment(commitment *model.Commitment) *Commitment { belowLatestVerifiedCommitment: reactive.NewEvent(), evicted: reactive.NewEvent(), parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - chainSuccessor: reactive.NewVariable[*Commitment](), + chainSuccessor: reactive.NewVariable[*CommitmentMetadata](), } - c.aboveLatestVerifiedCommitment = reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentVerified, verified bool) bool { - return parentAboveLatestVerifiedCommitment || (parentVerified && !verified) - }, c.parentAboveLatestVerifiedCommitment, c.parentVerified, c.verified) + c.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { + return parentVerified && !verified + }, c.parentVerified, c.verified) + + c.aboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { + return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment + }, c.directlyAboveLatestVerifiedCommitment, c.parentAboveLatestVerifiedCommitment) c.inSyncWindow = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { return belowSyncThreshold && aboveLatestVerifiedCommitment @@ -53,20 +58,28 @@ func NewCommitment(commitment *model.Commitment) *Commitment { return inSyncWindow && belowWarpSyncThreshold }, c.inSyncWindow, c.belowWarpSyncThreshold) + c.chain.OnUpdate(func(oldChain, newChain *Chain) { + if oldChain != nil { + oldChain.UnregisterCommitment(c) + } + + newChain.RegisterCommitment(c) + }) + return c } -func (c *Commitment) RegisterParent(parent *Commitment) { +func (c *CommitmentMetadata) RegisterParent(parent *CommitmentMetadata) { parent.RegisterChild(c, c.inheritChain(parent)) c.solid.InheritFrom(parent.solid) c.parentVerified.InheritFrom(parent.verified) c.parentAboveLatestVerifiedCommitment.InheritFrom(parent.aboveLatestVerifiedCommitment) - // triggerEventIfIndexBelowThreshold triggers the given event if the commitment's index is below the given chain - // threshold. It only monitors the chain threshold after the corresponding parent event was triggered (to avoid - // unnecessary listeners by the chain property to unaffected commitments). - triggerEventIfIndexBelowThreshold := func(eventFunc func(*Commitment) reactive.Event, thresholdFunc func(*Chain) reactive.Variable[iotago.SlotIndex]) { + // triggerEventIfIndexBelowThreshold triggers the given event if the commitment's index is below the given + // threshold. We only monitor the threshold after the corresponding parent event was triggered (to minimize + // the amount of elements that listen to updates of the same property). + triggerEventIfIndexBelowThreshold := func(eventFunc func(*CommitmentMetadata) reactive.Event, thresholdFunc func(*Chain) reactive.Variable[iotago.SlotIndex]) { eventFunc(parent).OnTrigger(func() { unsubscribe := thresholdFunc(c.chain.Get()).OnUpdate(func(_, latestVerifiedCommitmentIndex iotago.SlotIndex) { if c.Index() < latestVerifiedCommitmentIndex { @@ -78,13 +91,13 @@ func (c *Commitment) RegisterParent(parent *Commitment) { }) } - triggerEventIfIndexBelowThreshold((*Commitment).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedCommitmentIndex) - triggerEventIfIndexBelowThreshold((*Commitment).BelowSyncThreshold, (*Chain).SyncThreshold) - triggerEventIfIndexBelowThreshold((*Commitment).BelowWarpSyncThreshold, (*Chain).WarpSyncThreshold) + triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedCommitmentIndex) + triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowSyncThreshold, (*Chain).SyncThreshold) + triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowWarpSyncThreshold, (*Chain).WarpSyncThreshold) } -func (c *Commitment) RegisterChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { - c.chainSuccessor.Compute(func(currentSuccessor *Commitment) *Commitment { +func (c *CommitmentMetadata) RegisterChild(newChild *CommitmentMetadata, onSuccessorUpdated func(*CommitmentMetadata, *CommitmentMetadata)) { + c.chainSuccessor.Compute(func(currentSuccessor *CommitmentMetadata) *CommitmentMetadata { return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) }) @@ -97,19 +110,19 @@ func (c *Commitment) RegisterChild(newChild *Commitment, onSuccessorUpdated func // // It must be called whenever the successor of the parent changes as we spawn a new chain for each child that is not the // direct successor of a parent, and we inherit its chain otherwise. -func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { +func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*CommitmentMetadata, *CommitmentMetadata) { var ( spawnedChain *Chain unsubscribe func() ) - return func(_, successor *Commitment) { + return func(_, successor *CommitmentMetadata) { switch successor { case nil: - panic("successor must not be nil") + panic("successor must never be changed back to nil") case c: if spawnedChain != nil { - // TODO: spawnedChain.Dispose() + spawnedChain.evicted.Trigger() spawnedChain = nil } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata_test.go b/pkg/protocol/chainmanagerv1/commitment_metadata_test.go new file mode 100644 index 000000000..c344eb17a --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment_metadata_test.go @@ -0,0 +1,53 @@ +package chainmanagerv1 + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/iotaledger/iota-core/pkg/model" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/tpkg" +) + +func TestCommitment(t *testing.T) { + testAPI := tpkg.TestAPI + + rootChain := NewChain() + + rootCommitment := model.NewEmptyCommitment(testAPI) + rootCommitmentMetadata := NewCommitmentMetadata(rootCommitment) + rootCommitmentMetadata.Chain().Set(rootChain) + rootCommitmentMetadata.Solid().Trigger() + rootCommitmentMetadata.Verified().Trigger() + rootCommitmentMetadata.BelowSyncThreshold().Trigger() + rootCommitmentMetadata.BelowWarpSyncThreshold().Trigger() + rootCommitmentMetadata.BelowLatestVerifiedCommitment().Trigger() + + commitment1, err := model.CommitmentFromCommitment(iotago.NewCommitment(1, rootCommitment.Index()+1, rootCommitment.ID(), rootCommitmentMetadata.RootsID(), 1, 1), testAPI) + require.NoError(t, err) + + commitment1Metadata := NewCommitmentMetadata(commitment1) + commitment1Metadata.RegisterParent(rootCommitmentMetadata) + + require.True(t, commitment1Metadata.Solid().Get()) + require.Equal(t, rootChain, commitment1Metadata.Chain().Get()) + require.True(t, commitment1Metadata.AboveLatestVerifiedCommitment().Get()) + + commitment2, err := model.CommitmentFromCommitment(iotago.NewCommitment(1, commitment1Metadata.Index()+1, rootCommitment.ID(), rootCommitmentMetadata.RootsID(), 1, 1), testAPI) + require.NoError(t, err) + + commitment2Metadata := NewCommitmentMetadata(commitment2) + commitment2Metadata.RegisterParent(commitment1Metadata) + + require.True(t, commitment2Metadata.Solid().Get()) + require.Equal(t, rootChain, commitment2Metadata.Chain().Get()) + require.True(t, commitment2Metadata.AboveLatestVerifiedCommitment().Get()) + + commitment1Metadata.Verified().Trigger() + + require.False(t, commitment1Metadata.AboveLatestVerifiedCommitment().Get()) + require.True(t, commitment2Metadata.Solid().Get()) + require.Equal(t, rootChain, commitment2Metadata.Chain().Get()) + require.True(t, commitment2Metadata.AboveLatestVerifiedCommitment().Get()) +} From 8f27c3428e5e1f29cf662f5077421a0ddd31ca2d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 20 Aug 2023 02:38:18 +0200 Subject: [PATCH 004/356] Feat: added ChainManager --- pkg/protocol/chainmanagerv1/chainmanager.go | 199 ++++++++++++++++++ .../chainmanagerv1/chainmanager_test.go | 57 +++++ 2 files changed, 256 insertions(+) create mode 100644 pkg/protocol/chainmanagerv1/chainmanager.go create mode 100644 pkg/protocol/chainmanagerv1/chainmanager_test.go diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go new file mode 100644 index 000000000..7240b06ab --- /dev/null +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -0,0 +1,199 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/runtime/event" + "github.com/iotaledger/iota-core/pkg/core/promise" + "github.com/iotaledger/iota-core/pkg/model" + iotago "github.com/iotaledger/iota.go/v4" +) + +type ChainManager struct { + rootChain *Chain + + rootCommitment reactive.Variable[*CommitmentMetadata] + + commitmentCreated *event.Event1[*CommitmentMetadata] + + cachedCommitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]] + + commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + + slotEvictionEvents *shrinkingmap.ShrinkingMap[iotago.SlotIndex, reactive.Event] + + lastEvictedSlotIndex reactive.Variable[iotago.SlotIndex] +} + +func NewChainManager() *ChainManager { + return &ChainManager{ + rootChain: NewChain(), + rootCommitment: reactive.NewVariable[*CommitmentMetadata](), + commitmentCreated: event.New1[*CommitmentMetadata](), + cachedCommitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), + commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + slotEvictionEvents: shrinkingmap.New[iotago.SlotIndex, reactive.Event](), + lastEvictedSlotIndex: reactive.NewVariable[iotago.SlotIndex](), + } +} + +func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata, err error) { + var prevRootToEvict *CommitmentMetadata + + c.rootCommitment.Compute(func(currentRoot *CommitmentMetadata) *CommitmentMetadata { + if prevRootToEvict = currentRoot; currentRoot != nil { + if currentRoot.Index() > commitment.Index() { + err = ierrors.Errorf("cannot set root commitment with lower index %s than current root commitment index %s", commitment.Index(), currentRoot.Index()) + return currentRoot + } + + if currentRoot.Index() == commitment.Index() && currentRoot.ID() != commitment.ID() { + err = ierrors.Errorf("cannot set root commitment with same index %s but different id %s than current root commitment id %s", commitment.Index(), commitment.ID(), currentRoot.ID()) + return currentRoot + } + } + + commitmentRequest, requestCreated := c.cachedCommitments.GetOrCreate(commitment.ID(), lo.NoVariadic(promise.New[*CommitmentMetadata])) + commitmentRequest.OnSuccess(func(resolvedMetadata *CommitmentMetadata) { + commitmentMetadata = resolvedMetadata + commitmentMetadata.Chain().Set(c.rootChain) + commitmentMetadata.Solid().Trigger() + commitmentMetadata.Verified().Trigger() + commitmentMetadata.BelowSyncThreshold().Trigger() + commitmentMetadata.BelowWarpSyncThreshold().Trigger() + commitmentMetadata.BelowLatestVerifiedCommitment().Trigger() + + if requestCreated { + c.commitmentCreated.Trigger(commitmentMetadata) + + commitmentMetadata.Evicted().OnTrigger(func() { + c.cachedCommitments.Delete(commitment.ID()) + }) + } + }) + commitmentRequest.Resolve(NewCommitmentMetadata(commitment)) + + return commitmentMetadata + }) + + if err != nil { + return nil, err + } + + if prevRootToEvict != nil { + prevRootToEvict.Evicted().Trigger() + } + + return commitmentMetadata, nil +} + +func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata) { + if commitmentRequest, _ := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *CommitmentMetadata) { + commitmentMetadata = resolvedMetadata + }); commitmentRequest != nil { + commitmentRequest.Resolve(NewCommitmentMetadata(commitment)) + } + + return commitmentMetadata +} + +func (c *ChainManager) OnCommitmentCreated(callback func(commitment *CommitmentMetadata)) (unsubscribe func()) { + return c.commitmentCreated.Hook(callback).Unhook +} + +func (c *ChainManager) SlotEvictedEvent(index iotago.SlotIndex) (slotEvictedEvent reactive.Event) { + c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex iotago.SlotIndex) iotago.SlotIndex { + if index > lastEvictedSlotIndex { + slotEvictedEvent, _ = c.slotEvictionEvents.GetOrCreate(index, reactive.NewEvent) + } else { + slotEvictedEvent = triggeredEvent + } + + return lastEvictedSlotIndex + }) + + return slotEvictedEvent +} + +func (c *ChainManager) Evict(slotIndex iotago.SlotIndex) { + slotEvictedEventsToTrigger := make([]reactive.Event, 0) + + c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex iotago.SlotIndex) iotago.SlotIndex { + if slotIndex <= lastEvictedSlotIndex { + return lastEvictedSlotIndex + } + + for i := lastEvictedSlotIndex + 1; i <= slotIndex; i++ { + if slotEvictedEvent, exists := c.slotEvictionEvents.Get(i); exists { + slotEvictedEventsToTrigger = append(slotEvictedEventsToTrigger, slotEvictedEvent) + } + } + + return slotIndex + }) + + for _, slotEvictedEvent := range slotEvictedEventsToTrigger { + slotEvictedEvent.Trigger() + } +} + +func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { + if rootCommitment := c.rootCommitment.Get(); rootCommitment != nil && commitment.PrevID() == rootCommitment.ID() { + commitment.RegisterParent(rootCommitment) + } else { + c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.RegisterParent) + } + + slotEvictedEvent.OnTrigger(func() { + if c.rootCommitment.Get().ID() != commitment.ID() { + commitment.Evicted().Trigger() + } + }) + + c.commitmentCreated.Trigger(commitment) +} + +func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.SlotIndex, requestIfMissing bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata], requestCreated bool) { + rootCommitment := c.rootCommitment.Get() + + if slotEvictedEvent := c.SlotEvictedEvent(index); !slotEvictedEvent.WasTriggered() || rootCommitment != nil && rootCommitment.ID() == id { + if commitmentRequest, requestCreated = c.cachedCommitments.GetOrCreate(id, lo.NoVariadic(promise.New[*CommitmentMetadata])); requestCreated { + if requestIfMissing { + c.commitmentRequester.StartTicker(id) + } + + commitmentRequest.OnSuccess(func(commitment *CommitmentMetadata) { + if requestIfMissing { + c.commitmentRequester.StopTicker(commitment.ID()) + } + + c.setupCommitment(commitment, slotEvictedEvent) + }) + + slotEvictedEvent.OnTrigger(func() { + if rootCommitment == nil || id != c.rootCommitment.Get().ID() { + c.cachedCommitments.Delete(id) + } else { + rootCommitment.Evicted().OnTrigger(func() { + c.cachedCommitments.Delete(id) + }) + } + }) + } + + for _, successCallback := range optSuccessCallbacks { + commitmentRequest.OnSuccess(successCallback) + } + } + + return commitmentRequest, requestCreated +} + +var triggeredEvent = reactive.NewEvent() + +func init() { + triggeredEvent.Trigger() +} diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go new file mode 100644 index 000000000..c1037ea5d --- /dev/null +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -0,0 +1,57 @@ +package chainmanagerv1 + +import ( + "testing" + + "github.com/stretchr/testify/require" + + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/iota-core/pkg/model" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/tpkg" +) + +func TestChainManager(t *testing.T) { + testAPI := tpkg.TestAPI + + chainManager := NewChainManager() + + rootCommitment := lo.PanicOnErr(chainManager.SetRootCommitment(model.NewEmptyCommitment(testAPI))) + commitment1Metadata := chainManager.ProcessCommitment(lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), + rootCommitment.Index()+1, + rootCommitment.ID(), + rootCommitment.RootsID(), + 1, + 1, + ), testAPI))) + + commitment2 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), + commitment1Metadata.Index()+1, + commitment1Metadata.ID(), + commitment1Metadata.RootsID(), + 2, + 2, + ), testAPI)) + + commitment3Metadata := chainManager.ProcessCommitment(lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), + commitment2.Index()+1, + commitment2.ID(), + commitment2.RootsID(), + 2, + 2, + ), testAPI))) + + require.True(t, commitment1Metadata.Solid().Get()) + require.False(t, commitment3Metadata.Solid().Get()) + + commitment2Metadata := chainManager.ProcessCommitment(commitment2) + + require.True(t, commitment1Metadata.Solid().Get()) + require.True(t, commitment2Metadata.Solid().Get()) + require.True(t, commitment3Metadata.Solid().Get()) + + commitment2Metadata.Verified().Trigger() + + require.True(t, commitment3Metadata.AboveLatestVerifiedCommitment().Get()) + require.True(t, commitment3Metadata.BelowSyncThreshold().Get()) +} From 65d19ada87949005ded88d81fa6d4e9f2b23515e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 20 Aug 2023 02:43:27 +0200 Subject: [PATCH 005/356] Refactor: refactored code --- .../chainmanagerv1/commitment_metadata.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index de9d79bd6..f926b5588 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -42,6 +42,14 @@ func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { chainSuccessor: reactive.NewVariable[*CommitmentMetadata](), } + c.chain.OnUpdate(func(oldChain, newChain *Chain) { + if oldChain != nil { + oldChain.UnregisterCommitment(c) + } + + newChain.RegisterCommitment(c) + }) + c.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { return parentVerified && !verified }, c.parentVerified, c.verified) @@ -58,14 +66,6 @@ func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { return inSyncWindow && belowWarpSyncThreshold }, c.inSyncWindow, c.belowWarpSyncThreshold) - c.chain.OnUpdate(func(oldChain, newChain *Chain) { - if oldChain != nil { - oldChain.UnregisterCommitment(c) - } - - newChain.RegisterCommitment(c) - }) - return c } From 3e6513906e2fe9e0127d6e09b6dc338f93dc8c76 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 20 Aug 2023 03:36:51 +0200 Subject: [PATCH 006/356] Feat: simplified code --- pkg/protocol/chainmanagerv1/chainmanager.go | 108 ++++++++------------ 1 file changed, 43 insertions(+), 65 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 7240b06ab..1bd40f6cd 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -41,10 +41,8 @@ func NewChainManager() *ChainManager { } func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata, err error) { - var prevRootToEvict *CommitmentMetadata - c.rootCommitment.Compute(func(currentRoot *CommitmentMetadata) *CommitmentMetadata { - if prevRootToEvict = currentRoot; currentRoot != nil { + if currentRoot != nil { if currentRoot.Index() > commitment.Index() { err = ierrors.Errorf("cannot set root commitment with lower index %s than current root commitment index %s", commitment.Index(), currentRoot.Index()) return currentRoot @@ -56,25 +54,14 @@ func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitme } } - commitmentRequest, requestCreated := c.cachedCommitments.GetOrCreate(commitment.ID(), lo.NoVariadic(promise.New[*CommitmentMetadata])) - commitmentRequest.OnSuccess(func(resolvedMetadata *CommitmentMetadata) { - commitmentMetadata = resolvedMetadata - commitmentMetadata.Chain().Set(c.rootChain) - commitmentMetadata.Solid().Trigger() - commitmentMetadata.Verified().Trigger() - commitmentMetadata.BelowSyncThreshold().Trigger() - commitmentMetadata.BelowWarpSyncThreshold().Trigger() - commitmentMetadata.BelowLatestVerifiedCommitment().Trigger() - - if requestCreated { - c.commitmentCreated.Trigger(commitmentMetadata) - - commitmentMetadata.Evicted().OnTrigger(func() { - c.cachedCommitments.Delete(commitment.ID()) - }) - } - }) - commitmentRequest.Resolve(NewCommitmentMetadata(commitment)) + commitmentMetadata = NewCommitmentMetadata(commitment) + commitmentMetadata.Chain().Set(c.rootChain) + commitmentMetadata.Solid().Trigger() + commitmentMetadata.Verified().Trigger() + commitmentMetadata.BelowSyncThreshold().Trigger() + commitmentMetadata.BelowWarpSyncThreshold().Trigger() + commitmentMetadata.BelowLatestVerifiedCommitment().Trigger() + commitmentMetadata.Evicted().Trigger() return commitmentMetadata }) @@ -83,10 +70,6 @@ func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitme return nil, err } - if prevRootToEvict != nil { - prevRootToEvict.Evicted().Trigger() - } - return commitmentMetadata, nil } @@ -104,12 +87,14 @@ func (c *ChainManager) OnCommitmentCreated(callback func(commitment *CommitmentM return c.commitmentCreated.Hook(callback).Unhook } -func (c *ChainManager) SlotEvictedEvent(index iotago.SlotIndex) (slotEvictedEvent reactive.Event) { +func (c *ChainManager) SlotEvictedEvent(index iotago.SlotIndex) reactive.Event { + var slotEvictedEvent reactive.Event + c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex iotago.SlotIndex) iotago.SlotIndex { if index > lastEvictedSlotIndex { slotEvictedEvent, _ = c.slotEvictionEvents.GetOrCreate(index, reactive.NewEvent) } else { - slotEvictedEvent = triggeredEvent + slotEvictedEvent = defaultTriggeredEvent } return lastEvictedSlotIndex @@ -141,59 +126,52 @@ func (c *ChainManager) Evict(slotIndex iotago.SlotIndex) { } func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { - if rootCommitment := c.rootCommitment.Get(); rootCommitment != nil && commitment.PrevID() == rootCommitment.ID() { - commitment.RegisterParent(rootCommitment) - } else { - c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.RegisterParent) - } + c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.RegisterParent) - slotEvictedEvent.OnTrigger(func() { - if c.rootCommitment.Get().ID() != commitment.ID() { - commitment.Evicted().Trigger() - } - }) + slotEvictedEvent.OnTrigger(func() { commitment.Evicted().Trigger() }) c.commitmentCreated.Trigger(commitment) } func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.SlotIndex, requestIfMissing bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata], requestCreated bool) { - rootCommitment := c.rootCommitment.Get() - - if slotEvictedEvent := c.SlotEvictedEvent(index); !slotEvictedEvent.WasTriggered() || rootCommitment != nil && rootCommitment.ID() == id { - if commitmentRequest, requestCreated = c.cachedCommitments.GetOrCreate(id, lo.NoVariadic(promise.New[*CommitmentMetadata])); requestCreated { - if requestIfMissing { - c.commitmentRequester.StartTicker(id) + slotEvictedEvent := c.SlotEvictedEvent(index) + if slotEvictedEvent.WasTriggered() { + if rootCommitment := c.rootCommitment.Get(); rootCommitment != nil && id == rootCommitment.ID() { + for _, successCallback := range optSuccessCallbacks { + successCallback(rootCommitment) } - commitmentRequest.OnSuccess(func(commitment *CommitmentMetadata) { - if requestIfMissing { - c.commitmentRequester.StopTicker(commitment.ID()) - } - - c.setupCommitment(commitment, slotEvictedEvent) - }) - - slotEvictedEvent.OnTrigger(func() { - if rootCommitment == nil || id != c.rootCommitment.Get().ID() { - c.cachedCommitments.Delete(id) - } else { - rootCommitment.Evicted().OnTrigger(func() { - c.cachedCommitments.Delete(id) - }) - } - }) + return promise.New[*CommitmentMetadata]().Resolve(rootCommitment), false } - for _, successCallback := range optSuccessCallbacks { - commitmentRequest.OnSuccess(successCallback) + return nil, false + } + + if commitmentRequest, requestCreated = c.cachedCommitments.GetOrCreate(id, lo.NoVariadic(promise.New[*CommitmentMetadata])); requestCreated { + if requestIfMissing { + c.commitmentRequester.StartTicker(id) } + + commitmentRequest.OnSuccess(func(commitment *CommitmentMetadata) { + if requestIfMissing { + c.commitmentRequester.StopTicker(commitment.ID()) + } + + c.setupCommitment(commitment, slotEvictedEvent) + }) + + slotEvictedEvent.OnTrigger(func() { c.cachedCommitments.Delete(id) }) + } + + for _, successCallback := range optSuccessCallbacks { + commitmentRequest.OnSuccess(successCallback) } return commitmentRequest, requestCreated } -var triggeredEvent = reactive.NewEvent() +var defaultTriggeredEvent = reactive.NewEvent() func init() { - triggeredEvent.Trigger() + defaultTriggeredEvent.Trigger() } From 15102163fa9ed0dd7c6a45d363fcf685ce7712a4 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 20 Aug 2023 23:04:01 +0200 Subject: [PATCH 007/356] Feat: added chain registration and unregistration --- pkg/protocol/chainmanagerv1/chain.go | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 61abf2780..759e001cb 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -1,9 +1,9 @@ package chainmanagerv1 import ( - "fmt" - "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/lo" iotago "github.com/iotaledger/iota.go/v4" ) @@ -17,7 +17,10 @@ const ( ) type Chain struct { - latestCommitmentIndex reactive.Variable[iotago.SlotIndex] + commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *CommitmentMetadata] + + latestCommitmentIndex reactive.Variable[iotago.SlotIndex] + latestVerifiedCommitmentIndex reactive.Variable[iotago.SlotIndex] evicted reactive.Event @@ -33,6 +36,7 @@ type Chain struct { func NewChain() *Chain { c := &Chain{ + commitments: shrinkingmap.New[iotago.SlotIndex, *CommitmentMetadata](), evicted: reactive.NewEvent(), latestCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), latestVerifiedCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), @@ -50,11 +54,19 @@ func NewChain() *Chain { } func (c *Chain) RegisterCommitment(commitment *CommitmentMetadata) { - fmt.Println("RegisterCommitment", commitment.ID(), "as index", commitment.Index()) + c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + c.commitments.Set(commitment.Index(), commitment) + + return lo.Cond(latestCommitmentIndex > commitment.Index(), latestCommitmentIndex, commitment.Index()) + }) } func (c *Chain) UnregisterCommitment(commitment *CommitmentMetadata) { - fmt.Println("UnregisterCommitment", commitment.ID(), "as index", commitment.Index()) + c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + c.commitments.Delete(commitment.Index()) + + return lo.Cond(commitment.Index() < latestCommitmentIndex, commitment.Index()-1, latestCommitmentIndex) + }) } func (c *Chain) LatestVerifiedCommitmentIndex() reactive.Variable[iotago.SlotIndex] { From ef013c5b28609c13acd6e252cd0c813659dfc056 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 03:15:48 +0200 Subject: [PATCH 008/356] Feat: finished chain framework --- pkg/protocol/chainmanagerv1/chain.go | 50 +++++++---- pkg/protocol/chainmanagerv1/chainmanager.go | 7 +- .../chainmanagerv1/chainmanager_test.go | 2 + .../chainmanagerv1/commitment_metadata.go | 82 ++++++++++--------- .../commitment_metadata_test.go | 6 +- 5 files changed, 85 insertions(+), 62 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 759e001cb..061911b6e 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -13,10 +13,12 @@ const ( // WarpSyncOffset defines how many slots a commitment needs to be behind the latest commitment to be requested by // the warp sync process. - WarpSyncOffset = 2 + WarpSyncOffset = 1 ) type Chain struct { + forkingPoint reactive.Variable[*CommitmentMetadata] + commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *CommitmentMetadata] latestCommitmentIndex reactive.Variable[iotago.SlotIndex] @@ -34,14 +36,17 @@ type Chain struct { warpSyncThreshold reactive.Variable[iotago.SlotIndex] } -func NewChain() *Chain { +func NewChain(forkingPoint *CommitmentMetadata) *Chain { c := &Chain{ + forkingPoint: reactive.NewVariable[*CommitmentMetadata](), commitments: shrinkingmap.New[iotago.SlotIndex, *CommitmentMetadata](), evicted: reactive.NewEvent(), latestCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), latestVerifiedCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), } + c.forkingPoint.Set(forkingPoint) + c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { return latestVerifiedCommitmentIndex + 1 + SyncWindow }, c.latestVerifiedCommitmentIndex) @@ -53,22 +58,6 @@ func NewChain() *Chain { return c } -func (c *Chain) RegisterCommitment(commitment *CommitmentMetadata) { - c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - c.commitments.Set(commitment.Index(), commitment) - - return lo.Cond(latestCommitmentIndex > commitment.Index(), latestCommitmentIndex, commitment.Index()) - }) -} - -func (c *Chain) UnregisterCommitment(commitment *CommitmentMetadata) { - c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - c.commitments.Delete(commitment.Index()) - - return lo.Cond(commitment.Index() < latestCommitmentIndex, commitment.Index()-1, latestCommitmentIndex) - }) -} - func (c *Chain) LatestVerifiedCommitmentIndex() reactive.Variable[iotago.SlotIndex] { return c.latestVerifiedCommitmentIndex } @@ -80,3 +69,28 @@ func (c *Chain) SyncThreshold() reactive.Variable[iotago.SlotIndex] { func (c *Chain) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { return c.warpSyncThreshold } + +func (c *Chain) registerCommitment(commitment *CommitmentMetadata) { + c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + c.commitments.Set(commitment.Index(), commitment) + + return lo.Cond(latestCommitmentIndex > commitment.Index(), latestCommitmentIndex, commitment.Index()) + }) + + unregisterCommitment := reactive.NewEvent() + unsubscribe := commitment.Chain().OnUpdate(func(_, newValue *Chain) { + if newValue != c { + unregisterCommitment.Trigger() + } + }) + + unregisterCommitment.OnTrigger(func() { + go unsubscribe() + + c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + c.commitments.Delete(commitment.Index()) + + return lo.Cond(commitment.Index() < latestCommitmentIndex, commitment.Index()-1, latestCommitmentIndex) + }) + }) +} diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 1bd40f6cd..037d328db 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -30,7 +30,6 @@ type ChainManager struct { func NewChainManager() *ChainManager { return &ChainManager{ - rootChain: NewChain(), rootCommitment: reactive.NewVariable[*CommitmentMetadata](), commitmentCreated: event.New1[*CommitmentMetadata](), cachedCommitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), @@ -55,7 +54,6 @@ func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitme } commitmentMetadata = NewCommitmentMetadata(commitment) - commitmentMetadata.Chain().Set(c.rootChain) commitmentMetadata.Solid().Trigger() commitmentMetadata.Verified().Trigger() commitmentMetadata.BelowSyncThreshold().Trigger() @@ -63,6 +61,11 @@ func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitme commitmentMetadata.BelowLatestVerifiedCommitment().Trigger() commitmentMetadata.Evicted().Trigger() + if c.rootChain == nil { + c.rootChain = NewChain(commitmentMetadata) + } + commitmentMetadata.Chain().Set(c.rootChain) + return commitmentMetadata }) diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index c1037ea5d..7faba32a5 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -54,4 +54,6 @@ func TestChainManager(t *testing.T) { require.True(t, commitment3Metadata.AboveLatestVerifiedCommitment().Get()) require.True(t, commitment3Metadata.BelowSyncThreshold().Get()) + + require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().latestCommitmentIndex.Get()) } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index f926b5588..4566e6cb5 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -42,13 +42,7 @@ func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { chainSuccessor: reactive.NewVariable[*CommitmentMetadata](), } - c.chain.OnUpdate(func(oldChain, newChain *Chain) { - if oldChain != nil { - oldChain.UnregisterCommitment(c) - } - - newChain.RegisterCommitment(c) - }) + c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) c.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { return parentVerified && !verified @@ -79,7 +73,7 @@ func (c *CommitmentMetadata) RegisterParent(parent *CommitmentMetadata) { // triggerEventIfIndexBelowThreshold triggers the given event if the commitment's index is below the given // threshold. We only monitor the threshold after the corresponding parent event was triggered (to minimize // the amount of elements that listen to updates of the same property). - triggerEventIfIndexBelowThreshold := func(eventFunc func(*CommitmentMetadata) reactive.Event, thresholdFunc func(*Chain) reactive.Variable[iotago.SlotIndex]) { + triggerEventIfIndexBelowThreshold := func(eventFunc func(*CommitmentMetadata) reactive.Event, thresholdFunc func(*Chain) reactive.Variable[iotago.SlotIndex], id string) { eventFunc(parent).OnTrigger(func() { unsubscribe := thresholdFunc(c.chain.Get()).OnUpdate(func(_, latestVerifiedCommitmentIndex iotago.SlotIndex) { if c.Index() < latestVerifiedCommitmentIndex { @@ -87,13 +81,13 @@ func (c *CommitmentMetadata) RegisterParent(parent *CommitmentMetadata) { } }) - eventFunc(c).OnTrigger(unsubscribe) + eventFunc(c).OnTrigger(func() { go unsubscribe() }) }) } - triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedCommitmentIndex) - triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowSyncThreshold, (*Chain).SyncThreshold) - triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowWarpSyncThreshold, (*Chain).WarpSyncThreshold) + triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedCommitmentIndex, "BelowLatestVerifiedCommitment") + triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowSyncThreshold, (*Chain).SyncThreshold, "BelowSyncThreshold") + triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowWarpSyncThreshold, (*Chain).WarpSyncThreshold, "BelowWarpSyncThreshold") } func (c *CommitmentMetadata) RegisterChild(newChild *CommitmentMetadata, onSuccessorUpdated func(*CommitmentMetadata, *CommitmentMetadata)) { @@ -101,9 +95,8 @@ func (c *CommitmentMetadata) RegisterChild(newChild *CommitmentMetadata, onSucce return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) }) - unsubscribe := c.chainSuccessor.OnUpdate(onSuccessorUpdated) - - c.evicted.OnTrigger(unsubscribe) + // unsubscribe the handler on eviction to prevent memory leaks + c.evicted.OnTrigger(c.chainSuccessor.OnUpdate(onSuccessorUpdated)) } // inheritChain returns a function that implements the chain inheritance rules. @@ -111,37 +104,48 @@ func (c *CommitmentMetadata) RegisterChild(newChild *CommitmentMetadata, onSucce // It must be called whenever the successor of the parent changes as we spawn a new chain for each child that is not the // direct successor of a parent, and we inherit its chain otherwise. func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*CommitmentMetadata, *CommitmentMetadata) { - var ( - spawnedChain *Chain - unsubscribe func() - ) + var spawnedChain *Chain + + spawnChain := func() { + if spawnedChain == nil { + spawnedChain = NewChain(c) + + c.chain.Set(spawnedChain) + } + } + + evictSpawnedChain := func() { + if spawnedChain != nil { + spawnedChain.evicted.Trigger() + spawnedChain = nil + } + } + + var unsubscribe func() + + subscribeToParentChain := func() { + if unsubscribe == nil { + unsubscribe = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) + } + } + + unsubscribeFromParentChain := func() { + if unsubscribe != nil { + unsubscribe() + unsubscribe = nil + } + } return func(_, successor *CommitmentMetadata) { switch successor { case nil: panic("successor must never be changed back to nil") case c: - if spawnedChain != nil { - spawnedChain.evicted.Trigger() - spawnedChain = nil - } - - if unsubscribe == nil { - unsubscribe = parent.chain.OnUpdate(func(_, chain *Chain) { - c.chain.Set(chain) - }) - } + evictSpawnedChain() + subscribeToParentChain() default: - if unsubscribe != nil { - unsubscribe() - unsubscribe = nil - } - - if spawnedChain == nil { - spawnedChain = NewChain() - - c.chain.Set(spawnedChain) - } + unsubscribeFromParentChain() + spawnChain() } } } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata_test.go b/pkg/protocol/chainmanagerv1/commitment_metadata_test.go index c344eb17a..312f94f60 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata_test.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata_test.go @@ -13,17 +13,17 @@ import ( func TestCommitment(t *testing.T) { testAPI := tpkg.TestAPI - rootChain := NewChain() - rootCommitment := model.NewEmptyCommitment(testAPI) rootCommitmentMetadata := NewCommitmentMetadata(rootCommitment) - rootCommitmentMetadata.Chain().Set(rootChain) rootCommitmentMetadata.Solid().Trigger() rootCommitmentMetadata.Verified().Trigger() rootCommitmentMetadata.BelowSyncThreshold().Trigger() rootCommitmentMetadata.BelowWarpSyncThreshold().Trigger() rootCommitmentMetadata.BelowLatestVerifiedCommitment().Trigger() + rootChain := NewChain(rootCommitmentMetadata) + rootCommitmentMetadata.Chain().Set(rootChain) + commitment1, err := model.CommitmentFromCommitment(iotago.NewCommitment(1, rootCommitment.Index()+1, rootCommitment.ID(), rootCommitmentMetadata.RootsID(), 1, 1), testAPI) require.NoError(t, err) From 87c621e4044d15646b21c271c49b9656e0e93d4f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 03:29:38 +0200 Subject: [PATCH 009/356] Feat: cleaned up code --- pkg/protocol/chainmanagerv1/chainmanager.go | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 037d328db..8b62ab3bf 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -61,9 +61,7 @@ func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitme commitmentMetadata.BelowLatestVerifiedCommitment().Trigger() commitmentMetadata.Evicted().Trigger() - if c.rootChain == nil { - c.rootChain = NewChain(commitmentMetadata) - } + c.rootChain = NewChain(commitmentMetadata) commitmentMetadata.Chain().Set(c.rootChain) return commitmentMetadata From 26caa3ec2781916aeced3a025feabbc3e88869c4 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 10:31:01 +0200 Subject: [PATCH 010/356] Refactor: restructured code --- pkg/protocol/chainmanagerv1/chainmanager.go | 2 +- .../chainmanagerv1/commitment_metadata.api.go | 55 ---------------- .../chainmanagerv1/commitment_metadata.go | 63 ++++++++++++++++--- .../commitment_metadata_test.go | 53 ---------------- 4 files changed, 56 insertions(+), 117 deletions(-) delete mode 100644 pkg/protocol/chainmanagerv1/commitment_metadata.api.go delete mode 100644 pkg/protocol/chainmanagerv1/commitment_metadata_test.go diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 8b62ab3bf..ed440a851 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -127,7 +127,7 @@ func (c *ChainManager) Evict(slotIndex iotago.SlotIndex) { } func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { - c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.RegisterParent) + c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.registerParent) slotEvictedEvent.OnTrigger(func() { commitment.Evicted().Trigger() }) diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.api.go b/pkg/protocol/chainmanagerv1/commitment_metadata.api.go deleted file mode 100644 index ed0ffdd8f..000000000 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.api.go +++ /dev/null @@ -1,55 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/ds/reactive" - -func (c *CommitmentMetadata) Chain() reactive.Variable[*Chain] { - return c.chain -} - -func (c *CommitmentMetadata) Solid() reactive.Event { - return c.solid -} - -func (c *CommitmentMetadata) Verified() reactive.Event { - return c.verified -} - -func (c *CommitmentMetadata) ParentVerified() reactive.Event { - return c.parentVerified -} - -func (c *CommitmentMetadata) BelowSyncThreshold() reactive.Event { - return c.belowSyncThreshold -} - -func (c *CommitmentMetadata) BelowWarpSyncThreshold() reactive.Event { - return c.belowWarpSyncThreshold -} - -func (c *CommitmentMetadata) BelowLatestVerifiedCommitment() reactive.Event { - return c.belowLatestVerifiedCommitment -} - -func (c *CommitmentMetadata) Evicted() reactive.Event { - return c.evicted -} - -func (c *CommitmentMetadata) ParentAboveLatestVerifiedCommitment() reactive.Variable[bool] { - return c.parentAboveLatestVerifiedCommitment -} - -func (c *CommitmentMetadata) AboveLatestVerifiedCommitment() reactive.Variable[bool] { - return c.aboveLatestVerifiedCommitment -} - -func (c *CommitmentMetadata) InSyncWindow() reactive.Variable[bool] { - return c.inSyncWindow -} - -func (c *CommitmentMetadata) RequiresWarpSync() reactive.Variable[bool] { - return c.requiresWarpSync -} - -func (c *CommitmentMetadata) ChainSuccessor() reactive.Variable[*CommitmentMetadata] { - return c.chainSuccessor -} diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index 4566e6cb5..5a5ed14f2 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -63,8 +63,60 @@ func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { return c } -func (c *CommitmentMetadata) RegisterParent(parent *CommitmentMetadata) { - parent.RegisterChild(c, c.inheritChain(parent)) +func (c *CommitmentMetadata) Chain() reactive.Variable[*Chain] { + return c.chain +} + +func (c *CommitmentMetadata) Solid() reactive.Event { + return c.solid +} + +func (c *CommitmentMetadata) Verified() reactive.Event { + return c.verified +} + +func (c *CommitmentMetadata) ParentVerified() reactive.Event { + return c.parentVerified +} + +func (c *CommitmentMetadata) BelowSyncThreshold() reactive.Event { + return c.belowSyncThreshold +} + +func (c *CommitmentMetadata) BelowWarpSyncThreshold() reactive.Event { + return c.belowWarpSyncThreshold +} + +func (c *CommitmentMetadata) BelowLatestVerifiedCommitment() reactive.Event { + return c.belowLatestVerifiedCommitment +} + +func (c *CommitmentMetadata) Evicted() reactive.Event { + return c.evicted +} + +func (c *CommitmentMetadata) ParentAboveLatestVerifiedCommitment() reactive.Variable[bool] { + return c.parentAboveLatestVerifiedCommitment +} + +func (c *CommitmentMetadata) AboveLatestVerifiedCommitment() reactive.Variable[bool] { + return c.aboveLatestVerifiedCommitment +} + +func (c *CommitmentMetadata) InSyncWindow() reactive.Variable[bool] { + return c.inSyncWindow +} + +func (c *CommitmentMetadata) RequiresWarpSync() reactive.Variable[bool] { + return c.requiresWarpSync +} + +func (c *CommitmentMetadata) ChainSuccessor() reactive.Variable[*CommitmentMetadata] { + return c.chainSuccessor +} + +func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { + parent.registerChild(c, c.inheritChain(parent)) c.solid.InheritFrom(parent.solid) c.parentVerified.InheritFrom(parent.verified) @@ -90,7 +142,7 @@ func (c *CommitmentMetadata) RegisterParent(parent *CommitmentMetadata) { triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowWarpSyncThreshold, (*Chain).WarpSyncThreshold, "BelowWarpSyncThreshold") } -func (c *CommitmentMetadata) RegisterChild(newChild *CommitmentMetadata, onSuccessorUpdated func(*CommitmentMetadata, *CommitmentMetadata)) { +func (c *CommitmentMetadata) registerChild(newChild *CommitmentMetadata, onSuccessorUpdated func(*CommitmentMetadata, *CommitmentMetadata)) { c.chainSuccessor.Compute(func(currentSuccessor *CommitmentMetadata) *CommitmentMetadata { return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) }) @@ -105,15 +157,12 @@ func (c *CommitmentMetadata) RegisterChild(newChild *CommitmentMetadata, onSucce // direct successor of a parent, and we inherit its chain otherwise. func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*CommitmentMetadata, *CommitmentMetadata) { var spawnedChain *Chain - spawnChain := func() { if spawnedChain == nil { spawnedChain = NewChain(c) - c.chain.Set(spawnedChain) } } - evictSpawnedChain := func() { if spawnedChain != nil { spawnedChain.evicted.Trigger() @@ -122,13 +171,11 @@ func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*Comm } var unsubscribe func() - subscribeToParentChain := func() { if unsubscribe == nil { unsubscribe = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) } } - unsubscribeFromParentChain := func() { if unsubscribe != nil { unsubscribe() diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata_test.go b/pkg/protocol/chainmanagerv1/commitment_metadata_test.go deleted file mode 100644 index 312f94f60..000000000 --- a/pkg/protocol/chainmanagerv1/commitment_metadata_test.go +++ /dev/null @@ -1,53 +0,0 @@ -package chainmanagerv1 - -import ( - "testing" - - "github.com/stretchr/testify/require" - - "github.com/iotaledger/iota-core/pkg/model" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/tpkg" -) - -func TestCommitment(t *testing.T) { - testAPI := tpkg.TestAPI - - rootCommitment := model.NewEmptyCommitment(testAPI) - rootCommitmentMetadata := NewCommitmentMetadata(rootCommitment) - rootCommitmentMetadata.Solid().Trigger() - rootCommitmentMetadata.Verified().Trigger() - rootCommitmentMetadata.BelowSyncThreshold().Trigger() - rootCommitmentMetadata.BelowWarpSyncThreshold().Trigger() - rootCommitmentMetadata.BelowLatestVerifiedCommitment().Trigger() - - rootChain := NewChain(rootCommitmentMetadata) - rootCommitmentMetadata.Chain().Set(rootChain) - - commitment1, err := model.CommitmentFromCommitment(iotago.NewCommitment(1, rootCommitment.Index()+1, rootCommitment.ID(), rootCommitmentMetadata.RootsID(), 1, 1), testAPI) - require.NoError(t, err) - - commitment1Metadata := NewCommitmentMetadata(commitment1) - commitment1Metadata.RegisterParent(rootCommitmentMetadata) - - require.True(t, commitment1Metadata.Solid().Get()) - require.Equal(t, rootChain, commitment1Metadata.Chain().Get()) - require.True(t, commitment1Metadata.AboveLatestVerifiedCommitment().Get()) - - commitment2, err := model.CommitmentFromCommitment(iotago.NewCommitment(1, commitment1Metadata.Index()+1, rootCommitment.ID(), rootCommitmentMetadata.RootsID(), 1, 1), testAPI) - require.NoError(t, err) - - commitment2Metadata := NewCommitmentMetadata(commitment2) - commitment2Metadata.RegisterParent(commitment1Metadata) - - require.True(t, commitment2Metadata.Solid().Get()) - require.Equal(t, rootChain, commitment2Metadata.Chain().Get()) - require.True(t, commitment2Metadata.AboveLatestVerifiedCommitment().Get()) - - commitment1Metadata.Verified().Trigger() - - require.False(t, commitment1Metadata.AboveLatestVerifiedCommitment().Get()) - require.True(t, commitment2Metadata.Solid().Get()) - require.Equal(t, rootChain, commitment2Metadata.Chain().Get()) - require.True(t, commitment2Metadata.AboveLatestVerifiedCommitment().Get()) -} From 33436b4fa06d5a7f476f9b5f39c85d661a5b4661 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 11:48:51 +0200 Subject: [PATCH 011/356] Feat: factored out eviction --- pkg/protocol/chainmanagerv1/chain.go | 20 ++++ pkg/protocol/chainmanagerv1/chainmanager.go | 96 +++++-------------- .../chainmanagerv1/chainmanager_test.go | 3 +- .../chainmanagerv1/commitment_metadata.go | 4 - pkg/protocol/chainmanagerv1/eviction.go | 66 +++++++++++++ 5 files changed, 113 insertions(+), 76 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/eviction.go diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 061911b6e..cf337dc66 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -1,6 +1,8 @@ package chainmanagerv1 import ( + "fmt" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/lo" @@ -34,6 +36,8 @@ type Chain struct { // warpSyncThreshold defines a lower bound for where the warp sync process starts (to not requests slots that we are // about to commit ourselves once we are in sync). warpSyncThreshold reactive.Variable[iotago.SlotIndex] + + cumulativeWeight reactive.Variable[uint64] } func NewChain(forkingPoint *CommitmentMetadata) *Chain { @@ -55,9 +59,25 @@ func NewChain(forkingPoint *CommitmentMetadata) *Chain { return latestCommitmentIndex - WarpSyncOffset }, c.latestCommitmentIndex) + c.cumulativeWeight = reactive.NewDerivedVariable[uint64](func(latestCommitmentIndex iotago.SlotIndex) uint64 { + if latestCommitment, exists := c.commitments.Get(latestCommitmentIndex); exists { + return latestCommitment.CumulativeWeight() + } else { + panic(fmt.Sprintf("latest commitment with index %d does not exist", latestCommitmentIndex)) + } + }, c.latestCommitmentIndex) + return c } +func (c *Chain) ForkingPoint() reactive.Variable[*CommitmentMetadata] { + return c.forkingPoint +} + +func (c *Chain) LatestCommitmentIndex() reactive.Variable[iotago.SlotIndex] { + return c.latestCommitmentIndex +} + func (c *Chain) LatestVerifiedCommitmentIndex() reactive.Variable[iotago.SlotIndex] { return c.latestVerifiedCommitmentIndex } diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index ed440a851..bafa4616e 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -23,22 +23,34 @@ type ChainManager struct { commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - slotEvictionEvents *shrinkingmap.ShrinkingMap[iotago.SlotIndex, reactive.Event] - - lastEvictedSlotIndex reactive.Variable[iotago.SlotIndex] + *SlotEviction } func NewChainManager() *ChainManager { return &ChainManager{ - rootCommitment: reactive.NewVariable[*CommitmentMetadata](), - commitmentCreated: event.New1[*CommitmentMetadata](), - cachedCommitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), - commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - slotEvictionEvents: shrinkingmap.New[iotago.SlotIndex, reactive.Event](), - lastEvictedSlotIndex: reactive.NewVariable[iotago.SlotIndex](), + rootCommitment: reactive.NewVariable[*CommitmentMetadata](), + commitmentCreated: event.New1[*CommitmentMetadata](), + cachedCommitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), + commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + + SlotEviction: NewSlotEviction(), } } +func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata) { + if commitmentRequest, _ := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *CommitmentMetadata) { + commitmentMetadata = resolvedMetadata + }); commitmentRequest != nil { + commitmentRequest.Resolve(NewCommitmentMetadata(commitment)) + } + + return commitmentMetadata +} + +func (c *ChainManager) OnCommitmentCreated(callback func(commitment *CommitmentMetadata)) (unsubscribe func()) { + return c.commitmentCreated.Hook(callback).Unhook +} + func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata, err error) { c.rootCommitment.Compute(func(currentRoot *CommitmentMetadata) *CommitmentMetadata { if currentRoot != nil { @@ -74,58 +86,6 @@ func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitme return commitmentMetadata, nil } -func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata) { - if commitmentRequest, _ := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *CommitmentMetadata) { - commitmentMetadata = resolvedMetadata - }); commitmentRequest != nil { - commitmentRequest.Resolve(NewCommitmentMetadata(commitment)) - } - - return commitmentMetadata -} - -func (c *ChainManager) OnCommitmentCreated(callback func(commitment *CommitmentMetadata)) (unsubscribe func()) { - return c.commitmentCreated.Hook(callback).Unhook -} - -func (c *ChainManager) SlotEvictedEvent(index iotago.SlotIndex) reactive.Event { - var slotEvictedEvent reactive.Event - - c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex iotago.SlotIndex) iotago.SlotIndex { - if index > lastEvictedSlotIndex { - slotEvictedEvent, _ = c.slotEvictionEvents.GetOrCreate(index, reactive.NewEvent) - } else { - slotEvictedEvent = defaultTriggeredEvent - } - - return lastEvictedSlotIndex - }) - - return slotEvictedEvent -} - -func (c *ChainManager) Evict(slotIndex iotago.SlotIndex) { - slotEvictedEventsToTrigger := make([]reactive.Event, 0) - - c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex iotago.SlotIndex) iotago.SlotIndex { - if slotIndex <= lastEvictedSlotIndex { - return lastEvictedSlotIndex - } - - for i := lastEvictedSlotIndex + 1; i <= slotIndex; i++ { - if slotEvictedEvent, exists := c.slotEvictionEvents.Get(i); exists { - slotEvictedEventsToTrigger = append(slotEvictedEventsToTrigger, slotEvictedEvent) - } - } - - return slotIndex - }) - - for _, slotEvictedEvent := range slotEvictedEventsToTrigger { - slotEvictedEvent.Trigger() - } -} - func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.registerParent) @@ -135,8 +95,8 @@ func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvict } func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.SlotIndex, requestIfMissing bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata], requestCreated bool) { - slotEvictedEvent := c.SlotEvictedEvent(index) - if slotEvictedEvent.WasTriggered() { + slotEvicted := c.EvictedEvent(index) + if slotEvicted.WasTriggered() { if rootCommitment := c.rootCommitment.Get(); rootCommitment != nil && id == rootCommitment.ID() { for _, successCallback := range optSuccessCallbacks { successCallback(rootCommitment) @@ -158,10 +118,10 @@ func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.Sl c.commitmentRequester.StopTicker(commitment.ID()) } - c.setupCommitment(commitment, slotEvictedEvent) + c.setupCommitment(commitment, slotEvicted) }) - slotEvictedEvent.OnTrigger(func() { c.cachedCommitments.Delete(id) }) + slotEvicted.OnTrigger(func() { c.cachedCommitments.Delete(id) }) } for _, successCallback := range optSuccessCallbacks { @@ -170,9 +130,3 @@ func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.Sl return commitmentRequest, requestCreated } - -var defaultTriggeredEvent = reactive.NewEvent() - -func init() { - defaultTriggeredEvent.Trigger() -} diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 7faba32a5..df8bcb04a 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -37,7 +37,7 @@ func TestChainManager(t *testing.T) { commitment2.Index()+1, commitment2.ID(), commitment2.RootsID(), - 2, + 3, 2, ), testAPI))) @@ -56,4 +56,5 @@ func TestChainManager(t *testing.T) { require.True(t, commitment3Metadata.BelowSyncThreshold().Get()) require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().latestCommitmentIndex.Get()) + require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().cumulativeWeight.Get()) } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index 5a5ed14f2..af09f9296 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -151,10 +151,6 @@ func (c *CommitmentMetadata) registerChild(newChild *CommitmentMetadata, onSucce c.evicted.OnTrigger(c.chainSuccessor.OnUpdate(onSuccessorUpdated)) } -// inheritChain returns a function that implements the chain inheritance rules. -// -// It must be called whenever the successor of the parent changes as we spawn a new chain for each child that is not the -// direct successor of a parent, and we inherit its chain otherwise. func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*CommitmentMetadata, *CommitmentMetadata) { var spawnedChain *Chain spawnChain := func() { diff --git a/pkg/protocol/chainmanagerv1/eviction.go b/pkg/protocol/chainmanagerv1/eviction.go new file mode 100644 index 000000000..e8a53485d --- /dev/null +++ b/pkg/protocol/chainmanagerv1/eviction.go @@ -0,0 +1,66 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + iotago "github.com/iotaledger/iota.go/v4" +) + +type SlotEviction struct { + evictionEvents *shrinkingmap.ShrinkingMap[iotago.SlotIndex, reactive.Event] + + lastEvictedSlotIndex reactive.Variable[iotago.SlotIndex] +} + +func NewSlotEviction() *SlotEviction { + return &SlotEviction{ + evictionEvents: shrinkingmap.New[iotago.SlotIndex, reactive.Event](), + lastEvictedSlotIndex: reactive.NewVariable[iotago.SlotIndex](), + } +} + +func (c *SlotEviction) LastEvictedSlotIndex() reactive.Variable[iotago.SlotIndex] { + return c.lastEvictedSlotIndex +} + +func (c *SlotEviction) EvictedEvent(index iotago.SlotIndex) reactive.Event { + slotEvictedEvent := defaultTriggeredEvent + + c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex iotago.SlotIndex) iotago.SlotIndex { + if index > lastEvictedSlotIndex { + slotEvictedEvent, _ = c.evictionEvents.GetOrCreate(index, reactive.NewEvent) + } + + return lastEvictedSlotIndex + }) + + return slotEvictedEvent +} + +func (c *SlotEviction) Evict(slotIndex iotago.SlotIndex) { + slotEvictedEventsToTrigger := make([]reactive.Event, 0) + + c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex iotago.SlotIndex) iotago.SlotIndex { + if slotIndex <= lastEvictedSlotIndex { + return lastEvictedSlotIndex + } + + for i := lastEvictedSlotIndex + 1; i <= slotIndex; i++ { + if slotEvictedEvent, exists := c.evictionEvents.Get(i); exists { + slotEvictedEventsToTrigger = append(slotEvictedEventsToTrigger, slotEvictedEvent) + } + } + + return slotIndex + }) + + for _, slotEvictedEvent := range slotEvictedEventsToTrigger { + slotEvictedEvent.Trigger() + } +} + +var defaultTriggeredEvent = reactive.NewEvent() + +func init() { + defaultTriggeredEvent.Trigger() +} From 845f44e1999786effee9520c4a061196cb544ee2 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 16:11:14 +0200 Subject: [PATCH 012/356] Feat: intermediary commit --- go.sum | 7 +-- pkg/protocol/chainmanagerv1/chain.go | 14 +++-- pkg/protocol/chainmanagerv1/chainmanager.go | 6 +-- pkg/protocol/chainmanagerv1/eviction.go | 60 +++++++++++---------- 4 files changed, 46 insertions(+), 41 deletions(-) diff --git a/go.sum b/go.sum index d8d261632..b4f79a7ff 100644 --- a/go.sum +++ b/go.sum @@ -93,8 +93,6 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.12.0 h1:bdnhLPtqETd4m3mS8BGMNvBTf36bO5bx/hxE2zljOa0= -github.com/ethereum/go-ethereum v1.12.0/go.mod h1:/oo2X/dZLJjf2mJ6YT9wcWxa4nNJDBKDBU6sFIpx1Gs= github.com/ethereum/go-ethereum v1.12.2 h1:eGHJ4ij7oyVqUQn48LBz3B7pvQ8sV0wGJiIE6gDq/6Y= github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= @@ -268,8 +266,6 @@ github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d h1: github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d h1:ggHDvRR/FN16iuKia5ZOSAL7DuoMDhHp70s4suxGS4U= github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d h1:usox/ZLeIDMBs0vyxzxZ4gmqSAGtPEKHF7ss6A/5/R0= -github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6 h1:IkP9D1XcpdWiYCbQsql6ZRWlkakgYSCxHTAGthD0qAA= github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d h1:HvTox3m7aBI4c7iIOqPHFPEIbGh9nBg4plq+MguQy3E= @@ -643,8 +639,7 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20230724220655-d98519c11495 h1:zKGKw2WlGb8oPoRGqQ2PT8g2YoCN1w/YbbQjHXCdUWE= -golang.org/x/exp v0.0.0-20230724220655-d98519c11495/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230810033253-352e893a4cad h1:g0bG7Z4uG+OgH2QDODnjp6ggkk1bJDsINcuWmJN1iJU= golang.org/x/exp v0.0.0-20230810033253-352e893a4cad/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/image v0.9.0 h1:QrzfX26snvCM20hIhBwuHI/ThTg18b/+kcKdXHvnR+g= golang.org/x/image v0.9.0/go.mod h1:jtrku+n79PfroUbvDdeUWMAI+heR786BofxrbiSF+J0= diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index cf337dc66..14932b868 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -50,6 +50,7 @@ func NewChain(forkingPoint *CommitmentMetadata) *Chain { } c.forkingPoint.Set(forkingPoint) + c.latestCommitmentIndex.Set(forkingPoint.Index()) c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { return latestVerifiedCommitmentIndex + 1 + SyncWindow @@ -94,17 +95,22 @@ func (c *Chain) registerCommitment(commitment *CommitmentMetadata) { c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { c.commitments.Set(commitment.Index(), commitment) - return lo.Cond(latestCommitmentIndex > commitment.Index(), latestCommitmentIndex, commitment.Index()) + if latestCommitmentIndex > commitment.Index() { + return latestCommitmentIndex + } + + return commitment.Index() }) - unregisterCommitment := reactive.NewEvent() + unregistered := reactive.NewEvent() + unsubscribe := commitment.Chain().OnUpdate(func(_, newValue *Chain) { if newValue != c { - unregisterCommitment.Trigger() + unregistered.Trigger() } }) - unregisterCommitment.OnTrigger(func() { + unregistered.OnTrigger(func() { go unsubscribe() c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index bafa4616e..793b8eb1f 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -23,7 +23,7 @@ type ChainManager struct { commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - *SlotEviction + *EvictionState } func NewChainManager() *ChainManager { @@ -33,7 +33,7 @@ func NewChainManager() *ChainManager { cachedCommitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - SlotEviction: NewSlotEviction(), + EvictionState: NewEvictionState(), } } @@ -95,7 +95,7 @@ func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvict } func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.SlotIndex, requestIfMissing bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata], requestCreated bool) { - slotEvicted := c.EvictedEvent(index) + slotEvicted := c.EvictionEvent(index) if slotEvicted.WasTriggered() { if rootCommitment := c.rootCommitment.Get(); rootCommitment != nil && id == rootCommitment.ID() { for _, successCallback := range optSuccessCallbacks { diff --git a/pkg/protocol/chainmanagerv1/eviction.go b/pkg/protocol/chainmanagerv1/eviction.go index e8a53485d..38122e5f3 100644 --- a/pkg/protocol/chainmanagerv1/eviction.go +++ b/pkg/protocol/chainmanagerv1/eviction.go @@ -3,64 +3,68 @@ package chainmanagerv1 import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" - iotago "github.com/iotaledger/iota.go/v4" ) -type SlotEviction struct { - evictionEvents *shrinkingmap.ShrinkingMap[iotago.SlotIndex, reactive.Event] +type EvictionState[Type SlotType] struct { + evictionEvents *shrinkingmap.ShrinkingMap[Type, reactive.Event] - lastEvictedSlotIndex reactive.Variable[iotago.SlotIndex] + lastEvictedSlotIndex reactive.Variable[Type] } -func NewSlotEviction() *SlotEviction { - return &SlotEviction{ - evictionEvents: shrinkingmap.New[iotago.SlotIndex, reactive.Event](), - lastEvictedSlotIndex: reactive.NewVariable[iotago.SlotIndex](), +func NewEvictionState[Type SlotType]() *EvictionState[Type] { + return &EvictionState[Type]{ + evictionEvents: shrinkingmap.New[Type, reactive.Event](), + lastEvictedSlotIndex: reactive.NewVariable[Type](), } } -func (c *SlotEviction) LastEvictedSlotIndex() reactive.Variable[iotago.SlotIndex] { +func (c *EvictionState[Type]) LastEvictedSlot() reactive.Variable[Type] { return c.lastEvictedSlotIndex } -func (c *SlotEviction) EvictedEvent(index iotago.SlotIndex) reactive.Event { - slotEvictedEvent := defaultTriggeredEvent +func (c *EvictionState[Type]) EvictionEvent(slot Type) reactive.Event { + evictionEvent := evictedSlotEvent - c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex iotago.SlotIndex) iotago.SlotIndex { - if index > lastEvictedSlotIndex { - slotEvictedEvent, _ = c.evictionEvents.GetOrCreate(index, reactive.NewEvent) + c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex Type) Type { + if slot > lastEvictedSlotIndex { + evictionEvent, _ = c.evictionEvents.GetOrCreate(slot, reactive.NewEvent) } - return lastEvictedSlotIndex }) - return slotEvictedEvent + return evictionEvent } -func (c *SlotEviction) Evict(slotIndex iotago.SlotIndex) { - slotEvictedEventsToTrigger := make([]reactive.Event, 0) +func (c *EvictionState[Type]) Evict(slot Type) { + for _, slotEvictedEvent := range c.evict(slot) { + slotEvictedEvent.Trigger() + } +} - c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex iotago.SlotIndex) iotago.SlotIndex { - if slotIndex <= lastEvictedSlotIndex { +func (c *EvictionState[Type]) evict(slot Type) (eventsToTrigger []reactive.Event) { + c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex Type) Type { + if slot <= lastEvictedSlotIndex { return lastEvictedSlotIndex } - for i := lastEvictedSlotIndex + 1; i <= slotIndex; i++ { + for i := lastEvictedSlotIndex + Type(1); i <= slot; i = i + Type(1) { if slotEvictedEvent, exists := c.evictionEvents.Get(i); exists { - slotEvictedEventsToTrigger = append(slotEvictedEventsToTrigger, slotEvictedEvent) + eventsToTrigger = append(eventsToTrigger, slotEvictedEvent) } } - return slotIndex + return slot }) - for _, slotEvictedEvent := range slotEvictedEventsToTrigger { - slotEvictedEvent.Trigger() - } + return eventsToTrigger +} + +type SlotType interface { + ~int | ~int8 | ~int16 | ~int32 | ~int64 | ~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr | ~float32 | ~float64 | ~string } -var defaultTriggeredEvent = reactive.NewEvent() +var evictedSlotEvent = reactive.NewEvent() func init() { - defaultTriggeredEvent.Trigger() + evictedSlotEvent.Trigger() } From 9ace1a96787fd0c09273b640ca9a6100c5a68fc1 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 18:10:14 +0200 Subject: [PATCH 013/356] Feat: upgraded hive.go --- go.mod | 28 ++++++++--------- go.sum | 56 +++++++++++++++++----------------- tools/evil-spammer/go.mod | 26 ++++++++-------- tools/evil-spammer/go.sum | 53 ++++++++++++++++---------------- tools/gendoc/go.mod | 28 ++++++++--------- tools/gendoc/go.sum | 57 +++++++++++++++++------------------ tools/genesis-snapshot/go.mod | 22 +++++++------- tools/genesis-snapshot/go.sum | 45 ++++++++++++++------------- 8 files changed, 156 insertions(+), 159 deletions(-) diff --git a/go.mod b/go.mod index 9c61f6307..d03594749 100644 --- a/go.mod +++ b/go.mod @@ -9,20 +9,20 @@ require ( github.com/google/uuid v1.3.0 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/app v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/autopeering v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d - github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/logger v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d - github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d + github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 diff --git a/go.sum b/go.sum index b4f79a7ff..b9959100c 100644 --- a/go.sum +++ b/go.sum @@ -254,34 +254,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d h1:392S0NOy9xv5ruH8MuPFCJAygmx4mPbWD8M6CZh4t3U= -github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/app v0.0.0-20230817124507-83988a14d80d h1:FtZpzQrYcQwPqbCDkOpZmX2VEWtk56ktYNWa4+q8qL8= -github.com/iotaledger/hive.go/app v0.0.0-20230817124507-83988a14d80d/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230817124507-83988a14d80d h1:e9MllCVdUsJ4LDkCuTPPCmvf1vAfwqkgmk9+fkhfhKg= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230817124507-83988a14d80d/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= -github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d h1:jj5Trw5So5VQjAKxCoI0NnqIhn6eHKZAj4x5+jVqSnE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d h1:GhtxH74XFWHd9UHvFsLTZjx/in6ApYcC2zJX6hCXrrg= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d h1:ggHDvRR/FN16iuKia5ZOSAL7DuoMDhHp70s4suxGS4U= -github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6 h1:IkP9D1XcpdWiYCbQsql6ZRWlkakgYSCxHTAGthD0qAA= -github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d h1:HvTox3m7aBI4c7iIOqPHFPEIbGh9nBg4plq+MguQy3E= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d h1:c+tEbtsVysxgtiRHGC/LxaH73p3vRoHu13NKgQLTzMw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d h1:SWodxhTsxsULP9pTkQdECNHnSDWQ/QQlGjCiqG5xmmM= -github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/logger v0.0.0-20230817124507-83988a14d80d h1:gdtzDhMMoZS1DtjwSQZnKIrCOh8+GTZBLjbXKXB6AtY= -github.com/iotaledger/hive.go/logger v0.0.0-20230817124507-83988a14d80d/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= -github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d h1:lxy0bWi/CVWa7DZcQFXxbrHJB61FWfXJF9CLwVzRWDs= -github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d h1:xBxlXSCzo2bnZ5CD6mRIB01Gn4FO0t38haCzi6vByJ8= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d h1:ATlvoe1GB3hmQ0U0fj4Wmdo941wNIr+546e6xT3RmIM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe h1:lym78NwkqqaQceko4k/Gln7pdnuZ3xOrDfAPsZkRNNU= +github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe h1:OiM3vVul/cd/hYxZcJL4E8gPzBVVM+MtfrgzxlzquEw= +github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe h1:E2d6bO2Ygceu8VnV+0lzDWlk11wq6RiYXYJk506nT/I= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe h1:gfnaiPzugS1QYw1fGzeZ7J9lAALP2bdKlav+7jv/onA= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe h1:QrSZZwTSM4MdbSqKWQKj0tTW6GH/l/xfTKmp87J98IU= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe h1:yHYcN//gh6Ta1jZH9aWm76J5SdTNF2p2dKYAjcD+kPc= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe h1:Cxh3w2dO+LbdSnKO5oZgk4/57auufedUDck1Bt7bqmQ= +github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe h1:fJAZNKSHOm5zq4YJmOU5UP7xvxfYU3HtvcIIyrN7JBQ= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe h1:nmdbJ/42eBoZll+yA6pP5zrmLObAhl5cRe8nWYuA+T8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe h1:3/oSOozNVZG3T2WATsBVR4O09ojI9qaT8/SW1rF5pbI= +github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe h1:yX7mrXKll24W7i/oNWxdY4Zjp4K30DFg/u0BxGRH8Ys= +github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe h1:tIzb1VIXO/umwWAhaL9B2aGrK83caTdAibsGrHaOwmQ= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe h1:hVr8L0tW9tR4e/8vCRAOJ+HEMnuTSDUjJt+8+1I2ISI= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe h1:Bvf/f9OfQHVz2gGMZpZLiLwR30nNpZgCiFMpU+LO6n8= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c h1:zdVb1xIY+ypP7HVzypewLE/tj37p4qjSQ3Wj0ogkAog= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c/go.mod h1:zoeXg8m9SfQTQY/2713pkocWg0Fi8U5fnoffcqar2J8= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 h1:AN2pAMyIhsfxMUWm3GX/FgastZFP5Q7lzfYboURzgus= diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index a69aa654c..8f9abecf7 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -8,13 +8,13 @@ replace github.com/iotaledger/iota-core/tools/genesis-snapshot => ../genesis-sna require ( github.com/AlecAivazis/survey/v2 v2.3.7 - github.com/iotaledger/hive.go/app v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/logger v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d + github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 @@ -37,12 +37,12 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/knadh/koanf v1.5.0 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index 196a3c092..f4f73525f 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -166,33 +166,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d h1:392S0NOy9xv5ruH8MuPFCJAygmx4mPbWD8M6CZh4t3U= -github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/app v0.0.0-20230817124507-83988a14d80d h1:FtZpzQrYcQwPqbCDkOpZmX2VEWtk56ktYNWa4+q8qL8= -github.com/iotaledger/hive.go/app v0.0.0-20230817124507-83988a14d80d/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= -github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d h1:jj5Trw5So5VQjAKxCoI0NnqIhn6eHKZAj4x5+jVqSnE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d h1:GhtxH74XFWHd9UHvFsLTZjx/in6ApYcC2zJX6hCXrrg= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d h1:ggHDvRR/FN16iuKia5ZOSAL7DuoMDhHp70s4suxGS4U= -github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d h1:usox/ZLeIDMBs0vyxzxZ4gmqSAGtPEKHF7ss6A/5/R0= -github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d h1:HvTox3m7aBI4c7iIOqPHFPEIbGh9nBg4plq+MguQy3E= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d h1:c+tEbtsVysxgtiRHGC/LxaH73p3vRoHu13NKgQLTzMw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d h1:SWodxhTsxsULP9pTkQdECNHnSDWQ/QQlGjCiqG5xmmM= -github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/logger v0.0.0-20230817124507-83988a14d80d h1:gdtzDhMMoZS1DtjwSQZnKIrCOh8+GTZBLjbXKXB6AtY= -github.com/iotaledger/hive.go/logger v0.0.0-20230817124507-83988a14d80d/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= -github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d h1:lxy0bWi/CVWa7DZcQFXxbrHJB61FWfXJF9CLwVzRWDs= -github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d h1:xBxlXSCzo2bnZ5CD6mRIB01Gn4FO0t38haCzi6vByJ8= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d h1:ATlvoe1GB3hmQ0U0fj4Wmdo941wNIr+546e6xT3RmIM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe h1:lym78NwkqqaQceko4k/Gln7pdnuZ3xOrDfAPsZkRNNU= +github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe h1:OiM3vVul/cd/hYxZcJL4E8gPzBVVM+MtfrgzxlzquEw= +github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe h1:gfnaiPzugS1QYw1fGzeZ7J9lAALP2bdKlav+7jv/onA= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe h1:QrSZZwTSM4MdbSqKWQKj0tTW6GH/l/xfTKmp87J98IU= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe h1:yHYcN//gh6Ta1jZH9aWm76J5SdTNF2p2dKYAjcD+kPc= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe h1:Cxh3w2dO+LbdSnKO5oZgk4/57auufedUDck1Bt7bqmQ= +github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe h1:fJAZNKSHOm5zq4YJmOU5UP7xvxfYU3HtvcIIyrN7JBQ= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe h1:nmdbJ/42eBoZll+yA6pP5zrmLObAhl5cRe8nWYuA+T8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe h1:3/oSOozNVZG3T2WATsBVR4O09ojI9qaT8/SW1rF5pbI= +github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe h1:yX7mrXKll24W7i/oNWxdY4Zjp4K30DFg/u0BxGRH8Ys= +github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe h1:tIzb1VIXO/umwWAhaL9B2aGrK83caTdAibsGrHaOwmQ= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe h1:hVr8L0tW9tR4e/8vCRAOJ+HEMnuTSDUjJt+8+1I2ISI= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe h1:Bvf/f9OfQHVz2gGMZpZLiLwR30nNpZgCiFMpU+LO6n8= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 h1:ZNk2KtJ1ZBV8LChNB9LrAOd6XPXKZAfCm30Lne3kJR0= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760/go.mod h1:BGmYQp0ZX6OidxsNzH+GbwF2oc4wbsCSNHVnt0P+vl0= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 41c54c3dc..e5bff853e 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.20 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20230817124507-83988a14d80d + github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe github.com/iotaledger/hive.go/apputils v0.0.0-20230706083020-ef6c3248369d github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -53,19 +53,19 @@ require ( github.com/huin/goupnp v1.2.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/autopeering v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 7add7885b..3b83971be 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -255,37 +255,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d h1:392S0NOy9xv5ruH8MuPFCJAygmx4mPbWD8M6CZh4t3U= -github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/app v0.0.0-20230817124507-83988a14d80d h1:FtZpzQrYcQwPqbCDkOpZmX2VEWtk56ktYNWa4+q8qL8= -github.com/iotaledger/hive.go/app v0.0.0-20230817124507-83988a14d80d/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= +github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe h1:lym78NwkqqaQceko4k/Gln7pdnuZ3xOrDfAPsZkRNNU= +github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe h1:OiM3vVul/cd/hYxZcJL4E8gPzBVVM+MtfrgzxlzquEw= +github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= github.com/iotaledger/hive.go/apputils v0.0.0-20230706083020-ef6c3248369d h1:bsCtNVHZnvIni2pIwb5n79cj9EDMXTc6G+dwYAqn0M8= github.com/iotaledger/hive.go/apputils v0.0.0-20230706083020-ef6c3248369d/go.mod h1:MlnA3hnPjJabmq9zymYheZw1Gt6OwyHZD7HiZVSSRjc= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230817124507-83988a14d80d h1:e9MllCVdUsJ4LDkCuTPPCmvf1vAfwqkgmk9+fkhfhKg= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230817124507-83988a14d80d/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= -github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d h1:jj5Trw5So5VQjAKxCoI0NnqIhn6eHKZAj4x5+jVqSnE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d h1:GhtxH74XFWHd9UHvFsLTZjx/in6ApYcC2zJX6hCXrrg= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d h1:ggHDvRR/FN16iuKia5ZOSAL7DuoMDhHp70s4suxGS4U= -github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d h1:usox/ZLeIDMBs0vyxzxZ4gmqSAGtPEKHF7ss6A/5/R0= -github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d h1:HvTox3m7aBI4c7iIOqPHFPEIbGh9nBg4plq+MguQy3E= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d h1:c+tEbtsVysxgtiRHGC/LxaH73p3vRoHu13NKgQLTzMw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d h1:SWodxhTsxsULP9pTkQdECNHnSDWQ/QQlGjCiqG5xmmM= -github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/logger v0.0.0-20230817124507-83988a14d80d h1:gdtzDhMMoZS1DtjwSQZnKIrCOh8+GTZBLjbXKXB6AtY= -github.com/iotaledger/hive.go/logger v0.0.0-20230817124507-83988a14d80d/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= -github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d h1:lxy0bWi/CVWa7DZcQFXxbrHJB61FWfXJF9CLwVzRWDs= -github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d h1:xBxlXSCzo2bnZ5CD6mRIB01Gn4FO0t38haCzi6vByJ8= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d h1:ATlvoe1GB3hmQ0U0fj4Wmdo941wNIr+546e6xT3RmIM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe h1:E2d6bO2Ygceu8VnV+0lzDWlk11wq6RiYXYJk506nT/I= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe h1:gfnaiPzugS1QYw1fGzeZ7J9lAALP2bdKlav+7jv/onA= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe h1:QrSZZwTSM4MdbSqKWQKj0tTW6GH/l/xfTKmp87J98IU= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe h1:yHYcN//gh6Ta1jZH9aWm76J5SdTNF2p2dKYAjcD+kPc= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe h1:Cxh3w2dO+LbdSnKO5oZgk4/57auufedUDck1Bt7bqmQ= +github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe h1:fJAZNKSHOm5zq4YJmOU5UP7xvxfYU3HtvcIIyrN7JBQ= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe h1:nmdbJ/42eBoZll+yA6pP5zrmLObAhl5cRe8nWYuA+T8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe h1:3/oSOozNVZG3T2WATsBVR4O09ojI9qaT8/SW1rF5pbI= +github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe h1:yX7mrXKll24W7i/oNWxdY4Zjp4K30DFg/u0BxGRH8Ys= +github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe h1:tIzb1VIXO/umwWAhaL9B2aGrK83caTdAibsGrHaOwmQ= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe h1:hVr8L0tW9tR4e/8vCRAOJ+HEMnuTSDUjJt+8+1I2ISI= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe h1:Bvf/f9OfQHVz2gGMZpZLiLwR30nNpZgCiFMpU+LO6n8= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c h1:zdVb1xIY+ypP7HVzypewLE/tj37p4qjSQ3Wj0ogkAog= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c/go.mod h1:zoeXg8m9SfQTQY/2713pkocWg0Fi8U5fnoffcqar2J8= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 h1:AN2pAMyIhsfxMUWm3GX/FgastZFP5Q7lzfYboURzgus= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 8ae8ffb82..4ca42e3b3 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.20 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d - github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d + github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 github.com/mr-tron/base58 v1.2.0 @@ -27,13 +27,13 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe // indirect github.com/kr/text v0.2.0 // indirect github.com/natefinch/atomic v1.0.1 // indirect github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 42ee486c7..2d615fa2b 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -26,29 +26,28 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d h1:392S0NOy9xv5ruH8MuPFCJAygmx4mPbWD8M6CZh4t3U= -github.com/iotaledger/hive.go/ads v0.0.0-20230817124507-83988a14d80d/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d h1:jj5Trw5So5VQjAKxCoI0NnqIhn6eHKZAj4x5+jVqSnE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230817124507-83988a14d80d/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d h1:GhtxH74XFWHd9UHvFsLTZjx/in6ApYcC2zJX6hCXrrg= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230817124507-83988a14d80d/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d h1:ggHDvRR/FN16iuKia5ZOSAL7DuoMDhHp70s4suxGS4U= -github.com/iotaledger/hive.go/crypto v0.0.0-20230817124507-83988a14d80d/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d h1:usox/ZLeIDMBs0vyxzxZ4gmqSAGtPEKHF7ss6A/5/R0= -github.com/iotaledger/hive.go/ds v0.0.0-20230817124507-83988a14d80d/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ds v0.0.0-20230818002409-9755559b5ff6/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d h1:HvTox3m7aBI4c7iIOqPHFPEIbGh9nBg4plq+MguQy3E= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230817124507-83988a14d80d/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d h1:c+tEbtsVysxgtiRHGC/LxaH73p3vRoHu13NKgQLTzMw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230817124507-83988a14d80d/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d h1:SWodxhTsxsULP9pTkQdECNHnSDWQ/QQlGjCiqG5xmmM= -github.com/iotaledger/hive.go/lo v0.0.0-20230817124507-83988a14d80d/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d h1:lxy0bWi/CVWa7DZcQFXxbrHJB61FWfXJF9CLwVzRWDs= -github.com/iotaledger/hive.go/runtime v0.0.0-20230817124507-83988a14d80d/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d h1:xBxlXSCzo2bnZ5CD6mRIB01Gn4FO0t38haCzi6vByJ8= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230817124507-83988a14d80d/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d h1:ATlvoe1GB3hmQ0U0fj4Wmdo941wNIr+546e6xT3RmIM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230817124507-83988a14d80d/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe h1:lym78NwkqqaQceko4k/Gln7pdnuZ3xOrDfAPsZkRNNU= +github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe h1:gfnaiPzugS1QYw1fGzeZ7J9lAALP2bdKlav+7jv/onA= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe h1:QrSZZwTSM4MdbSqKWQKj0tTW6GH/l/xfTKmp87J98IU= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe h1:yHYcN//gh6Ta1jZH9aWm76J5SdTNF2p2dKYAjcD+kPc= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe h1:Cxh3w2dO+LbdSnKO5oZgk4/57auufedUDck1Bt7bqmQ= +github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe h1:fJAZNKSHOm5zq4YJmOU5UP7xvxfYU3HtvcIIyrN7JBQ= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe h1:nmdbJ/42eBoZll+yA6pP5zrmLObAhl5cRe8nWYuA+T8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe h1:3/oSOozNVZG3T2WATsBVR4O09ojI9qaT8/SW1rF5pbI= +github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe h1:tIzb1VIXO/umwWAhaL9B2aGrK83caTdAibsGrHaOwmQ= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe h1:hVr8L0tW9tR4e/8vCRAOJ+HEMnuTSDUjJt+8+1I2ISI= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe h1:Bvf/f9OfQHVz2gGMZpZLiLwR30nNpZgCiFMpU+LO6n8= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 h1:ZNk2KtJ1ZBV8LChNB9LrAOd6XPXKZAfCm30Lne3kJR0= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760/go.mod h1:BGmYQp0ZX6OidxsNzH+GbwF2oc4wbsCSNHVnt0P+vl0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= From 681fbd1133cce807e9821f52d80b30dcf6d86137 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 18:18:59 +0200 Subject: [PATCH 014/356] Feat: updated multiaddr --- go.mod | 4 ++-- go.sum | 8 ++++---- tools/gendoc/go.mod | 4 ++-- tools/gendoc/go.sum | 2 ++ 4 files changed, 10 insertions(+), 8 deletions(-) diff --git a/go.mod b/go.mod index d03594749..b844c15b6 100644 --- a/go.mod +++ b/go.mod @@ -148,7 +148,7 @@ require ( go.uber.org/fx v1.20.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.25.0 // indirect - golang.org/x/exp v0.0.0-20230810033253-352e893a4cad // indirect + golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/image v0.9.0 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect @@ -156,7 +156,7 @@ require ( golang.org/x/sys v0.11.0 // indirect golang.org/x/text v0.12.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.11.0 // indirect + golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230726155614-23370e0ffb3e // indirect gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect diff --git a/go.sum b/go.sum index b9959100c..ece9b5124 100644 --- a/go.sum +++ b/go.sum @@ -639,8 +639,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20230810033253-352e893a4cad h1:g0bG7Z4uG+OgH2QDODnjp6ggkk1bJDsINcuWmJN1iJU= -golang.org/x/exp v0.0.0-20230810033253-352e893a4cad/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= +golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8= golang.org/x/image v0.9.0 h1:QrzfX26snvCM20hIhBwuHI/ThTg18b/+kcKdXHvnR+g= golang.org/x/image v0.9.0/go.mod h1:jtrku+n79PfroUbvDdeUWMAI+heR786BofxrbiSF+J0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -789,8 +789,8 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 h1:Vve/L0v7CXXuxUmaMGIEK/dEeq7uiqb5qBgQrZzIE7E= +golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index e5bff853e..01f3e4184 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -147,7 +147,7 @@ require ( go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.25.0 // indirect golang.org/x/crypto v0.12.0 // indirect - golang.org/x/exp v0.0.0-20230810033253-352e893a4cad // indirect + golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/image v0.9.0 // indirect golang.org/x/mod v0.12.0 // indirect golang.org/x/net v0.14.0 // indirect @@ -155,7 +155,7 @@ require ( golang.org/x/sys v0.11.0 // indirect golang.org/x/text v0.12.0 // indirect golang.org/x/time v0.3.0 // indirect - golang.org/x/tools v0.11.0 // indirect + golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20230726155614-23370e0ffb3e // indirect google.golang.org/grpc v1.57.0 // indirect google.golang.org/protobuf v1.31.0 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 3b83971be..e02a8b4ea 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -642,6 +642,7 @@ golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL golang.org/x/exp v0.0.0-20230724220655-d98519c11495 h1:zKGKw2WlGb8oPoRGqQ2PT8g2YoCN1w/YbbQjHXCdUWE= golang.org/x/exp v0.0.0-20230724220655-d98519c11495/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= golang.org/x/exp v0.0.0-20230810033253-352e893a4cad/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8= golang.org/x/image v0.9.0 h1:QrzfX26snvCM20hIhBwuHI/ThTg18b/+kcKdXHvnR+g= golang.org/x/image v0.9.0/go.mod h1:jtrku+n79PfroUbvDdeUWMAI+heR786BofxrbiSF+J0= golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -792,6 +793,7 @@ golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From f1052eddf8a86aa95cd9e0c460f899df01624658 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 19:00:26 +0200 Subject: [PATCH 015/356] Feat: updated multiaddr --- go.mod | 2 +- go.sum | 4 ++-- tools/gendoc/go.mod | 2 +- tools/gendoc/go.sum | 1 + 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/go.mod b/go.mod index b844c15b6..cd242d32d 100644 --- a/go.mod +++ b/go.mod @@ -28,7 +28,7 @@ require ( github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 github.com/labstack/echo/v4 v4.11.1 github.com/libp2p/go-libp2p v0.29.0 - github.com/multiformats/go-multiaddr v0.10.1 + github.com/multiformats/go-multiaddr v0.11.0 github.com/multiformats/go-varint v0.0.7 github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e github.com/prometheus/client_golang v1.16.0 diff --git a/go.sum b/go.sum index ece9b5124..def5626e1 100644 --- a/go.sum +++ b/go.sum @@ -424,8 +424,8 @@ github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9 github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.10.1 h1:HghtFrWyZEPrpTvgAMFJi6gFdgHfs2cb0pyfDsk+lqU= -github.com/multiformats/go-multiaddr v0.10.1/go.mod h1:jLEZsA61rwWNZQTHHnqq2HNa+4os/Hz54eqiRnsRqYQ= +github.com/multiformats/go-multiaddr v0.11.0 h1:XqGyJ8ufbCE0HmTDwx2kPdsrQ36AGPZNZX6s6xfJH10= +github.com/multiformats/go-multiaddr v0.11.0/go.mod h1:gWUm0QLR4thQ6+ZF6SXUw8YjtwQSPapICM+NmCkxHSM= github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 01f3e4184..4c5a01f50 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -104,7 +104,7 @@ require ( github.com/mr-tron/base58 v1.2.0 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect github.com/multiformats/go-base36 v0.2.0 // indirect - github.com/multiformats/go-multiaddr v0.10.1 // indirect + github.com/multiformats/go-multiaddr v0.11.0 // indirect github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect github.com/multiformats/go-multibase v0.2.0 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index e02a8b4ea..7b0655805 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -429,6 +429,7 @@ github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= github.com/multiformats/go-multiaddr v0.10.1 h1:HghtFrWyZEPrpTvgAMFJi6gFdgHfs2cb0pyfDsk+lqU= github.com/multiformats/go-multiaddr v0.10.1/go.mod h1:jLEZsA61rwWNZQTHHnqq2HNa+4os/Hz54eqiRnsRqYQ= +github.com/multiformats/go-multiaddr v0.11.0/go.mod h1:gWUm0QLR4thQ6+ZF6SXUw8YjtwQSPapICM+NmCkxHSM= github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E= From 8c7928fcdbdeb971a97bae5c9d4615104b049531 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 19:14:38 +0200 Subject: [PATCH 016/356] Fix: fixed bugs --- go.mod | 11 +++++------ go.sum | 22 ++++++++++----------- pkg/protocol/chainmanagerv1/chainmanager.go | 5 ++--- tools/gendoc/go.mod | 10 +++++----- tools/gendoc/go.sum | 5 +++++ 5 files changed, 27 insertions(+), 26 deletions(-) diff --git a/go.mod b/go.mod index cd242d32d..9a8eae43f 100644 --- a/go.mod +++ b/go.mod @@ -27,7 +27,7 @@ require ( github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 github.com/labstack/echo/v4 v4.11.1 - github.com/libp2p/go-libp2p v0.29.0 + github.com/libp2p/go-libp2p v0.30.0 github.com/multiformats/go-multiaddr v0.11.0 github.com/multiformats/go-varint v0.0.7 github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e @@ -74,7 +74,7 @@ require ( github.com/google/go-github v17.0.0+incompatible // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gopacket v1.1.19 // indirect - github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 // indirect + github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/holiman/uint256 v1.2.3 // indirect github.com/huin/goupnp v1.2.0 // indirect @@ -97,7 +97,7 @@ require ( github.com/libp2p/go-msgio v0.3.0 // indirect github.com/libp2p/go-nat v0.2.0 // indirect github.com/libp2p/go-netroute v0.2.1 // indirect - github.com/libp2p/go-reuseport v0.3.0 // indirect + github.com/libp2p/go-reuseport v0.4.0 // indirect github.com/libp2p/go-yamux/v4 v4.0.1 // indirect github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -133,9 +133,8 @@ require ( github.com/prometheus/common v0.44.0 // indirect github.com/prometheus/procfs v0.11.1 // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/qtls-go1-19 v0.3.2 // indirect - github.com/quic-go/qtls-go1-20 v0.2.2 // indirect - github.com/quic-go/quic-go v0.36.2 // indirect + github.com/quic-go/qtls-go1-20 v0.3.2 // indirect + github.com/quic-go/quic-go v0.38.0 // indirect github.com/quic-go/webtransport-go v0.5.3 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect diff --git a/go.sum b/go.sum index def5626e1..f69ad4079 100644 --- a/go.sum +++ b/go.sum @@ -191,8 +191,8 @@ github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= -github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= +github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f h1:pDhu5sgp8yJlEF/g6osliIIpF9K4F5jvkULXa4daRDQ= +github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -343,8 +343,8 @@ github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38y github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= -github.com/libp2p/go-libp2p v0.29.0 h1:QduJ2XQr/Crg4EnloueWDL0Jj86N3Ezhyyj7XH+XwHI= -github.com/libp2p/go-libp2p v0.29.0/go.mod h1:iNKL7mEnZ9wAss+03IjAwM9ZAQXfVUAPUUmOACQfQ/g= +github.com/libp2p/go-libp2p v0.30.0 h1:9EZwFtJPFBcs/yJTnP90TpN1hgrT/EsFfM+OZuwV87U= +github.com/libp2p/go-libp2p v0.30.0/go.mod h1:nr2g5V7lfftwgiJ78/HrID+pwvayLyqKCEirT2Y3Byg= github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s= github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w= github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= @@ -354,8 +354,8 @@ github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk= github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk= github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= -github.com/libp2p/go-reuseport v0.3.0 h1:iiZslO5byUYZEg9iCwJGf5h+sf1Agmqx2V2FDjPyvUw= -github.com/libp2p/go-reuseport v0.3.0/go.mod h1:laea40AimhtfEqysZ71UpYj4S+R9VpH8PgqLo7L+SwI= +github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s= +github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= @@ -512,12 +512,10 @@ github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwa github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/qtls-go1-19 v0.3.2 h1:tFxjCFcTQzK+oMxG6Zcvp4Dq8dx4yD3dDiIiyc86Z5U= -github.com/quic-go/qtls-go1-19 v0.3.2/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI= -github.com/quic-go/qtls-go1-20 v0.2.2 h1:WLOPx6OY/hxtTxKV1Zrq20FtXtDEkeY00CGQm8GEa3E= -github.com/quic-go/qtls-go1-20 v0.2.2/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM= -github.com/quic-go/quic-go v0.36.2 h1:ZX/UNQ4gvpCv2RmwdbA6lrRjF6EBm5yZ7TMoT4NQVrA= -github.com/quic-go/quic-go v0.36.2/go.mod h1:zPetvwDlILVxt15n3hr3Gf/I3mDf7LpLKPhR4Ez0AZQ= +github.com/quic-go/qtls-go1-20 v0.3.2 h1:rRgN3WfnKbyik4dBV8A6girlJVxGand/d+jVKbQq5GI= +github.com/quic-go/qtls-go1-20 v0.3.2/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= +github.com/quic-go/quic-go v0.38.0 h1:T45lASr5q/TrVwt+jrVccmqHhPL2XuSyoCLVCpfOSLc= +github.com/quic-go/quic-go v0.38.0/go.mod h1:MPCuRq7KBK2hNcfKj/1iD1BGuN3eAYMeNxp3T42LRUg= github.com/quic-go/webtransport-go v0.5.3 h1:5XMlzemqB4qmOlgIus5zB45AcZ2kCgCy2EptUrfOPWU= github.com/quic-go/webtransport-go v0.5.3/go.mod h1:OhmmgJIzTTqXK5xvtuX0oBpLV2GkLWNDA+UeTGJXErU= github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 793b8eb1f..88e545b27 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -23,17 +23,16 @@ type ChainManager struct { commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - *EvictionState + reactive.EvictionState[iotago.SlotIndex] } func NewChainManager() *ChainManager { return &ChainManager{ + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), rootCommitment: reactive.NewVariable[*CommitmentMetadata](), commitmentCreated: event.New1[*CommitmentMetadata](), cachedCommitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - - EvictionState: NewEvictionState(), } } diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 4c5a01f50..49d9f6d61 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -44,7 +44,7 @@ require ( github.com/google/go-github v17.0.0+incompatible // indirect github.com/google/go-querystring v1.1.0 // indirect github.com/google/gopacket v1.1.19 // indirect - github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 // indirect + github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f // indirect github.com/google/uuid v1.3.0 // indirect github.com/gorilla/websocket v1.5.0 // indirect github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 // indirect @@ -83,12 +83,12 @@ require ( github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-cidranger v1.1.0 // indirect github.com/libp2p/go-flow-metrics v0.1.0 // indirect - github.com/libp2p/go-libp2p v0.29.0 // indirect + github.com/libp2p/go-libp2p v0.30.0 // indirect github.com/libp2p/go-libp2p-asn-util v0.3.0 // indirect github.com/libp2p/go-msgio v0.3.0 // indirect github.com/libp2p/go-nat v0.2.0 // indirect github.com/libp2p/go-netroute v0.2.1 // indirect - github.com/libp2p/go-reuseport v0.3.0 // indirect + github.com/libp2p/go-reuseport v0.4.0 // indirect github.com/libp2p/go-yamux/v4 v4.0.1 // indirect github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect github.com/mattn/go-colorable v0.1.13 // indirect @@ -128,8 +128,8 @@ require ( github.com/prometheus/procfs v0.11.1 // indirect github.com/quic-go/qpack v0.4.0 // indirect github.com/quic-go/qtls-go1-19 v0.3.2 // indirect - github.com/quic-go/qtls-go1-20 v0.2.2 // indirect - github.com/quic-go/quic-go v0.36.2 // indirect + github.com/quic-go/qtls-go1-20 v0.3.2 // indirect + github.com/quic-go/quic-go v0.38.0 // indirect github.com/quic-go/webtransport-go v0.5.3 // indirect github.com/raulk/go-watchdog v1.3.0 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 7b0655805..ac2ac9268 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -194,6 +194,7 @@ github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OI github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= +github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= @@ -348,6 +349,7 @@ github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFG github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= github.com/libp2p/go-libp2p v0.29.0 h1:QduJ2XQr/Crg4EnloueWDL0Jj86N3Ezhyyj7XH+XwHI= github.com/libp2p/go-libp2p v0.29.0/go.mod h1:iNKL7mEnZ9wAss+03IjAwM9ZAQXfVUAPUUmOACQfQ/g= +github.com/libp2p/go-libp2p v0.30.0/go.mod h1:nr2g5V7lfftwgiJ78/HrID+pwvayLyqKCEirT2Y3Byg= github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s= github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w= github.com/libp2p/go-libp2p-testing v0.12.0 h1:EPvBb4kKMWO29qP4mZGyhVzUyR25dvfUIK5WDu6iPUA= @@ -359,6 +361,7 @@ github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9t github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= github.com/libp2p/go-reuseport v0.3.0 h1:iiZslO5byUYZEg9iCwJGf5h+sf1Agmqx2V2FDjPyvUw= github.com/libp2p/go-reuseport v0.3.0/go.mod h1:laea40AimhtfEqysZ71UpYj4S+R9VpH8PgqLo7L+SwI= +github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= @@ -519,8 +522,10 @@ github.com/quic-go/qtls-go1-19 v0.3.2 h1:tFxjCFcTQzK+oMxG6Zcvp4Dq8dx4yD3dDiIiyc8 github.com/quic-go/qtls-go1-19 v0.3.2/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI= github.com/quic-go/qtls-go1-20 v0.2.2 h1:WLOPx6OY/hxtTxKV1Zrq20FtXtDEkeY00CGQm8GEa3E= github.com/quic-go/qtls-go1-20 v0.2.2/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM= +github.com/quic-go/qtls-go1-20 v0.3.2/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= github.com/quic-go/quic-go v0.36.2 h1:ZX/UNQ4gvpCv2RmwdbA6lrRjF6EBm5yZ7TMoT4NQVrA= github.com/quic-go/quic-go v0.36.2/go.mod h1:zPetvwDlILVxt15n3hr3Gf/I3mDf7LpLKPhR4Ez0AZQ= +github.com/quic-go/quic-go v0.38.0/go.mod h1:MPCuRq7KBK2hNcfKj/1iD1BGuN3eAYMeNxp3T42LRUg= github.com/quic-go/webtransport-go v0.5.3 h1:5XMlzemqB4qmOlgIus5zB45AcZ2kCgCy2EptUrfOPWU= github.com/quic-go/webtransport-go v0.5.3/go.mod h1:OhmmgJIzTTqXK5xvtuX0oBpLV2GkLWNDA+UeTGJXErU= github.com/raulk/go-watchdog v1.3.0 h1:oUmdlHxdkXRJlwfG0O9omj8ukerm8MEQavSiDTEtBsk= From 1271986b7a7658a874f47a5729e754d204e108ef Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 19:33:12 +0200 Subject: [PATCH 017/356] Feat: deleted eviction --- pkg/protocol/chainmanagerv1/eviction.go | 70 ------------------------- 1 file changed, 70 deletions(-) delete mode 100644 pkg/protocol/chainmanagerv1/eviction.go diff --git a/pkg/protocol/chainmanagerv1/eviction.go b/pkg/protocol/chainmanagerv1/eviction.go deleted file mode 100644 index 38122e5f3..000000000 --- a/pkg/protocol/chainmanagerv1/eviction.go +++ /dev/null @@ -1,70 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/ds/shrinkingmap" -) - -type EvictionState[Type SlotType] struct { - evictionEvents *shrinkingmap.ShrinkingMap[Type, reactive.Event] - - lastEvictedSlotIndex reactive.Variable[Type] -} - -func NewEvictionState[Type SlotType]() *EvictionState[Type] { - return &EvictionState[Type]{ - evictionEvents: shrinkingmap.New[Type, reactive.Event](), - lastEvictedSlotIndex: reactive.NewVariable[Type](), - } -} - -func (c *EvictionState[Type]) LastEvictedSlot() reactive.Variable[Type] { - return c.lastEvictedSlotIndex -} - -func (c *EvictionState[Type]) EvictionEvent(slot Type) reactive.Event { - evictionEvent := evictedSlotEvent - - c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex Type) Type { - if slot > lastEvictedSlotIndex { - evictionEvent, _ = c.evictionEvents.GetOrCreate(slot, reactive.NewEvent) - } - return lastEvictedSlotIndex - }) - - return evictionEvent -} - -func (c *EvictionState[Type]) Evict(slot Type) { - for _, slotEvictedEvent := range c.evict(slot) { - slotEvictedEvent.Trigger() - } -} - -func (c *EvictionState[Type]) evict(slot Type) (eventsToTrigger []reactive.Event) { - c.lastEvictedSlotIndex.Compute(func(lastEvictedSlotIndex Type) Type { - if slot <= lastEvictedSlotIndex { - return lastEvictedSlotIndex - } - - for i := lastEvictedSlotIndex + Type(1); i <= slot; i = i + Type(1) { - if slotEvictedEvent, exists := c.evictionEvents.Get(i); exists { - eventsToTrigger = append(eventsToTrigger, slotEvictedEvent) - } - } - - return slot - }) - - return eventsToTrigger -} - -type SlotType interface { - ~int | ~int8 | ~int16 | ~int32 | ~int64 | ~uint | ~uint8 | ~uint16 | ~uint32 | ~uint64 | ~uintptr | ~float32 | ~float64 | ~string -} - -var evictedSlotEvent = reactive.NewEvent() - -func init() { - evictedSlotEvent.Trigger() -} From 7ff99982bc7e413b4d9fa207d39ca2961e8daf20 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 19:37:58 +0200 Subject: [PATCH 018/356] Feat: addressed linter remark --- pkg/protocol/chainmanagerv1/chain.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 14932b868..bf51ba3f9 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -63,9 +63,9 @@ func NewChain(forkingPoint *CommitmentMetadata) *Chain { c.cumulativeWeight = reactive.NewDerivedVariable[uint64](func(latestCommitmentIndex iotago.SlotIndex) uint64 { if latestCommitment, exists := c.commitments.Get(latestCommitmentIndex); exists { return latestCommitment.CumulativeWeight() - } else { - panic(fmt.Sprintf("latest commitment with index %d does not exist", latestCommitmentIndex)) } + + panic(fmt.Sprintf("latest commitment with index %d does not exist", latestCommitmentIndex)) }, c.latestCommitmentIndex) return c From 2f4b37e6ef9168bf9cbf5a24bdecfb4acba3ac70 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 19:42:13 +0200 Subject: [PATCH 019/356] Refactor: addressed linter remark --- pkg/protocol/chainmanagerv1/chainmanager.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 88e545b27..5dd9ca479 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -37,7 +37,7 @@ func NewChainManager() *ChainManager { } func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata) { - if commitmentRequest, _ := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *CommitmentMetadata) { + if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *CommitmentMetadata) { commitmentMetadata = resolvedMetadata }); commitmentRequest != nil { commitmentRequest.Resolve(NewCommitmentMetadata(commitment)) @@ -93,7 +93,7 @@ func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvict c.commitmentCreated.Trigger(commitment) } -func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.SlotIndex, requestIfMissing bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata], requestCreated bool) { +func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.SlotIndex, requestIfMissing bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata]) { slotEvicted := c.EvictionEvent(index) if slotEvicted.WasTriggered() { if rootCommitment := c.rootCommitment.Get(); rootCommitment != nil && id == rootCommitment.ID() { @@ -101,13 +101,14 @@ func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.Sl successCallback(rootCommitment) } - return promise.New[*CommitmentMetadata]().Resolve(rootCommitment), false + return promise.New[*CommitmentMetadata]().Resolve(rootCommitment) } - return nil, false + return nil } - if commitmentRequest, requestCreated = c.cachedCommitments.GetOrCreate(id, lo.NoVariadic(promise.New[*CommitmentMetadata])); requestCreated { + commitmentRequest, requestCreated := c.cachedCommitments.GetOrCreate(id, lo.NoVariadic(promise.New[*CommitmentMetadata])) + if requestCreated { if requestIfMissing { c.commitmentRequester.StartTicker(id) } @@ -127,5 +128,5 @@ func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.Sl commitmentRequest.OnSuccess(successCallback) } - return commitmentRequest, requestCreated + return commitmentRequest } From ef3debbe9f22ad4b1c140e46f026fdcbaa2b1a7b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 19:49:47 +0200 Subject: [PATCH 020/356] Refactor: removed unused id --- pkg/protocol/chainmanagerv1/commitment_metadata.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index af09f9296..484fddabc 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -125,7 +125,7 @@ func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { // triggerEventIfIndexBelowThreshold triggers the given event if the commitment's index is below the given // threshold. We only monitor the threshold after the corresponding parent event was triggered (to minimize // the amount of elements that listen to updates of the same property). - triggerEventIfIndexBelowThreshold := func(eventFunc func(*CommitmentMetadata) reactive.Event, thresholdFunc func(*Chain) reactive.Variable[iotago.SlotIndex], id string) { + triggerEventIfIndexBelowThreshold := func(eventFunc func(*CommitmentMetadata) reactive.Event, thresholdFunc func(*Chain) reactive.Variable[iotago.SlotIndex]) { eventFunc(parent).OnTrigger(func() { unsubscribe := thresholdFunc(c.chain.Get()).OnUpdate(func(_, latestVerifiedCommitmentIndex iotago.SlotIndex) { if c.Index() < latestVerifiedCommitmentIndex { @@ -137,9 +137,9 @@ func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { }) } - triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedCommitmentIndex, "BelowLatestVerifiedCommitment") - triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowSyncThreshold, (*Chain).SyncThreshold, "BelowSyncThreshold") - triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowWarpSyncThreshold, (*Chain).WarpSyncThreshold, "BelowWarpSyncThreshold") + triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedCommitmentIndex) + triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowSyncThreshold, (*Chain).SyncThreshold) + triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowWarpSyncThreshold, (*Chain).WarpSyncThreshold) } func (c *CommitmentMetadata) registerChild(newChild *CommitmentMetadata, onSuccessorUpdated func(*CommitmentMetadata, *CommitmentMetadata)) { From b1fddc37a3b47cebe41a1c796763663268a18e20 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 23:27:52 +0200 Subject: [PATCH 021/356] Fix: fixed bug --- pkg/protocol/chainmanagerv1/chain.go | 10 ++++++++++ pkg/protocol/chainmanagerv1/chainmanager.go | 1 - 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index bf51ba3f9..d4ce9fc89 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -52,6 +52,8 @@ func NewChain(forkingPoint *CommitmentMetadata) *Chain { c.forkingPoint.Set(forkingPoint) c.latestCommitmentIndex.Set(forkingPoint.Index()) + forkingPoint.Chain().Set(c) + c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { return latestVerifiedCommitmentIndex + 1 + SyncWindow }, c.latestVerifiedCommitmentIndex) @@ -71,6 +73,14 @@ func NewChain(forkingPoint *CommitmentMetadata) *Chain { return c } +func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *CommitmentMetadata, exists bool) { + if commitment, exists = c.commitments.Get(index); exists { + return commitment, true + } + + return nil, false +} + func (c *Chain) ForkingPoint() reactive.Variable[*CommitmentMetadata] { return c.forkingPoint } diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 5dd9ca479..578f589cf 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -73,7 +73,6 @@ func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitme commitmentMetadata.Evicted().Trigger() c.rootChain = NewChain(commitmentMetadata) - commitmentMetadata.Chain().Set(c.rootChain) return commitmentMetadata }) From c16b62c6b2ba467b70e6769735688a72c4978ba6 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 21 Aug 2023 23:31:31 +0200 Subject: [PATCH 022/356] Fix: fixed linter false positive --- components/metrics/metrics_scheduler.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/metrics/metrics_scheduler.go b/components/metrics/metrics_scheduler.go index 65dbb46d1..d408b64d2 100644 --- a/components/metrics/metrics_scheduler.go +++ b/components/metrics/metrics_scheduler.go @@ -11,7 +11,7 @@ import ( const ( schedulerNamespace = "scheduler" - queueSizePerNodeWork = "queue_size_per_node_work" + queueSizePerNodeWork = "queue_size_per_node_work" // #nosec G101 queueSizePerNodeCount = "queue_size_per_node_count" schedulerProcessedBlocks = "processed_blocks" manaAmountPerNode = "mana_per_node" @@ -19,7 +19,7 @@ const ( skippedBlockLabel = "skipped" droppedBlockLabel = "dropped" enqueuedBlockLabel = "enqueued" - bufferReadyBlockCount = "buffer_ready_block_total" + bufferReadyBlockCount = "buffer_ready_block_total" // #nosec G101 bufferTotalSize = "buffer_size_block_total" bufferMaxSize = "buffer_max_size" rate = "rate" From 1c7d604c2c6b1b7e3a16ad07973c9c5f40f96111 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 22 Aug 2023 01:14:57 +0200 Subject: [PATCH 023/356] Feat: upgraded hive.go --- go.mod | 28 ++++----- go.sum | 56 +++++++++--------- pkg/protocol/chainmanagerv1/chain.go | 29 ++++------ tools/evil-spammer/go.mod | 26 ++++----- tools/evil-spammer/go.sum | 55 +++++++++--------- tools/gendoc/go.mod | 29 +++++----- tools/gendoc/go.sum | 86 ++++++++++++---------------- tools/genesis-snapshot/go.mod | 22 +++---- tools/genesis-snapshot/go.sum | 47 ++++++++------- 9 files changed, 178 insertions(+), 200 deletions(-) diff --git a/go.mod b/go.mod index 9a8eae43f..b646e1603 100644 --- a/go.mod +++ b/go.mod @@ -9,20 +9,20 @@ require ( github.com/google/uuid v1.3.0 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 diff --git a/go.sum b/go.sum index f69ad4079..5db0e8e54 100644 --- a/go.sum +++ b/go.sum @@ -254,34 +254,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe h1:lym78NwkqqaQceko4k/Gln7pdnuZ3xOrDfAPsZkRNNU= -github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe h1:OiM3vVul/cd/hYxZcJL4E8gPzBVVM+MtfrgzxlzquEw= -github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe h1:E2d6bO2Ygceu8VnV+0lzDWlk11wq6RiYXYJk506nT/I= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe h1:gfnaiPzugS1QYw1fGzeZ7J9lAALP2bdKlav+7jv/onA= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe h1:QrSZZwTSM4MdbSqKWQKj0tTW6GH/l/xfTKmp87J98IU= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe h1:yHYcN//gh6Ta1jZH9aWm76J5SdTNF2p2dKYAjcD+kPc= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe h1:Cxh3w2dO+LbdSnKO5oZgk4/57auufedUDck1Bt7bqmQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe h1:fJAZNKSHOm5zq4YJmOU5UP7xvxfYU3HtvcIIyrN7JBQ= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe h1:nmdbJ/42eBoZll+yA6pP5zrmLObAhl5cRe8nWYuA+T8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe h1:3/oSOozNVZG3T2WATsBVR4O09ojI9qaT8/SW1rF5pbI= -github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe h1:yX7mrXKll24W7i/oNWxdY4Zjp4K30DFg/u0BxGRH8Ys= -github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe h1:tIzb1VIXO/umwWAhaL9B2aGrK83caTdAibsGrHaOwmQ= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe h1:hVr8L0tW9tR4e/8vCRAOJ+HEMnuTSDUjJt+8+1I2ISI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe h1:Bvf/f9OfQHVz2gGMZpZLiLwR30nNpZgCiFMpU+LO6n8= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 h1:0gb4f8p4lnKY5v5Q0/CiO/+ujGUftMgz3t2IhqUI90w= +github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 h1:HxfOCRmVB7Z5s68DiJ6iRLlBTgAfgjO+ygEH/mHjGRg= +github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806 h1:IkUWo8d6pbbQLfXNb+kO5txSBW1otonIBKGMYeqJVkE= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 h1:ueO8tM6XzEGHy9dougSngEnryOJFt6Ypj/ivAA5fU10= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 h1:Xrdn3BcPt/FvcdyElk71tsdex4nYWWuoxHGW2CCZ/IA= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 h1:B8tav8rsLHfDFMhV8lPmFJPZN3UZJar/kgutXqBv2Fo= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 h1:9mJ2jT0npWGtIBfQE0WJKS2UXYxxNuBkLkaslBEPLjc= +github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 h1:JYWVVQW/1TgfDt4UVQoD4A+wCHlEFWwLw48IjeavYcY= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 h1:rXnpAIKUlTGjacpOf8lqFHvdN31qA+C4+lhFftcunkw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 h1:6Kp6ZgFuWK/E1b7k/tPM3RaPRAVYamaKRJyRL+N93I0= +github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 h1:tUYsWrEKuZICKpIUJMdM67WC30XoWqK7L409LoFOVks= +github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 h1:D+zTzAla1Yf4T7ASTcXjSVmfx1yDt3yqJ+1292uimwM= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 h1:+2NtHgkpcigkx9UKiFbJ9EAosT5wHGum6AXm8CZnsmg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 h1:H+mO4V90oP5/tVUy32YLOuXU3aHAFtfPB+jDb2+Lx8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c h1:zdVb1xIY+ypP7HVzypewLE/tj37p4qjSQ3Wj0ogkAog= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c/go.mod h1:zoeXg8m9SfQTQY/2713pkocWg0Fi8U5fnoffcqar2J8= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 h1:AN2pAMyIhsfxMUWm3GX/FgastZFP5Q7lzfYboURzgus= diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index d4ce9fc89..ae3a4914a 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -1,8 +1,6 @@ package chainmanagerv1 import ( - "fmt" - "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/lo" @@ -42,16 +40,13 @@ type Chain struct { func NewChain(forkingPoint *CommitmentMetadata) *Chain { c := &Chain{ - forkingPoint: reactive.NewVariable[*CommitmentMetadata](), + forkingPoint: reactive.NewVariable[*CommitmentMetadata]().Init(forkingPoint), commitments: shrinkingmap.New[iotago.SlotIndex, *CommitmentMetadata](), evicted: reactive.NewEvent(), latestCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), latestVerifiedCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), } - c.forkingPoint.Set(forkingPoint) - c.latestCommitmentIndex.Set(forkingPoint.Index()) - forkingPoint.Chain().Set(c) c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { @@ -63,26 +58,24 @@ func NewChain(forkingPoint *CommitmentMetadata) *Chain { }, c.latestCommitmentIndex) c.cumulativeWeight = reactive.NewDerivedVariable[uint64](func(latestCommitmentIndex iotago.SlotIndex) uint64 { - if latestCommitment, exists := c.commitments.Get(latestCommitmentIndex); exists { - return latestCommitment.CumulativeWeight() - } - - panic(fmt.Sprintf("latest commitment with index %d does not exist", latestCommitmentIndex)) + return lo.Return1(c.commitments.Get(latestCommitmentIndex)).CumulativeWeight() }, c.latestCommitmentIndex) return c } +func (c *Chain) ForkingPoint() reactive.Variable[*CommitmentMetadata] { + return c.forkingPoint +} + func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *CommitmentMetadata, exists bool) { - if commitment, exists = c.commitments.Get(index); exists { - return commitment, true - } + forkingPoint := c.forkingPoint.Get() - return nil, false -} + if index < forkingPoint.Index() { + return nil, false + } -func (c *Chain) ForkingPoint() reactive.Variable[*CommitmentMetadata] { - return c.forkingPoint + return c.commitments.Get(index) } func (c *Chain) LatestCommitmentIndex() reactive.Variable[iotago.SlotIndex] { diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index 8f9abecf7..12c3af133 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -8,13 +8,13 @@ replace github.com/iotaledger/iota-core/tools/genesis-snapshot => ../genesis-sna require ( github.com/AlecAivazis/survey/v2 v2.3.7 - github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 @@ -37,12 +37,12 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/knadh/koanf v1.5.0 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index f4f73525f..43b892559 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -59,8 +59,7 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.12.0 h1:bdnhLPtqETd4m3mS8BGMNvBTf36bO5bx/hxE2zljOa0= -github.com/ethereum/go-ethereum v1.12.0/go.mod h1:/oo2X/dZLJjf2mJ6YT9wcWxa4nNJDBKDBU6sFIpx1Gs= +github.com/ethereum/go-ethereum v1.12.2 h1:eGHJ4ij7oyVqUQn48LBz3B7pvQ8sV0wGJiIE6gDq/6Y= github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= @@ -166,32 +165,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe h1:lym78NwkqqaQceko4k/Gln7pdnuZ3xOrDfAPsZkRNNU= -github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe h1:OiM3vVul/cd/hYxZcJL4E8gPzBVVM+MtfrgzxlzquEw= -github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe h1:gfnaiPzugS1QYw1fGzeZ7J9lAALP2bdKlav+7jv/onA= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe h1:QrSZZwTSM4MdbSqKWQKj0tTW6GH/l/xfTKmp87J98IU= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe h1:yHYcN//gh6Ta1jZH9aWm76J5SdTNF2p2dKYAjcD+kPc= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe h1:Cxh3w2dO+LbdSnKO5oZgk4/57auufedUDck1Bt7bqmQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe h1:fJAZNKSHOm5zq4YJmOU5UP7xvxfYU3HtvcIIyrN7JBQ= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe h1:nmdbJ/42eBoZll+yA6pP5zrmLObAhl5cRe8nWYuA+T8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe h1:3/oSOozNVZG3T2WATsBVR4O09ojI9qaT8/SW1rF5pbI= -github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe h1:yX7mrXKll24W7i/oNWxdY4Zjp4K30DFg/u0BxGRH8Ys= -github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe h1:tIzb1VIXO/umwWAhaL9B2aGrK83caTdAibsGrHaOwmQ= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe h1:hVr8L0tW9tR4e/8vCRAOJ+HEMnuTSDUjJt+8+1I2ISI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe h1:Bvf/f9OfQHVz2gGMZpZLiLwR30nNpZgCiFMpU+LO6n8= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 h1:0gb4f8p4lnKY5v5Q0/CiO/+ujGUftMgz3t2IhqUI90w= +github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 h1:HxfOCRmVB7Z5s68DiJ6iRLlBTgAfgjO+ygEH/mHjGRg= +github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 h1:ueO8tM6XzEGHy9dougSngEnryOJFt6Ypj/ivAA5fU10= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 h1:Xrdn3BcPt/FvcdyElk71tsdex4nYWWuoxHGW2CCZ/IA= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 h1:B8tav8rsLHfDFMhV8lPmFJPZN3UZJar/kgutXqBv2Fo= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 h1:9mJ2jT0npWGtIBfQE0WJKS2UXYxxNuBkLkaslBEPLjc= +github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 h1:JYWVVQW/1TgfDt4UVQoD4A+wCHlEFWwLw48IjeavYcY= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 h1:rXnpAIKUlTGjacpOf8lqFHvdN31qA+C4+lhFftcunkw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 h1:6Kp6ZgFuWK/E1b7k/tPM3RaPRAVYamaKRJyRL+N93I0= +github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 h1:tUYsWrEKuZICKpIUJMdM67WC30XoWqK7L409LoFOVks= +github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 h1:D+zTzAla1Yf4T7ASTcXjSVmfx1yDt3yqJ+1292uimwM= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 h1:+2NtHgkpcigkx9UKiFbJ9EAosT5wHGum6AXm8CZnsmg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 h1:H+mO4V90oP5/tVUy32YLOuXU3aHAFtfPB+jDb2+Lx8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 h1:ZNk2KtJ1ZBV8LChNB9LrAOd6XPXKZAfCm30Lne3kJR0= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760/go.mod h1:BGmYQp0ZX6OidxsNzH+GbwF2oc4wbsCSNHVnt0P+vl0= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 49d9f6d61..91626325b 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.20 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 github.com/iotaledger/hive.go/apputils v0.0.0-20230706083020-ef6c3248369d github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -53,19 +53,19 @@ require ( github.com/huin/goupnp v1.2.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 // indirect @@ -127,7 +127,6 @@ require ( github.com/prometheus/common v0.44.0 // indirect github.com/prometheus/procfs v0.11.1 // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/qtls-go1-19 v0.3.2 // indirect github.com/quic-go/qtls-go1-20 v0.3.2 // indirect github.com/quic-go/quic-go v0.38.0 // indirect github.com/quic-go/webtransport-go v0.5.3 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index ac2ac9268..fe7971c3e 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -93,8 +93,7 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.12.0 h1:bdnhLPtqETd4m3mS8BGMNvBTf36bO5bx/hxE2zljOa0= -github.com/ethereum/go-ethereum v1.12.0/go.mod h1:/oo2X/dZLJjf2mJ6YT9wcWxa4nNJDBKDBU6sFIpx1Gs= +github.com/ethereum/go-ethereum v1.12.2 h1:eGHJ4ij7oyVqUQn48LBz3B7pvQ8sV0wGJiIE6gDq/6Y= github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= @@ -192,8 +191,7 @@ github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= -github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= +github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f h1:pDhu5sgp8yJlEF/g6osliIIpF9K4F5jvkULXa4daRDQ= github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= @@ -256,36 +254,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe h1:lym78NwkqqaQceko4k/Gln7pdnuZ3xOrDfAPsZkRNNU= -github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe h1:OiM3vVul/cd/hYxZcJL4E8gPzBVVM+MtfrgzxlzquEw= -github.com/iotaledger/hive.go/app v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= +github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 h1:0gb4f8p4lnKY5v5Q0/CiO/+ujGUftMgz3t2IhqUI90w= +github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 h1:HxfOCRmVB7Z5s68DiJ6iRLlBTgAfgjO+ygEH/mHjGRg= +github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= github.com/iotaledger/hive.go/apputils v0.0.0-20230706083020-ef6c3248369d h1:bsCtNVHZnvIni2pIwb5n79cj9EDMXTc6G+dwYAqn0M8= github.com/iotaledger/hive.go/apputils v0.0.0-20230706083020-ef6c3248369d/go.mod h1:MlnA3hnPjJabmq9zymYheZw1Gt6OwyHZD7HiZVSSRjc= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe h1:E2d6bO2Ygceu8VnV+0lzDWlk11wq6RiYXYJk506nT/I= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe h1:gfnaiPzugS1QYw1fGzeZ7J9lAALP2bdKlav+7jv/onA= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe h1:QrSZZwTSM4MdbSqKWQKj0tTW6GH/l/xfTKmp87J98IU= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe h1:yHYcN//gh6Ta1jZH9aWm76J5SdTNF2p2dKYAjcD+kPc= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe h1:Cxh3w2dO+LbdSnKO5oZgk4/57auufedUDck1Bt7bqmQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe h1:fJAZNKSHOm5zq4YJmOU5UP7xvxfYU3HtvcIIyrN7JBQ= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe h1:nmdbJ/42eBoZll+yA6pP5zrmLObAhl5cRe8nWYuA+T8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe h1:3/oSOozNVZG3T2WATsBVR4O09ojI9qaT8/SW1rF5pbI= -github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe h1:yX7mrXKll24W7i/oNWxdY4Zjp4K30DFg/u0BxGRH8Ys= -github.com/iotaledger/hive.go/logger v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe h1:tIzb1VIXO/umwWAhaL9B2aGrK83caTdAibsGrHaOwmQ= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe h1:hVr8L0tW9tR4e/8vCRAOJ+HEMnuTSDUjJt+8+1I2ISI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe h1:Bvf/f9OfQHVz2gGMZpZLiLwR30nNpZgCiFMpU+LO6n8= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806 h1:IkUWo8d6pbbQLfXNb+kO5txSBW1otonIBKGMYeqJVkE= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 h1:ueO8tM6XzEGHy9dougSngEnryOJFt6Ypj/ivAA5fU10= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 h1:Xrdn3BcPt/FvcdyElk71tsdex4nYWWuoxHGW2CCZ/IA= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 h1:B8tav8rsLHfDFMhV8lPmFJPZN3UZJar/kgutXqBv2Fo= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 h1:9mJ2jT0npWGtIBfQE0WJKS2UXYxxNuBkLkaslBEPLjc= +github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 h1:JYWVVQW/1TgfDt4UVQoD4A+wCHlEFWwLw48IjeavYcY= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 h1:rXnpAIKUlTGjacpOf8lqFHvdN31qA+C4+lhFftcunkw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 h1:6Kp6ZgFuWK/E1b7k/tPM3RaPRAVYamaKRJyRL+N93I0= +github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 h1:tUYsWrEKuZICKpIUJMdM67WC30XoWqK7L409LoFOVks= +github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 h1:D+zTzAla1Yf4T7ASTcXjSVmfx1yDt3yqJ+1292uimwM= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 h1:+2NtHgkpcigkx9UKiFbJ9EAosT5wHGum6AXm8CZnsmg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 h1:H+mO4V90oP5/tVUy32YLOuXU3aHAFtfPB+jDb2+Lx8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c h1:zdVb1xIY+ypP7HVzypewLE/tj37p4qjSQ3Wj0ogkAog= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c/go.mod h1:zoeXg8m9SfQTQY/2713pkocWg0Fi8U5fnoffcqar2J8= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 h1:AN2pAMyIhsfxMUWm3GX/FgastZFP5Q7lzfYboURzgus= @@ -347,8 +345,7 @@ github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38y github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= -github.com/libp2p/go-libp2p v0.29.0 h1:QduJ2XQr/Crg4EnloueWDL0Jj86N3Ezhyyj7XH+XwHI= -github.com/libp2p/go-libp2p v0.29.0/go.mod h1:iNKL7mEnZ9wAss+03IjAwM9ZAQXfVUAPUUmOACQfQ/g= +github.com/libp2p/go-libp2p v0.30.0 h1:9EZwFtJPFBcs/yJTnP90TpN1hgrT/EsFfM+OZuwV87U= github.com/libp2p/go-libp2p v0.30.0/go.mod h1:nr2g5V7lfftwgiJ78/HrID+pwvayLyqKCEirT2Y3Byg= github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s= github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w= @@ -359,8 +356,7 @@ github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk= github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk= github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= -github.com/libp2p/go-reuseport v0.3.0 h1:iiZslO5byUYZEg9iCwJGf5h+sf1Agmqx2V2FDjPyvUw= -github.com/libp2p/go-reuseport v0.3.0/go.mod h1:laea40AimhtfEqysZ71UpYj4S+R9VpH8PgqLo7L+SwI= +github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s= github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= @@ -430,8 +426,7 @@ github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9 github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.10.1 h1:HghtFrWyZEPrpTvgAMFJi6gFdgHfs2cb0pyfDsk+lqU= -github.com/multiformats/go-multiaddr v0.10.1/go.mod h1:jLEZsA61rwWNZQTHHnqq2HNa+4os/Hz54eqiRnsRqYQ= +github.com/multiformats/go-multiaddr v0.11.0 h1:XqGyJ8ufbCE0HmTDwx2kPdsrQ36AGPZNZX6s6xfJH10= github.com/multiformats/go-multiaddr v0.11.0/go.mod h1:gWUm0QLR4thQ6+ZF6SXUw8YjtwQSPapICM+NmCkxHSM= github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= @@ -518,13 +513,9 @@ github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwa github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/qtls-go1-19 v0.3.2 h1:tFxjCFcTQzK+oMxG6Zcvp4Dq8dx4yD3dDiIiyc86Z5U= -github.com/quic-go/qtls-go1-19 v0.3.2/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI= -github.com/quic-go/qtls-go1-20 v0.2.2 h1:WLOPx6OY/hxtTxKV1Zrq20FtXtDEkeY00CGQm8GEa3E= -github.com/quic-go/qtls-go1-20 v0.2.2/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM= +github.com/quic-go/qtls-go1-20 v0.3.2 h1:rRgN3WfnKbyik4dBV8A6girlJVxGand/d+jVKbQq5GI= github.com/quic-go/qtls-go1-20 v0.3.2/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= -github.com/quic-go/quic-go v0.36.2 h1:ZX/UNQ4gvpCv2RmwdbA6lrRjF6EBm5yZ7TMoT4NQVrA= -github.com/quic-go/quic-go v0.36.2/go.mod h1:zPetvwDlILVxt15n3hr3Gf/I3mDf7LpLKPhR4Ez0AZQ= +github.com/quic-go/quic-go v0.38.0 h1:T45lASr5q/TrVwt+jrVccmqHhPL2XuSyoCLVCpfOSLc= github.com/quic-go/quic-go v0.38.0/go.mod h1:MPCuRq7KBK2hNcfKj/1iD1BGuN3eAYMeNxp3T42LRUg= github.com/quic-go/webtransport-go v0.5.3 h1:5XMlzemqB4qmOlgIus5zB45AcZ2kCgCy2EptUrfOPWU= github.com/quic-go/webtransport-go v0.5.3/go.mod h1:OhmmgJIzTTqXK5xvtuX0oBpLV2GkLWNDA+UeTGJXErU= @@ -645,9 +636,7 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20230724220655-d98519c11495 h1:zKGKw2WlGb8oPoRGqQ2PT8g2YoCN1w/YbbQjHXCdUWE= -golang.org/x/exp v0.0.0-20230724220655-d98519c11495/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= -golang.org/x/exp v0.0.0-20230810033253-352e893a4cad/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8= golang.org/x/image v0.9.0 h1:QrzfX26snvCM20hIhBwuHI/ThTg18b/+kcKdXHvnR+g= golang.org/x/image v0.9.0/go.mod h1:jtrku+n79PfroUbvDdeUWMAI+heR786BofxrbiSF+J0= @@ -797,8 +786,7 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 h1:Vve/L0v7CXXuxUmaMGIEK/dEeq7uiqb5qBgQrZzIE7E= golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 4ca42e3b3..c1bf96ea5 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.20 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe - github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe + github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 github.com/mr-tron/base58 v1.2.0 @@ -27,13 +27,13 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 // indirect github.com/kr/text v0.2.0 // indirect github.com/natefinch/atomic v1.0.1 // indirect github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 2d615fa2b..6f750a149 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -10,8 +10,7 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5ilcvdfma9wOH6Y= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= -github.com/ethereum/go-ethereum v1.12.0 h1:bdnhLPtqETd4m3mS8BGMNvBTf36bO5bx/hxE2zljOa0= -github.com/ethereum/go-ethereum v1.12.0/go.mod h1:/oo2X/dZLJjf2mJ6YT9wcWxa4nNJDBKDBU6sFIpx1Gs= +github.com/ethereum/go-ethereum v1.12.2 h1:eGHJ4ij7oyVqUQn48LBz3B7pvQ8sV0wGJiIE6gDq/6Y= github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= github.com/fjl/memsize v0.0.1 h1:+zhkb+dhUgx0/e+M8sF0QqiouvMQUiKR+QYvdxIOKcQ= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= @@ -26,28 +25,28 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe h1:lym78NwkqqaQceko4k/Gln7pdnuZ3xOrDfAPsZkRNNU= -github.com/iotaledger/hive.go/ads v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe h1:gfnaiPzugS1QYw1fGzeZ7J9lAALP2bdKlav+7jv/onA= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe h1:QrSZZwTSM4MdbSqKWQKj0tTW6GH/l/xfTKmp87J98IU= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821140925-8575f8a2c7fe/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe h1:yHYcN//gh6Ta1jZH9aWm76J5SdTNF2p2dKYAjcD+kPc= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe h1:Cxh3w2dO+LbdSnKO5oZgk4/57auufedUDck1Bt7bqmQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe h1:fJAZNKSHOm5zq4YJmOU5UP7xvxfYU3HtvcIIyrN7JBQ= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe h1:nmdbJ/42eBoZll+yA6pP5zrmLObAhl5cRe8nWYuA+T8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe h1:3/oSOozNVZG3T2WATsBVR4O09ojI9qaT8/SW1rF5pbI= -github.com/iotaledger/hive.go/lo v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe h1:tIzb1VIXO/umwWAhaL9B2aGrK83caTdAibsGrHaOwmQ= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe h1:hVr8L0tW9tR4e/8vCRAOJ+HEMnuTSDUjJt+8+1I2ISI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821140925-8575f8a2c7fe/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe h1:Bvf/f9OfQHVz2gGMZpZLiLwR30nNpZgCiFMpU+LO6n8= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821140925-8575f8a2c7fe/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 h1:0gb4f8p4lnKY5v5Q0/CiO/+ujGUftMgz3t2IhqUI90w= +github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 h1:ueO8tM6XzEGHy9dougSngEnryOJFt6Ypj/ivAA5fU10= +github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 h1:Xrdn3BcPt/FvcdyElk71tsdex4nYWWuoxHGW2CCZ/IA= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 h1:B8tav8rsLHfDFMhV8lPmFJPZN3UZJar/kgutXqBv2Fo= +github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 h1:9mJ2jT0npWGtIBfQE0WJKS2UXYxxNuBkLkaslBEPLjc= +github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 h1:JYWVVQW/1TgfDt4UVQoD4A+wCHlEFWwLw48IjeavYcY= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 h1:rXnpAIKUlTGjacpOf8lqFHvdN31qA+C4+lhFftcunkw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 h1:6Kp6ZgFuWK/E1b7k/tPM3RaPRAVYamaKRJyRL+N93I0= +github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 h1:D+zTzAla1Yf4T7ASTcXjSVmfx1yDt3yqJ+1292uimwM= +github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 h1:+2NtHgkpcigkx9UKiFbJ9EAosT5wHGum6AXm8CZnsmg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 h1:H+mO4V90oP5/tVUy32YLOuXU3aHAFtfPB+jDb2+Lx8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 h1:ZNk2KtJ1ZBV8LChNB9LrAOd6XPXKZAfCm30Lne3kJR0= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760/go.mod h1:BGmYQp0ZX6OidxsNzH+GbwF2oc4wbsCSNHVnt0P+vl0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= From 3ba31f06381fff8dc4d4a6ec2a5f9c92ab5f7032 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 22 Aug 2023 02:34:26 +0200 Subject: [PATCH 024/356] Feat: upgraded hive.go --- go.mod | 28 +++++++------- go.sum | 56 ++++++++++++++-------------- pkg/protocol/chainmanagerv1/chain.go | 29 ++++++-------- tools/evil-spammer/go.mod | 26 ++++++------- tools/evil-spammer/go.sum | 52 +++++++++++++------------- tools/gendoc/go.mod | 28 +++++++------- tools/gendoc/go.sum | 56 ++++++++++++++-------------- tools/genesis-snapshot/go.mod | 22 +++++------ tools/genesis-snapshot/go.sum | 44 +++++++++++----------- 9 files changed, 167 insertions(+), 174 deletions(-) diff --git a/go.mod b/go.mod index b646e1603..fccc66282 100644 --- a/go.mod +++ b/go.mod @@ -9,20 +9,20 @@ require ( github.com/google/uuid v1.3.0 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/app v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/autopeering v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/logger v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 diff --git a/go.sum b/go.sum index 5db0e8e54..7a2117c93 100644 --- a/go.sum +++ b/go.sum @@ -254,34 +254,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 h1:0gb4f8p4lnKY5v5Q0/CiO/+ujGUftMgz3t2IhqUI90w= -github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 h1:HxfOCRmVB7Z5s68DiJ6iRLlBTgAfgjO+ygEH/mHjGRg= -github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806 h1:IkUWo8d6pbbQLfXNb+kO5txSBW1otonIBKGMYeqJVkE= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 h1:ueO8tM6XzEGHy9dougSngEnryOJFt6Ypj/ivAA5fU10= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 h1:Xrdn3BcPt/FvcdyElk71tsdex4nYWWuoxHGW2CCZ/IA= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 h1:B8tav8rsLHfDFMhV8lPmFJPZN3UZJar/kgutXqBv2Fo= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 h1:9mJ2jT0npWGtIBfQE0WJKS2UXYxxNuBkLkaslBEPLjc= -github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 h1:JYWVVQW/1TgfDt4UVQoD4A+wCHlEFWwLw48IjeavYcY= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 h1:rXnpAIKUlTGjacpOf8lqFHvdN31qA+C4+lhFftcunkw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 h1:6Kp6ZgFuWK/E1b7k/tPM3RaPRAVYamaKRJyRL+N93I0= -github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 h1:tUYsWrEKuZICKpIUJMdM67WC30XoWqK7L409LoFOVks= -github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 h1:D+zTzAla1Yf4T7ASTcXjSVmfx1yDt3yqJ+1292uimwM= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 h1:+2NtHgkpcigkx9UKiFbJ9EAosT5wHGum6AXm8CZnsmg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 h1:H+mO4V90oP5/tVUy32YLOuXU3aHAFtfPB+jDb2+Lx8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1 h1:vOD3mBg+mPxggV05i1+qo4I9h0YTEvwHmTajtIEFHYE= +github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/app v0.0.0-20230822002302-99a8ae0e72a1 h1:PrBWEkgn/QWLECbrr1hrp+Jqf+4r6y5zEgAKwLGuAmc= +github.com/iotaledger/hive.go/app v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230822002302-99a8ae0e72a1 h1:g87lM30Hcd99hhZnM+Ud5hYNl6hVig52y+FwNPdacIg= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= +github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1 h1:EwxHglIADV6gdL8BQApPg7m+iWfASVmvbWaT2C52yO4= +github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1 h1:fQjIrTF1rchVpf6uUtLRoOyNaUrgJaoolZMA7QglOec= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1 h1:/60MK0s7NCpV85mLdkWC8XKmqg+4XBfY1kCT5fDtNHw= +github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1 h1:vEPjfNRAUgIEbFrCzHuTwk4TtwcZa0qdUBbJGkkxtJU= +github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1 h1:K7G3jK0+p2qB2m+ULkVR3XwjdrEnONPYJ8HlSXi54JU= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1 h1:CopAx+fypM7tPLGTJDYiEp8CLj6MLIqebZGBVexIT1U= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1 h1:s7s8bmJHEZR8bIBveSDcKcQdgDuINRJduq2jJWhPzhY= +github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/logger v0.0.0-20230822002302-99a8ae0e72a1 h1:+Lsylo7uuLiykbIsx0ij1rNlYREv4Rs63Rlw+RTaUQI= +github.com/iotaledger/hive.go/logger v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1 h1:cPekCCo3Qs6oBYcMtwGY4D6ZO7T3Bz5iBo2GC/cQqMw= +github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1 h1:Fhz6V+NJY57rOEfq86YnReyhd5nWKH2trxfPR4mIRVA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1 h1:cU4/zWYroL6PP/VQAO26m1+KA83hI8P87MasfCh+Fac= +github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c h1:zdVb1xIY+ypP7HVzypewLE/tj37p4qjSQ3Wj0ogkAog= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c/go.mod h1:zoeXg8m9SfQTQY/2713pkocWg0Fi8U5fnoffcqar2J8= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 h1:AN2pAMyIhsfxMUWm3GX/FgastZFP5Q7lzfYboURzgus= diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index ae3a4914a..825f0b314 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -72,6 +72,7 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *CommitmentMetada forkingPoint := c.forkingPoint.Get() if index < forkingPoint.Index() { + // TODO: GO TO PARENT CHAIN return nil, false } @@ -98,28 +99,20 @@ func (c *Chain) registerCommitment(commitment *CommitmentMetadata) { c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { c.commitments.Set(commitment.Index(), commitment) - if latestCommitmentIndex > commitment.Index() { - return latestCommitmentIndex - } - - return commitment.Index() + return lo.Cond(latestCommitmentIndex > commitment.Index(), latestCommitmentIndex, commitment.Index()) }) - unregistered := reactive.NewEvent() - - unsubscribe := commitment.Chain().OnUpdate(func(_, newValue *Chain) { - if newValue != c { - unregistered.Trigger() - } - }) + unregisterCondition := func(_, newValue *Chain) bool { + return newValue != c + } - unregistered.OnTrigger(func() { - go unsubscribe() + commitment.Chain().OnUpdateOnce(func(_, _ *Chain) { c.unregisterCommitment(commitment) }, unregisterCondition) +} - c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - c.commitments.Delete(commitment.Index()) +func (c *Chain) unregisterCommitment(commitment *CommitmentMetadata) iotago.SlotIndex { + return c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + c.commitments.Delete(commitment.Index()) - return lo.Cond(commitment.Index() < latestCommitmentIndex, commitment.Index()-1, latestCommitmentIndex) - }) + return lo.Cond(commitment.Index() < latestCommitmentIndex, commitment.Index()-1, latestCommitmentIndex) }) } diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index 12c3af133..5719d05d2 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -8,13 +8,13 @@ replace github.com/iotaledger/iota-core/tools/genesis-snapshot => ../genesis-sna require ( github.com/AlecAivazis/survey/v2 v2.3.7 - github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/app v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/logger v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 @@ -37,12 +37,12 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/knadh/koanf v1.5.0 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index 43b892559..4ad765f70 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -165,32 +165,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 h1:0gb4f8p4lnKY5v5Q0/CiO/+ujGUftMgz3t2IhqUI90w= -github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 h1:HxfOCRmVB7Z5s68DiJ6iRLlBTgAfgjO+ygEH/mHjGRg= -github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 h1:ueO8tM6XzEGHy9dougSngEnryOJFt6Ypj/ivAA5fU10= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 h1:Xrdn3BcPt/FvcdyElk71tsdex4nYWWuoxHGW2CCZ/IA= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 h1:B8tav8rsLHfDFMhV8lPmFJPZN3UZJar/kgutXqBv2Fo= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 h1:9mJ2jT0npWGtIBfQE0WJKS2UXYxxNuBkLkaslBEPLjc= -github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 h1:JYWVVQW/1TgfDt4UVQoD4A+wCHlEFWwLw48IjeavYcY= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 h1:rXnpAIKUlTGjacpOf8lqFHvdN31qA+C4+lhFftcunkw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 h1:6Kp6ZgFuWK/E1b7k/tPM3RaPRAVYamaKRJyRL+N93I0= -github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 h1:tUYsWrEKuZICKpIUJMdM67WC30XoWqK7L409LoFOVks= -github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 h1:D+zTzAla1Yf4T7ASTcXjSVmfx1yDt3yqJ+1292uimwM= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 h1:+2NtHgkpcigkx9UKiFbJ9EAosT5wHGum6AXm8CZnsmg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 h1:H+mO4V90oP5/tVUy32YLOuXU3aHAFtfPB+jDb2+Lx8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1 h1:vOD3mBg+mPxggV05i1+qo4I9h0YTEvwHmTajtIEFHYE= +github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/app v0.0.0-20230822002302-99a8ae0e72a1 h1:PrBWEkgn/QWLECbrr1hrp+Jqf+4r6y5zEgAKwLGuAmc= +github.com/iotaledger/hive.go/app v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= +github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1 h1:EwxHglIADV6gdL8BQApPg7m+iWfASVmvbWaT2C52yO4= +github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1 h1:fQjIrTF1rchVpf6uUtLRoOyNaUrgJaoolZMA7QglOec= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1 h1:/60MK0s7NCpV85mLdkWC8XKmqg+4XBfY1kCT5fDtNHw= +github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1 h1:vEPjfNRAUgIEbFrCzHuTwk4TtwcZa0qdUBbJGkkxtJU= +github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1 h1:K7G3jK0+p2qB2m+ULkVR3XwjdrEnONPYJ8HlSXi54JU= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1 h1:CopAx+fypM7tPLGTJDYiEp8CLj6MLIqebZGBVexIT1U= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1 h1:s7s8bmJHEZR8bIBveSDcKcQdgDuINRJduq2jJWhPzhY= +github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/logger v0.0.0-20230822002302-99a8ae0e72a1 h1:+Lsylo7uuLiykbIsx0ij1rNlYREv4Rs63Rlw+RTaUQI= +github.com/iotaledger/hive.go/logger v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1 h1:cPekCCo3Qs6oBYcMtwGY4D6ZO7T3Bz5iBo2GC/cQqMw= +github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1 h1:Fhz6V+NJY57rOEfq86YnReyhd5nWKH2trxfPR4mIRVA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1 h1:cU4/zWYroL6PP/VQAO26m1+KA83hI8P87MasfCh+Fac= +github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 h1:ZNk2KtJ1ZBV8LChNB9LrAOd6XPXKZAfCm30Lne3kJR0= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760/go.mod h1:BGmYQp0ZX6OidxsNzH+GbwF2oc4wbsCSNHVnt0P+vl0= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 91626325b..dfca45d97 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.20 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/app v0.0.0-20230822002302-99a8ae0e72a1 github.com/iotaledger/hive.go/apputils v0.0.0-20230706083020-ef6c3248369d github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -53,19 +53,19 @@ require ( github.com/huin/goupnp v1.2.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/autopeering v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index fe7971c3e..0b78933cb 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -254,36 +254,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 h1:0gb4f8p4lnKY5v5Q0/CiO/+ujGUftMgz3t2IhqUI90w= -github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806 h1:HxfOCRmVB7Z5s68DiJ6iRLlBTgAfgjO+ygEH/mHjGRg= -github.com/iotaledger/hive.go/app v0.0.0-20230821230734-63b3b154e806/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= +github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1 h1:vOD3mBg+mPxggV05i1+qo4I9h0YTEvwHmTajtIEFHYE= +github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/app v0.0.0-20230822002302-99a8ae0e72a1 h1:PrBWEkgn/QWLECbrr1hrp+Jqf+4r6y5zEgAKwLGuAmc= +github.com/iotaledger/hive.go/app v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:fesy1w6A7bOrLbYjkLBb1zfHwkzqaRhpukFBylJYqUQ= github.com/iotaledger/hive.go/apputils v0.0.0-20230706083020-ef6c3248369d h1:bsCtNVHZnvIni2pIwb5n79cj9EDMXTc6G+dwYAqn0M8= github.com/iotaledger/hive.go/apputils v0.0.0-20230706083020-ef6c3248369d/go.mod h1:MlnA3hnPjJabmq9zymYheZw1Gt6OwyHZD7HiZVSSRjc= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806 h1:IkUWo8d6pbbQLfXNb+kO5txSBW1otonIBKGMYeqJVkE= -github.com/iotaledger/hive.go/autopeering v0.0.0-20230821230734-63b3b154e806/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 h1:ueO8tM6XzEGHy9dougSngEnryOJFt6Ypj/ivAA5fU10= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 h1:Xrdn3BcPt/FvcdyElk71tsdex4nYWWuoxHGW2CCZ/IA= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 h1:B8tav8rsLHfDFMhV8lPmFJPZN3UZJar/kgutXqBv2Fo= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 h1:9mJ2jT0npWGtIBfQE0WJKS2UXYxxNuBkLkaslBEPLjc= -github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 h1:JYWVVQW/1TgfDt4UVQoD4A+wCHlEFWwLw48IjeavYcY= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 h1:rXnpAIKUlTGjacpOf8lqFHvdN31qA+C4+lhFftcunkw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 h1:6Kp6ZgFuWK/E1b7k/tPM3RaPRAVYamaKRJyRL+N93I0= -github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806 h1:tUYsWrEKuZICKpIUJMdM67WC30XoWqK7L409LoFOVks= -github.com/iotaledger/hive.go/logger v0.0.0-20230821230734-63b3b154e806/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 h1:D+zTzAla1Yf4T7ASTcXjSVmfx1yDt3yqJ+1292uimwM= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 h1:+2NtHgkpcigkx9UKiFbJ9EAosT5wHGum6AXm8CZnsmg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 h1:H+mO4V90oP5/tVUy32YLOuXU3aHAFtfPB+jDb2+Lx8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230822002302-99a8ae0e72a1 h1:g87lM30Hcd99hhZnM+Ud5hYNl6hVig52y+FwNPdacIg= +github.com/iotaledger/hive.go/autopeering v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:EEPTDuGM0fsjuy1YtbnKb0UyLgjWZIh8urd7wDI5j7A= +github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1 h1:EwxHglIADV6gdL8BQApPg7m+iWfASVmvbWaT2C52yO4= +github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1 h1:fQjIrTF1rchVpf6uUtLRoOyNaUrgJaoolZMA7QglOec= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1 h1:/60MK0s7NCpV85mLdkWC8XKmqg+4XBfY1kCT5fDtNHw= +github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1 h1:vEPjfNRAUgIEbFrCzHuTwk4TtwcZa0qdUBbJGkkxtJU= +github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1 h1:K7G3jK0+p2qB2m+ULkVR3XwjdrEnONPYJ8HlSXi54JU= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1 h1:CopAx+fypM7tPLGTJDYiEp8CLj6MLIqebZGBVexIT1U= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1 h1:s7s8bmJHEZR8bIBveSDcKcQdgDuINRJduq2jJWhPzhY= +github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/logger v0.0.0-20230822002302-99a8ae0e72a1 h1:+Lsylo7uuLiykbIsx0ij1rNlYREv4Rs63Rlw+RTaUQI= +github.com/iotaledger/hive.go/logger v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:DgKxsfMu+wHv6/AbXKY0GNacpKX2RWwXEuYM7wkBr/I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1 h1:cPekCCo3Qs6oBYcMtwGY4D6ZO7T3Bz5iBo2GC/cQqMw= +github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1 h1:Fhz6V+NJY57rOEfq86YnReyhd5nWKH2trxfPR4mIRVA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1 h1:cU4/zWYroL6PP/VQAO26m1+KA83hI8P87MasfCh+Fac= +github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c h1:zdVb1xIY+ypP7HVzypewLE/tj37p4qjSQ3Wj0ogkAog= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230811070302-53cce5ce9e7c/go.mod h1:zoeXg8m9SfQTQY/2713pkocWg0Fi8U5fnoffcqar2J8= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230801163327-a72de1469de7 h1:AN2pAMyIhsfxMUWm3GX/FgastZFP5Q7lzfYboURzgus= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index c1bf96ea5..5bac5b308 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.20 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 - github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 + github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1 + github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 github.com/mr-tron/base58 v1.2.0 @@ -27,13 +27,13 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1 // indirect github.com/kr/text v0.2.0 // indirect github.com/natefinch/atomic v1.0.1 // indirect github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 6f750a149..374e8e358 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -25,28 +25,28 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806 h1:0gb4f8p4lnKY5v5Q0/CiO/+ujGUftMgz3t2IhqUI90w= -github.com/iotaledger/hive.go/ads v0.0.0-20230821230734-63b3b154e806/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806 h1:ueO8tM6XzEGHy9dougSngEnryOJFt6Ypj/ivAA5fU10= -github.com/iotaledger/hive.go/constraints v0.0.0-20230821230734-63b3b154e806/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806 h1:Xrdn3BcPt/FvcdyElk71tsdex4nYWWuoxHGW2CCZ/IA= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230821230734-63b3b154e806/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806 h1:B8tav8rsLHfDFMhV8lPmFJPZN3UZJar/kgutXqBv2Fo= -github.com/iotaledger/hive.go/crypto v0.0.0-20230821230734-63b3b154e806/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= -github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806 h1:9mJ2jT0npWGtIBfQE0WJKS2UXYxxNuBkLkaslBEPLjc= -github.com/iotaledger/hive.go/ds v0.0.0-20230821230734-63b3b154e806/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806 h1:JYWVVQW/1TgfDt4UVQoD4A+wCHlEFWwLw48IjeavYcY= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230821230734-63b3b154e806/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806 h1:rXnpAIKUlTGjacpOf8lqFHvdN31qA+C4+lhFftcunkw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230821230734-63b3b154e806/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= -github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806 h1:6Kp6ZgFuWK/E1b7k/tPM3RaPRAVYamaKRJyRL+N93I0= -github.com/iotaledger/hive.go/lo v0.0.0-20230821230734-63b3b154e806/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806 h1:D+zTzAla1Yf4T7ASTcXjSVmfx1yDt3yqJ+1292uimwM= -github.com/iotaledger/hive.go/runtime v0.0.0-20230821230734-63b3b154e806/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806 h1:+2NtHgkpcigkx9UKiFbJ9EAosT5wHGum6AXm8CZnsmg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230821230734-63b3b154e806/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806 h1:H+mO4V90oP5/tVUy32YLOuXU3aHAFtfPB+jDb2+Lx8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20230821230734-63b3b154e806/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= +github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1 h1:vOD3mBg+mPxggV05i1+qo4I9h0YTEvwHmTajtIEFHYE= +github.com/iotaledger/hive.go/ads v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:63iffDqGa8L/PAP9VhOBLV6NakKVcVATDSP+BSJxWdw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1 h1:EwxHglIADV6gdL8BQApPg7m+iWfASVmvbWaT2C52yO4= +github.com/iotaledger/hive.go/constraints v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:bvXXc6quBdERMMKnirr2+iQU4WnTz4KDbdHcusW9Ats= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1 h1:fQjIrTF1rchVpf6uUtLRoOyNaUrgJaoolZMA7QglOec= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230822002302-99a8ae0e72a1/go.mod h1:N4tN4g5vb3dcJU35U9o/CD/2G3DdxgXbJUUuSwDeBdE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1 h1:/60MK0s7NCpV85mLdkWC8XKmqg+4XBfY1kCT5fDtNHw= +github.com/iotaledger/hive.go/crypto v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:dh01lKrdkIqN5O/NqNIW+IsbZFR/+Pst6rcLbVkhe9Q= +github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1 h1:vEPjfNRAUgIEbFrCzHuTwk4TtwcZa0qdUBbJGkkxtJU= +github.com/iotaledger/hive.go/ds v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:x6uTxewNdOkYUs/Pd123A98Qv8iIIl1UUoB8jmF7nfA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1 h1:K7G3jK0+p2qB2m+ULkVR3XwjdrEnONPYJ8HlSXi54JU= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:aMfXyyUB+ODjZB2Q1CdSUSWIFbhvIWnVlBZWkJ2T0Uw= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1 h1:CopAx+fypM7tPLGTJDYiEp8CLj6MLIqebZGBVexIT1U= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:6AQ8T+Ili2LsBgVOs3M54XPJNqpR5E2dkGjonpfM4uA= +github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1 h1:s7s8bmJHEZR8bIBveSDcKcQdgDuINRJduq2jJWhPzhY= +github.com/iotaledger/hive.go/lo v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:bu2nSOGU/zYAjDljUsxeCIG+C7rqYj50LimHHgAGAx0= +github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1 h1:cPekCCo3Qs6oBYcMtwGY4D6ZO7T3Bz5iBo2GC/cQqMw= +github.com/iotaledger/hive.go/runtime v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:JgGtwIG6WEHiN3qSYWTC3WjnJCVk1JIyu2ZtRdiXryA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1 h1:Fhz6V+NJY57rOEfq86YnReyhd5nWKH2trxfPR4mIRVA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230822002302-99a8ae0e72a1/go.mod h1:sCLs3xrJRKcru6UE1WnlvQw8bib74yy2A7s+caMtoZY= +github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1 h1:cU4/zWYroL6PP/VQAO26m1+KA83hI8P87MasfCh+Fac= +github.com/iotaledger/hive.go/stringify v0.0.0-20230822002302-99a8ae0e72a1/go.mod h1:l/F3cA/+67QdNj+sohv2v4HhmsdOcWScoA+sVYoAE4c= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760 h1:ZNk2KtJ1ZBV8LChNB9LrAOd6XPXKZAfCm30Lne3kJR0= github.com/iotaledger/iota.go/v4 v4.0.0-20230817100419-87dc40e5a760/go.mod h1:BGmYQp0ZX6OidxsNzH+GbwF2oc4wbsCSNHVnt0P+vl0= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= From 3cd9fbc91027371cadce40ebac21afc2ff82f93f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 22 Aug 2023 02:35:17 +0200 Subject: [PATCH 025/356] Feat: simplified code --- pkg/protocol/chainmanagerv1/chain.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 825f0b314..05c344eec 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -102,11 +102,11 @@ func (c *Chain) registerCommitment(commitment *CommitmentMetadata) { return lo.Cond(latestCommitmentIndex > commitment.Index(), latestCommitmentIndex, commitment.Index()) }) - unregisterCondition := func(_, newValue *Chain) bool { + commitment.Chain().OnUpdateOnce(func(_, _ *Chain) { + c.unregisterCommitment(commitment) + }, func(_, newValue *Chain) bool { return newValue != c - } - - commitment.Chain().OnUpdateOnce(func(_, _ *Chain) { c.unregisterCommitment(commitment) }, unregisterCondition) + }) } func (c *Chain) unregisterCommitment(commitment *CommitmentMetadata) iotago.SlotIndex { From f3628e0b2da7b49113879c913f70f17e8bcce174 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 23 Aug 2023 01:57:02 +0200 Subject: [PATCH 026/356] Feat: go mod tidy --- tools/gendoc/go.mod | 1 - tools/gendoc/go.sum | 26 ++++++++------------------ 2 files changed, 8 insertions(+), 19 deletions(-) diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index b80926beb..d21e5f9e5 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -127,7 +127,6 @@ require ( github.com/prometheus/common v0.44.0 // indirect github.com/prometheus/procfs v0.11.1 // indirect github.com/quic-go/qpack v0.4.0 // indirect - github.com/quic-go/qtls-go1-19 v0.3.2 // indirect github.com/quic-go/qtls-go1-20 v0.3.2 // indirect github.com/quic-go/quic-go v0.38.0 // indirect github.com/quic-go/webtransport-go v0.5.3 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index a00b229f1..a00f7bc29 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -191,8 +191,7 @@ github.com/google/gopacket v1.1.19/go.mod h1:iJ8V8n6KS+z2U1A8pUwu8bW5SyEMkXJB8Yo github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= github.com/google/pprof v0.0.0-20211214055906-6f57359322fd/go.mod h1:KgnwoLYCZ8IQu3XUZ8Nc/bM9CCZFOyjUNOSygVozoDg= -github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8 h1:n6vlPhxsA+BW/XsS5+uqi7GyzaLa5MH7qlSLBZtRdiA= -github.com/google/pprof v0.0.0-20230705174524-200ffdc848b8/go.mod h1:Jh3hGz2jkYak8qXPD19ryItVnUgpgeqzdkY/D0EaeuA= +github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f h1:pDhu5sgp8yJlEF/g6osliIIpF9K4F5jvkULXa4daRDQ= github.com/google/pprof v0.0.0-20230821062121-407c9e7a662f/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= @@ -346,8 +345,7 @@ github.com/libp2p/go-cidranger v1.1.0 h1:ewPN8EZ0dd1LSnrtuwd4709PXVcITVeuwbag38y github.com/libp2p/go-cidranger v1.1.0/go.mod h1:KWZTfSr+r9qEo9OkI9/SIEeAtw+NNoU0dXIXt15Okic= github.com/libp2p/go-flow-metrics v0.1.0 h1:0iPhMI8PskQwzh57jB9WxIuIOQ0r+15PChFGkx3Q3WM= github.com/libp2p/go-flow-metrics v0.1.0/go.mod h1:4Xi8MX8wj5aWNDAZttg6UPmc0ZrnFNsMtpsYUClFtro= -github.com/libp2p/go-libp2p v0.29.0 h1:QduJ2XQr/Crg4EnloueWDL0Jj86N3Ezhyyj7XH+XwHI= -github.com/libp2p/go-libp2p v0.29.0/go.mod h1:iNKL7mEnZ9wAss+03IjAwM9ZAQXfVUAPUUmOACQfQ/g= +github.com/libp2p/go-libp2p v0.30.0 h1:9EZwFtJPFBcs/yJTnP90TpN1hgrT/EsFfM+OZuwV87U= github.com/libp2p/go-libp2p v0.30.0/go.mod h1:nr2g5V7lfftwgiJ78/HrID+pwvayLyqKCEirT2Y3Byg= github.com/libp2p/go-libp2p-asn-util v0.3.0 h1:gMDcMyYiZKkocGXDQ5nsUQyquC9+H+iLEQHwOCZ7s8s= github.com/libp2p/go-libp2p-asn-util v0.3.0/go.mod h1:B1mcOrKUE35Xq/ASTmQ4tN3LNzVVaMNmq2NACuqyB9w= @@ -358,8 +356,7 @@ github.com/libp2p/go-nat v0.2.0 h1:Tyz+bUFAYqGyJ/ppPPymMGbIgNRH+WqC5QrT5fKrrGk= github.com/libp2p/go-nat v0.2.0/go.mod h1:3MJr+GRpRkyT65EpVPBstXLvOlAPzUVlG6Pwg9ohLJk= github.com/libp2p/go-netroute v0.2.1 h1:V8kVrpD8GK0Riv15/7VN6RbUQ3URNZVosw7H2v9tksU= github.com/libp2p/go-netroute v0.2.1/go.mod h1:hraioZr0fhBjG0ZRXJJ6Zj2IVEVNx6tDTFQfSmcq7mQ= -github.com/libp2p/go-reuseport v0.3.0 h1:iiZslO5byUYZEg9iCwJGf5h+sf1Agmqx2V2FDjPyvUw= -github.com/libp2p/go-reuseport v0.3.0/go.mod h1:laea40AimhtfEqysZ71UpYj4S+R9VpH8PgqLo7L+SwI= +github.com/libp2p/go-reuseport v0.4.0 h1:nR5KU7hD0WxXCJbmw7r2rhRYruNRl2koHw8fQscQm2s= github.com/libp2p/go-reuseport v0.4.0/go.mod h1:ZtI03j/wO5hZVDFo2jKywN6bYKWLOy8Se6DrI2E1cLU= github.com/libp2p/go-yamux/v4 v4.0.1 h1:FfDR4S1wj6Bw2Pqbc8Uz7pCxeRBPbwsBbEdfwiCypkQ= github.com/libp2p/go-yamux/v4 v4.0.1/go.mod h1:NWjl8ZTLOGlozrXSOZ/HlfG++39iKNnM5wwmtQP1YB4= @@ -429,8 +426,7 @@ github.com/multiformats/go-base36 v0.2.0 h1:lFsAbNOGeKtuKozrtBsAkSVhv1p9D0/qedU9 github.com/multiformats/go-base36 v0.2.0/go.mod h1:qvnKE++v+2MWCfePClUEjE78Z7P2a1UV0xHgWc0hkp4= github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo= github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4= -github.com/multiformats/go-multiaddr v0.10.1 h1:HghtFrWyZEPrpTvgAMFJi6gFdgHfs2cb0pyfDsk+lqU= -github.com/multiformats/go-multiaddr v0.10.1/go.mod h1:jLEZsA61rwWNZQTHHnqq2HNa+4os/Hz54eqiRnsRqYQ= +github.com/multiformats/go-multiaddr v0.11.0 h1:XqGyJ8ufbCE0HmTDwx2kPdsrQ36AGPZNZX6s6xfJH10= github.com/multiformats/go-multiaddr v0.11.0/go.mod h1:gWUm0QLR4thQ6+ZF6SXUw8YjtwQSPapICM+NmCkxHSM= github.com/multiformats/go-multiaddr-dns v0.3.1 h1:QgQgR+LQVt3NPTjbrLLpsaT2ufAA2y0Mkk+QRVJbW3A= github.com/multiformats/go-multiaddr-dns v0.3.1/go.mod h1:G/245BRQ6FJGmryJCrOuTdB37AMA5AMOVuO6NY3JwTk= @@ -517,13 +513,9 @@ github.com/prometheus/procfs v0.11.1 h1:xRC8Iq1yyca5ypa9n1EZnWZkt7dwcoRPQwX/5gwa github.com/prometheus/procfs v0.11.1/go.mod h1:eesXgaPo1q7lBpVMoMy0ZOFTth9hBn4W/y0/p/ScXhY= github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= -github.com/quic-go/qtls-go1-19 v0.3.2 h1:tFxjCFcTQzK+oMxG6Zcvp4Dq8dx4yD3dDiIiyc86Z5U= -github.com/quic-go/qtls-go1-19 v0.3.2/go.mod h1:ySOI96ew8lnoKPtSqx2BlI5wCpUVPT05RMAlajtnyOI= -github.com/quic-go/qtls-go1-20 v0.2.2 h1:WLOPx6OY/hxtTxKV1Zrq20FtXtDEkeY00CGQm8GEa3E= -github.com/quic-go/qtls-go1-20 v0.2.2/go.mod h1:JKtK6mjbAVcUTN/9jZpvLbGxvdWIKS8uT7EiStoU1SM= +github.com/quic-go/qtls-go1-20 v0.3.2 h1:rRgN3WfnKbyik4dBV8A6girlJVxGand/d+jVKbQq5GI= github.com/quic-go/qtls-go1-20 v0.3.2/go.mod h1:X9Nh97ZL80Z+bX/gUXMbipO6OxdiDi58b/fMC9mAL+k= -github.com/quic-go/quic-go v0.36.2 h1:ZX/UNQ4gvpCv2RmwdbA6lrRjF6EBm5yZ7TMoT4NQVrA= -github.com/quic-go/quic-go v0.36.2/go.mod h1:zPetvwDlILVxt15n3hr3Gf/I3mDf7LpLKPhR4Ez0AZQ= +github.com/quic-go/quic-go v0.38.0 h1:T45lASr5q/TrVwt+jrVccmqHhPL2XuSyoCLVCpfOSLc= github.com/quic-go/quic-go v0.38.0/go.mod h1:MPCuRq7KBK2hNcfKj/1iD1BGuN3eAYMeNxp3T42LRUg= github.com/quic-go/webtransport-go v0.5.3 h1:5XMlzemqB4qmOlgIus5zB45AcZ2kCgCy2EptUrfOPWU= github.com/quic-go/webtransport-go v0.5.3/go.mod h1:OhmmgJIzTTqXK5xvtuX0oBpLV2GkLWNDA+UeTGJXErU= @@ -644,8 +636,7 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y golang.org/x/crypto v0.12.0 h1:tFM/ta59kqch6LlvYnPa0yx5a83cL2nHflFhYKvv9Yk= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= -golang.org/x/exp v0.0.0-20230810033253-352e893a4cad h1:g0bG7Z4uG+OgH2QDODnjp6ggkk1bJDsINcuWmJN1iJU= -golang.org/x/exp v0.0.0-20230810033253-352e893a4cad/go.mod h1:FXUEEKJgO7OQYeo8N01OfiKP8RXMtf6e8aTskBGqWdc= +golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8= golang.org/x/image v0.9.0 h1:QrzfX26snvCM20hIhBwuHI/ThTg18b/+kcKdXHvnR+g= golang.org/x/image v0.9.0/go.mod h1:jtrku+n79PfroUbvDdeUWMAI+heR786BofxrbiSF+J0= @@ -795,8 +786,7 @@ golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= -golang.org/x/tools v0.11.0 h1:EMCa6U9S2LtZXLAMoWiR/R8dAQFRqbAitmbJ2UKhoi8= -golang.org/x/tools v0.11.0/go.mod h1:anzJrxPjNtfgiYQYirP2CPGzGLxrH2u2QBhn6Bf3qY8= +golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846 h1:Vve/L0v7CXXuxUmaMGIEK/dEeq7uiqb5qBgQrZzIE7E= golang.org/x/tools v0.12.1-0.20230815132531-74c255bcf846/go.mod h1:Sc0INKfu04TlqNoRA1hgpFZbhYXHPr4V5DzpSBTPqQM= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= From 00501840d591bd6ba03af6e61043649d4cd9f0c7 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 23 Aug 2023 03:29:10 +0200 Subject: [PATCH 027/356] Refactor: refactored code --- pkg/protocol/chainmanagerv1/chainmanager.go | 21 +++++++++++-------- .../chainmanagerv1/commitment_metadata.go | 12 +++++++++++ 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 578f589cf..27bbb5941 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -64,15 +64,18 @@ func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitme } } - commitmentMetadata = NewCommitmentMetadata(commitment) - commitmentMetadata.Solid().Trigger() - commitmentMetadata.Verified().Trigger() - commitmentMetadata.BelowSyncThreshold().Trigger() - commitmentMetadata.BelowWarpSyncThreshold().Trigger() - commitmentMetadata.BelowLatestVerifiedCommitment().Trigger() - commitmentMetadata.Evicted().Trigger() - - c.rootChain = NewChain(commitmentMetadata) + commitmentMetadata = NewRootCommitmentMetadata(commitment) + + if c.rootChain == nil { + c.rootChain = NewChain(commitmentMetadata) + } else { + chainCommitment, exists := c.rootChain.Commitment(commitment.Index()) + if !exists || chainCommitment.ID() != commitment.ID() { + panic("can only set root commitment to a commitment of the same chain") + } + + c.rootChain.ForkingPoint().Set(chainCommitment) + } return commitmentMetadata }) diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index 484fddabc..a04aa8b50 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -63,6 +63,18 @@ func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { return c } +func NewRootCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { + commitmentMetadata := NewCommitmentMetadata(commitment) + commitmentMetadata.Solid().Trigger() + commitmentMetadata.Verified().Trigger() + commitmentMetadata.BelowSyncThreshold().Trigger() + commitmentMetadata.BelowWarpSyncThreshold().Trigger() + commitmentMetadata.BelowLatestVerifiedCommitment().Trigger() + commitmentMetadata.Evicted().Trigger() + + return commitmentMetadata +} + func (c *CommitmentMetadata) Chain() reactive.Variable[*Chain] { return c.chain } From addec7bf20eb84a7a915e8361d16efce4d9bd22e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 23 Aug 2023 16:41:36 +0200 Subject: [PATCH 028/356] Feat: cleaned up root commitment initialization --- pkg/protocol/chainmanagerv1/chainmanager.go | 49 ++++--------------- .../chainmanagerv1/chainmanager_test.go | 26 +++++----- 2 files changed, 22 insertions(+), 53 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 27bbb5941..d91da7eb6 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -4,7 +4,6 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/core/promise" @@ -13,9 +12,7 @@ import ( ) type ChainManager struct { - rootChain *Chain - - rootCommitment reactive.Variable[*CommitmentMetadata] + rootChain reactive.Variable[*Chain] commitmentCreated *event.Event1[*CommitmentMetadata] @@ -26,10 +23,10 @@ type ChainManager struct { reactive.EvictionState[iotago.SlotIndex] } -func NewChainManager() *ChainManager { +func NewChainManager(rootCommitment *model.Commitment) *ChainManager { return &ChainManager{ EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - rootCommitment: reactive.NewVariable[*CommitmentMetadata](), + rootChain: reactive.NewVariable[*Chain]().Init(NewChain(NewRootCommitmentMetadata(rootCommitment))), commitmentCreated: event.New1[*CommitmentMetadata](), cachedCommitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), @@ -50,41 +47,13 @@ func (c *ChainManager) OnCommitmentCreated(callback func(commitment *CommitmentM return c.commitmentCreated.Hook(callback).Unhook } -func (c *ChainManager) SetRootCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata, err error) { - c.rootCommitment.Compute(func(currentRoot *CommitmentMetadata) *CommitmentMetadata { - if currentRoot != nil { - if currentRoot.Index() > commitment.Index() { - err = ierrors.Errorf("cannot set root commitment with lower index %s than current root commitment index %s", commitment.Index(), currentRoot.Index()) - return currentRoot - } - - if currentRoot.Index() == commitment.Index() && currentRoot.ID() != commitment.ID() { - err = ierrors.Errorf("cannot set root commitment with same index %s but different id %s than current root commitment id %s", commitment.Index(), commitment.ID(), currentRoot.ID()) - return currentRoot - } - } - - commitmentMetadata = NewRootCommitmentMetadata(commitment) - - if c.rootChain == nil { - c.rootChain = NewChain(commitmentMetadata) - } else { - chainCommitment, exists := c.rootChain.Commitment(commitment.Index()) - if !exists || chainCommitment.ID() != commitment.ID() { - panic("can only set root commitment to a commitment of the same chain") - } - - c.rootChain.ForkingPoint().Set(chainCommitment) - } - - return commitmentMetadata - }) - - if err != nil { - return nil, err +func (c *ChainManager) RootCommitment() *CommitmentMetadata { + chain := c.rootChain.Get() + if chain == nil { + return nil } - return commitmentMetadata, nil + return chain.ForkingPoint().Get() } func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { @@ -98,7 +67,7 @@ func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvict func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.SlotIndex, requestIfMissing bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata]) { slotEvicted := c.EvictionEvent(index) if slotEvicted.WasTriggered() { - if rootCommitment := c.rootCommitment.Get(); rootCommitment != nil && id == rootCommitment.ID() { + if rootCommitment := c.RootCommitment(); rootCommitment != nil && id == rootCommitment.ID() { for _, successCallback := range optSuccessCallbacks { successCallback(rootCommitment) } diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index df8bcb04a..aa5dd6dc9 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -13,48 +13,48 @@ import ( func TestChainManager(t *testing.T) { testAPI := tpkg.TestAPI + rootCommitment := model.NewEmptyCommitment(testAPI) + chainManager := NewChainManager(rootCommitment) - chainManager := NewChainManager() - - rootCommitment := lo.PanicOnErr(chainManager.SetRootCommitment(model.NewEmptyCommitment(testAPI))) - commitment1Metadata := chainManager.ProcessCommitment(lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), + commitment1 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), rootCommitment.Index()+1, rootCommitment.ID(), rootCommitment.RootsID(), 1, 1, - ), testAPI))) + ), testAPI)) commitment2 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), - commitment1Metadata.Index()+1, - commitment1Metadata.ID(), - commitment1Metadata.RootsID(), + commitment1.Index()+1, + commitment1.ID(), + commitment1.RootsID(), 2, 2, ), testAPI)) - commitment3Metadata := chainManager.ProcessCommitment(lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), + commitment3 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), commitment2.Index()+1, commitment2.ID(), commitment2.RootsID(), 3, 2, - ), testAPI))) + ), testAPI)) + + commitment1Metadata := chainManager.ProcessCommitment(commitment1) + require.True(t, commitment1Metadata.Solid().Get()) + commitment3Metadata := chainManager.ProcessCommitment(commitment3) require.True(t, commitment1Metadata.Solid().Get()) require.False(t, commitment3Metadata.Solid().Get()) commitment2Metadata := chainManager.ProcessCommitment(commitment2) - require.True(t, commitment1Metadata.Solid().Get()) require.True(t, commitment2Metadata.Solid().Get()) require.True(t, commitment3Metadata.Solid().Get()) commitment2Metadata.Verified().Trigger() - require.True(t, commitment3Metadata.AboveLatestVerifiedCommitment().Get()) require.True(t, commitment3Metadata.BelowSyncThreshold().Get()) - require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().latestCommitmentIndex.Get()) require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().cumulativeWeight.Get()) } From 01efc91f6a61f11a4bbd7ecd654c3a373e5141ea Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 23 Aug 2023 19:33:18 +0200 Subject: [PATCH 029/356] Refactor: changed ChainManager initialization --- pkg/protocol/chainmanagerv1/chainmanager.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index d91da7eb6..4746d8258 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -47,13 +47,13 @@ func (c *ChainManager) OnCommitmentCreated(callback func(commitment *CommitmentM return c.commitmentCreated.Hook(callback).Unhook } -func (c *ChainManager) RootCommitment() *CommitmentMetadata { +func (c *ChainManager) RootCommitment() reactive.Variable[*CommitmentMetadata] { chain := c.rootChain.Get() if chain == nil { - return nil + panic("root chain not initialized") } - return chain.ForkingPoint().Get() + return chain.ForkingPoint() } func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { @@ -67,7 +67,7 @@ func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvict func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.SlotIndex, requestIfMissing bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata]) { slotEvicted := c.EvictionEvent(index) if slotEvicted.WasTriggered() { - if rootCommitment := c.RootCommitment(); rootCommitment != nil && id == rootCommitment.ID() { + if rootCommitment := c.RootCommitment().Get(); rootCommitment != nil && id == rootCommitment.ID() { for _, successCallback := range optSuccessCallbacks { successCallback(rootCommitment) } From f6cf0ac11958429177497bef03d0ed04983d40f8 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 24 Aug 2023 03:24:45 +0200 Subject: [PATCH 030/356] Feat: refactored code + fixed Commitment function --- pkg/protocol/chainmanagerv1/chain.go | 42 ++++++--- pkg/protocol/chainmanagerv1/chainmanager.go | 72 ++++++++------ .../chainmanagerv1/chainmanager_test.go | 12 +++ .../chainmanagerv1/commitment_metadata.go | 93 ++++++++++--------- 4 files changed, 130 insertions(+), 89 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 05c344eec..51c451bc5 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -17,7 +17,9 @@ const ( ) type Chain struct { - forkingPoint reactive.Variable[*CommitmentMetadata] + manager *ChainManager + + root reactive.Variable[*CommitmentMetadata] commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *CommitmentMetadata] @@ -25,8 +27,6 @@ type Chain struct { latestVerifiedCommitmentIndex reactive.Variable[iotago.SlotIndex] - evicted reactive.Event - // syncThreshold defines an upper bound for the range of slots that are being fed to the engine as part of the sync // process (sync from past to present preventing the engine from running out of memory). syncThreshold reactive.Variable[iotago.SlotIndex] @@ -36,18 +36,21 @@ type Chain struct { warpSyncThreshold reactive.Variable[iotago.SlotIndex] cumulativeWeight reactive.Variable[uint64] + + evicted reactive.Event } -func NewChain(forkingPoint *CommitmentMetadata) *Chain { +func NewChain(root *CommitmentMetadata, manager *ChainManager) *Chain { c := &Chain{ - forkingPoint: reactive.NewVariable[*CommitmentMetadata]().Init(forkingPoint), + manager: manager, commitments: shrinkingmap.New[iotago.SlotIndex, *CommitmentMetadata](), - evicted: reactive.NewEvent(), + root: reactive.NewVariable[*CommitmentMetadata]().Init(root), latestCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), latestVerifiedCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), + evicted: reactive.NewEvent(), } - forkingPoint.Chain().Set(c) + root.Chain().Set(c) c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { return latestVerifiedCommitmentIndex + 1 + SyncWindow @@ -64,19 +67,28 @@ func NewChain(forkingPoint *CommitmentMetadata) *Chain { return c } -func (c *Chain) ForkingPoint() reactive.Variable[*CommitmentMetadata] { - return c.forkingPoint +func (c *Chain) Root() reactive.Variable[*CommitmentMetadata] { + return c.root } -func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *CommitmentMetadata, exists bool) { - forkingPoint := c.forkingPoint.Get() +func (c *Chain) ParentChain() *Chain { + if root := c.root.Get(); root != nil { + if parent := root.Parent().Get(); parent != nil { + return parent.Chain().Get() + } + } - if index < forkingPoint.Index() { - // TODO: GO TO PARENT CHAIN - return nil, false + return nil +} + +func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *CommitmentMetadata, exists bool) { + for currentChain := c; currentChain != nil; currentChain = currentChain.ParentChain() { + if root := currentChain.Root().Get(); root != nil && index >= root.Index() { + return currentChain.commitments.Get(index) + } } - return c.commitments.Get(index) + return nil, false } func (c *Chain) LatestCommitmentIndex() reactive.Variable[iotago.SlotIndex] { diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 4746d8258..a4e89724e 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -12,32 +12,36 @@ import ( ) type ChainManager struct { - rootChain reactive.Variable[*Chain] + mainChain reactive.Variable[*Chain] - commitmentCreated *event.Event1[*CommitmentMetadata] - - cachedCommitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]] + commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]] commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + commitmentCreated *event.Event1[*CommitmentMetadata] + reactive.EvictionState[iotago.SlotIndex] } func NewChainManager(rootCommitment *model.Commitment) *ChainManager { - return &ChainManager{ - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - rootChain: reactive.NewVariable[*Chain]().Init(NewChain(NewRootCommitmentMetadata(rootCommitment))), - commitmentCreated: event.New1[*CommitmentMetadata](), - cachedCommitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), + c := &ChainManager{ + mainChain: reactive.NewVariable[*Chain](), + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + commitmentCreated: event.New1[*CommitmentMetadata](), + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), } + + c.mainChain.Set(NewChain(NewRootCommitmentMetadata(rootCommitment, c), c)) + + return c } func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata) { if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *CommitmentMetadata) { commitmentMetadata = resolvedMetadata }); commitmentRequest != nil { - commitmentRequest.Resolve(NewCommitmentMetadata(commitment)) + commitmentRequest.Resolve(NewCommitmentMetadata(commitment, c)) } return commitmentMetadata @@ -47,52 +51,62 @@ func (c *ChainManager) OnCommitmentCreated(callback func(commitment *CommitmentM return c.commitmentCreated.Hook(callback).Unhook } +func (c *ChainManager) MainChain() reactive.Variable[*Chain] { + return c.mainChain +} + func (c *ChainManager) RootCommitment() reactive.Variable[*CommitmentMetadata] { - chain := c.rootChain.Get() + chain := c.mainChain.Get() if chain == nil { panic("root chain not initialized") } - return chain.ForkingPoint() + return chain.Root() } func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { - c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.registerParent) + c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, func(metadata *CommitmentMetadata) { + commitment.Parent().Set(metadata) + }) - slotEvictedEvent.OnTrigger(func() { commitment.Evicted().Trigger() }) + slotEvictedEvent.OnTrigger(func() { + commitment.Evicted().Trigger() + }) c.commitmentCreated.Trigger(commitment) } -func (c *ChainManager) requestCommitment(id iotago.CommitmentID, index iotago.SlotIndex, requestIfMissing bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata]) { +func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, index iotago.SlotIndex, requestFromPeers bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata]) { slotEvicted := c.EvictionEvent(index) if slotEvicted.WasTriggered() { - if rootCommitment := c.RootCommitment().Get(); rootCommitment != nil && id == rootCommitment.ID() { - for _, successCallback := range optSuccessCallbacks { - successCallback(rootCommitment) - } + rootCommitment := c.mainChain.Get().root.Get() - return promise.New[*CommitmentMetadata]().Resolve(rootCommitment) + if rootCommitment == nil || commitmentID != rootCommitment.ID() { + return nil } - return nil + for _, successCallback := range optSuccessCallbacks { + successCallback(rootCommitment) + } + + return promise.New[*CommitmentMetadata]().Resolve(rootCommitment) } - commitmentRequest, requestCreated := c.cachedCommitments.GetOrCreate(id, lo.NoVariadic(promise.New[*CommitmentMetadata])) + commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*CommitmentMetadata])) if requestCreated { - if requestIfMissing { - c.commitmentRequester.StartTicker(id) + if requestFromPeers { + c.commitmentRequester.StartTicker(commitmentID) + + commitmentRequest.OnComplete(func() { + c.commitmentRequester.StopTicker(commitmentID) + }) } commitmentRequest.OnSuccess(func(commitment *CommitmentMetadata) { - if requestIfMissing { - c.commitmentRequester.StopTicker(commitment.ID()) - } - c.setupCommitment(commitment, slotEvicted) }) - slotEvicted.OnTrigger(func() { c.cachedCommitments.Delete(id) }) + slotEvicted.OnTrigger(func() { c.commitments.Delete(commitmentID) }) } for _, successCallback := range optSuccessCallbacks { diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index aa5dd6dc9..b41f04d60 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -1,6 +1,7 @@ package chainmanagerv1 import ( + "fmt" "testing" "github.com/stretchr/testify/require" @@ -40,6 +41,14 @@ func TestChainManager(t *testing.T) { 2, ), testAPI)) + commitment3a := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), + commitment2.Index()+1, + commitment2.ID(), + commitment2.RootsID(), + 40, + 2, + ), testAPI)) + commitment1Metadata := chainManager.ProcessCommitment(commitment1) require.True(t, commitment1Metadata.Solid().Get()) @@ -57,4 +66,7 @@ func TestChainManager(t *testing.T) { require.True(t, commitment3Metadata.BelowSyncThreshold().Get()) require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().latestCommitmentIndex.Get()) require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().cumulativeWeight.Get()) + + commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) + fmt.Println(commitment3aMetadata.Chain().Get().Root().Get()) } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index a04aa8b50..d9e1d2e6e 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -10,7 +10,10 @@ import ( type CommitmentMetadata struct { *model.Commitment + manager *ChainManager chain reactive.Variable[*Chain] + parent reactive.Variable[*CommitmentMetadata] + successor reactive.Variable[*CommitmentMetadata] solid reactive.Event verified reactive.Event parentVerified reactive.Event @@ -23,14 +26,16 @@ type CommitmentMetadata struct { aboveLatestVerifiedCommitment reactive.Variable[bool] inSyncWindow reactive.Variable[bool] requiresWarpSync reactive.Variable[bool] - chainSuccessor reactive.Variable[*CommitmentMetadata] } -func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { +func NewCommitmentMetadata(commitment *model.Commitment, manager *ChainManager) *CommitmentMetadata { c := &CommitmentMetadata{ Commitment: commitment, + manager: manager, chain: reactive.NewVariable[*Chain](), + parent: reactive.NewVariable[*CommitmentMetadata](), + successor: reactive.NewVariable[*CommitmentMetadata](), solid: reactive.NewEvent(), verified: reactive.NewEvent(), parentVerified: reactive.NewEvent(), @@ -39,10 +44,17 @@ func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { belowLatestVerifiedCommitment: reactive.NewEvent(), evicted: reactive.NewEvent(), parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - chainSuccessor: reactive.NewVariable[*CommitmentMetadata](), } - c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) + c.chain.OnUpdate(func(_, chain *Chain) { + chain.registerCommitment(c) + }) + + c.parent.OnUpdate(func(_, parent *CommitmentMetadata) { + parent.registerChild(c, c.inheritChain(parent)) + + c.registerParent(parent) + }) c.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { return parentVerified && !verified @@ -63,8 +75,8 @@ func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { return c } -func NewRootCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { - commitmentMetadata := NewCommitmentMetadata(commitment) +func NewRootCommitmentMetadata(commitment *model.Commitment, manager *ChainManager) *CommitmentMetadata { + commitmentMetadata := NewCommitmentMetadata(commitment, manager) commitmentMetadata.Solid().Trigger() commitmentMetadata.Verified().Trigger() commitmentMetadata.BelowSyncThreshold().Trigger() @@ -79,6 +91,10 @@ func (c *CommitmentMetadata) Chain() reactive.Variable[*Chain] { return c.chain } +func (c *CommitmentMetadata) Parent() reactive.Variable[*CommitmentMetadata] { + return c.parent +} + func (c *CommitmentMetadata) Solid() reactive.Event { return c.solid } @@ -124,20 +140,18 @@ func (c *CommitmentMetadata) RequiresWarpSync() reactive.Variable[bool] { } func (c *CommitmentMetadata) ChainSuccessor() reactive.Variable[*CommitmentMetadata] { - return c.chainSuccessor + return c.successor } func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { - parent.registerChild(c, c.inheritChain(parent)) - c.solid.InheritFrom(parent.solid) c.parentVerified.InheritFrom(parent.verified) c.parentAboveLatestVerifiedCommitment.InheritFrom(parent.aboveLatestVerifiedCommitment) - // triggerEventIfIndexBelowThreshold triggers the given event if the commitment's index is below the given + // triggerIfBelowThreshold triggers the given event if the commitment's index is below the given // threshold. We only monitor the threshold after the corresponding parent event was triggered (to minimize // the amount of elements that listen to updates of the same property). - triggerEventIfIndexBelowThreshold := func(eventFunc func(*CommitmentMetadata) reactive.Event, thresholdFunc func(*Chain) reactive.Variable[iotago.SlotIndex]) { + triggerIfBelowThreshold := func(eventFunc func(*CommitmentMetadata) reactive.Event, thresholdFunc func(*Chain) reactive.Variable[iotago.SlotIndex]) { eventFunc(parent).OnTrigger(func() { unsubscribe := thresholdFunc(c.chain.Get()).OnUpdate(func(_, latestVerifiedCommitmentIndex iotago.SlotIndex) { if c.Index() < latestVerifiedCommitmentIndex { @@ -149,58 +163,47 @@ func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { }) } - triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedCommitmentIndex) - triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowSyncThreshold, (*Chain).SyncThreshold) - triggerEventIfIndexBelowThreshold((*CommitmentMetadata).BelowWarpSyncThreshold, (*Chain).WarpSyncThreshold) + triggerIfBelowThreshold((*CommitmentMetadata).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedCommitmentIndex) + triggerIfBelowThreshold((*CommitmentMetadata).BelowSyncThreshold, (*Chain).SyncThreshold) + triggerIfBelowThreshold((*CommitmentMetadata).BelowWarpSyncThreshold, (*Chain).WarpSyncThreshold) } func (c *CommitmentMetadata) registerChild(newChild *CommitmentMetadata, onSuccessorUpdated func(*CommitmentMetadata, *CommitmentMetadata)) { - c.chainSuccessor.Compute(func(currentSuccessor *CommitmentMetadata) *CommitmentMetadata { + c.successor.Compute(func(currentSuccessor *CommitmentMetadata) *CommitmentMetadata { return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) }) // unsubscribe the handler on eviction to prevent memory leaks - c.evicted.OnTrigger(c.chainSuccessor.OnUpdate(onSuccessorUpdated)) + c.evicted.OnTrigger(c.successor.OnUpdate(onSuccessorUpdated)) } func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*CommitmentMetadata, *CommitmentMetadata) { var spawnedChain *Chain - spawnChain := func() { - if spawnedChain == nil { - spawnedChain = NewChain(c) - c.chain.Set(spawnedChain) - } - } - evictSpawnedChain := func() { - if spawnedChain != nil { - spawnedChain.evicted.Trigger() - spawnedChain = nil - } - } - - var unsubscribe func() - subscribeToParentChain := func() { - if unsubscribe == nil { - unsubscribe = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) - } - } - unsubscribeFromParentChain := func() { - if unsubscribe != nil { - unsubscribe() - unsubscribe = nil - } - } + var unsubscribeFromParent func() return func(_, successor *CommitmentMetadata) { switch successor { case nil: panic("successor must never be changed back to nil") case c: - evictSpawnedChain() - subscribeToParentChain() + if spawnedChain != nil { + spawnedChain.evicted.Trigger() + spawnedChain = nil + } + + if unsubscribeFromParent == nil { + unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) + } default: - unsubscribeFromParentChain() - spawnChain() + if unsubscribeFromParent != nil { + unsubscribeFromParent() + unsubscribeFromParent = nil + } + + if spawnedChain == nil { + spawnedChain = NewChain(c, c.manager) + c.chain.Set(spawnedChain) + } } } } From e90b4781c4c3004f83092892a7f6a14e04d3b9a7 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 24 Aug 2023 03:57:16 +0200 Subject: [PATCH 031/356] Refactor: WIP WIP --- pkg/protocol/chainmanagerv1/chain.go | 18 +++++++++++++++--- pkg/protocol/chainmanagerv1/chainmanager.go | 7 +++++++ .../chainmanagerv1/chainmanager_test.go | 10 +++++++++- .../chainmanagerv1/commitment_metadata.go | 3 +++ 4 files changed, 34 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 51c451bc5..b78398331 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -37,20 +37,22 @@ type Chain struct { cumulativeWeight reactive.Variable[uint64] + heavierThanMainChain reactive.Variable[bool] + evicted reactive.Event } -func NewChain(root *CommitmentMetadata, manager *ChainManager) *Chain { +func NewChain(rootCommitment *CommitmentMetadata, manager *ChainManager) *Chain { c := &Chain{ manager: manager, commitments: shrinkingmap.New[iotago.SlotIndex, *CommitmentMetadata](), - root: reactive.NewVariable[*CommitmentMetadata]().Init(root), + root: reactive.NewVariable[*CommitmentMetadata]().Init(rootCommitment), latestCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), latestVerifiedCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), evicted: reactive.NewEvent(), } - root.Chain().Set(c) + rootCommitment.Chain().Set(c) c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { return latestVerifiedCommitmentIndex + 1 + SyncWindow @@ -64,6 +66,12 @@ func NewChain(root *CommitmentMetadata, manager *ChainManager) *Chain { return lo.Return1(c.commitments.Get(latestCommitmentIndex)).CumulativeWeight() }, c.latestCommitmentIndex) + c.heavierThanMainChain = reactive.NewDerivedVariable[bool](func(cumulativeWeight uint64) bool { + mainChain := c.manager.MainChain().Get() + + return mainChain != nil && mainChain != c && cumulativeWeight > mainChain.CumulativeWeight().Get() + }, c.cumulativeWeight) + return c } @@ -107,6 +115,10 @@ func (c *Chain) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { return c.warpSyncThreshold } +func (c *Chain) CumulativeWeight() reactive.Variable[uint64] { + return c.cumulativeWeight +} + func (c *Chain) registerCommitment(commitment *CommitmentMetadata) { c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { c.commitments.Set(commitment.Index(), commitment) diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index a4e89724e..4b4d575ac 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -20,6 +20,8 @@ type ChainManager struct { commitmentCreated *event.Event1[*CommitmentMetadata] + chainCreated *event.Event1[*Chain] + reactive.EvictionState[iotago.SlotIndex] } @@ -29,6 +31,7 @@ func NewChainManager(rootCommitment *model.Commitment) *ChainManager { commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), commitmentCreated: event.New1[*CommitmentMetadata](), + chainCreated: event.New1[*Chain](), EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), } @@ -51,6 +54,10 @@ func (c *ChainManager) OnCommitmentCreated(callback func(commitment *CommitmentM return c.commitmentCreated.Hook(callback).Unhook } +func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { + return c.chainCreated.Hook(callback).Unhook +} + func (c *ChainManager) MainChain() reactive.Variable[*Chain] { return c.mainChain } diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index b41f04d60..f929d3e35 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -17,6 +17,14 @@ func TestChainManager(t *testing.T) { rootCommitment := model.NewEmptyCommitment(testAPI) chainManager := NewChainManager(rootCommitment) + chainManager.OnChainCreated(func(chain *Chain) { + unsubscribe := chain.heavierThanMainChain.OnUpdate(func(oldValue, newValue bool) { + fmt.Println("heavierThanMainChain", oldValue, newValue, chain.Root().Get()) + }) + + chain.evicted.OnTrigger(unsubscribe) + }) + commitment1 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), rootCommitment.Index()+1, rootCommitment.ID(), @@ -68,5 +76,5 @@ func TestChainManager(t *testing.T) { require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().cumulativeWeight.Get()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) - fmt.Println(commitment3aMetadata.Chain().Get().Root().Get()) + fmt.Println(commitment3aMetadata.Chain().Get().heavierThanMainChain.Get()) } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index d9e1d2e6e..7a8859f8d 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -202,7 +202,10 @@ func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*Comm if spawnedChain == nil { spawnedChain = NewChain(c, c.manager) + c.chain.Set(spawnedChain) + + c.manager.chainCreated.Trigger(spawnedChain) } } } From 4cf9acafdbaaaf4a01c67d524293369595b3b50a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 25 Aug 2023 02:44:27 +0200 Subject: [PATCH 032/356] Feat: simplified tracking of heaviest candidate --- pkg/protocol/chainmanagerv1/chain.go | 35 +++++++------------ pkg/protocol/chainmanagerv1/chainmanager.go | 27 +++++++++++++- .../chainmanagerv1/chainmanager_test.go | 10 ++---- .../chainmanagerv1/commitment_metadata.go | 2 +- 4 files changed, 43 insertions(+), 31 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index b78398331..18c665229 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -37,14 +37,11 @@ type Chain struct { cumulativeWeight reactive.Variable[uint64] - heavierThanMainChain reactive.Variable[bool] - evicted reactive.Event } -func NewChain(rootCommitment *CommitmentMetadata, manager *ChainManager) *Chain { +func NewChain(rootCommitment *CommitmentMetadata) *Chain { c := &Chain{ - manager: manager, commitments: shrinkingmap.New[iotago.SlotIndex, *CommitmentMetadata](), root: reactive.NewVariable[*CommitmentMetadata]().Init(rootCommitment), latestCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), @@ -66,12 +63,6 @@ func NewChain(rootCommitment *CommitmentMetadata, manager *ChainManager) *Chain return lo.Return1(c.commitments.Get(latestCommitmentIndex)).CumulativeWeight() }, c.latestCommitmentIndex) - c.heavierThanMainChain = reactive.NewDerivedVariable[bool](func(cumulativeWeight uint64) bool { - mainChain := c.manager.MainChain().Get() - - return mainChain != nil && mainChain != c && cumulativeWeight > mainChain.CumulativeWeight().Get() - }, c.cumulativeWeight) - return c } @@ -79,18 +70,18 @@ func (c *Chain) Root() reactive.Variable[*CommitmentMetadata] { return c.root } -func (c *Chain) ParentChain() *Chain { - if root := c.root.Get(); root != nil { - if parent := root.Parent().Get(); parent != nil { - return parent.Chain().Get() +func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *CommitmentMetadata, exists bool) { + parentChain := func(c *Chain) *Chain { + if root := c.root.Get(); root != nil { + if parent := root.Parent().Get(); parent != nil { + return parent.Chain().Get() + } } - } - return nil -} + return nil + } -func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *CommitmentMetadata, exists bool) { - for currentChain := c; currentChain != nil; currentChain = currentChain.ParentChain() { + for currentChain := c; currentChain != nil; currentChain = parentChain(currentChain) { if root := currentChain.Root().Get(); root != nil && index >= root.Index() { return currentChain.commitments.Get(index) } @@ -126,11 +117,11 @@ func (c *Chain) registerCommitment(commitment *CommitmentMetadata) { return lo.Cond(latestCommitmentIndex > commitment.Index(), latestCommitmentIndex, commitment.Index()) }) + triggerIfSwitchedChains := func(_, newChain *Chain) bool { return newChain != c } + commitment.Chain().OnUpdateOnce(func(_, _ *Chain) { c.unregisterCommitment(commitment) - }, func(_, newValue *Chain) bool { - return newValue != c - }) + }, triggerIfSwitchedChains) } func (c *Chain) unregisterCommitment(commitment *CommitmentMetadata) iotago.SlotIndex { diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 4b4d575ac..c3d011bac 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -14,6 +14,8 @@ import ( type ChainManager struct { mainChain reactive.Variable[*Chain] + candidateChain reactive.Variable[*Chain] + commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]] commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] @@ -28,6 +30,7 @@ type ChainManager struct { func NewChainManager(rootCommitment *model.Commitment) *ChainManager { c := &ChainManager{ mainChain: reactive.NewVariable[*Chain](), + candidateChain: reactive.NewVariable[*Chain](), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), commitmentCreated: event.New1[*CommitmentMetadata](), @@ -35,11 +38,29 @@ func NewChainManager(rootCommitment *model.Commitment) *ChainManager { EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), } - c.mainChain.Set(NewChain(NewRootCommitmentMetadata(rootCommitment, c), c)) + c.mainChain.Set(NewChain(NewRootCommitmentMetadata(rootCommitment, c))) + + c.initChainSwitching() return c } +func (c *ChainManager) initChainSwitching() { + c.OnChainCreated(func(chain *Chain) { + unsubscribe := chain.cumulativeWeight.OnUpdate(func(_, chainWeight uint64) { + c.candidateChain.Compute(func(candidateChain *Chain) *Chain { + if candidateChain == nil || candidateChain.evicted.WasTriggered() || chainWeight > candidateChain.CumulativeWeight().Get() { + return chain + } + + return candidateChain + }) + }) + + chain.evicted.OnTrigger(unsubscribe) + }) +} + func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata) { if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *CommitmentMetadata) { commitmentMetadata = resolvedMetadata @@ -62,6 +83,10 @@ func (c *ChainManager) MainChain() reactive.Variable[*Chain] { return c.mainChain } +func (c *ChainManager) CandidateChain() reactive.Variable[*Chain] { + return c.candidateChain +} + func (c *ChainManager) RootCommitment() reactive.Variable[*CommitmentMetadata] { chain := c.mainChain.Get() if chain == nil { diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index f929d3e35..b375c9196 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -17,12 +17,8 @@ func TestChainManager(t *testing.T) { rootCommitment := model.NewEmptyCommitment(testAPI) chainManager := NewChainManager(rootCommitment) - chainManager.OnChainCreated(func(chain *Chain) { - unsubscribe := chain.heavierThanMainChain.OnUpdate(func(oldValue, newValue bool) { - fmt.Println("heavierThanMainChain", oldValue, newValue, chain.Root().Get()) - }) - - chain.evicted.OnTrigger(unsubscribe) + chainManager.CandidateChain().OnUpdate(func(oldValue, newValue *Chain) { + fmt.Println("CandidateChain", oldValue, newValue) }) commitment1 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), @@ -76,5 +72,5 @@ func TestChainManager(t *testing.T) { require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().cumulativeWeight.Get()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) - fmt.Println(commitment3aMetadata.Chain().Get().heavierThanMainChain.Get()) + fmt.Println(commitment3aMetadata.Chain().Get()) } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index 7a8859f8d..65263cc4d 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -201,7 +201,7 @@ func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*Comm } if spawnedChain == nil { - spawnedChain = NewChain(c, c.manager) + spawnedChain = NewChain(c) c.chain.Set(spawnedChain) From 7ca2d52c192ecfc7e99e9000d2053dac2c4da47d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 25 Aug 2023 03:49:15 +0200 Subject: [PATCH 033/356] Feat: removed dependency for manager in metadata --- pkg/protocol/chainmanagerv1/chain.go | 2 - pkg/protocol/chainmanagerv1/chainmanager.go | 12 +++-- .../chainmanagerv1/commitment_metadata.go | 51 +++++++++---------- 3 files changed, 33 insertions(+), 32 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 18c665229..4ebc7fb73 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -17,8 +17,6 @@ const ( ) type Chain struct { - manager *ChainManager - root reactive.Variable[*CommitmentMetadata] commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *CommitmentMetadata] diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index c3d011bac..a11fd01dc 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -29,7 +29,7 @@ type ChainManager struct { func NewChainManager(rootCommitment *model.Commitment) *ChainManager { c := &ChainManager{ - mainChain: reactive.NewVariable[*Chain](), + mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewRootCommitmentMetadata(rootCommitment))), candidateChain: reactive.NewVariable[*Chain](), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), @@ -38,8 +38,6 @@ func NewChainManager(rootCommitment *model.Commitment) *ChainManager { EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), } - c.mainChain.Set(NewChain(NewRootCommitmentMetadata(rootCommitment, c))) - c.initChainSwitching() return c @@ -65,7 +63,7 @@ func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitme if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *CommitmentMetadata) { commitmentMetadata = resolvedMetadata }); commitmentRequest != nil { - commitmentRequest.Resolve(NewCommitmentMetadata(commitment, c)) + commitmentRequest.Resolve(NewCommitmentMetadata(commitment)) } return commitmentMetadata @@ -105,6 +103,12 @@ func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvict commitment.Evicted().Trigger() }) + commitment.spawnedChain.OnUpdate(func(oldChain, newChain *Chain) { + if newChain != nil { + c.chainCreated.Trigger(newChain) + } + }) + c.commitmentCreated.Trigger(commitment) } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index 65263cc4d..b9615a5af 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -10,7 +10,6 @@ import ( type CommitmentMetadata struct { *model.Commitment - manager *ChainManager chain reactive.Variable[*Chain] parent reactive.Variable[*CommitmentMetadata] successor reactive.Variable[*CommitmentMetadata] @@ -26,13 +25,13 @@ type CommitmentMetadata struct { aboveLatestVerifiedCommitment reactive.Variable[bool] inSyncWindow reactive.Variable[bool] requiresWarpSync reactive.Variable[bool] + spawnedChain reactive.Variable[*Chain] } -func NewCommitmentMetadata(commitment *model.Commitment, manager *ChainManager) *CommitmentMetadata { +func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { c := &CommitmentMetadata{ Commitment: commitment, - manager: manager, chain: reactive.NewVariable[*Chain](), parent: reactive.NewVariable[*CommitmentMetadata](), successor: reactive.NewVariable[*CommitmentMetadata](), @@ -44,6 +43,7 @@ func NewCommitmentMetadata(commitment *model.Commitment, manager *ChainManager) belowLatestVerifiedCommitment: reactive.NewEvent(), evicted: reactive.NewEvent(), parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), + spawnedChain: reactive.NewVariable[*Chain](), } c.chain.OnUpdate(func(_, chain *Chain) { @@ -75,8 +75,8 @@ func NewCommitmentMetadata(commitment *model.Commitment, manager *ChainManager) return c } -func NewRootCommitmentMetadata(commitment *model.Commitment, manager *ChainManager) *CommitmentMetadata { - commitmentMetadata := NewCommitmentMetadata(commitment, manager) +func NewRootCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { + commitmentMetadata := NewCommitmentMetadata(commitment) commitmentMetadata.Solid().Trigger() commitmentMetadata.Verified().Trigger() commitmentMetadata.BelowSyncThreshold().Trigger() @@ -178,35 +178,34 @@ func (c *CommitmentMetadata) registerChild(newChild *CommitmentMetadata, onSucce } func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*CommitmentMetadata, *CommitmentMetadata) { - var spawnedChain *Chain var unsubscribeFromParent func() return func(_, successor *CommitmentMetadata) { - switch successor { - case nil: - panic("successor must never be changed back to nil") - case c: - if spawnedChain != nil { - spawnedChain.evicted.Trigger() - spawnedChain = nil - } + c.spawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { + switch successor { + case nil: + panic("successor may not be changed back to nil") + case c: + if spawnedChain != nil { + spawnedChain.evicted.Trigger() + } - if unsubscribeFromParent == nil { unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) - } - default: - if unsubscribeFromParent != nil { - unsubscribeFromParent() - unsubscribeFromParent = nil - } + default: + if spawnedChain != nil { + return spawnedChain + } - if spawnedChain == nil { - spawnedChain = NewChain(c) + if unsubscribeFromParent != nil { + unsubscribeFromParent() + } - c.chain.Set(spawnedChain) + newSpawnedChain = NewChain(c) - c.manager.chainCreated.Trigger(spawnedChain) + c.chain.Set(newSpawnedChain) } - } + + return newSpawnedChain + }) } } From e23057d410445cccde54b4bb7ca1891878e64e50 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 25 Aug 2023 04:00:06 +0200 Subject: [PATCH 034/356] Refactor: cleaned up more --- pkg/protocol/chainmanagerv1/chainmanager.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index a11fd01dc..caca57f9a 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -86,12 +86,11 @@ func (c *ChainManager) CandidateChain() reactive.Variable[*Chain] { } func (c *ChainManager) RootCommitment() reactive.Variable[*CommitmentMetadata] { - chain := c.mainChain.Get() - if chain == nil { - panic("root chain not initialized") + if chain := c.mainChain.Get(); chain != nil { + return chain.Root() } - return chain.Root() + panic("root chain not initialized") } func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { @@ -103,13 +102,13 @@ func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvict commitment.Evicted().Trigger() }) - commitment.spawnedChain.OnUpdate(func(oldChain, newChain *Chain) { + c.commitmentCreated.Trigger(commitment) + + commitment.spawnedChain.OnUpdate(func(_, newChain *Chain) { if newChain != nil { c.chainCreated.Trigger(newChain) } }) - - c.commitmentCreated.Trigger(commitment) } func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, index iotago.SlotIndex, requestFromPeers bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata]) { From 6248da9e8be3e82e880d28a84395c784474a3465 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 25 Aug 2023 20:31:32 +0200 Subject: [PATCH 035/356] Feat: added verifiedWeight --- pkg/protocol/chainmanagerv1/chain.go | 56 ++++++++++++--------- pkg/protocol/chainmanagerv1/chainmanager.go | 38 +++++++------- pkg/protocol/chainmanagerv1/constants.go | 24 +++++++++ 3 files changed, 73 insertions(+), 45 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/constants.go diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 4ebc7fb73..3a582cc71 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -7,15 +7,6 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -const ( - // SyncWindow defines the maximum amount of slots that a node requests on top of its latest verified commitment. - SyncWindow = 20 - - // WarpSyncOffset defines how many slots a commitment needs to be behind the latest commitment to be requested by - // the warp sync process. - WarpSyncOffset = 1 -) - type Chain struct { root reactive.Variable[*CommitmentMetadata] @@ -35,6 +26,8 @@ type Chain struct { cumulativeWeight reactive.Variable[uint64] + verifiedCumulativeWeight reactive.Variable[uint64] + evicted reactive.Event } @@ -49,17 +42,10 @@ func NewChain(rootCommitment *CommitmentMetadata) *Chain { rootCommitment.Chain().Set(c) - c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - return latestVerifiedCommitmentIndex + 1 + SyncWindow - }, c.latestVerifiedCommitmentIndex) - - c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - return latestCommitmentIndex - WarpSyncOffset - }, c.latestCommitmentIndex) - - c.cumulativeWeight = reactive.NewDerivedVariable[uint64](func(latestCommitmentIndex iotago.SlotIndex) uint64 { - return lo.Return1(c.commitments.Get(latestCommitmentIndex)).CumulativeWeight() - }, c.latestCommitmentIndex) + c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](ComputeSyncThreshold, c.latestVerifiedCommitmentIndex) + c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](ComputeWarpSyncThreshold, c.latestCommitmentIndex) + c.cumulativeWeight = reactive.NewDerivedVariable[uint64](c.computeCumulativeWeightOfSlot, c.latestCommitmentIndex) + c.verifiedCumulativeWeight = reactive.NewDerivedVariable[uint64](c.computeCumulativeWeightOfSlot, c.latestVerifiedCommitmentIndex) return c } @@ -109,23 +95,43 @@ func (c *Chain) CumulativeWeight() reactive.Variable[uint64] { } func (c *Chain) registerCommitment(commitment *CommitmentMetadata) { - c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - c.commitments.Set(commitment.Index(), commitment) + c.commitments.Set(commitment.Index(), commitment) + c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { return lo.Cond(latestCommitmentIndex > commitment.Index(), latestCommitmentIndex, commitment.Index()) }) + unsubscribe := commitment.verified.OnTrigger(func() { + c.latestVerifiedCommitmentIndex.Compute(func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + return lo.Cond(latestVerifiedCommitmentIndex > commitment.Index(), latestVerifiedCommitmentIndex, commitment.Index()) + }) + }) + triggerIfSwitchedChains := func(_, newChain *Chain) bool { return newChain != c } commitment.Chain().OnUpdateOnce(func(_, _ *Chain) { + unsubscribe() + c.unregisterCommitment(commitment) }, triggerIfSwitchedChains) } -func (c *Chain) unregisterCommitment(commitment *CommitmentMetadata) iotago.SlotIndex { - return c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - c.commitments.Delete(commitment.Index()) +func (c *Chain) unregisterCommitment(commitment *CommitmentMetadata) { + c.commitments.Delete(commitment.Index()) + c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { return lo.Cond(commitment.Index() < latestCommitmentIndex, commitment.Index()-1, latestCommitmentIndex) }) + + c.latestVerifiedCommitmentIndex.Compute(func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + return lo.Cond(commitment.Index() < latestVerifiedCommitmentIndex, commitment.Index()-1, latestVerifiedCommitmentIndex) + }) +} + +func (c *Chain) computeCumulativeWeightOfSlot(slotIndex iotago.SlotIndex) uint64 { + if commitment, exists := c.commitments.Get(slotIndex); exists { + return commitment.CumulativeWeight() + } + + return 0 } diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index caca57f9a..324da50d8 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -38,27 +38,11 @@ func NewChainManager(rootCommitment *model.Commitment) *ChainManager { EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), } - c.initChainSwitching() + c.OnChainCreated(c.setupChain) return c } -func (c *ChainManager) initChainSwitching() { - c.OnChainCreated(func(chain *Chain) { - unsubscribe := chain.cumulativeWeight.OnUpdate(func(_, chainWeight uint64) { - c.candidateChain.Compute(func(candidateChain *Chain) *Chain { - if candidateChain == nil || candidateChain.evicted.WasTriggered() || chainWeight > candidateChain.CumulativeWeight().Get() { - return chain - } - - return candidateChain - }) - }) - - chain.evicted.OnTrigger(unsubscribe) - }) -} - func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata) { if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *CommitmentMetadata) { commitmentMetadata = resolvedMetadata @@ -93,10 +77,24 @@ func (c *ChainManager) RootCommitment() reactive.Variable[*CommitmentMetadata] { panic("root chain not initialized") } -func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { - c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, func(metadata *CommitmentMetadata) { - commitment.Parent().Set(metadata) +func (c *ChainManager) setupChain(newCandidate *Chain) { + newCandidate.cumulativeWeight.OnUpdate(func(_, newChainWeight uint64) { + if newChainWeight < c.MainChain().Get().CumulativeWeight().Get() { + return + } + + c.candidateChain.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > currentCandidate.CumulativeWeight().Get() { + return newCandidate + } + + return currentCandidate + }) }) +} + +func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { + c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, lo.Void(commitment.Parent().Set)) slotEvictedEvent.OnTrigger(func() { commitment.Evicted().Trigger() diff --git a/pkg/protocol/chainmanagerv1/constants.go b/pkg/protocol/chainmanagerv1/constants.go new file mode 100644 index 000000000..869c9b1a1 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/constants.go @@ -0,0 +1,24 @@ +package chainmanagerv1 + +import iotago "github.com/iotaledger/iota.go/v4" + +const ( + // SyncWindow defines the maximum amount of slots that a node requests on top of its latest verified commitment. + SyncWindow = 20 + + // WarpSyncOffset defines how many slots a commitment needs to be behind the latest commitment to be requested by + // the warp sync process. + WarpSyncOffset = 1 +) + +func ComputeWarpSyncThreshold(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + if WarpSyncOffset > latestCommitmentIndex { + return 0 + } + + return latestCommitmentIndex - WarpSyncOffset +} + +func ComputeSyncThreshold(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + return latestVerifiedCommitmentIndex + 1 + SyncWindow +} From db34af0cb665f89b804daff15bd5252e1edb24ec Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 25 Aug 2023 20:44:41 +0200 Subject: [PATCH 036/356] Feat: simplified code --- .../chainmanagerv1/commitment_metadata.go | 16 +++++++--------- 1 file changed, 7 insertions(+), 9 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index b9615a5af..b59ae4edd 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -150,16 +150,14 @@ func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { // triggerIfBelowThreshold triggers the given event if the commitment's index is below the given // threshold. We only monitor the threshold after the corresponding parent event was triggered (to minimize - // the amount of elements that listen to updates of the same property). - triggerIfBelowThreshold := func(eventFunc func(*CommitmentMetadata) reactive.Event, thresholdFunc func(*Chain) reactive.Variable[iotago.SlotIndex]) { - eventFunc(parent).OnTrigger(func() { - unsubscribe := thresholdFunc(c.chain.Get()).OnUpdate(func(_, latestVerifiedCommitmentIndex iotago.SlotIndex) { - if c.Index() < latestVerifiedCommitmentIndex { - eventFunc(c).Trigger() - } + // the amount of elements that listen to updates of the same chain threshold - it spreads monotonically). + triggerIfBelowThreshold := func(event func(*CommitmentMetadata) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { + event(parent).OnTrigger(func() { + chainThreshold(c.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { + event(c).Trigger() + }, func(_ iotago.SlotIndex, slotIndex iotago.SlotIndex) bool { + return c.Index() < slotIndex }) - - eventFunc(c).OnTrigger(func() { go unsubscribe() }) }) } From d6ca080eacf473ce015a33f9e9c543e8d28c34f3 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 26 Aug 2023 00:10:01 +0200 Subject: [PATCH 037/356] Feat: introduced candidate tiers --- pkg/protocol/chainmanagerv1/chain.go | 36 ++++++++++++++--- pkg/protocol/chainmanagerv1/chainmanager.go | 40 ++++++++++++------- .../chainmanagerv1/commitment_metadata.go | 6 +++ 3 files changed, 62 insertions(+), 20 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 3a582cc71..044d63c0c 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -14,6 +14,8 @@ type Chain struct { latestCommitmentIndex reactive.Variable[iotago.SlotIndex] + latestAttestedCommitmentIndex reactive.Variable[iotago.SlotIndex] + latestVerifiedCommitmentIndex reactive.Variable[iotago.SlotIndex] // syncThreshold defines an upper bound for the range of slots that are being fed to the engine as part of the sync @@ -26,6 +28,8 @@ type Chain struct { cumulativeWeight reactive.Variable[uint64] + attestedCumulativeWeight reactive.Variable[uint64] + verifiedCumulativeWeight reactive.Variable[uint64] evicted reactive.Event @@ -36,6 +40,7 @@ func NewChain(rootCommitment *CommitmentMetadata) *Chain { commitments: shrinkingmap.New[iotago.SlotIndex, *CommitmentMetadata](), root: reactive.NewVariable[*CommitmentMetadata]().Init(rootCommitment), latestCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), + latestAttestedCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), latestVerifiedCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), evicted: reactive.NewEvent(), } @@ -45,6 +50,7 @@ func NewChain(rootCommitment *CommitmentMetadata) *Chain { c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](ComputeSyncThreshold, c.latestVerifiedCommitmentIndex) c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](ComputeWarpSyncThreshold, c.latestCommitmentIndex) c.cumulativeWeight = reactive.NewDerivedVariable[uint64](c.computeCumulativeWeightOfSlot, c.latestCommitmentIndex) + c.attestedCumulativeWeight = reactive.NewDerivedVariable[uint64](c.computeCumulativeWeightOfSlot, c.latestAttestedCommitmentIndex) c.verifiedCumulativeWeight = reactive.NewDerivedVariable[uint64](c.computeCumulativeWeightOfSlot, c.latestVerifiedCommitmentIndex) return c @@ -94,6 +100,14 @@ func (c *Chain) CumulativeWeight() reactive.Variable[uint64] { return c.cumulativeWeight } +func (c *Chain) AttestedCumulativeWeight() reactive.Variable[uint64] { + return c.attestedCumulativeWeight +} + +func (c *Chain) VerifiedCumulativeWeight() reactive.Variable[uint64] { + return c.verifiedCumulativeWeight +} + func (c *Chain) registerCommitment(commitment *CommitmentMetadata) { c.commitments.Set(commitment.Index(), commitment) @@ -101,11 +115,19 @@ func (c *Chain) registerCommitment(commitment *CommitmentMetadata) { return lo.Cond(latestCommitmentIndex > commitment.Index(), latestCommitmentIndex, commitment.Index()) }) - unsubscribe := commitment.verified.OnTrigger(func() { - c.latestVerifiedCommitmentIndex.Compute(func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - return lo.Cond(latestVerifiedCommitmentIndex > commitment.Index(), latestVerifiedCommitmentIndex, commitment.Index()) - }) - }) + unsubscribe := lo.Batch( + commitment.attested.OnTrigger(func() { + c.latestAttestedCommitmentIndex.Compute(func(latestAttestedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + return lo.Cond(latestAttestedCommitmentIndex > commitment.Index(), latestAttestedCommitmentIndex, commitment.Index()) + }) + }), + + commitment.verified.OnTrigger(func() { + c.latestVerifiedCommitmentIndex.Compute(func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + return lo.Cond(latestVerifiedCommitmentIndex > commitment.Index(), latestVerifiedCommitmentIndex, commitment.Index()) + }) + }), + ) triggerIfSwitchedChains := func(_, newChain *Chain) bool { return newChain != c } @@ -123,6 +145,10 @@ func (c *Chain) unregisterCommitment(commitment *CommitmentMetadata) { return lo.Cond(commitment.Index() < latestCommitmentIndex, commitment.Index()-1, latestCommitmentIndex) }) + c.latestAttestedCommitmentIndex.Compute(func(latestAttestedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { + return lo.Cond(commitment.Index() < latestAttestedCommitmentIndex, commitment.Index()-1, latestAttestedCommitmentIndex) + }) + c.latestVerifiedCommitmentIndex.Compute(func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { return lo.Cond(commitment.Index() < latestVerifiedCommitmentIndex, commitment.Index()-1, latestVerifiedCommitmentIndex) }) diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 324da50d8..e2e9a9bdd 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -14,7 +14,11 @@ import ( type ChainManager struct { mainChain reactive.Variable[*Chain] - candidateChain reactive.Variable[*Chain] + heaviestCandidate reactive.Variable[*Chain] + + heaviestAttestedCandidate reactive.Variable[*Chain] + + heaviestVerifiedCandidate reactive.Variable[*Chain] commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]] @@ -29,16 +33,22 @@ type ChainManager struct { func NewChainManager(rootCommitment *model.Commitment) *ChainManager { c := &ChainManager{ - mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewRootCommitmentMetadata(rootCommitment))), - candidateChain: reactive.NewVariable[*Chain](), - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), - commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - commitmentCreated: event.New1[*CommitmentMetadata](), - chainCreated: event.New1[*Chain](), - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), + mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewRootCommitmentMetadata(rootCommitment))), + heaviestCandidate: reactive.NewVariable[*Chain](), + heaviestAttestedCandidate: reactive.NewVariable[*Chain](), + heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), + commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + commitmentCreated: event.New1[*CommitmentMetadata](), + chainCreated: event.New1[*Chain](), + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), } - c.OnChainCreated(c.setupChain) + c.OnChainCreated(func(chain *Chain) { + c.selectHeaviestChain(c.heaviestCandidate, (*Chain).CumulativeWeight, chain) + c.selectHeaviestChain(c.heaviestAttestedCandidate, (*Chain).AttestedCumulativeWeight, chain) + c.selectHeaviestChain(c.heaviestVerifiedCandidate, (*Chain).VerifiedCumulativeWeight, chain) + }) return c } @@ -66,7 +76,7 @@ func (c *ChainManager) MainChain() reactive.Variable[*Chain] { } func (c *ChainManager) CandidateChain() reactive.Variable[*Chain] { - return c.candidateChain + return c.heaviestCandidate } func (c *ChainManager) RootCommitment() reactive.Variable[*CommitmentMetadata] { @@ -77,14 +87,14 @@ func (c *ChainManager) RootCommitment() reactive.Variable[*CommitmentMetadata] { panic("root chain not initialized") } -func (c *ChainManager) setupChain(newCandidate *Chain) { - newCandidate.cumulativeWeight.OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight < c.MainChain().Get().CumulativeWeight().Get() { +func (c *ChainManager) selectHeaviestChain(variable reactive.Variable[*Chain], chainWeight func(*Chain) reactive.Variable[uint64], newCandidate *Chain) { + chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { + if newChainWeight < c.MainChain().Get().verifiedCumulativeWeight.Get() { return } - c.candidateChain.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > currentCandidate.CumulativeWeight().Get() { + variable.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { return newCandidate } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index b59ae4edd..9d10740f2 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -14,6 +14,7 @@ type CommitmentMetadata struct { parent reactive.Variable[*CommitmentMetadata] successor reactive.Variable[*CommitmentMetadata] solid reactive.Event + attested reactive.Event verified reactive.Event parentVerified reactive.Event belowSyncThreshold reactive.Event @@ -36,6 +37,7 @@ func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { parent: reactive.NewVariable[*CommitmentMetadata](), successor: reactive.NewVariable[*CommitmentMetadata](), solid: reactive.NewEvent(), + attested: reactive.NewEvent(), verified: reactive.NewEvent(), parentVerified: reactive.NewEvent(), belowSyncThreshold: reactive.NewEvent(), @@ -99,6 +101,10 @@ func (c *CommitmentMetadata) Solid() reactive.Event { return c.solid } +func (c *CommitmentMetadata) Attested() reactive.Event { + return c.attested +} + func (c *CommitmentMetadata) Verified() reactive.Event { return c.verified } From ae92d6004e46a72bf9d9976fb67962e846a8e765 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 26 Aug 2023 01:51:07 +0200 Subject: [PATCH 038/356] Feat: simplified code --- pkg/protocol/chainmanagerv1/chain.go | 41 +++++++-------------- pkg/protocol/chainmanagerv1/chainmanager.go | 2 +- 2 files changed, 15 insertions(+), 28 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 044d63c0c..c4d23c810 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -111,47 +111,34 @@ func (c *Chain) VerifiedCumulativeWeight() reactive.Variable[uint64] { func (c *Chain) registerCommitment(commitment *CommitmentMetadata) { c.commitments.Set(commitment.Index(), commitment) - c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - return lo.Cond(latestCommitmentIndex > commitment.Index(), latestCommitmentIndex, commitment.Index()) - }) + updateLatestIndex := func(latestIndex iotago.SlotIndex) iotago.SlotIndex { + return lo.Cond(latestIndex > commitment.Index(), latestIndex, commitment.Index()) + } + + c.latestCommitmentIndex.Compute(updateLatestIndex) unsubscribe := lo.Batch( - commitment.attested.OnTrigger(func() { - c.latestAttestedCommitmentIndex.Compute(func(latestAttestedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - return lo.Cond(latestAttestedCommitmentIndex > commitment.Index(), latestAttestedCommitmentIndex, commitment.Index()) - }) - }), - - commitment.verified.OnTrigger(func() { - c.latestVerifiedCommitmentIndex.Compute(func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - return lo.Cond(latestVerifiedCommitmentIndex > commitment.Index(), latestVerifiedCommitmentIndex, commitment.Index()) - }) - }), + commitment.attested.OnTrigger(func() { c.latestAttestedCommitmentIndex.Compute(updateLatestIndex) }), + commitment.verified.OnTrigger(func() { c.latestVerifiedCommitmentIndex.Compute(updateLatestIndex) }), ) - triggerIfSwitchedChains := func(_, newChain *Chain) bool { return newChain != c } - commitment.Chain().OnUpdateOnce(func(_, _ *Chain) { unsubscribe() c.unregisterCommitment(commitment) - }, triggerIfSwitchedChains) + }, func(_, newChain *Chain) bool { return newChain != c }) } func (c *Chain) unregisterCommitment(commitment *CommitmentMetadata) { c.commitments.Delete(commitment.Index()) - c.latestCommitmentIndex.Compute(func(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - return lo.Cond(commitment.Index() < latestCommitmentIndex, commitment.Index()-1, latestCommitmentIndex) - }) - - c.latestAttestedCommitmentIndex.Compute(func(latestAttestedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - return lo.Cond(commitment.Index() < latestAttestedCommitmentIndex, commitment.Index()-1, latestAttestedCommitmentIndex) - }) + updateLatestIndex := func(currentIndex iotago.SlotIndex) iotago.SlotIndex { + return lo.Cond(commitment.Index() < currentIndex, commitment.Index()-1, currentIndex) + } - c.latestVerifiedCommitmentIndex.Compute(func(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - return lo.Cond(commitment.Index() < latestVerifiedCommitmentIndex, commitment.Index()-1, latestVerifiedCommitmentIndex) - }) + c.latestCommitmentIndex.Compute(updateLatestIndex) + c.latestAttestedCommitmentIndex.Compute(updateLatestIndex) + c.latestVerifiedCommitmentIndex.Compute(updateLatestIndex) } func (c *Chain) computeCumulativeWeightOfSlot(slotIndex iotago.SlotIndex) uint64 { diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index e2e9a9bdd..d5221f4a2 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -89,7 +89,7 @@ func (c *ChainManager) RootCommitment() reactive.Variable[*CommitmentMetadata] { func (c *ChainManager) selectHeaviestChain(variable reactive.Variable[*Chain], chainWeight func(*Chain) reactive.Variable[uint64], newCandidate *Chain) { chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight < c.MainChain().Get().verifiedCumulativeWeight.Get() { + if newChainWeight <= c.MainChain().Get().verifiedCumulativeWeight.Get() { return } From 22378f33a71476fbdf3f0b8dadb197b0d349f06c Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 28 Aug 2023 01:19:52 +0200 Subject: [PATCH 039/356] Feat: started cleaning up --- pkg/protocol/chainmanagerv1/chain.go | 136 +++--------------- .../chainmanagerv1/chain_commitments.go | 136 ++++++++++++++++++ .../chainmanagerv1/chain_thresholds.go | 80 +++++++++++ pkg/protocol/chainmanagerv1/chain_weight.go | 73 ++++++++++ pkg/protocol/chainmanagerv1/chainmanager.go | 40 ++++-- .../chainmanagerv1/chainmanager_test.go | 18 ++- .../chainmanagerv1/commitment_metadata.go | 29 ++-- pkg/protocol/chainmanagerv1/constants.go | 14 -- 8 files changed, 368 insertions(+), 158 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/chain_commitments.go create mode 100644 pkg/protocol/chainmanagerv1/chain_thresholds.go create mode 100644 pkg/protocol/chainmanagerv1/chain_weight.go diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index c4d23c810..4ffad76c5 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -2,149 +2,51 @@ package chainmanagerv1 import ( "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/lo" - iotago "github.com/iotaledger/iota.go/v4" ) type Chain struct { root reactive.Variable[*CommitmentMetadata] - commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *CommitmentMetadata] + commitments *ChainCommitments - latestCommitmentIndex reactive.Variable[iotago.SlotIndex] + weight *ChainWeight - latestAttestedCommitmentIndex reactive.Variable[iotago.SlotIndex] - - latestVerifiedCommitmentIndex reactive.Variable[iotago.SlotIndex] - - // syncThreshold defines an upper bound for the range of slots that are being fed to the engine as part of the sync - // process (sync from past to present preventing the engine from running out of memory). - syncThreshold reactive.Variable[iotago.SlotIndex] - - // warpSyncThreshold defines a lower bound for where the warp sync process starts (to not requests slots that we are - // about to commit ourselves once we are in sync). - warpSyncThreshold reactive.Variable[iotago.SlotIndex] - - cumulativeWeight reactive.Variable[uint64] - - attestedCumulativeWeight reactive.Variable[uint64] - - verifiedCumulativeWeight reactive.Variable[uint64] + thresholds *ChainThresholds evicted reactive.Event } func NewChain(rootCommitment *CommitmentMetadata) *Chain { c := &Chain{ - commitments: shrinkingmap.New[iotago.SlotIndex, *CommitmentMetadata](), - root: reactive.NewVariable[*CommitmentMetadata]().Init(rootCommitment), - latestCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), - latestAttestedCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), - latestVerifiedCommitmentIndex: reactive.NewVariable[iotago.SlotIndex](), - evicted: reactive.NewEvent(), + root: reactive.NewVariable[*CommitmentMetadata]().Init(rootCommitment), + evicted: reactive.NewEvent(), } - rootCommitment.Chain().Set(c) + c.commitments = NewChainCommitments(c) + c.weight = NewChainWeight(c) + c.thresholds = NewChainThresholds(c) - c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](ComputeSyncThreshold, c.latestVerifiedCommitmentIndex) - c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](ComputeWarpSyncThreshold, c.latestCommitmentIndex) - c.cumulativeWeight = reactive.NewDerivedVariable[uint64](c.computeCumulativeWeightOfSlot, c.latestCommitmentIndex) - c.attestedCumulativeWeight = reactive.NewDerivedVariable[uint64](c.computeCumulativeWeightOfSlot, c.latestAttestedCommitmentIndex) - c.verifiedCumulativeWeight = reactive.NewDerivedVariable[uint64](c.computeCumulativeWeightOfSlot, c.latestVerifiedCommitmentIndex) + rootCommitment.Chain().Set(c) return c } -func (c *Chain) Root() reactive.Variable[*CommitmentMetadata] { - return c.root -} - -func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *CommitmentMetadata, exists bool) { - parentChain := func(c *Chain) *Chain { - if root := c.root.Get(); root != nil { - if parent := root.Parent().Get(); parent != nil { - return parent.Chain().Get() - } - } - - return nil - } - - for currentChain := c; currentChain != nil; currentChain = parentChain(currentChain) { - if root := currentChain.Root().Get(); root != nil && index >= root.Index() { - return currentChain.commitments.Get(index) - } - } - - return nil, false -} - -func (c *Chain) LatestCommitmentIndex() reactive.Variable[iotago.SlotIndex] { - return c.latestCommitmentIndex -} - -func (c *Chain) LatestVerifiedCommitmentIndex() reactive.Variable[iotago.SlotIndex] { - return c.latestVerifiedCommitmentIndex +func (c *Chain) Root() *CommitmentMetadata { + return c.root.Get() } -func (c *Chain) SyncThreshold() reactive.Variable[iotago.SlotIndex] { - return c.syncThreshold +func (c *Chain) Weight() *ChainWeight { + return c.weight } -func (c *Chain) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { - return c.warpSyncThreshold +func (c *Chain) Commitments() *ChainCommitments { + return c.commitments } -func (c *Chain) CumulativeWeight() reactive.Variable[uint64] { - return c.cumulativeWeight +func (c *Chain) Thresholds() *ChainThresholds { + return c.thresholds } -func (c *Chain) AttestedCumulativeWeight() reactive.Variable[uint64] { - return c.attestedCumulativeWeight -} - -func (c *Chain) VerifiedCumulativeWeight() reactive.Variable[uint64] { - return c.verifiedCumulativeWeight -} - -func (c *Chain) registerCommitment(commitment *CommitmentMetadata) { - c.commitments.Set(commitment.Index(), commitment) - - updateLatestIndex := func(latestIndex iotago.SlotIndex) iotago.SlotIndex { - return lo.Cond(latestIndex > commitment.Index(), latestIndex, commitment.Index()) - } - - c.latestCommitmentIndex.Compute(updateLatestIndex) - - unsubscribe := lo.Batch( - commitment.attested.OnTrigger(func() { c.latestAttestedCommitmentIndex.Compute(updateLatestIndex) }), - commitment.verified.OnTrigger(func() { c.latestVerifiedCommitmentIndex.Compute(updateLatestIndex) }), - ) - - commitment.Chain().OnUpdateOnce(func(_, _ *Chain) { - unsubscribe() - - c.unregisterCommitment(commitment) - }, func(_, newChain *Chain) bool { return newChain != c }) -} - -func (c *Chain) unregisterCommitment(commitment *CommitmentMetadata) { - c.commitments.Delete(commitment.Index()) - - updateLatestIndex := func(currentIndex iotago.SlotIndex) iotago.SlotIndex { - return lo.Cond(commitment.Index() < currentIndex, commitment.Index()-1, currentIndex) - } - - c.latestCommitmentIndex.Compute(updateLatestIndex) - c.latestAttestedCommitmentIndex.Compute(updateLatestIndex) - c.latestVerifiedCommitmentIndex.Compute(updateLatestIndex) -} - -func (c *Chain) computeCumulativeWeightOfSlot(slotIndex iotago.SlotIndex) uint64 { - if commitment, exists := c.commitments.Get(slotIndex); exists { - return commitment.CumulativeWeight() - } - - return 0 +func (c *Chain) ReactiveRoot() reactive.Variable[*CommitmentMetadata] { + return c.root } diff --git a/pkg/protocol/chainmanagerv1/chain_commitments.go b/pkg/protocol/chainmanagerv1/chain_commitments.go new file mode 100644 index 000000000..3b8d20f60 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/chain_commitments.go @@ -0,0 +1,136 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/lo" + iotago "github.com/iotaledger/iota.go/v4" +) + +// ChainCommitments is a reactive collection of CommitmentMetadata objects that belong to the same chain. +type ChainCommitments struct { + // chain is the chain that this collection belongs to. + chain *Chain + + // commitments is a map of CommitmentMetadata objects that belong to the same chain. + commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *CommitmentMetadata] + + // latest is the latest CommitmentMetadata object in this collection. + latest reactive.Variable[*CommitmentMetadata] + + // latestAttested is the latest attested CommitmentMetadata object in this collection. + latestAttested reactive.Variable[*CommitmentMetadata] + + // latestVerified is the latest verified CommitmentMetadata object in this collection. + latestVerified reactive.Variable[*CommitmentMetadata] +} + +// NewChainCommitments creates a new ChainCommitments instance. +func NewChainCommitments(chain *Chain) *ChainCommitments { + return &ChainCommitments{ + chain: chain, + commitments: shrinkingmap.New[iotago.SlotIndex, *CommitmentMetadata](), + latest: reactive.NewVariable[*CommitmentMetadata](), + latestAttested: reactive.NewVariable[*CommitmentMetadata](), + latestVerified: reactive.NewVariable[*CommitmentMetadata](), + } +} + +// Chain returns the chain that this collection belongs to. +func (c *ChainCommitments) Chain() *Chain { + return c.chain +} + +// Register adds a CommitmentMetadata object to this collection. +func (c *ChainCommitments) Register(commitment *CommitmentMetadata) { + unsubscribe := c.register(commitment) + + commitment.Chain().OnUpdateOnce(func(_, _ *Chain) { + unsubscribe() + + c.unregister(commitment) + }, func(_, newChain *Chain) bool { return newChain != c.chain }) +} + +// Get returns the CommitmentMetadata object with the given index, if it exists. +func (c *ChainCommitments) Get(index iotago.SlotIndex) (commitment *CommitmentMetadata, exists bool) { + parentChain := func(c *Chain) *Chain { + if root := c.root.Get(); root != nil { + if parent := root.Parent(); parent != nil { + return parent.Chain().Get() + } + } + + return nil + } + + for currentChain := c.chain; currentChain != nil; currentChain = parentChain(currentChain) { + if root := currentChain.ReactiveRoot().Get(); root != nil && index >= root.Index() { + return currentChain.commitments.Get(index) + } + } + + return nil, false +} + +// Latest returns the latest CommitmentMetadata object in this collection. +func (c *ChainCommitments) Latest() *CommitmentMetadata { + return c.latest.Get() +} + +// LatestAttested returns the latest attested CommitmentMetadata object in this collection. +func (c *ChainCommitments) LatestAttested() *CommitmentMetadata { + return c.latestAttested.Get() +} + +// LatestVerified returns the latest verified CommitmentMetadata object in this collection. +func (c *ChainCommitments) LatestVerified() *CommitmentMetadata { + return c.latestVerified.Get() +} + +// ReactiveLatest returns a reactive variable that always contains the latest CommitmentMetadata object in this +// collection. +func (c *ChainCommitments) ReactiveLatest() reactive.Variable[*CommitmentMetadata] { + return c.latest +} + +// ReactiveLatestVerified returns a reactive variable that always contains the latest verified CommitmentMetadata object +// in this collection. +func (c *ChainCommitments) ReactiveLatestVerified() reactive.Variable[*CommitmentMetadata] { + return c.latestVerified +} + +// ReactiveLatestAttested returns a reactive variable that always contains the latest attested CommitmentMetadata object +// in this collection. +func (c *ChainCommitments) ReactiveLatestAttested() reactive.Variable[*CommitmentMetadata] { + return c.latestAttested +} + +// register adds a CommitmentMetadata object to this collection. +func (c *ChainCommitments) register(commitment *CommitmentMetadata) (unsubscribe func()) { + c.commitments.Set(commitment.Index(), commitment) + + c.latest.Compute(commitment.Max) + + return lo.Batch( + commitment.attested.OnTrigger(func() { c.latestAttested.Compute(commitment.Max) }), + commitment.verified.OnTrigger(func() { c.latestVerified.Compute(commitment.Max) }), + ) +} + +// unregister removes a CommitmentMetadata object from this collection. +func (c *ChainCommitments) unregister(commitment *CommitmentMetadata) { + c.commitments.Delete(commitment.Index()) + + resetToParent := func(latestCommitment *CommitmentMetadata) *CommitmentMetadata { + if commitment.Index() > latestCommitment.Index() { + return latestCommitment + } + + return commitment.Parent() + } + + c.latest.Compute(resetToParent) + c.latestAttested.Compute(resetToParent) + c.latestVerified.Compute(resetToParent) +} diff --git a/pkg/protocol/chainmanagerv1/chain_thresholds.go b/pkg/protocol/chainmanagerv1/chain_thresholds.go new file mode 100644 index 000000000..eadb90d3a --- /dev/null +++ b/pkg/protocol/chainmanagerv1/chain_thresholds.go @@ -0,0 +1,80 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + iotago "github.com/iotaledger/iota.go/v4" +) + +type ChainThresholds struct { + latestIndex reactive.Variable[iotago.SlotIndex] + + latestAttestedIndex reactive.Variable[iotago.SlotIndex] + + latestVerifiedIndex reactive.Variable[iotago.SlotIndex] + + // syncThreshold defines an upper bound for the range of slots that are being fed to the engine as part of the sync + // process (sync from past to present preventing the engine from running out of memory). + syncThreshold reactive.Variable[iotago.SlotIndex] + + // warpSyncThreshold defines a lower bound for where the warp sync process starts (to not requests slots that we are + // about to commit ourselves once we are in sync). + warpSyncThreshold reactive.Variable[iotago.SlotIndex] +} + +func NewChainThresholds(chain *Chain) *ChainThresholds { + c := &ChainThresholds{ + latestIndex: reactive.NewDerivedVariable[iotago.SlotIndex](ignoreNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatest()), + latestAttestedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](ignoreNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatestAttested()), + latestVerifiedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](ignoreNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatestVerified()), + } + + c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestIndex iotago.SlotIndex) iotago.SlotIndex { + return latestIndex - WarpSyncOffset + }, c.latestIndex) + + c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedIndex iotago.SlotIndex) iotago.SlotIndex { + return latestVerifiedIndex + 1 + SyncWindow + }, c.latestVerifiedIndex) + + return c +} + +func (c *ChainThresholds) LatestIndex() iotago.SlotIndex { + return c.latestIndex.Get() +} + +func (c *ChainThresholds) LatestAttestedIndex() iotago.SlotIndex { + return c.latestAttestedIndex.Get() +} + +func (c *ChainThresholds) LatestVerifiedIndex() iotago.SlotIndex { + return c.latestVerifiedIndex.Get() +} + +func (c *ChainThresholds) SyncThreshold() iotago.SlotIndex { + return c.syncThreshold.Get() +} + +func (c *ChainThresholds) WarpSyncThreshold() iotago.SlotIndex { + return c.warpSyncThreshold.Get() +} + +func (c *ChainThresholds) ReactiveLatestIndex() reactive.Variable[iotago.SlotIndex] { + return c.latestIndex +} + +func (c *ChainThresholds) ReactiveLatestAttestedIndex() reactive.Variable[iotago.SlotIndex] { + return c.latestAttestedIndex +} + +func (c *ChainThresholds) ReactiveLatestVerifiedIndex() reactive.Variable[iotago.SlotIndex] { + return c.latestVerifiedIndex +} + +func (c *ChainThresholds) ReactiveSyncThreshold() reactive.Variable[iotago.SlotIndex] { + return c.syncThreshold +} + +func (c *ChainThresholds) ReactiveWarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { + return c.warpSyncThreshold +} diff --git a/pkg/protocol/chainmanagerv1/chain_weight.go b/pkg/protocol/chainmanagerv1/chain_weight.go new file mode 100644 index 000000000..62b006a1b --- /dev/null +++ b/pkg/protocol/chainmanagerv1/chain_weight.go @@ -0,0 +1,73 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" +) + +// ChainWeight is a reactive subcomponent of a Chain that tracks the cumulative weight of the chain. +type ChainWeight struct { + // chain is the chain that this ChainWeight is tracking the cumulative weight of. + chain *Chain + + // claimed contains the total cumulative weight of the chain that is claimed by the latest commitments. + claimed reactive.Variable[uint64] + + // attested contains the total cumulative weight of the chain that we received attestations for. + attested reactive.Variable[uint64] + + // verified contains the total cumulative weight of the chain that we verified ourselves. + verified reactive.Variable[uint64] +} + +// NewChainWeight creates a new ChainWeight for the given chain. +func NewChainWeight(chain *Chain) *ChainWeight { + return &ChainWeight{ + chain: chain, + claimed: reactive.NewDerivedVariable[uint64](ignoreNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatest()), + attested: reactive.NewDerivedVariable[uint64](ignoreNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatestAttested()), + verified: reactive.NewDerivedVariable[uint64](ignoreNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatestVerified()), + } +} + +// Claimed returns the total cumulative weight of the chain that is claimed by the latest commitments. +func (c *ChainWeight) Claimed() uint64 { + return c.claimed.Get() +} + +// Attested returns the total cumulative weight of the chain that we received attestations for. +func (c *ChainWeight) Attested() uint64 { + return c.attested.Get() +} + +// Verified returns the total cumulative weight of the chain that we verified ourselves. +func (c *ChainWeight) Verified() uint64 { + return c.verified.Get() +} + +// ReactiveClaimed returns a reactive variable that tracks the total cumulative weight of the chain that is claimed by +// the latest commitments. +func (c *ChainWeight) ReactiveClaimed() reactive.Variable[uint64] { + return c.claimed +} + +// ReactiveAttested returns a reactive variable that tracks the total cumulative weight of the chain that we received +// attestations for. +func (c *ChainWeight) ReactiveAttested() reactive.Variable[uint64] { + return c.attested +} + +// ReactiveVerified returns a reactive variable that tracks the total cumulative weight of the chain that we verified +// ourselves. +func (c *ChainWeight) ReactiveVerified() reactive.Variable[uint64] { + return c.verified +} + +func ignoreNil[A, B any](getter func(*A) B) func(*A) B { + return func(a *A) (b B) { + if a == nil { + return b + } + + return getter(a) + } +} diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index d5221f4a2..c98298fef 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -14,7 +14,7 @@ import ( type ChainManager struct { mainChain reactive.Variable[*Chain] - heaviestCandidate reactive.Variable[*Chain] + heaviestClaimedCandidate reactive.Variable[*Chain] heaviestAttestedCandidate reactive.Variable[*Chain] @@ -34,7 +34,7 @@ type ChainManager struct { func NewChainManager(rootCommitment *model.Commitment) *ChainManager { c := &ChainManager{ mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewRootCommitmentMetadata(rootCommitment))), - heaviestCandidate: reactive.NewVariable[*Chain](), + heaviestClaimedCandidate: reactive.NewVariable[*Chain](), heaviestAttestedCandidate: reactive.NewVariable[*Chain](), heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), @@ -45,9 +45,9 @@ func NewChainManager(rootCommitment *model.Commitment) *ChainManager { } c.OnChainCreated(func(chain *Chain) { - c.selectHeaviestChain(c.heaviestCandidate, (*Chain).CumulativeWeight, chain) - c.selectHeaviestChain(c.heaviestAttestedCandidate, (*Chain).AttestedCumulativeWeight, chain) - c.selectHeaviestChain(c.heaviestVerifiedCandidate, (*Chain).VerifiedCumulativeWeight, chain) + c.selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*ChainWeight).ReactiveClaimed) + c.selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*ChainWeight).ReactiveAttested) + c.selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*ChainWeight).ReactiveVerified) }) return c @@ -71,30 +71,42 @@ func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe return c.chainCreated.Hook(callback).Unhook } -func (c *ChainManager) MainChain() reactive.Variable[*Chain] { +func (c *ChainManager) MainChain() *Chain { + return c.mainChain.Get() +} + +func (c *ChainManager) MainChainVar() reactive.Variable[*Chain] { return c.mainChain } -func (c *ChainManager) CandidateChain() reactive.Variable[*Chain] { - return c.heaviestCandidate +func (c *ChainManager) HeaviestCandidateChain() reactive.Variable[*Chain] { + return c.heaviestClaimedCandidate +} + +func (c *ChainManager) HeaviestAttestedCandidateChain() reactive.Variable[*Chain] { + return c.heaviestAttestedCandidate +} + +func (c *ChainManager) HeaviestVerifiedCandidateChain() reactive.Variable[*Chain] { + return c.heaviestVerifiedCandidate } func (c *ChainManager) RootCommitment() reactive.Variable[*CommitmentMetadata] { if chain := c.mainChain.Get(); chain != nil { - return chain.Root() + return chain.ReactiveRoot() } panic("root chain not initialized") } -func (c *ChainManager) selectHeaviestChain(variable reactive.Variable[*Chain], chainWeight func(*Chain) reactive.Variable[uint64], newCandidate *Chain) { - chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= c.MainChain().Get().verifiedCumulativeWeight.Get() { +func (c *ChainManager) selectHeaviestCandidate(variable reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*ChainWeight) reactive.Variable[uint64]) { + chainWeight(newCandidate.Weight()).OnUpdate(func(_, newChainWeight uint64) { + if newChainWeight <= c.MainChain().Weight().Verified() { return } variable.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { + if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate.Weight()).Get() { return newCandidate } @@ -104,7 +116,7 @@ func (c *ChainManager) selectHeaviestChain(variable reactive.Variable[*Chain], c } func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { - c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, lo.Void(commitment.Parent().Set)) + c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, lo.Void(commitment.ReactiveParent().Set)) slotEvictedEvent.OnTrigger(func() { commitment.Evicted().Trigger() diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index b375c9196..90d270499 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -17,8 +17,16 @@ func TestChainManager(t *testing.T) { rootCommitment := model.NewEmptyCommitment(testAPI) chainManager := NewChainManager(rootCommitment) - chainManager.CandidateChain().OnUpdate(func(oldValue, newValue *Chain) { - fmt.Println("CandidateChain", oldValue, newValue) + chainManager.HeaviestCandidateChain().OnUpdate(func(oldValue, newValue *Chain) { + fmt.Println("HeaviestCandidateChain", oldValue, newValue) + }) + + chainManager.HeaviestAttestedCandidateChain().OnUpdate(func(oldValue, newValue *Chain) { + fmt.Println("HeaviestAttestedCandidateChain", oldValue, newValue) + }) + + chainManager.HeaviestVerifiedCandidateChain().OnUpdate(func(oldValue, newValue *Chain) { + fmt.Println("HeaviestVerifiedCandidateChain", oldValue, newValue) }) commitment1 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), @@ -68,9 +76,11 @@ func TestChainManager(t *testing.T) { commitment2Metadata.Verified().Trigger() require.True(t, commitment3Metadata.AboveLatestVerifiedCommitment().Get()) require.True(t, commitment3Metadata.BelowSyncThreshold().Get()) - require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().latestCommitmentIndex.Get()) - require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().cumulativeWeight.Get()) + require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().Commitments().Latest().Index()) + require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().Weight().Claimed()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) + commitment3aMetadata.Attested().Trigger() + commitment3aMetadata.Verified().Trigger() fmt.Println(commitment3aMetadata.Chain().Get()) } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index 9d10740f2..edfe85b3d 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -48,9 +48,7 @@ func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { spawnedChain: reactive.NewVariable[*Chain](), } - c.chain.OnUpdate(func(_, chain *Chain) { - chain.registerCommitment(c) - }) + c.chain.OnUpdate(func(_, chain *Chain) { chain.Commitments().Register(c) }) c.parent.OnUpdate(func(_, parent *CommitmentMetadata) { parent.registerChild(c, c.inheritChain(parent)) @@ -93,7 +91,11 @@ func (c *CommitmentMetadata) Chain() reactive.Variable[*Chain] { return c.chain } -func (c *CommitmentMetadata) Parent() reactive.Variable[*CommitmentMetadata] { +func (c *CommitmentMetadata) Parent() *CommitmentMetadata { + return c.parent.Get() +} + +func (c *CommitmentMetadata) ReactiveParent() reactive.Variable[*CommitmentMetadata] { return c.parent } @@ -149,6 +151,15 @@ func (c *CommitmentMetadata) ChainSuccessor() reactive.Variable[*CommitmentMetad return c.successor } +// Max compares the given commitment with the current one and returns the one with the higher index. +func (c *CommitmentMetadata) Max(latestCommitment *CommitmentMetadata) *CommitmentMetadata { + if c == nil || latestCommitment != nil && latestCommitment.Index() >= c.Index() { + return latestCommitment + } + + return c +} + func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { c.solid.InheritFrom(parent.solid) c.parentVerified.InheritFrom(parent.verified) @@ -157,9 +168,9 @@ func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { // triggerIfBelowThreshold triggers the given event if the commitment's index is below the given // threshold. We only monitor the threshold after the corresponding parent event was triggered (to minimize // the amount of elements that listen to updates of the same chain threshold - it spreads monotonically). - triggerIfBelowThreshold := func(event func(*CommitmentMetadata) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { + triggerIfBelowThreshold := func(event func(*CommitmentMetadata) reactive.Event, chainThreshold func(*ChainThresholds) reactive.Variable[iotago.SlotIndex]) { event(parent).OnTrigger(func() { - chainThreshold(c.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { + chainThreshold(c.chain.Get().Thresholds()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { event(c).Trigger() }, func(_ iotago.SlotIndex, slotIndex iotago.SlotIndex) bool { return c.Index() < slotIndex @@ -167,9 +178,9 @@ func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { }) } - triggerIfBelowThreshold((*CommitmentMetadata).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedCommitmentIndex) - triggerIfBelowThreshold((*CommitmentMetadata).BelowSyncThreshold, (*Chain).SyncThreshold) - triggerIfBelowThreshold((*CommitmentMetadata).BelowWarpSyncThreshold, (*Chain).WarpSyncThreshold) + triggerIfBelowThreshold((*CommitmentMetadata).BelowLatestVerifiedCommitment, (*ChainThresholds).ReactiveLatestVerifiedIndex) + triggerIfBelowThreshold((*CommitmentMetadata).BelowSyncThreshold, (*ChainThresholds).ReactiveSyncThreshold) + triggerIfBelowThreshold((*CommitmentMetadata).BelowWarpSyncThreshold, (*ChainThresholds).ReactiveWarpSyncThreshold) } func (c *CommitmentMetadata) registerChild(newChild *CommitmentMetadata, onSuccessorUpdated func(*CommitmentMetadata, *CommitmentMetadata)) { diff --git a/pkg/protocol/chainmanagerv1/constants.go b/pkg/protocol/chainmanagerv1/constants.go index 869c9b1a1..b7af841e8 100644 --- a/pkg/protocol/chainmanagerv1/constants.go +++ b/pkg/protocol/chainmanagerv1/constants.go @@ -1,7 +1,5 @@ package chainmanagerv1 -import iotago "github.com/iotaledger/iota.go/v4" - const ( // SyncWindow defines the maximum amount of slots that a node requests on top of its latest verified commitment. SyncWindow = 20 @@ -10,15 +8,3 @@ const ( // the warp sync process. WarpSyncOffset = 1 ) - -func ComputeWarpSyncThreshold(latestCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - if WarpSyncOffset > latestCommitmentIndex { - return 0 - } - - return latestCommitmentIndex - WarpSyncOffset -} - -func ComputeSyncThreshold(latestVerifiedCommitmentIndex iotago.SlotIndex) iotago.SlotIndex { - return latestVerifiedCommitmentIndex + 1 + SyncWindow -} From 983f45dfcccf25a2deb2e18f58542df99d7c4400 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 28 Aug 2023 03:26:12 +0200 Subject: [PATCH 040/356] Feat: cleaned up more chain related stuff --- pkg/protocol/chainmanagerv1/chain.go | 16 ++++- .../chainmanagerv1/chain_commitments.go | 16 +---- .../chainmanagerv1/chain_thresholds.go | 43 ++++++++++--- pkg/protocol/chainmanagerv1/chain_weight.go | 16 +---- .../chainmanagerv1/chainmanager_test.go | 6 +- .../chainmanagerv1/commitment_metadata.go | 62 ++++++++++++------- pkg/protocol/chainmanagerv1/utils.go | 13 ++++ 7 files changed, 111 insertions(+), 61 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/utils.go diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 4ffad76c5..7737980d4 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -26,7 +26,7 @@ func NewChain(rootCommitment *CommitmentMetadata) *Chain { c.weight = NewChainWeight(c) c.thresholds = NewChainThresholds(c) - rootCommitment.Chain().Set(c) + rootCommitment.SetChain(c) return c } @@ -35,6 +35,20 @@ func (c *Chain) Root() *CommitmentMetadata { return c.root.Get() } +func (c *Chain) ParentChain() *Chain { + root := c.Root() + if root == nil { + return nil + } + + parent := root.Parent() + if parent == nil { + return nil + } + + return parent.Chain() +} + func (c *Chain) Weight() *ChainWeight { return c.weight } diff --git a/pkg/protocol/chainmanagerv1/chain_commitments.go b/pkg/protocol/chainmanagerv1/chain_commitments.go index 3b8d20f60..a18f6f50b 100644 --- a/pkg/protocol/chainmanagerv1/chain_commitments.go +++ b/pkg/protocol/chainmanagerv1/chain_commitments.go @@ -45,7 +45,7 @@ func (c *ChainCommitments) Chain() *Chain { func (c *ChainCommitments) Register(commitment *CommitmentMetadata) { unsubscribe := c.register(commitment) - commitment.Chain().OnUpdateOnce(func(_, _ *Chain) { + commitment.ReactiveChain().OnUpdateOnce(func(_, _ *Chain) { unsubscribe() c.unregister(commitment) @@ -54,18 +54,8 @@ func (c *ChainCommitments) Register(commitment *CommitmentMetadata) { // Get returns the CommitmentMetadata object with the given index, if it exists. func (c *ChainCommitments) Get(index iotago.SlotIndex) (commitment *CommitmentMetadata, exists bool) { - parentChain := func(c *Chain) *Chain { - if root := c.root.Get(); root != nil { - if parent := root.Parent(); parent != nil { - return parent.Chain().Get() - } - } - - return nil - } - - for currentChain := c.chain; currentChain != nil; currentChain = parentChain(currentChain) { - if root := currentChain.ReactiveRoot().Get(); root != nil && index >= root.Index() { + for currentChain := c.chain; currentChain != nil; currentChain = currentChain.ParentChain() { + if root := currentChain.Root(); root != nil && index >= root.Index() { return currentChain.commitments.Get(index) } } diff --git a/pkg/protocol/chainmanagerv1/chain_thresholds.go b/pkg/protocol/chainmanagerv1/chain_thresholds.go index eadb90d3a..01143c23b 100644 --- a/pkg/protocol/chainmanagerv1/chain_thresholds.go +++ b/pkg/protocol/chainmanagerv1/chain_thresholds.go @@ -5,27 +5,35 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) +// ChainThresholds is a reactive component that provides a set of thresholds that are derived from the chain. type ChainThresholds struct { + // chain is the chain that this component belongs to. + chain *Chain + + // latestIndex is the index of the latest CommitmentMetadata object in the chain. latestIndex reactive.Variable[iotago.SlotIndex] + // latestAttestedIndex is the index of the latest attested CommitmentMetadata object in the chain. latestAttestedIndex reactive.Variable[iotago.SlotIndex] + // latestVerifiedIndex is the index of the latest verified CommitmentMetadata object in the chain. latestVerifiedIndex reactive.Variable[iotago.SlotIndex] - // syncThreshold defines an upper bound for the range of slots that are being fed to the engine as part of the sync - // process (sync from past to present preventing the engine from running out of memory). + // syncThreshold is the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). syncThreshold reactive.Variable[iotago.SlotIndex] - // warpSyncThreshold defines a lower bound for where the warp sync process starts (to not requests slots that we are - // about to commit ourselves once we are in sync). + // warpSyncThreshold defines an offset from latest index where the warp sync process starts (we don't request slots + // that we are about to commit ourselves). warpSyncThreshold reactive.Variable[iotago.SlotIndex] } +// NewChainThresholds creates a new ChainThresholds instance. func NewChainThresholds(chain *Chain) *ChainThresholds { c := &ChainThresholds{ - latestIndex: reactive.NewDerivedVariable[iotago.SlotIndex](ignoreNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatest()), - latestAttestedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](ignoreNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatestAttested()), - latestVerifiedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](ignoreNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatestVerified()), + chain: chain, + latestIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatest()), + latestAttestedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatestAttested()), + latestVerifiedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatestVerified()), } c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestIndex iotago.SlotIndex) iotago.SlotIndex { @@ -39,42 +47,63 @@ func NewChainThresholds(chain *Chain) *ChainThresholds { return c } +// Chain returns the chain that this component belongs to. +func (c *ChainThresholds) Chain() *Chain { + return c.chain +} + +// LatestIndex returns the index of the latest CommitmentMetadata object in the chain. func (c *ChainThresholds) LatestIndex() iotago.SlotIndex { return c.latestIndex.Get() } +// LatestAttestedIndex returns the index of the latest attested CommitmentMetadata object in the chain. func (c *ChainThresholds) LatestAttestedIndex() iotago.SlotIndex { return c.latestAttestedIndex.Get() } +// LatestVerifiedIndex returns the index of the latest verified CommitmentMetadata object in the chain. func (c *ChainThresholds) LatestVerifiedIndex() iotago.SlotIndex { return c.latestVerifiedIndex.Get() } +// SyncThreshold returns the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). func (c *ChainThresholds) SyncThreshold() iotago.SlotIndex { return c.syncThreshold.Get() } +// WarpSyncThreshold returns an offset from latest index where the warp sync process starts (we don't request slots that +// we are about to commit ourselves). func (c *ChainThresholds) WarpSyncThreshold() iotago.SlotIndex { return c.warpSyncThreshold.Get() } +// ReactiveLatestIndex returns a reactive variable that always contains the index of the latest CommitmentMetadata +// object in the chain. func (c *ChainThresholds) ReactiveLatestIndex() reactive.Variable[iotago.SlotIndex] { return c.latestIndex } +// ReactiveLatestAttestedIndex returns a reactive variable that contains the index of the latest attested +// CommitmentMetadata object in the chain. func (c *ChainThresholds) ReactiveLatestAttestedIndex() reactive.Variable[iotago.SlotIndex] { return c.latestAttestedIndex } +// ReactiveLatestVerifiedIndex returns a reactive variable that contains the index of the latest verified +// CommitmentMetadata object in the chain. func (c *ChainThresholds) ReactiveLatestVerifiedIndex() reactive.Variable[iotago.SlotIndex] { return c.latestVerifiedIndex } +// ReactiveSyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the +// engine (to prevent memory exhaustion). func (c *ChainThresholds) ReactiveSyncThreshold() reactive.Variable[iotago.SlotIndex] { return c.syncThreshold } +// ReactiveWarpSyncThreshold returns a reactive variable that contains an offset from latest index where the warp sync +// process starts (we don't request slots that we are about to commit ourselves). func (c *ChainThresholds) ReactiveWarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { return c.warpSyncThreshold } diff --git a/pkg/protocol/chainmanagerv1/chain_weight.go b/pkg/protocol/chainmanagerv1/chain_weight.go index 62b006a1b..8b238144b 100644 --- a/pkg/protocol/chainmanagerv1/chain_weight.go +++ b/pkg/protocol/chainmanagerv1/chain_weight.go @@ -23,9 +23,9 @@ type ChainWeight struct { func NewChainWeight(chain *Chain) *ChainWeight { return &ChainWeight{ chain: chain, - claimed: reactive.NewDerivedVariable[uint64](ignoreNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatest()), - attested: reactive.NewDerivedVariable[uint64](ignoreNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatestAttested()), - verified: reactive.NewDerivedVariable[uint64](ignoreNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatestVerified()), + claimed: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatest()), + attested: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatestAttested()), + verified: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatestVerified()), } } @@ -61,13 +61,3 @@ func (c *ChainWeight) ReactiveAttested() reactive.Variable[uint64] { func (c *ChainWeight) ReactiveVerified() reactive.Variable[uint64] { return c.verified } - -func ignoreNil[A, B any](getter func(*A) B) func(*A) B { - return func(a *A) (b B) { - if a == nil { - return b - } - - return getter(a) - } -} diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 90d270499..72701ab45 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -76,11 +76,11 @@ func TestChainManager(t *testing.T) { commitment2Metadata.Verified().Trigger() require.True(t, commitment3Metadata.AboveLatestVerifiedCommitment().Get()) require.True(t, commitment3Metadata.BelowSyncThreshold().Get()) - require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().Commitments().Latest().Index()) - require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().Weight().Claimed()) + require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Thresholds().LatestIndex()) + require.Equal(t, uint64(3), commitment3Metadata.Chain().Weight().Claimed()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) commitment3aMetadata.Attested().Trigger() commitment3aMetadata.Verified().Trigger() - fmt.Println(commitment3aMetadata.Chain().Get()) + fmt.Println(commitment3aMetadata.ReactiveChain().Get()) } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment_metadata.go index edfe85b3d..53d694bfd 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment_metadata.go @@ -10,42 +10,47 @@ import ( type CommitmentMetadata struct { *model.Commitment - chain reactive.Variable[*Chain] - parent reactive.Variable[*CommitmentMetadata] - successor reactive.Variable[*CommitmentMetadata] - solid reactive.Event - attested reactive.Event - verified reactive.Event - parentVerified reactive.Event - belowSyncThreshold reactive.Event - belowWarpSyncThreshold reactive.Event - belowLatestVerifiedCommitment reactive.Event - evicted reactive.Event - parentAboveLatestVerifiedCommitment reactive.Variable[bool] + chain reactive.Variable[*Chain] + parent reactive.Variable[*CommitmentMetadata] + successor reactive.Variable[*CommitmentMetadata] + spawnedChain reactive.Variable[*Chain] + + solid reactive.Event + attested reactive.Event + verified reactive.Event + parentVerified reactive.Event + evicted reactive.Event + directlyAboveLatestVerifiedCommitment reactive.Variable[bool] + parentAboveLatestVerifiedCommitment reactive.Variable[bool] aboveLatestVerifiedCommitment reactive.Variable[bool] - inSyncWindow reactive.Variable[bool] - requiresWarpSync reactive.Variable[bool] - spawnedChain reactive.Variable[*Chain] + + belowSyncThreshold reactive.Event + belowWarpSyncThreshold reactive.Event + belowLatestVerifiedCommitment reactive.Event + inSyncWindow reactive.Variable[bool] + requiresWarpSync reactive.Variable[bool] } func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { c := &CommitmentMetadata{ Commitment: commitment, - chain: reactive.NewVariable[*Chain](), - parent: reactive.NewVariable[*CommitmentMetadata](), - successor: reactive.NewVariable[*CommitmentMetadata](), - solid: reactive.NewEvent(), - attested: reactive.NewEvent(), - verified: reactive.NewEvent(), + chain: reactive.NewVariable[*Chain](), + parent: reactive.NewVariable[*CommitmentMetadata](), + successor: reactive.NewVariable[*CommitmentMetadata](), + spawnedChain: reactive.NewVariable[*Chain](), + + solid: reactive.NewEvent(), + attested: reactive.NewEvent(), + verified: reactive.NewEvent(), + parentVerified: reactive.NewEvent(), belowSyncThreshold: reactive.NewEvent(), belowWarpSyncThreshold: reactive.NewEvent(), belowLatestVerifiedCommitment: reactive.NewEvent(), evicted: reactive.NewEvent(), parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - spawnedChain: reactive.NewVariable[*Chain](), } c.chain.OnUpdate(func(_, chain *Chain) { chain.Commitments().Register(c) }) @@ -87,14 +92,23 @@ func NewRootCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata return commitmentMetadata } -func (c *CommitmentMetadata) Chain() reactive.Variable[*Chain] { - return c.chain +func (c *CommitmentMetadata) Chain() *Chain { + return c.chain.Get() + +} + +func (c *CommitmentMetadata) SetChain(chain *Chain) { + c.chain.Set(chain) } func (c *CommitmentMetadata) Parent() *CommitmentMetadata { return c.parent.Get() } +func (c *CommitmentMetadata) ReactiveChain() reactive.Variable[*Chain] { + return c.chain +} + func (c *CommitmentMetadata) ReactiveParent() reactive.Variable[*CommitmentMetadata] { return c.parent } diff --git a/pkg/protocol/chainmanagerv1/utils.go b/pkg/protocol/chainmanagerv1/utils.go new file mode 100644 index 000000000..42f78e01a --- /dev/null +++ b/pkg/protocol/chainmanagerv1/utils.go @@ -0,0 +1,13 @@ +package chainmanagerv1 + +// zeroValueIfNil turns a getter function into a getter function that returns the zero value of the return type if the +// object is nil. +func zeroValueIfNil[ObjectType, ReturnType any](getterFunc func(*ObjectType) ReturnType) func(*ObjectType) ReturnType { + return func(obj *ObjectType) (returnValue ReturnType) { + if obj == nil { + return returnValue + } + + return getterFunc(obj) + } +} From 45302c4bad3d091f68227cfa3e4d04782c681804 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 28 Aug 2023 04:46:15 +0200 Subject: [PATCH 041/356] Feat: embedded stuff in Chain to simplify api --- pkg/protocol/chainmanagerv1/chain.go | 53 ++++--- .../chainmanagerv1/chain_commitments.go | 113 ++++++++------- .../chainmanagerv1/chain_thresholds.go | 93 ++++++------- pkg/protocol/chainmanagerv1/chain_weight.go | 63 --------- pkg/protocol/chainmanagerv1/chain_weights.go | 63 +++++++++ pkg/protocol/chainmanagerv1/chainmanager.go | 54 ++++---- .../chainmanagerv1/chainmanager_test.go | 18 +-- .../{commitment_metadata.go => commitment.go} | 130 ++++++++++-------- 8 files changed, 288 insertions(+), 299 deletions(-) delete mode 100644 pkg/protocol/chainmanagerv1/chain_weight.go create mode 100644 pkg/protocol/chainmanagerv1/chain_weights.go rename pkg/protocol/chainmanagerv1/{commitment_metadata.go => commitment.go} (56%) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 7737980d4..fdb429bea 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -4,37 +4,48 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" ) +// Chain is a reactive component that manages the state of a chain. type Chain struct { - root reactive.Variable[*CommitmentMetadata] + // root contains the Commitment object that spawned this chain. + root *Commitment - commitments *ChainCommitments + // evicted is an event that gets triggered when the chain gets evicted. + evicted reactive.Event - weight *ChainWeight + // chainCommitments is a reactive collection of Commitment objects that belong to the same chain. + *chainCommitments - thresholds *ChainThresholds + // weight is a reactive component that tracks the cumulative weight of the chain. + *chainWeights - evicted reactive.Event + // thresholds is a reactive component that tracks the thresholds of the chain. + *chainThresholds } -func NewChain(rootCommitment *CommitmentMetadata) *Chain { +// NewChain creates a new Chain instance. +func NewChain(root *Commitment) *Chain { c := &Chain{ - root: reactive.NewVariable[*CommitmentMetadata]().Init(rootCommitment), + root: root, evicted: reactive.NewEvent(), } - c.commitments = NewChainCommitments(c) - c.weight = NewChainWeight(c) - c.thresholds = NewChainThresholds(c) + // embed reactive subcomponents + c.chainCommitments = newChainCommitments(c) + c.chainWeights = newChainWeights(c) + c.chainThresholds = newChainThresholds(c) - rootCommitment.SetChain(c) + // associate the root commitment with its chain + root.setChain(c) return c } -func (c *Chain) Root() *CommitmentMetadata { - return c.root.Get() +// Root returns the Commitment object that spawned this chain. +func (c *Chain) Root() *Commitment { + return c.root } +// ParentChain returns the parent chain of this chain (if it exists and is solid). func (c *Chain) ParentChain() *Chain { root := c.Root() if root == nil { @@ -48,19 +59,3 @@ func (c *Chain) ParentChain() *Chain { return parent.Chain() } - -func (c *Chain) Weight() *ChainWeight { - return c.weight -} - -func (c *Chain) Commitments() *ChainCommitments { - return c.commitments -} - -func (c *Chain) Thresholds() *ChainThresholds { - return c.thresholds -} - -func (c *Chain) ReactiveRoot() reactive.Variable[*CommitmentMetadata] { - return c.root -} diff --git a/pkg/protocol/chainmanagerv1/chain_commitments.go b/pkg/protocol/chainmanagerv1/chain_commitments.go index a18f6f50b..9a722894d 100644 --- a/pkg/protocol/chainmanagerv1/chain_commitments.go +++ b/pkg/protocol/chainmanagerv1/chain_commitments.go @@ -7,53 +7,48 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -// ChainCommitments is a reactive collection of CommitmentMetadata objects that belong to the same chain. -type ChainCommitments struct { +// chainCommitments is a reactive collection of Commitment objects that belong to the same chain. +type chainCommitments struct { // chain is the chain that this collection belongs to. chain *Chain - // commitments is a map of CommitmentMetadata objects that belong to the same chain. - commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *CommitmentMetadata] + // commitments is a map of Commitment objects that belong to the same chain. + commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] - // latest is the latest CommitmentMetadata object in this collection. - latest reactive.Variable[*CommitmentMetadata] + // latestCommitment is the latest Commitment object in this collection. + latestCommitment reactive.Variable[*Commitment] - // latestAttested is the latest attested CommitmentMetadata object in this collection. - latestAttested reactive.Variable[*CommitmentMetadata] + // latestAttestedCommitment is the latest attested Commitment object in this collection. + latestAttestedCommitment reactive.Variable[*Commitment] - // latestVerified is the latest verified CommitmentMetadata object in this collection. - latestVerified reactive.Variable[*CommitmentMetadata] + // latestVerifiedCommitment is the latest verified Commitment object in this collection. + latestVerifiedCommitment reactive.Variable[*Commitment] } -// NewChainCommitments creates a new ChainCommitments instance. -func NewChainCommitments(chain *Chain) *ChainCommitments { - return &ChainCommitments{ - chain: chain, - commitments: shrinkingmap.New[iotago.SlotIndex, *CommitmentMetadata](), - latest: reactive.NewVariable[*CommitmentMetadata](), - latestAttested: reactive.NewVariable[*CommitmentMetadata](), - latestVerified: reactive.NewVariable[*CommitmentMetadata](), +// newChainCommitments creates a new chainCommitments instance. +func newChainCommitments(chain *Chain) *chainCommitments { + return &chainCommitments{ + chain: chain, + commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), + latestCommitment: reactive.NewVariable[*Commitment](), + latestAttestedCommitment: reactive.NewVariable[*Commitment](), + latestVerifiedCommitment: reactive.NewVariable[*Commitment](), } } -// Chain returns the chain that this collection belongs to. -func (c *ChainCommitments) Chain() *Chain { - return c.chain -} - -// Register adds a CommitmentMetadata object to this collection. -func (c *ChainCommitments) Register(commitment *CommitmentMetadata) { +// RegisterCommitment adds a Commitment object to this collection. +func (c *chainCommitments) RegisterCommitment(commitment *Commitment) { unsubscribe := c.register(commitment) - commitment.ReactiveChain().OnUpdateOnce(func(_, _ *Chain) { + commitment.ChainVariable().OnUpdateOnce(func(_, _ *Chain) { unsubscribe() c.unregister(commitment) }, func(_, newChain *Chain) bool { return newChain != c.chain }) } -// Get returns the CommitmentMetadata object with the given index, if it exists. -func (c *ChainCommitments) Get(index iotago.SlotIndex) (commitment *CommitmentMetadata, exists bool) { +// Commitment returns the Commitment object with the given index, if it exists. +func (c *chainCommitments) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c.chain; currentChain != nil; currentChain = currentChain.ParentChain() { if root := currentChain.Root(); root != nil && index >= root.Index() { return currentChain.commitments.Get(index) @@ -63,56 +58,56 @@ func (c *ChainCommitments) Get(index iotago.SlotIndex) (commitment *CommitmentMe return nil, false } -// Latest returns the latest CommitmentMetadata object in this collection. -func (c *ChainCommitments) Latest() *CommitmentMetadata { - return c.latest.Get() +// LatestCommitment returns the latest Commitment object in this collection. +func (c *chainCommitments) LatestCommitment() *Commitment { + return c.latestCommitment.Get() } -// LatestAttested returns the latest attested CommitmentMetadata object in this collection. -func (c *ChainCommitments) LatestAttested() *CommitmentMetadata { - return c.latestAttested.Get() +// LatestCommitmentVariable returns a reactive variable that always contains the latest Commitment object in this +// collection. +func (c *chainCommitments) LatestCommitmentVariable() reactive.Variable[*Commitment] { + return c.latestCommitment } -// LatestVerified returns the latest verified CommitmentMetadata object in this collection. -func (c *ChainCommitments) LatestVerified() *CommitmentMetadata { - return c.latestVerified.Get() +// LatestAttestedCommitment returns the latest attested Commitment object in this collection. +func (c *chainCommitments) LatestAttestedCommitment() *Commitment { + return c.latestAttestedCommitment.Get() } -// ReactiveLatest returns a reactive variable that always contains the latest CommitmentMetadata object in this -// collection. -func (c *ChainCommitments) ReactiveLatest() reactive.Variable[*CommitmentMetadata] { - return c.latest +// LatestAttestedCommitmentVariable returns a reactive variable that always contains the latest attested Commitment object +// in this collection. +func (c *chainCommitments) LatestAttestedCommitmentVariable() reactive.Variable[*Commitment] { + return c.latestAttestedCommitment } -// ReactiveLatestVerified returns a reactive variable that always contains the latest verified CommitmentMetadata object -// in this collection. -func (c *ChainCommitments) ReactiveLatestVerified() reactive.Variable[*CommitmentMetadata] { - return c.latestVerified +// LatestVerified returns the latest verified Commitment object in this collection. +func (c *chainCommitments) LatestVerified() *Commitment { + return c.latestVerifiedCommitment.Get() } -// ReactiveLatestAttested returns a reactive variable that always contains the latest attested CommitmentMetadata object +// LatestVerifiedCommitmentVariable returns a reactive variable that always contains the latest verified Commitment object // in this collection. -func (c *ChainCommitments) ReactiveLatestAttested() reactive.Variable[*CommitmentMetadata] { - return c.latestAttested +func (c *chainCommitments) LatestVerifiedCommitmentVariable() reactive.Variable[*Commitment] { + return c.latestVerifiedCommitment } -// register adds a CommitmentMetadata object to this collection. -func (c *ChainCommitments) register(commitment *CommitmentMetadata) (unsubscribe func()) { +// register adds a Commitment object to this collection. +func (c *chainCommitments) register(commitment *Commitment) (unsubscribe func()) { c.commitments.Set(commitment.Index(), commitment) - c.latest.Compute(commitment.Max) + c.latestCommitment.Compute(commitment.Max) return lo.Batch( - commitment.attested.OnTrigger(func() { c.latestAttested.Compute(commitment.Max) }), - commitment.verified.OnTrigger(func() { c.latestVerified.Compute(commitment.Max) }), + commitment.attested.OnTrigger(func() { c.latestAttestedCommitment.Compute(commitment.Max) }), + commitment.verified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.Max) }), ) } -// unregister removes a CommitmentMetadata object from this collection. -func (c *ChainCommitments) unregister(commitment *CommitmentMetadata) { +// unregister removes a Commitment object from this collection. +func (c *chainCommitments) unregister(commitment *Commitment) { c.commitments.Delete(commitment.Index()) - resetToParent := func(latestCommitment *CommitmentMetadata) *CommitmentMetadata { + resetToParent := func(latestCommitment *Commitment) *Commitment { if commitment.Index() > latestCommitment.Index() { return latestCommitment } @@ -120,7 +115,7 @@ func (c *ChainCommitments) unregister(commitment *CommitmentMetadata) { return commitment.Parent() } - c.latest.Compute(resetToParent) - c.latestAttested.Compute(resetToParent) - c.latestVerified.Compute(resetToParent) + c.latestCommitment.Compute(resetToParent) + c.latestAttestedCommitment.Compute(resetToParent) + c.latestVerifiedCommitment.Compute(resetToParent) } diff --git a/pkg/protocol/chainmanagerv1/chain_thresholds.go b/pkg/protocol/chainmanagerv1/chain_thresholds.go index 01143c23b..00892e7bc 100644 --- a/pkg/protocol/chainmanagerv1/chain_thresholds.go +++ b/pkg/protocol/chainmanagerv1/chain_thresholds.go @@ -5,18 +5,18 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -// ChainThresholds is a reactive component that provides a set of thresholds that are derived from the chain. -type ChainThresholds struct { +// chainThresholds is a reactive component that provides a set of thresholds that are derived from the chain. +type chainThresholds struct { // chain is the chain that this component belongs to. chain *Chain - // latestIndex is the index of the latest CommitmentMetadata object in the chain. + // latestIndex is the index of the latest Commitment object in the chain. latestIndex reactive.Variable[iotago.SlotIndex] - // latestAttestedIndex is the index of the latest attested CommitmentMetadata object in the chain. + // latestAttestedIndex is the index of the latest attested Commitment object in the chain. latestAttestedIndex reactive.Variable[iotago.SlotIndex] - // latestVerifiedIndex is the index of the latest verified CommitmentMetadata object in the chain. + // latestVerifiedIndex is the index of the latest verified Commitment object in the chain. latestVerifiedIndex reactive.Variable[iotago.SlotIndex] // syncThreshold is the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). @@ -27,13 +27,13 @@ type ChainThresholds struct { warpSyncThreshold reactive.Variable[iotago.SlotIndex] } -// NewChainThresholds creates a new ChainThresholds instance. -func NewChainThresholds(chain *Chain) *ChainThresholds { - c := &ChainThresholds{ +// newChainThresholds creates a new chainThresholds instance. +func newChainThresholds(chain *Chain) *chainThresholds { + c := &chainThresholds{ chain: chain, - latestIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatest()), - latestAttestedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatestAttested()), - latestVerifiedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*CommitmentMetadata).Index), chain.Commitments().ReactiveLatestVerified()), + latestIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.LatestCommitmentVariable()), + latestAttestedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.LatestAttestedCommitmentVariable()), + latestVerifiedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.LatestVerifiedCommitmentVariable()), } c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestIndex iotago.SlotIndex) iotago.SlotIndex { @@ -47,63 +47,58 @@ func NewChainThresholds(chain *Chain) *ChainThresholds { return c } -// Chain returns the chain that this component belongs to. -func (c *ChainThresholds) Chain() *Chain { - return c.chain -} - -// LatestIndex returns the index of the latest CommitmentMetadata object in the chain. -func (c *ChainThresholds) LatestIndex() iotago.SlotIndex { +// LatestIndex returns the index of the latest Commitment object in the chain. +func (c *chainThresholds) LatestIndex() iotago.SlotIndex { return c.latestIndex.Get() } -// LatestAttestedIndex returns the index of the latest attested CommitmentMetadata object in the chain. -func (c *ChainThresholds) LatestAttestedIndex() iotago.SlotIndex { - return c.latestAttestedIndex.Get() -} - -// LatestVerifiedIndex returns the index of the latest verified CommitmentMetadata object in the chain. -func (c *ChainThresholds) LatestVerifiedIndex() iotago.SlotIndex { - return c.latestVerifiedIndex.Get() +// LatestIndexVariable returns a reactive variable that always contains the index of the latest Commitment +// object in the chain. +func (c *chainThresholds) LatestIndexVariable() reactive.Variable[iotago.SlotIndex] { + return c.latestIndex } -// SyncThreshold returns the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). -func (c *ChainThresholds) SyncThreshold() iotago.SlotIndex { - return c.syncThreshold.Get() +// LatestAttestedIndex returns the index of the latest attested Commitment object in the chain. +func (c *chainThresholds) LatestAttestedIndex() iotago.SlotIndex { + return c.latestAttestedIndex.Get() } -// WarpSyncThreshold returns an offset from latest index where the warp sync process starts (we don't request slots that -// we are about to commit ourselves). -func (c *ChainThresholds) WarpSyncThreshold() iotago.SlotIndex { - return c.warpSyncThreshold.Get() +// LatestAttestedIndexVariable returns a reactive variable that contains the index of the latest attested +// Commitment object in the chain. +func (c *chainThresholds) LatestAttestedIndexVariable() reactive.Variable[iotago.SlotIndex] { + return c.latestAttestedIndex } -// ReactiveLatestIndex returns a reactive variable that always contains the index of the latest CommitmentMetadata -// object in the chain. -func (c *ChainThresholds) ReactiveLatestIndex() reactive.Variable[iotago.SlotIndex] { - return c.latestIndex +// LatestVerifiedIndex returns the index of the latest verified Commitment object in the chain. +func (c *chainThresholds) LatestVerifiedIndex() iotago.SlotIndex { + return c.latestVerifiedIndex.Get() } -// ReactiveLatestAttestedIndex returns a reactive variable that contains the index of the latest attested -// CommitmentMetadata object in the chain. -func (c *ChainThresholds) ReactiveLatestAttestedIndex() reactive.Variable[iotago.SlotIndex] { - return c.latestAttestedIndex +// LatestVerifiedIndexVariable returns a reactive variable that contains the index of the latest verified +// Commitment object in the chain. +func (c *chainThresholds) LatestVerifiedIndexVariable() reactive.Variable[iotago.SlotIndex] { + return c.latestVerifiedIndex } -// ReactiveLatestVerifiedIndex returns a reactive variable that contains the index of the latest verified -// CommitmentMetadata object in the chain. -func (c *ChainThresholds) ReactiveLatestVerifiedIndex() reactive.Variable[iotago.SlotIndex] { - return c.latestVerifiedIndex +// SyncThreshold returns the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). +func (c *chainThresholds) SyncThreshold() iotago.SlotIndex { + return c.syncThreshold.Get() } -// ReactiveSyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the +// SyncThresholdVariable returns a reactive variable that contains the upper bound for slots that are being fed to the // engine (to prevent memory exhaustion). -func (c *ChainThresholds) ReactiveSyncThreshold() reactive.Variable[iotago.SlotIndex] { +func (c *chainThresholds) SyncThresholdVariable() reactive.Variable[iotago.SlotIndex] { return c.syncThreshold } -// ReactiveWarpSyncThreshold returns a reactive variable that contains an offset from latest index where the warp sync +// WarpSyncThreshold returns an offset from latest index where the warp sync process starts (we don't request slots that +// we are about to commit ourselves). +func (c *chainThresholds) WarpSyncThreshold() iotago.SlotIndex { + return c.warpSyncThreshold.Get() +} + +// WarpSyncThresholdVariable returns a reactive variable that contains an offset from latest index where the warp sync // process starts (we don't request slots that we are about to commit ourselves). -func (c *ChainThresholds) ReactiveWarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { +func (c *chainThresholds) WarpSyncThresholdVariable() reactive.Variable[iotago.SlotIndex] { return c.warpSyncThreshold } diff --git a/pkg/protocol/chainmanagerv1/chain_weight.go b/pkg/protocol/chainmanagerv1/chain_weight.go deleted file mode 100644 index 8b238144b..000000000 --- a/pkg/protocol/chainmanagerv1/chain_weight.go +++ /dev/null @@ -1,63 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" -) - -// ChainWeight is a reactive subcomponent of a Chain that tracks the cumulative weight of the chain. -type ChainWeight struct { - // chain is the chain that this ChainWeight is tracking the cumulative weight of. - chain *Chain - - // claimed contains the total cumulative weight of the chain that is claimed by the latest commitments. - claimed reactive.Variable[uint64] - - // attested contains the total cumulative weight of the chain that we received attestations for. - attested reactive.Variable[uint64] - - // verified contains the total cumulative weight of the chain that we verified ourselves. - verified reactive.Variable[uint64] -} - -// NewChainWeight creates a new ChainWeight for the given chain. -func NewChainWeight(chain *Chain) *ChainWeight { - return &ChainWeight{ - chain: chain, - claimed: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatest()), - attested: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatestAttested()), - verified: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*CommitmentMetadata).CumulativeWeight), chain.Commitments().ReactiveLatestVerified()), - } -} - -// Claimed returns the total cumulative weight of the chain that is claimed by the latest commitments. -func (c *ChainWeight) Claimed() uint64 { - return c.claimed.Get() -} - -// Attested returns the total cumulative weight of the chain that we received attestations for. -func (c *ChainWeight) Attested() uint64 { - return c.attested.Get() -} - -// Verified returns the total cumulative weight of the chain that we verified ourselves. -func (c *ChainWeight) Verified() uint64 { - return c.verified.Get() -} - -// ReactiveClaimed returns a reactive variable that tracks the total cumulative weight of the chain that is claimed by -// the latest commitments. -func (c *ChainWeight) ReactiveClaimed() reactive.Variable[uint64] { - return c.claimed -} - -// ReactiveAttested returns a reactive variable that tracks the total cumulative weight of the chain that we received -// attestations for. -func (c *ChainWeight) ReactiveAttested() reactive.Variable[uint64] { - return c.attested -} - -// ReactiveVerified returns a reactive variable that tracks the total cumulative weight of the chain that we verified -// ourselves. -func (c *ChainWeight) ReactiveVerified() reactive.Variable[uint64] { - return c.verified -} diff --git a/pkg/protocol/chainmanagerv1/chain_weights.go b/pkg/protocol/chainmanagerv1/chain_weights.go new file mode 100644 index 000000000..c271473ad --- /dev/null +++ b/pkg/protocol/chainmanagerv1/chain_weights.go @@ -0,0 +1,63 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" +) + +// chainWeights is a reactive component that tracks the cumulative weight of a chain. +type chainWeights struct { + // chain is the chain that this chainWeights is tracking the cumulative weight of. + chain *Chain + + // claimed contains the total cumulative weight of the chain that is claimed by the latest commitments. + claimed reactive.Variable[uint64] + + // attested contains the total cumulative weight of the chain that we received attestations for. + attested reactive.Variable[uint64] + + // verified contains the total cumulative weight of the chain that we verified ourselves. + verified reactive.Variable[uint64] +} + +// newChainWeights creates a new chainWeights for the given chain. +func newChainWeights(chain *Chain) *chainWeights { + return &chainWeights{ + chain: chain, + claimed: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.LatestCommitmentVariable()), + attested: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.LatestAttestedCommitmentVariable()), + verified: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.LatestVerifiedCommitmentVariable()), + } +} + +// ClaimedWeight returns the total cumulative weight of the chain that is claimed by the latest commitments. +func (c *chainWeights) ClaimedWeight() uint64 { + return c.claimed.Get() +} + +// ClaimedWeightVariable returns a reactive variable that tracks the total cumulative weight of the chain that is claimed by +// the latest commitments. +func (c *chainWeights) ClaimedWeightVariable() reactive.Variable[uint64] { + return c.claimed +} + +// AttestedWeight returns the total cumulative weight of the chain that we received attestations for. +func (c *chainWeights) AttestedWeight() uint64 { + return c.attested.Get() +} + +// AttestedWeightVariable returns a reactive variable that tracks the total cumulative weight of the chain that we received +// attestations for. +func (c *chainWeights) AttestedWeightVariable() reactive.Variable[uint64] { + return c.attested +} + +// VerifiedWeight returns the total cumulative weight of the chain that we verified ourselves. +func (c *chainWeights) VerifiedWeight() uint64 { + return c.verified.Get() +} + +// VerifiedWeightVariable returns a reactive variable that tracks the total cumulative weight of the chain that we verified +// ourselves. +func (c *chainWeights) VerifiedWeightVariable() reactive.Variable[uint64] { + return c.verified +} diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index c98298fef..3c4e45d3d 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -20,11 +20,11 @@ type ChainManager struct { heaviestVerifiedCandidate reactive.Variable[*Chain] - commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]] + commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - commitmentCreated *event.Event1[*CommitmentMetadata] + commitmentCreated *event.Event1[*Commitment] chainCreated *event.Event1[*Chain] @@ -33,37 +33,37 @@ type ChainManager struct { func NewChainManager(rootCommitment *model.Commitment) *ChainManager { c := &ChainManager{ - mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewRootCommitmentMetadata(rootCommitment))), + mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewRootCommitment(rootCommitment))), heaviestClaimedCandidate: reactive.NewVariable[*Chain](), heaviestAttestedCandidate: reactive.NewVariable[*Chain](), heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*CommitmentMetadata]](), + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - commitmentCreated: event.New1[*CommitmentMetadata](), + commitmentCreated: event.New1[*Commitment](), chainCreated: event.New1[*Chain](), EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), } c.OnChainCreated(func(chain *Chain) { - c.selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*ChainWeight).ReactiveClaimed) - c.selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*ChainWeight).ReactiveAttested) - c.selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*ChainWeight).ReactiveVerified) + c.selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*Chain).ClaimedWeightVariable) + c.selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*Chain).AttestedWeightVariable) + c.selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*Chain).VerifiedWeightVariable) }) return c } -func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *CommitmentMetadata) { - if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *CommitmentMetadata) { +func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment) { + if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *Commitment) { commitmentMetadata = resolvedMetadata }); commitmentRequest != nil { - commitmentRequest.Resolve(NewCommitmentMetadata(commitment)) + commitmentRequest.Resolve(NewCommitment(commitment)) } return commitmentMetadata } -func (c *ChainManager) OnCommitmentCreated(callback func(commitment *CommitmentMetadata)) (unsubscribe func()) { +func (c *ChainManager) OnCommitmentCreated(callback func(commitment *Commitment)) (unsubscribe func()) { return c.commitmentCreated.Hook(callback).Unhook } @@ -91,22 +91,14 @@ func (c *ChainManager) HeaviestVerifiedCandidateChain() reactive.Variable[*Chain return c.heaviestVerifiedCandidate } -func (c *ChainManager) RootCommitment() reactive.Variable[*CommitmentMetadata] { - if chain := c.mainChain.Get(); chain != nil { - return chain.ReactiveRoot() - } - - panic("root chain not initialized") -} - -func (c *ChainManager) selectHeaviestCandidate(variable reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*ChainWeight) reactive.Variable[uint64]) { - chainWeight(newCandidate.Weight()).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= c.MainChain().Weight().Verified() { +func (c *ChainManager) selectHeaviestCandidate(variable reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { + chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { + if newChainWeight <= c.MainChain().VerifiedWeight() { return } variable.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate.Weight()).Get() { + if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { return newCandidate } @@ -115,8 +107,8 @@ func (c *ChainManager) selectHeaviestCandidate(variable reactive.Variable[*Chain }) } -func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvictedEvent reactive.Event) { - c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, lo.Void(commitment.ReactiveParent().Set)) +func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { + c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.setParent) slotEvictedEvent.OnTrigger(func() { commitment.Evicted().Trigger() @@ -131,10 +123,10 @@ func (c *ChainManager) setupCommitment(commitment *CommitmentMetadata, slotEvict }) } -func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, index iotago.SlotIndex, requestFromPeers bool, optSuccessCallbacks ...func(metadata *CommitmentMetadata)) (commitmentRequest *promise.Promise[*CommitmentMetadata]) { +func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, index iotago.SlotIndex, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { slotEvicted := c.EvictionEvent(index) if slotEvicted.WasTriggered() { - rootCommitment := c.mainChain.Get().root.Get() + rootCommitment := c.mainChain.Get().Root() if rootCommitment == nil || commitmentID != rootCommitment.ID() { return nil @@ -144,10 +136,10 @@ func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, index successCallback(rootCommitment) } - return promise.New[*CommitmentMetadata]().Resolve(rootCommitment) + return promise.New[*Commitment]().Resolve(rootCommitment) } - commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*CommitmentMetadata])) + commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) if requestCreated { if requestFromPeers { c.commitmentRequester.StartTicker(commitmentID) @@ -157,7 +149,7 @@ func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, index }) } - commitmentRequest.OnSuccess(func(commitment *CommitmentMetadata) { + commitmentRequest.OnSuccess(func(commitment *Commitment) { c.setupCommitment(commitment, slotEvicted) }) diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 72701ab45..ba4733c5d 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -62,25 +62,25 @@ func TestChainManager(t *testing.T) { ), testAPI)) commitment1Metadata := chainManager.ProcessCommitment(commitment1) - require.True(t, commitment1Metadata.Solid().Get()) + require.True(t, commitment1Metadata.SolidEvent().Get()) commitment3Metadata := chainManager.ProcessCommitment(commitment3) - require.True(t, commitment1Metadata.Solid().Get()) - require.False(t, commitment3Metadata.Solid().Get()) + require.True(t, commitment1Metadata.SolidEvent().Get()) + require.False(t, commitment3Metadata.SolidEvent().Get()) commitment2Metadata := chainManager.ProcessCommitment(commitment2) - require.True(t, commitment1Metadata.Solid().Get()) - require.True(t, commitment2Metadata.Solid().Get()) - require.True(t, commitment3Metadata.Solid().Get()) + require.True(t, commitment1Metadata.SolidEvent().Get()) + require.True(t, commitment2Metadata.SolidEvent().Get()) + require.True(t, commitment3Metadata.SolidEvent().Get()) commitment2Metadata.Verified().Trigger() require.True(t, commitment3Metadata.AboveLatestVerifiedCommitment().Get()) require.True(t, commitment3Metadata.BelowSyncThreshold().Get()) - require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Thresholds().LatestIndex()) - require.Equal(t, uint64(3), commitment3Metadata.Chain().Weight().Claimed()) + require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().LatestIndex()) + require.Equal(t, uint64(3), commitment3Metadata.Chain().ClaimedWeight()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) commitment3aMetadata.Attested().Trigger() commitment3aMetadata.Verified().Trigger() - fmt.Println(commitment3aMetadata.ReactiveChain().Get()) + fmt.Println(commitment3aMetadata.Chain()) } diff --git a/pkg/protocol/chainmanagerv1/commitment_metadata.go b/pkg/protocol/chainmanagerv1/commitment.go similarity index 56% rename from pkg/protocol/chainmanagerv1/commitment_metadata.go rename to pkg/protocol/chainmanagerv1/commitment.go index 53d694bfd..790a33199 100644 --- a/pkg/protocol/chainmanagerv1/commitment_metadata.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -7,20 +7,20 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -type CommitmentMetadata struct { +type Commitment struct { *model.Commitment chain reactive.Variable[*Chain] - parent reactive.Variable[*CommitmentMetadata] - successor reactive.Variable[*CommitmentMetadata] + parent reactive.Variable[*Commitment] + successor reactive.Variable[*Commitment] spawnedChain reactive.Variable[*Chain] - solid reactive.Event - attested reactive.Event - verified reactive.Event - parentVerified reactive.Event - evicted reactive.Event + solid reactive.Event + attested reactive.Event + verified reactive.Event + evicted reactive.Event + parentVerified reactive.Event directlyAboveLatestVerifiedCommitment reactive.Variable[bool] parentAboveLatestVerifiedCommitment reactive.Variable[bool] aboveLatestVerifiedCommitment reactive.Variable[bool] @@ -32,34 +32,29 @@ type CommitmentMetadata struct { requiresWarpSync reactive.Variable[bool] } -func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { - c := &CommitmentMetadata{ +func NewCommitment(commitment *model.Commitment) *Commitment { + c := &Commitment{ Commitment: commitment, chain: reactive.NewVariable[*Chain](), - parent: reactive.NewVariable[*CommitmentMetadata](), - successor: reactive.NewVariable[*CommitmentMetadata](), + parent: reactive.NewVariable[*Commitment](), + successor: reactive.NewVariable[*Commitment](), spawnedChain: reactive.NewVariable[*Chain](), solid: reactive.NewEvent(), attested: reactive.NewEvent(), verified: reactive.NewEvent(), + evicted: reactive.NewEvent(), parentVerified: reactive.NewEvent(), - belowSyncThreshold: reactive.NewEvent(), - belowWarpSyncThreshold: reactive.NewEvent(), - belowLatestVerifiedCommitment: reactive.NewEvent(), - evicted: reactive.NewEvent(), parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - } - - c.chain.OnUpdate(func(_, chain *Chain) { chain.Commitments().Register(c) }) - c.parent.OnUpdate(func(_, parent *CommitmentMetadata) { - parent.registerChild(c, c.inheritChain(parent)) + belowSyncThreshold: reactive.NewEvent(), + belowWarpSyncThreshold: reactive.NewEvent(), + belowLatestVerifiedCommitment: reactive.NewEvent(), + } - c.registerParent(parent) - }) + c.chain.OnUpdate(func(_, chain *Chain) { chain.RegisterCommitment(c) }) c.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { return parentVerified && !verified @@ -80,9 +75,9 @@ func NewCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { return c } -func NewRootCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata { - commitmentMetadata := NewCommitmentMetadata(commitment) - commitmentMetadata.Solid().Trigger() +func NewRootCommitment(commitment *model.Commitment) *Commitment { + commitmentMetadata := NewCommitment(commitment) + commitmentMetadata.SolidEvent().Trigger() commitmentMetadata.Verified().Trigger() commitmentMetadata.BelowSyncThreshold().Trigger() commitmentMetadata.BelowWarpSyncThreshold().Trigger() @@ -92,81 +87,98 @@ func NewRootCommitmentMetadata(commitment *model.Commitment) *CommitmentMetadata return commitmentMetadata } -func (c *CommitmentMetadata) Chain() *Chain { +func (c *Commitment) Chain() *Chain { return c.chain.Get() +} +func (c *Commitment) ChainVariable() reactive.Variable[*Chain] { + return c.chain } -func (c *CommitmentMetadata) SetChain(chain *Chain) { +func (c *Commitment) setChain(chain *Chain) { c.chain.Set(chain) } -func (c *CommitmentMetadata) Parent() *CommitmentMetadata { +func (c *Commitment) Parent() *Commitment { return c.parent.Get() } -func (c *CommitmentMetadata) ReactiveChain() reactive.Variable[*Chain] { - return c.chain +func (c *Commitment) ParentVariable() reactive.Variable[*Commitment] { + return c.parent } -func (c *CommitmentMetadata) ReactiveParent() reactive.Variable[*CommitmentMetadata] { - return c.parent +func (c *Commitment) setParent(parent *Commitment) { + c.parent.Compute(func(currentParent *Commitment) *Commitment { + if currentParent != nil { + panic("parent may not be changed once it was set") + } + + parent.registerChild(c, c.inheritChain(parent)) + + c.registerParent(parent) + + return parent + }) +} + +func (c *Commitment) IsSolid() bool { + return c.solid.WasTriggered() } -func (c *CommitmentMetadata) Solid() reactive.Event { +func (c *Commitment) SolidEvent() reactive.Event { return c.solid } -func (c *CommitmentMetadata) Attested() reactive.Event { +func (c *Commitment) Attested() reactive.Event { return c.attested } -func (c *CommitmentMetadata) Verified() reactive.Event { +func (c *Commitment) Verified() reactive.Event { return c.verified } -func (c *CommitmentMetadata) ParentVerified() reactive.Event { +func (c *Commitment) ParentVerified() reactive.Event { return c.parentVerified } -func (c *CommitmentMetadata) BelowSyncThreshold() reactive.Event { +func (c *Commitment) BelowSyncThreshold() reactive.Event { return c.belowSyncThreshold } -func (c *CommitmentMetadata) BelowWarpSyncThreshold() reactive.Event { +func (c *Commitment) BelowWarpSyncThreshold() reactive.Event { return c.belowWarpSyncThreshold } -func (c *CommitmentMetadata) BelowLatestVerifiedCommitment() reactive.Event { +func (c *Commitment) BelowLatestVerifiedCommitment() reactive.Event { return c.belowLatestVerifiedCommitment } -func (c *CommitmentMetadata) Evicted() reactive.Event { +func (c *Commitment) Evicted() reactive.Event { return c.evicted } -func (c *CommitmentMetadata) ParentAboveLatestVerifiedCommitment() reactive.Variable[bool] { +func (c *Commitment) ParentAboveLatestVerifiedCommitment() reactive.Variable[bool] { return c.parentAboveLatestVerifiedCommitment } -func (c *CommitmentMetadata) AboveLatestVerifiedCommitment() reactive.Variable[bool] { +func (c *Commitment) AboveLatestVerifiedCommitment() reactive.Variable[bool] { return c.aboveLatestVerifiedCommitment } -func (c *CommitmentMetadata) InSyncWindow() reactive.Variable[bool] { +func (c *Commitment) InSyncWindow() reactive.Variable[bool] { return c.inSyncWindow } -func (c *CommitmentMetadata) RequiresWarpSync() reactive.Variable[bool] { +func (c *Commitment) RequiresWarpSync() reactive.Variable[bool] { return c.requiresWarpSync } -func (c *CommitmentMetadata) ChainSuccessor() reactive.Variable[*CommitmentMetadata] { +func (c *Commitment) ChainSuccessor() reactive.Variable[*Commitment] { return c.successor } // Max compares the given commitment with the current one and returns the one with the higher index. -func (c *CommitmentMetadata) Max(latestCommitment *CommitmentMetadata) *CommitmentMetadata { +func (c *Commitment) Max(latestCommitment *Commitment) *Commitment { if c == nil || latestCommitment != nil && latestCommitment.Index() >= c.Index() { return latestCommitment } @@ -174,7 +186,7 @@ func (c *CommitmentMetadata) Max(latestCommitment *CommitmentMetadata) *Commitme return c } -func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { +func (c *Commitment) registerParent(parent *Commitment) { c.solid.InheritFrom(parent.solid) c.parentVerified.InheritFrom(parent.verified) c.parentAboveLatestVerifiedCommitment.InheritFrom(parent.aboveLatestVerifiedCommitment) @@ -182,9 +194,9 @@ func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { // triggerIfBelowThreshold triggers the given event if the commitment's index is below the given // threshold. We only monitor the threshold after the corresponding parent event was triggered (to minimize // the amount of elements that listen to updates of the same chain threshold - it spreads monotonically). - triggerIfBelowThreshold := func(event func(*CommitmentMetadata) reactive.Event, chainThreshold func(*ChainThresholds) reactive.Variable[iotago.SlotIndex]) { + triggerIfBelowThreshold := func(event func(*Commitment) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { event(parent).OnTrigger(func() { - chainThreshold(c.chain.Get().Thresholds()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { + chainThreshold(c.Chain()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { event(c).Trigger() }, func(_ iotago.SlotIndex, slotIndex iotago.SlotIndex) bool { return c.Index() < slotIndex @@ -192,13 +204,13 @@ func (c *CommitmentMetadata) registerParent(parent *CommitmentMetadata) { }) } - triggerIfBelowThreshold((*CommitmentMetadata).BelowLatestVerifiedCommitment, (*ChainThresholds).ReactiveLatestVerifiedIndex) - triggerIfBelowThreshold((*CommitmentMetadata).BelowSyncThreshold, (*ChainThresholds).ReactiveSyncThreshold) - triggerIfBelowThreshold((*CommitmentMetadata).BelowWarpSyncThreshold, (*ChainThresholds).ReactiveWarpSyncThreshold) + triggerIfBelowThreshold((*Commitment).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedIndexVariable) + triggerIfBelowThreshold((*Commitment).BelowSyncThreshold, (*Chain).SyncThresholdVariable) + triggerIfBelowThreshold((*Commitment).BelowWarpSyncThreshold, (*Chain).WarpSyncThresholdVariable) } -func (c *CommitmentMetadata) registerChild(newChild *CommitmentMetadata, onSuccessorUpdated func(*CommitmentMetadata, *CommitmentMetadata)) { - c.successor.Compute(func(currentSuccessor *CommitmentMetadata) *CommitmentMetadata { +func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { + c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) }) @@ -206,10 +218,10 @@ func (c *CommitmentMetadata) registerChild(newChild *CommitmentMetadata, onSucce c.evicted.OnTrigger(c.successor.OnUpdate(onSuccessorUpdated)) } -func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*CommitmentMetadata, *CommitmentMetadata) { +func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { var unsubscribeFromParent func() - return func(_, successor *CommitmentMetadata) { + return func(_, successor *Commitment) { c.spawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { switch successor { case nil: @@ -219,7 +231,7 @@ func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*Comm spawnedChain.evicted.Trigger() } - unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) + unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.setChain(chain) }) default: if spawnedChain != nil { return spawnedChain @@ -231,7 +243,7 @@ func (c *CommitmentMetadata) inheritChain(parent *CommitmentMetadata) func(*Comm newSpawnedChain = NewChain(c) - c.chain.Set(newSpawnedChain) + c.setChain(newSpawnedChain) } return newSpawnedChain From 55f5e7dcd3cfb3adb79895079f3ceac06b96ebca Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 28 Aug 2023 16:40:57 +0200 Subject: [PATCH 042/356] Feat: started breaking down commitment more --- pkg/protocol/chainmanagerv1/chain.go | 10 + .../chainmanagerv1/chain_thresholds.go | 4 - .../chainmanagerv1/chainmanager_test.go | 16 +- pkg/protocol/chainmanagerv1/commitment.go | 188 ++---------------- .../commitment_chain_properties.go | 121 +++++++++++ .../chainmanagerv1/commitment_thresholds.go | 97 +++++++++ 6 files changed, 253 insertions(+), 183 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/commitment_chain_properties.go create mode 100644 pkg/protocol/chainmanagerv1/commitment_thresholds.go diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index fdb429bea..55cffbced 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -59,3 +59,13 @@ func (c *Chain) ParentChain() *Chain { return parent.Chain() } + +// Evicted returns whether the chain got evicted. +func (c *Chain) Evicted() bool { + return c.evicted.WasTriggered() +} + +// EvictedEvent returns a reactive event that gets triggered when the chain is evicted. +func (c *Chain) EvictedEvent() reactive.Event { + return c.evicted +} diff --git a/pkg/protocol/chainmanagerv1/chain_thresholds.go b/pkg/protocol/chainmanagerv1/chain_thresholds.go index 00892e7bc..f83c3ca37 100644 --- a/pkg/protocol/chainmanagerv1/chain_thresholds.go +++ b/pkg/protocol/chainmanagerv1/chain_thresholds.go @@ -7,9 +7,6 @@ import ( // chainThresholds is a reactive component that provides a set of thresholds that are derived from the chain. type chainThresholds struct { - // chain is the chain that this component belongs to. - chain *Chain - // latestIndex is the index of the latest Commitment object in the chain. latestIndex reactive.Variable[iotago.SlotIndex] @@ -30,7 +27,6 @@ type chainThresholds struct { // newChainThresholds creates a new chainThresholds instance. func newChainThresholds(chain *Chain) *chainThresholds { c := &chainThresholds{ - chain: chain, latestIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.LatestCommitmentVariable()), latestAttestedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.LatestAttestedCommitmentVariable()), latestVerifiedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.LatestVerifiedCommitmentVariable()), diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index ba4733c5d..5bd678828 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -62,20 +62,20 @@ func TestChainManager(t *testing.T) { ), testAPI)) commitment1Metadata := chainManager.ProcessCommitment(commitment1) - require.True(t, commitment1Metadata.SolidEvent().Get()) + require.True(t, commitment1Metadata.IsSolid()) commitment3Metadata := chainManager.ProcessCommitment(commitment3) - require.True(t, commitment1Metadata.SolidEvent().Get()) - require.False(t, commitment3Metadata.SolidEvent().Get()) + require.True(t, commitment1Metadata.IsSolid()) + require.False(t, commitment3Metadata.IsSolid()) commitment2Metadata := chainManager.ProcessCommitment(commitment2) - require.True(t, commitment1Metadata.SolidEvent().Get()) - require.True(t, commitment2Metadata.SolidEvent().Get()) - require.True(t, commitment3Metadata.SolidEvent().Get()) + require.True(t, commitment1Metadata.IsSolid()) + require.True(t, commitment2Metadata.IsSolid()) + require.True(t, commitment3Metadata.IsSolid()) commitment2Metadata.Verified().Trigger() - require.True(t, commitment3Metadata.AboveLatestVerifiedCommitment().Get()) - require.True(t, commitment3Metadata.BelowSyncThreshold().Get()) + require.True(t, commitment3Metadata.IsAboveLatestVerifiedIndex()) + require.True(t, commitment3Metadata.IsBelowSyncThreshold()) require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().LatestIndex()) require.Equal(t, uint64(3), commitment3Metadata.Chain().ClaimedWeight()) diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 790a33199..5269b65c7 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -2,131 +2,66 @@ package chainmanagerv1 import ( "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/iota-core/pkg/model" - iotago "github.com/iotaledger/iota.go/v4" ) type Commitment struct { *model.Commitment - chain reactive.Variable[*Chain] - parent reactive.Variable[*Commitment] - successor reactive.Variable[*Commitment] - spawnedChain reactive.Variable[*Chain] - - solid reactive.Event + isSolid reactive.Event attested reactive.Event verified reactive.Event evicted reactive.Event - parentVerified reactive.Event - directlyAboveLatestVerifiedCommitment reactive.Variable[bool] - parentAboveLatestVerifiedCommitment reactive.Variable[bool] - aboveLatestVerifiedCommitment reactive.Variable[bool] + *commitmentChainProperties + *commitmentThresholds - belowSyncThreshold reactive.Event - belowWarpSyncThreshold reactive.Event - belowLatestVerifiedCommitment reactive.Event - inSyncWindow reactive.Variable[bool] - requiresWarpSync reactive.Variable[bool] + inSyncWindow reactive.Variable[bool] + requiresWarpSync reactive.Variable[bool] } func NewCommitment(commitment *model.Commitment) *Commitment { c := &Commitment{ Commitment: commitment, - chain: reactive.NewVariable[*Chain](), - parent: reactive.NewVariable[*Commitment](), - successor: reactive.NewVariable[*Commitment](), - spawnedChain: reactive.NewVariable[*Chain](), - - solid: reactive.NewEvent(), + isSolid: reactive.NewEvent(), attested: reactive.NewEvent(), verified: reactive.NewEvent(), evicted: reactive.NewEvent(), - - parentVerified: reactive.NewEvent(), - parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - - belowSyncThreshold: reactive.NewEvent(), - belowWarpSyncThreshold: reactive.NewEvent(), - belowLatestVerifiedCommitment: reactive.NewEvent(), } - c.chain.OnUpdate(func(_, chain *Chain) { chain.RegisterCommitment(c) }) - - c.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { - return parentVerified && !verified - }, c.parentVerified, c.verified) - - c.aboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { - return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment - }, c.directlyAboveLatestVerifiedCommitment, c.parentAboveLatestVerifiedCommitment) + c.commitmentChainProperties = newCommitmentChainProperties(c) + c.commitmentThresholds = newCommitmentThresholds(c) c.inSyncWindow = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { return belowSyncThreshold && aboveLatestVerifiedCommitment - }, c.belowSyncThreshold, c.aboveLatestVerifiedCommitment) + }, c.isBelowSyncThreshold, c.isAboveLatestVerifiedIndex) c.requiresWarpSync = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { return inSyncWindow && belowWarpSyncThreshold - }, c.inSyncWindow, c.belowWarpSyncThreshold) + }, c.inSyncWindow, c.isBelowWarpSyncThreshold) return c } func NewRootCommitment(commitment *model.Commitment) *Commitment { commitmentMetadata := NewCommitment(commitment) - commitmentMetadata.SolidEvent().Trigger() + commitmentMetadata.IsSolidEvent().Trigger() commitmentMetadata.Verified().Trigger() - commitmentMetadata.BelowSyncThreshold().Trigger() - commitmentMetadata.BelowWarpSyncThreshold().Trigger() - commitmentMetadata.BelowLatestVerifiedCommitment().Trigger() + commitmentMetadata.IsBelowSyncThresholdEvent().Trigger() + commitmentMetadata.IsBelowWarpSyncThresholdEvent().Trigger() + commitmentMetadata.IsBelowLatestVerifiedIndexEvent().Trigger() commitmentMetadata.Evicted().Trigger() return commitmentMetadata } -func (c *Commitment) Chain() *Chain { - return c.chain.Get() -} - -func (c *Commitment) ChainVariable() reactive.Variable[*Chain] { - return c.chain -} - -func (c *Commitment) setChain(chain *Chain) { - c.chain.Set(chain) -} - -func (c *Commitment) Parent() *Commitment { - return c.parent.Get() -} - -func (c *Commitment) ParentVariable() reactive.Variable[*Commitment] { - return c.parent -} - -func (c *Commitment) setParent(parent *Commitment) { - c.parent.Compute(func(currentParent *Commitment) *Commitment { - if currentParent != nil { - panic("parent may not be changed once it was set") - } - - parent.registerChild(c, c.inheritChain(parent)) - - c.registerParent(parent) - - return parent - }) -} - func (c *Commitment) IsSolid() bool { - return c.solid.WasTriggered() + return c.isSolid.WasTriggered() } -func (c *Commitment) SolidEvent() reactive.Event { - return c.solid +func (c *Commitment) IsSolidEvent() reactive.Event { + return c.isSolid } func (c *Commitment) Attested() reactive.Event { @@ -137,34 +72,10 @@ func (c *Commitment) Verified() reactive.Event { return c.verified } -func (c *Commitment) ParentVerified() reactive.Event { - return c.parentVerified -} - -func (c *Commitment) BelowSyncThreshold() reactive.Event { - return c.belowSyncThreshold -} - -func (c *Commitment) BelowWarpSyncThreshold() reactive.Event { - return c.belowWarpSyncThreshold -} - -func (c *Commitment) BelowLatestVerifiedCommitment() reactive.Event { - return c.belowLatestVerifiedCommitment -} - func (c *Commitment) Evicted() reactive.Event { return c.evicted } -func (c *Commitment) ParentAboveLatestVerifiedCommitment() reactive.Variable[bool] { - return c.parentAboveLatestVerifiedCommitment -} - -func (c *Commitment) AboveLatestVerifiedCommitment() reactive.Variable[bool] { - return c.aboveLatestVerifiedCommitment -} - func (c *Commitment) InSyncWindow() reactive.Variable[bool] { return c.inSyncWindow } @@ -185,68 +96,3 @@ func (c *Commitment) Max(latestCommitment *Commitment) *Commitment { return c } - -func (c *Commitment) registerParent(parent *Commitment) { - c.solid.InheritFrom(parent.solid) - c.parentVerified.InheritFrom(parent.verified) - c.parentAboveLatestVerifiedCommitment.InheritFrom(parent.aboveLatestVerifiedCommitment) - - // triggerIfBelowThreshold triggers the given event if the commitment's index is below the given - // threshold. We only monitor the threshold after the corresponding parent event was triggered (to minimize - // the amount of elements that listen to updates of the same chain threshold - it spreads monotonically). - triggerIfBelowThreshold := func(event func(*Commitment) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { - event(parent).OnTrigger(func() { - chainThreshold(c.Chain()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { - event(c).Trigger() - }, func(_ iotago.SlotIndex, slotIndex iotago.SlotIndex) bool { - return c.Index() < slotIndex - }) - }) - } - - triggerIfBelowThreshold((*Commitment).BelowLatestVerifiedCommitment, (*Chain).LatestVerifiedIndexVariable) - triggerIfBelowThreshold((*Commitment).BelowSyncThreshold, (*Chain).SyncThresholdVariable) - triggerIfBelowThreshold((*Commitment).BelowWarpSyncThreshold, (*Chain).WarpSyncThresholdVariable) -} - -func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { - c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { - return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) - }) - - // unsubscribe the handler on eviction to prevent memory leaks - c.evicted.OnTrigger(c.successor.OnUpdate(onSuccessorUpdated)) -} - -func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { - var unsubscribeFromParent func() - - return func(_, successor *Commitment) { - c.spawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { - switch successor { - case nil: - panic("successor may not be changed back to nil") - case c: - if spawnedChain != nil { - spawnedChain.evicted.Trigger() - } - - unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.setChain(chain) }) - default: - if spawnedChain != nil { - return spawnedChain - } - - if unsubscribeFromParent != nil { - unsubscribeFromParent() - } - - newSpawnedChain = NewChain(c) - - c.setChain(newSpawnedChain) - } - - return newSpawnedChain - }) - } -} diff --git a/pkg/protocol/chainmanagerv1/commitment_chain_properties.go b/pkg/protocol/chainmanagerv1/commitment_chain_properties.go new file mode 100644 index 000000000..e2e1b2fff --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment_chain_properties.go @@ -0,0 +1,121 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" +) + +type commitmentChainProperties struct { + commitment *Commitment + parent reactive.Variable[*Commitment] + successor reactive.Variable[*Commitment] + spawnedChain reactive.Variable[*Chain] + chain reactive.Variable[*Chain] +} + +func newCommitmentChainProperties(commitment *Commitment) *commitmentChainProperties { + c := &commitmentChainProperties{ + commitment: commitment, + parent: reactive.NewVariable[*Commitment](), + successor: reactive.NewVariable[*Commitment](), + spawnedChain: reactive.NewVariable[*Chain](), + chain: reactive.NewVariable[*Chain](), + } + + c.chain.OnUpdate(func(_, chain *Chain) { chain.RegisterCommitment(commitment) }) + + return c +} + +func (c *commitmentChainProperties) Parent() *Commitment { + return c.parent.Get() +} + +func (c *commitmentChainProperties) ParentVariable() reactive.Variable[*Commitment] { + return c.parent +} + +func (c *commitmentChainProperties) Successor() *Commitment { + return c.successor.Get() +} + +func (c *commitmentChainProperties) SuccessorVariable() reactive.Variable[*Commitment] { + return c.successor +} + +func (c *commitmentChainProperties) SpawnedChain() *Chain { + return c.spawnedChain.Get() +} + +func (c *commitmentChainProperties) SpawnedChainVariable() reactive.Variable[*Chain] { + return c.spawnedChain +} + +func (c *commitmentChainProperties) Chain() *Chain { + return c.chain.Get() +} + +func (c *commitmentChainProperties) ChainVariable() reactive.Variable[*Chain] { + return c.chain +} + +func (c *commitmentChainProperties) setParent(parent *Commitment) { + c.parent.Compute(func(currentParent *Commitment) *Commitment { + if currentParent != nil { + panic("parent may not be changed once it was set") + } + + parent.registerChild(c.commitment, c.inheritChain(parent)) + + // TODO: MOVE TO FLAGS INITIALIZATION + c.commitment.isSolid.InheritFrom(parent.isSolid) + + return parent + }) +} + +func (c *commitmentChainProperties) setChain(chain *Chain) { + c.chain.Set(chain) +} + +func (c *commitmentChainProperties) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { + c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { + return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) + }) + + unsubscribe := c.successor.OnUpdate(onSuccessorUpdated) + + c.commitment.evicted.OnTrigger(unsubscribe) +} + +func (c *commitmentChainProperties) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { + var unsubscribeFromParent func() + + return func(_, successor *Commitment) { + c.spawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { + if successor == nil { + panic("successor may not be changed back to nil") + } + + if successor == c.commitment { + if spawnedChain != nil { + spawnedChain.evicted.Trigger() + } + + unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.setChain(chain) }) + + return nil + } + + if spawnedChain != nil { + return spawnedChain + } + + if unsubscribeFromParent != nil { + unsubscribeFromParent() + } + + return NewChain(c.commitment) + }) + } +} diff --git a/pkg/protocol/chainmanagerv1/commitment_thresholds.go b/pkg/protocol/chainmanagerv1/commitment_thresholds.go new file mode 100644 index 000000000..02284a272 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment_thresholds.go @@ -0,0 +1,97 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + iotago "github.com/iotaledger/iota.go/v4" +) + +type commitmentThresholds struct { + isAboveLatestVerifiedIndex reactive.Variable[bool] + isBelowLatestVerifiedIndex reactive.Event + isBelowSyncThreshold reactive.Event + isBelowWarpSyncThreshold reactive.Event +} + +func newCommitmentThresholds(commitment *Commitment) *commitmentThresholds { + defer triggerBelowThresholdEventsIfNecessary(commitment) + + return &commitmentThresholds{ + isAboveLatestVerifiedIndex: isAboveLatestVerifiedIndex(commitment), + isBelowLatestVerifiedIndex: reactive.NewEvent(), + isBelowSyncThreshold: reactive.NewEvent(), + isBelowWarpSyncThreshold: reactive.NewEvent(), + } +} + +func (c *commitmentThresholds) IsAboveLatestVerifiedIndex() bool { + return c.isAboveLatestVerifiedIndex.Get() +} + +func (c *commitmentThresholds) IsAboveLatestVerifiedIndexVariable() reactive.Variable[bool] { + return c.isAboveLatestVerifiedIndex +} + +func (c *commitmentThresholds) IsBelowLatestVerifiedIndex() bool { + return c.isBelowLatestVerifiedIndex.Get() +} + +func (c *commitmentThresholds) IsBelowLatestVerifiedIndexEvent() reactive.Event { + return c.isBelowLatestVerifiedIndex +} + +func (c *commitmentThresholds) IsBelowSyncThreshold() bool { + return c.isBelowSyncThreshold.Get() +} + +func (c *commitmentThresholds) IsBelowSyncThresholdEvent() reactive.Event { + return c.isBelowSyncThreshold +} + +func (c *commitmentThresholds) IsBelowWarpSyncThreshold() bool { + return c.isBelowWarpSyncThreshold.Get() +} + +func (c *commitmentThresholds) IsBelowWarpSyncThresholdEvent() reactive.Event { + return c.isBelowWarpSyncThreshold +} + +func isAboveLatestVerifiedIndex(commitment *Commitment) reactive.Variable[bool] { + var ( + parentVerified = reactive.NewEvent() + + parentAboveLatestVerifiedCommitment = reactive.NewVariable[bool]() + + directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { + return parentVerified && !verified + }, parentVerified, commitment.verified) + ) + + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { + parentVerified.InheritFrom(parent.verified) + parentAboveLatestVerifiedCommitment.InheritFrom(parent.isAboveLatestVerifiedIndex) + }) + + return reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { + return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment + }, directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment) +} + +func triggerBelowThresholdEventsIfNecessary(commitment *Commitment) func() { + return commitment.parent.OnUpdate(func(_, parent *Commitment) { + // we only monitor the threshold after the corresponding parent event was triggered (to minimize the amount of + // elements that listen to updates of the same threshold - it spreads monotonically). + triggerIfBelowThreshold := func(event func(*Commitment) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { + event(parent).OnTrigger(func() { + chainThreshold(commitment.Chain()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { + event(commitment).Trigger() + }, func(_ iotago.SlotIndex, slotIndex iotago.SlotIndex) bool { + return commitment.Index() < slotIndex + }) + }) + } + + triggerIfBelowThreshold((*Commitment).IsBelowLatestVerifiedIndexEvent, (*Chain).LatestVerifiedIndexVariable) + triggerIfBelowThreshold((*Commitment).IsBelowSyncThresholdEvent, (*Chain).SyncThresholdVariable) + triggerIfBelowThreshold((*Commitment).IsBelowWarpSyncThresholdEvent, (*Chain).WarpSyncThresholdVariable) + }) +} From a1d62760740ce51699c2df58aa68ff9930cf01e6 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 29 Aug 2023 00:31:08 +0200 Subject: [PATCH 043/356] Feat: finished breaking up commitment into smaller pieces --- .../chainmanagerv1/chain_commitments.go | 6 +- pkg/protocol/chainmanagerv1/chainmanager.go | 4 +- .../chainmanagerv1/chainmanager_test.go | 7 +- pkg/protocol/chainmanagerv1/commitment.go | 87 ++++--------------- ..._chain_properties.go => commitment_dag.go} | 47 +++++----- .../commitment_dispatcher_flags.go | 30 +++++++ .../chainmanagerv1/commitment_flags.go | 57 ++++++++++++ .../chainmanagerv1/commitment_thresholds.go | 8 +- 8 files changed, 140 insertions(+), 106 deletions(-) rename pkg/protocol/chainmanagerv1/{commitment_chain_properties.go => commitment_dag.go} (61%) create mode 100644 pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go create mode 100644 pkg/protocol/chainmanagerv1/commitment_flags.go diff --git a/pkg/protocol/chainmanagerv1/chain_commitments.go b/pkg/protocol/chainmanagerv1/chain_commitments.go index 9a722894d..2ecbecac3 100644 --- a/pkg/protocol/chainmanagerv1/chain_commitments.go +++ b/pkg/protocol/chainmanagerv1/chain_commitments.go @@ -95,11 +95,11 @@ func (c *chainCommitments) LatestVerifiedCommitmentVariable() reactive.Variable[ func (c *chainCommitments) register(commitment *Commitment) (unsubscribe func()) { c.commitments.Set(commitment.Index(), commitment) - c.latestCommitment.Compute(commitment.Max) + c.latestCommitment.Compute(commitment.max) return lo.Batch( - commitment.attested.OnTrigger(func() { c.latestAttestedCommitment.Compute(commitment.Max) }), - commitment.verified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.Max) }), + commitment.isAttested.OnTrigger(func() { c.latestAttestedCommitment.Compute(commitment.max) }), + commitment.isVerified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.max) }), ) } diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 3c4e45d3d..c9ee384e2 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -111,12 +111,12 @@ func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.setParent) slotEvictedEvent.OnTrigger(func() { - commitment.Evicted().Trigger() + commitment.IsEvictedEvent().Trigger() }) c.commitmentCreated.Trigger(commitment) - commitment.spawnedChain.OnUpdate(func(_, newChain *Chain) { + commitment.SpawnedChainVariable().OnUpdate(func(_, newChain *Chain) { if newChain != nil { c.chainCreated.Trigger(newChain) } diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 5bd678828..70abd74d8 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -73,14 +73,15 @@ func TestChainManager(t *testing.T) { require.True(t, commitment2Metadata.IsSolid()) require.True(t, commitment3Metadata.IsSolid()) - commitment2Metadata.Verified().Trigger() + commitment2Metadata.IsVerifiedEvent().Trigger() require.True(t, commitment3Metadata.IsAboveLatestVerifiedIndex()) require.True(t, commitment3Metadata.IsBelowSyncThreshold()) + require.True(t, commitment3Metadata.IsSolid()) require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().LatestIndex()) require.Equal(t, uint64(3), commitment3Metadata.Chain().ClaimedWeight()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) - commitment3aMetadata.Attested().Trigger() - commitment3aMetadata.Verified().Trigger() + commitment3aMetadata.IsAttestedEvent().Trigger() + commitment3aMetadata.IsVerifiedEvent().Trigger() fmt.Println(commitment3aMetadata.Chain()) } diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 5269b65c7..3457c0ba5 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -1,97 +1,46 @@ package chainmanagerv1 import ( - "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/iota-core/pkg/model" ) type Commitment struct { *model.Commitment - isSolid reactive.Event - attested reactive.Event - verified reactive.Event - evicted reactive.Event - - *commitmentChainProperties + *commitmentDAG + *commitmentFlags *commitmentThresholds - - inSyncWindow reactive.Variable[bool] - requiresWarpSync reactive.Variable[bool] + *commitmentDispatcherFlags } func NewCommitment(commitment *model.Commitment) *Commitment { - c := &Commitment{ - Commitment: commitment, - - isSolid: reactive.NewEvent(), - attested: reactive.NewEvent(), - verified: reactive.NewEvent(), - evicted: reactive.NewEvent(), - } + c := &Commitment{Commitment: commitment} - c.commitmentChainProperties = newCommitmentChainProperties(c) + c.commitmentDAG = newCommitmentDAG(c) + c.commitmentFlags = newCommitmentFlags(c) c.commitmentThresholds = newCommitmentThresholds(c) - - c.inSyncWindow = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { - return belowSyncThreshold && aboveLatestVerifiedCommitment - }, c.isBelowSyncThreshold, c.isAboveLatestVerifiedIndex) - - c.requiresWarpSync = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { - return inSyncWindow && belowWarpSyncThreshold - }, c.inSyncWindow, c.isBelowWarpSyncThreshold) + c.commitmentDispatcherFlags = newCommitmentDispatcherFlags(c) return c } func NewRootCommitment(commitment *model.Commitment) *Commitment { commitmentMetadata := NewCommitment(commitment) - commitmentMetadata.IsSolidEvent().Trigger() - commitmentMetadata.Verified().Trigger() - commitmentMetadata.IsBelowSyncThresholdEvent().Trigger() - commitmentMetadata.IsBelowWarpSyncThresholdEvent().Trigger() - commitmentMetadata.IsBelowLatestVerifiedIndexEvent().Trigger() - commitmentMetadata.Evicted().Trigger() - return commitmentMetadata -} - -func (c *Commitment) IsSolid() bool { - return c.isSolid.WasTriggered() -} - -func (c *Commitment) IsSolidEvent() reactive.Event { - return c.isSolid -} + commitmentMetadata.isSolid.Set(true) + commitmentMetadata.isVerified.Set(true) + commitmentMetadata.isBelowSyncThreshold.Set(true) + commitmentMetadata.isBelowWarpSyncThreshold.Set(true) + commitmentMetadata.isBelowLatestVerifiedIndex.Set(true) + commitmentMetadata.isEvicted.Set(false) -func (c *Commitment) Attested() reactive.Event { - return c.attested -} - -func (c *Commitment) Verified() reactive.Event { - return c.verified -} - -func (c *Commitment) Evicted() reactive.Event { - return c.evicted -} - -func (c *Commitment) InSyncWindow() reactive.Variable[bool] { - return c.inSyncWindow -} - -func (c *Commitment) RequiresWarpSync() reactive.Variable[bool] { - return c.requiresWarpSync -} - -func (c *Commitment) ChainSuccessor() reactive.Variable[*Commitment] { - return c.successor + return commitmentMetadata } -// Max compares the given commitment with the current one and returns the one with the higher index. -func (c *Commitment) Max(latestCommitment *Commitment) *Commitment { - if c == nil || latestCommitment != nil && latestCommitment.Index() >= c.Index() { - return latestCommitment +// max compares the commitment with the given other commitment and returns the one with the higher index. +func (c *Commitment) max(other *Commitment) *Commitment { + if c == nil || other != nil && other.Index() >= c.Index() { + return other } return c diff --git a/pkg/protocol/chainmanagerv1/commitment_chain_properties.go b/pkg/protocol/chainmanagerv1/commitment_dag.go similarity index 61% rename from pkg/protocol/chainmanagerv1/commitment_chain_properties.go rename to pkg/protocol/chainmanagerv1/commitment_dag.go index e2e1b2fff..18e8b007a 100644 --- a/pkg/protocol/chainmanagerv1/commitment_chain_properties.go +++ b/pkg/protocol/chainmanagerv1/commitment_dag.go @@ -5,7 +5,7 @@ import ( "github.com/iotaledger/hive.go/lo" ) -type commitmentChainProperties struct { +type commitmentDAG struct { commitment *Commitment parent reactive.Variable[*Commitment] successor reactive.Variable[*Commitment] @@ -13,8 +13,8 @@ type commitmentChainProperties struct { chain reactive.Variable[*Chain] } -func newCommitmentChainProperties(commitment *Commitment) *commitmentChainProperties { - c := &commitmentChainProperties{ +func newCommitmentDAG(commitment *Commitment) *commitmentDAG { + c := &commitmentDAG{ commitment: commitment, parent: reactive.NewVariable[*Commitment](), successor: reactive.NewVariable[*Commitment](), @@ -27,39 +27,39 @@ func newCommitmentChainProperties(commitment *Commitment) *commitmentChainProper return c } -func (c *commitmentChainProperties) Parent() *Commitment { +func (c *commitmentDAG) Parent() *Commitment { return c.parent.Get() } -func (c *commitmentChainProperties) ParentVariable() reactive.Variable[*Commitment] { - return c.parent +func (c *commitmentDAG) Successor() *Commitment { + return c.successor.Get() } -func (c *commitmentChainProperties) Successor() *Commitment { - return c.successor.Get() +func (c *commitmentDAG) SpawnedChain() *Chain { + return c.spawnedChain.Get() } -func (c *commitmentChainProperties) SuccessorVariable() reactive.Variable[*Commitment] { - return c.successor +func (c *commitmentDAG) Chain() *Chain { + return c.chain.Get() } -func (c *commitmentChainProperties) SpawnedChain() *Chain { - return c.spawnedChain.Get() +func (c *commitmentDAG) ParentVariable() reactive.Variable[*Commitment] { + return c.parent } -func (c *commitmentChainProperties) SpawnedChainVariable() reactive.Variable[*Chain] { - return c.spawnedChain +func (c *commitmentDAG) SuccessorVariable() reactive.Variable[*Commitment] { + return c.successor } -func (c *commitmentChainProperties) Chain() *Chain { - return c.chain.Get() +func (c *commitmentDAG) SpawnedChainVariable() reactive.Variable[*Chain] { + return c.spawnedChain } -func (c *commitmentChainProperties) ChainVariable() reactive.Variable[*Chain] { +func (c *commitmentDAG) ChainVariable() reactive.Variable[*Chain] { return c.chain } -func (c *commitmentChainProperties) setParent(parent *Commitment) { +func (c *commitmentDAG) setParent(parent *Commitment) { c.parent.Compute(func(currentParent *Commitment) *Commitment { if currentParent != nil { panic("parent may not be changed once it was set") @@ -67,28 +67,25 @@ func (c *commitmentChainProperties) setParent(parent *Commitment) { parent.registerChild(c.commitment, c.inheritChain(parent)) - // TODO: MOVE TO FLAGS INITIALIZATION - c.commitment.isSolid.InheritFrom(parent.isSolid) - return parent }) } -func (c *commitmentChainProperties) setChain(chain *Chain) { +func (c *commitmentDAG) setChain(chain *Chain) { c.chain.Set(chain) } -func (c *commitmentChainProperties) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { +func (c *commitmentDAG) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) }) unsubscribe := c.successor.OnUpdate(onSuccessorUpdated) - c.commitment.evicted.OnTrigger(unsubscribe) + c.commitment.isEvicted.OnTrigger(unsubscribe) } -func (c *commitmentChainProperties) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { +func (c *commitmentDAG) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { var unsubscribeFromParent func() return func(_, successor *Commitment) { diff --git a/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go b/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go new file mode 100644 index 000000000..f58092dc9 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go @@ -0,0 +1,30 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +type commitmentDispatcherFlags struct { + inSyncWindow reactive.Variable[bool] + requiresWarpSync reactive.Variable[bool] +} + +func newCommitmentDispatcherFlags(commitment *Commitment) *commitmentDispatcherFlags { + c := &commitmentDispatcherFlags{} + + c.inSyncWindow = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { + return belowSyncThreshold && aboveLatestVerifiedCommitment + }, commitment.isBelowSyncThreshold, commitment.isAboveLatestVerifiedIndex) + + c.requiresWarpSync = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { + return inSyncWindow && belowWarpSyncThreshold + }, c.inSyncWindow, commitment.isBelowWarpSyncThreshold) + + return c +} + +func (c *commitmentDispatcherFlags) InSyncWindow() reactive.Variable[bool] { + return c.inSyncWindow +} + +func (c *commitmentDispatcherFlags) RequiresWarpSync() reactive.Variable[bool] { + return c.requiresWarpSync +} diff --git a/pkg/protocol/chainmanagerv1/commitment_flags.go b/pkg/protocol/chainmanagerv1/commitment_flags.go new file mode 100644 index 000000000..d60e357f0 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment_flags.go @@ -0,0 +1,57 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +type commitmentFlags struct { + isSolid reactive.Event + isAttested reactive.Event + isVerified reactive.Event + isEvicted reactive.Event +} + +func newCommitmentFlags(commitment *Commitment) *commitmentFlags { + c := &commitmentFlags{ + isSolid: reactive.NewEvent(), + isAttested: reactive.NewEvent(), + isVerified: reactive.NewEvent(), + isEvicted: reactive.NewEvent(), + } + + commitment.ParentVariable().OnUpdate(func(_, parent *Commitment) { + c.isSolid.InheritFrom(parent.isSolid) + }) + + return c +} + +func (c *commitmentFlags) IsSolid() bool { + return c.isSolid.WasTriggered() +} + +func (c *commitmentFlags) IsSolidEvent() reactive.Event { + return c.isSolid +} + +func (c *commitmentFlags) IsAttested() bool { + return c.isAttested.WasTriggered() +} + +func (c *commitmentFlags) IsAttestedEvent() reactive.Event { + return c.isAttested +} + +func (c *commitmentFlags) IsVerified() bool { + return c.isVerified.WasTriggered() +} + +func (c *commitmentFlags) IsVerifiedEvent() reactive.Event { + return c.isVerified +} + +func (c *commitmentFlags) IsEvicted() bool { + return c.isEvicted.WasTriggered() +} + +func (c *commitmentFlags) IsEvictedEvent() reactive.Event { + return c.isEvicted +} diff --git a/pkg/protocol/chainmanagerv1/commitment_thresholds.go b/pkg/protocol/chainmanagerv1/commitment_thresholds.go index 02284a272..fa7c17a4a 100644 --- a/pkg/protocol/chainmanagerv1/commitment_thresholds.go +++ b/pkg/protocol/chainmanagerv1/commitment_thresholds.go @@ -63,11 +63,11 @@ func isAboveLatestVerifiedIndex(commitment *Commitment) reactive.Variable[bool] directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { return parentVerified && !verified - }, parentVerified, commitment.verified) + }, parentVerified, commitment.isVerified) ) - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { - parentVerified.InheritFrom(parent.verified) + commitment.ParentVariable().OnUpdateOnce(func(_, parent *Commitment) { + parentVerified.InheritFrom(parent.isVerified) parentAboveLatestVerifiedCommitment.InheritFrom(parent.isAboveLatestVerifiedIndex) }) @@ -77,7 +77,7 @@ func isAboveLatestVerifiedIndex(commitment *Commitment) reactive.Variable[bool] } func triggerBelowThresholdEventsIfNecessary(commitment *Commitment) func() { - return commitment.parent.OnUpdate(func(_, parent *Commitment) { + return commitment.ParentVariable().OnUpdate(func(_, parent *Commitment) { // we only monitor the threshold after the corresponding parent event was triggered (to minimize the amount of // elements that listen to updates of the same threshold - it spreads monotonically). triggerIfBelowThreshold := func(event func(*Commitment) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { From 3408e9432f9a5dd9aafa17ed4506a75630095f91 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 29 Aug 2023 00:44:16 +0200 Subject: [PATCH 044/356] Refactor: refactored more code --- pkg/protocol/chainmanagerv1/chain.go | 2 +- pkg/protocol/chainmanagerv1/chain_commitments.go | 4 ++-- pkg/protocol/chainmanagerv1/commitment_dag.go | 10 +++------- 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 55cffbced..826e33d7a 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -35,7 +35,7 @@ func NewChain(root *Commitment) *Chain { c.chainThresholds = newChainThresholds(c) // associate the root commitment with its chain - root.setChain(c) + root.chain.Set(c) return c } diff --git a/pkg/protocol/chainmanagerv1/chain_commitments.go b/pkg/protocol/chainmanagerv1/chain_commitments.go index 2ecbecac3..130f5ae4c 100644 --- a/pkg/protocol/chainmanagerv1/chain_commitments.go +++ b/pkg/protocol/chainmanagerv1/chain_commitments.go @@ -80,8 +80,8 @@ func (c *chainCommitments) LatestAttestedCommitmentVariable() reactive.Variable[ return c.latestAttestedCommitment } -// LatestVerified returns the latest verified Commitment object in this collection. -func (c *chainCommitments) LatestVerified() *Commitment { +// LatestVerifiedCommitment returns the latest verified Commitment object in this collection. +func (c *chainCommitments) LatestVerifiedCommitment() *Commitment { return c.latestVerifiedCommitment.Get() } diff --git a/pkg/protocol/chainmanagerv1/commitment_dag.go b/pkg/protocol/chainmanagerv1/commitment_dag.go index 18e8b007a..970712c97 100644 --- a/pkg/protocol/chainmanagerv1/commitment_dag.go +++ b/pkg/protocol/chainmanagerv1/commitment_dag.go @@ -65,16 +65,12 @@ func (c *commitmentDAG) setParent(parent *Commitment) { panic("parent may not be changed once it was set") } - parent.registerChild(c.commitment, c.inheritChain(parent)) + parent.registerChild(c.commitment, c.createChainUpdater(parent)) return parent }) } -func (c *commitmentDAG) setChain(chain *Chain) { - c.chain.Set(chain) -} - func (c *commitmentDAG) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) @@ -85,7 +81,7 @@ func (c *commitmentDAG) registerChild(newChild *Commitment, onSuccessorUpdated f c.commitment.isEvicted.OnTrigger(unsubscribe) } -func (c *commitmentDAG) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { +func (c *commitmentDAG) createChainUpdater(parent *Commitment) func(*Commitment, *Commitment) { var unsubscribeFromParent func() return func(_, successor *Commitment) { @@ -99,7 +95,7 @@ func (c *commitmentDAG) inheritChain(parent *Commitment) func(*Commitment, *Comm spawnedChain.evicted.Trigger() } - unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.setChain(chain) }) + unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) return nil } From 974e5e33ff5bf2c2802f39fd1e4a111035a16486 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 29 Aug 2023 11:45:24 +0200 Subject: [PATCH 045/356] Feat: use private var internally --- pkg/protocol/chainmanagerv1/chain_thresholds.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain_thresholds.go b/pkg/protocol/chainmanagerv1/chain_thresholds.go index f83c3ca37..eb7395954 100644 --- a/pkg/protocol/chainmanagerv1/chain_thresholds.go +++ b/pkg/protocol/chainmanagerv1/chain_thresholds.go @@ -27,9 +27,9 @@ type chainThresholds struct { // newChainThresholds creates a new chainThresholds instance. func newChainThresholds(chain *Chain) *chainThresholds { c := &chainThresholds{ - latestIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.LatestCommitmentVariable()), - latestAttestedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.LatestAttestedCommitmentVariable()), - latestVerifiedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.LatestVerifiedCommitmentVariable()), + latestIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.latestCommitment), + latestAttestedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.latestAttestedCommitment), + latestVerifiedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.latestVerifiedCommitment), } c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestIndex iotago.SlotIndex) iotago.SlotIndex { From d20ea467488504282242fda9a41712eb70333462 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 29 Aug 2023 23:00:49 +0200 Subject: [PATCH 046/356] Feat: remove extraneous getters and use private properties internally --- .../chainmanagerv1/chain_commitments.go | 4 +- pkg/protocol/chainmanagerv1/chain_weights.go | 6 +-- pkg/protocol/chainmanagerv1/chainmanager.go | 2 +- .../chainmanagerv1/chainmanager_test.go | 20 ++++---- pkg/protocol/chainmanagerv1/commitment.go | 6 +-- pkg/protocol/chainmanagerv1/commitment_dag.go | 2 +- .../chainmanagerv1/commitment_flags.go | 50 +++++++------------ .../chainmanagerv1/commitment_thresholds.go | 4 +- 8 files changed, 39 insertions(+), 55 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain_commitments.go b/pkg/protocol/chainmanagerv1/chain_commitments.go index 130f5ae4c..d515e9f27 100644 --- a/pkg/protocol/chainmanagerv1/chain_commitments.go +++ b/pkg/protocol/chainmanagerv1/chain_commitments.go @@ -98,8 +98,8 @@ func (c *chainCommitments) register(commitment *Commitment) (unsubscribe func()) c.latestCommitment.Compute(commitment.max) return lo.Batch( - commitment.isAttested.OnTrigger(func() { c.latestAttestedCommitment.Compute(commitment.max) }), - commitment.isVerified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.max) }), + commitment.attested.OnTrigger(func() { c.latestAttestedCommitment.Compute(commitment.max) }), + commitment.verified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.max) }), ) } diff --git a/pkg/protocol/chainmanagerv1/chain_weights.go b/pkg/protocol/chainmanagerv1/chain_weights.go index c271473ad..8c2efdd2e 100644 --- a/pkg/protocol/chainmanagerv1/chain_weights.go +++ b/pkg/protocol/chainmanagerv1/chain_weights.go @@ -23,9 +23,9 @@ type chainWeights struct { func newChainWeights(chain *Chain) *chainWeights { return &chainWeights{ chain: chain, - claimed: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.LatestCommitmentVariable()), - attested: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.LatestAttestedCommitmentVariable()), - verified: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.LatestVerifiedCommitmentVariable()), + claimed: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestCommitment), + attested: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestAttestedCommitment), + verified: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestVerifiedCommitment), } } diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index c9ee384e2..85ec7d14d 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -111,7 +111,7 @@ func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.setParent) slotEvictedEvent.OnTrigger(func() { - commitment.IsEvictedEvent().Trigger() + commitment.evicted.Trigger() }) c.commitmentCreated.Trigger(commitment) diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 70abd74d8..592120793 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -62,26 +62,26 @@ func TestChainManager(t *testing.T) { ), testAPI)) commitment1Metadata := chainManager.ProcessCommitment(commitment1) - require.True(t, commitment1Metadata.IsSolid()) + require.True(t, commitment1Metadata.Solid().WasTriggered()) commitment3Metadata := chainManager.ProcessCommitment(commitment3) - require.True(t, commitment1Metadata.IsSolid()) - require.False(t, commitment3Metadata.IsSolid()) + require.True(t, commitment1Metadata.Solid().WasTriggered()) + require.False(t, commitment3Metadata.Solid().WasTriggered()) commitment2Metadata := chainManager.ProcessCommitment(commitment2) - require.True(t, commitment1Metadata.IsSolid()) - require.True(t, commitment2Metadata.IsSolid()) - require.True(t, commitment3Metadata.IsSolid()) + require.True(t, commitment1Metadata.Solid().WasTriggered()) + require.True(t, commitment2Metadata.Solid().WasTriggered()) + require.True(t, commitment3Metadata.Solid().WasTriggered()) - commitment2Metadata.IsVerifiedEvent().Trigger() + commitment2Metadata.Verified().Trigger() require.True(t, commitment3Metadata.IsAboveLatestVerifiedIndex()) require.True(t, commitment3Metadata.IsBelowSyncThreshold()) - require.True(t, commitment3Metadata.IsSolid()) + require.True(t, commitment3Metadata.Solid().WasTriggered()) require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().LatestIndex()) require.Equal(t, uint64(3), commitment3Metadata.Chain().ClaimedWeight()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) - commitment3aMetadata.IsAttestedEvent().Trigger() - commitment3aMetadata.IsVerifiedEvent().Trigger() + commitment3aMetadata.Attested().Trigger() + commitment3aMetadata.Verified().Trigger() fmt.Println(commitment3aMetadata.Chain()) } diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 3457c0ba5..c5cec8b75 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -27,12 +27,12 @@ func NewCommitment(commitment *model.Commitment) *Commitment { func NewRootCommitment(commitment *model.Commitment) *Commitment { commitmentMetadata := NewCommitment(commitment) - commitmentMetadata.isSolid.Set(true) - commitmentMetadata.isVerified.Set(true) + commitmentMetadata.solid.Set(true) + commitmentMetadata.verified.Set(true) commitmentMetadata.isBelowSyncThreshold.Set(true) commitmentMetadata.isBelowWarpSyncThreshold.Set(true) commitmentMetadata.isBelowLatestVerifiedIndex.Set(true) - commitmentMetadata.isEvicted.Set(false) + commitmentMetadata.evicted.Set(false) return commitmentMetadata } diff --git a/pkg/protocol/chainmanagerv1/commitment_dag.go b/pkg/protocol/chainmanagerv1/commitment_dag.go index 970712c97..ff4c0bbd1 100644 --- a/pkg/protocol/chainmanagerv1/commitment_dag.go +++ b/pkg/protocol/chainmanagerv1/commitment_dag.go @@ -78,7 +78,7 @@ func (c *commitmentDAG) registerChild(newChild *Commitment, onSuccessorUpdated f unsubscribe := c.successor.OnUpdate(onSuccessorUpdated) - c.commitment.isEvicted.OnTrigger(unsubscribe) + c.commitment.evicted.OnTrigger(unsubscribe) } func (c *commitmentDAG) createChainUpdater(parent *Commitment) func(*Commitment, *Commitment) { diff --git a/pkg/protocol/chainmanagerv1/commitment_flags.go b/pkg/protocol/chainmanagerv1/commitment_flags.go index d60e357f0..94cfabcb1 100644 --- a/pkg/protocol/chainmanagerv1/commitment_flags.go +++ b/pkg/protocol/chainmanagerv1/commitment_flags.go @@ -3,55 +3,39 @@ package chainmanagerv1 import "github.com/iotaledger/hive.go/ds/reactive" type commitmentFlags struct { - isSolid reactive.Event - isAttested reactive.Event - isVerified reactive.Event - isEvicted reactive.Event + solid reactive.Event + attested reactive.Event + verified reactive.Event + evicted reactive.Event } func newCommitmentFlags(commitment *Commitment) *commitmentFlags { c := &commitmentFlags{ - isSolid: reactive.NewEvent(), - isAttested: reactive.NewEvent(), - isVerified: reactive.NewEvent(), - isEvicted: reactive.NewEvent(), + solid: reactive.NewEvent(), + attested: reactive.NewEvent(), + verified: reactive.NewEvent(), + evicted: reactive.NewEvent(), } commitment.ParentVariable().OnUpdate(func(_, parent *Commitment) { - c.isSolid.InheritFrom(parent.isSolid) + c.solid.InheritFrom(parent.solid) }) return c } -func (c *commitmentFlags) IsSolid() bool { - return c.isSolid.WasTriggered() +func (c *commitmentFlags) Solid() reactive.Event { + return c.solid } -func (c *commitmentFlags) IsSolidEvent() reactive.Event { - return c.isSolid +func (c *commitmentFlags) Attested() reactive.Event { + return c.attested } -func (c *commitmentFlags) IsAttested() bool { - return c.isAttested.WasTriggered() +func (c *commitmentFlags) Verified() reactive.Event { + return c.verified } -func (c *commitmentFlags) IsAttestedEvent() reactive.Event { - return c.isAttested -} - -func (c *commitmentFlags) IsVerified() bool { - return c.isVerified.WasTriggered() -} - -func (c *commitmentFlags) IsVerifiedEvent() reactive.Event { - return c.isVerified -} - -func (c *commitmentFlags) IsEvicted() bool { - return c.isEvicted.WasTriggered() -} - -func (c *commitmentFlags) IsEvictedEvent() reactive.Event { - return c.isEvicted +func (c *commitmentFlags) Evicted() reactive.Event { + return c.evicted } diff --git a/pkg/protocol/chainmanagerv1/commitment_thresholds.go b/pkg/protocol/chainmanagerv1/commitment_thresholds.go index fa7c17a4a..ea93a2bfb 100644 --- a/pkg/protocol/chainmanagerv1/commitment_thresholds.go +++ b/pkg/protocol/chainmanagerv1/commitment_thresholds.go @@ -63,11 +63,11 @@ func isAboveLatestVerifiedIndex(commitment *Commitment) reactive.Variable[bool] directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { return parentVerified && !verified - }, parentVerified, commitment.isVerified) + }, parentVerified, commitment.verified) ) commitment.ParentVariable().OnUpdateOnce(func(_, parent *Commitment) { - parentVerified.InheritFrom(parent.isVerified) + parentVerified.InheritFrom(parent.verified) parentAboveLatestVerifiedCommitment.InheritFrom(parent.isAboveLatestVerifiedIndex) }) From 608407a6769189213976da3381e6c4fac02548f7 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 29 Aug 2023 23:05:28 +0200 Subject: [PATCH 047/356] Refactor: removed more useless getters --- .../chainmanagerv1/chain_commitments.go | 27 +++++-------------- 1 file changed, 6 insertions(+), 21 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain_commitments.go b/pkg/protocol/chainmanagerv1/chain_commitments.go index d515e9f27..1a313bef3 100644 --- a/pkg/protocol/chainmanagerv1/chain_commitments.go +++ b/pkg/protocol/chainmanagerv1/chain_commitments.go @@ -58,36 +58,21 @@ func (c *chainCommitments) Commitment(index iotago.SlotIndex) (commitment *Commi return nil, false } -// LatestCommitment returns the latest Commitment object in this collection. -func (c *chainCommitments) LatestCommitment() *Commitment { - return c.latestCommitment.Get() -} - -// LatestCommitmentVariable returns a reactive variable that always contains the latest Commitment object in this +// LatestCommitment returns a reactive variable that always contains the latest Commitment object in this // collection. -func (c *chainCommitments) LatestCommitmentVariable() reactive.Variable[*Commitment] { +func (c *chainCommitments) LatestCommitment() reactive.Variable[*Commitment] { return c.latestCommitment } -// LatestAttestedCommitment returns the latest attested Commitment object in this collection. -func (c *chainCommitments) LatestAttestedCommitment() *Commitment { - return c.latestAttestedCommitment.Get() -} - -// LatestAttestedCommitmentVariable returns a reactive variable that always contains the latest attested Commitment object +// LatestAttestedCommitment returns a reactive variable that always contains the latest attested Commitment object // in this collection. -func (c *chainCommitments) LatestAttestedCommitmentVariable() reactive.Variable[*Commitment] { +func (c *chainCommitments) LatestAttestedCommitment() reactive.Variable[*Commitment] { return c.latestAttestedCommitment } -// LatestVerifiedCommitment returns the latest verified Commitment object in this collection. -func (c *chainCommitments) LatestVerifiedCommitment() *Commitment { - return c.latestVerifiedCommitment.Get() -} - -// LatestVerifiedCommitmentVariable returns a reactive variable that always contains the latest verified Commitment object +// LatestVerifiedCommitment returns a reactive variable that always contains the latest verified Commitment object // in this collection. -func (c *chainCommitments) LatestVerifiedCommitmentVariable() reactive.Variable[*Commitment] { +func (c *chainCommitments) LatestVerifiedCommitment() reactive.Variable[*Commitment] { return c.latestVerifiedCommitment } From 24007dc3acf617142162a3496c0f000fca34210e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 29 Aug 2023 23:21:27 +0200 Subject: [PATCH 048/356] Refactor: removed unnecessary getters --- .../chainmanagerv1/chain_thresholds.go | 46 ++++--------------- .../chainmanagerv1/chainmanager_test.go | 2 +- .../chainmanagerv1/commitment_thresholds.go | 6 +-- 3 files changed, 14 insertions(+), 40 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain_thresholds.go b/pkg/protocol/chainmanagerv1/chain_thresholds.go index eb7395954..7f6453e04 100644 --- a/pkg/protocol/chainmanagerv1/chain_thresholds.go +++ b/pkg/protocol/chainmanagerv1/chain_thresholds.go @@ -43,58 +43,32 @@ func newChainThresholds(chain *Chain) *chainThresholds { return c } -// LatestIndex returns the index of the latest Commitment object in the chain. -func (c *chainThresholds) LatestIndex() iotago.SlotIndex { - return c.latestIndex.Get() -} - -// LatestIndexVariable returns a reactive variable that always contains the index of the latest Commitment +// LatestIndex returns a reactive variable that always contains the index of the latest Commitment // object in the chain. -func (c *chainThresholds) LatestIndexVariable() reactive.Variable[iotago.SlotIndex] { +func (c *chainThresholds) LatestIndex() reactive.Variable[iotago.SlotIndex] { return c.latestIndex } -// LatestAttestedIndex returns the index of the latest attested Commitment object in the chain. -func (c *chainThresholds) LatestAttestedIndex() iotago.SlotIndex { - return c.latestAttestedIndex.Get() -} - -// LatestAttestedIndexVariable returns a reactive variable that contains the index of the latest attested +// LatestAttestedIndex returns a reactive variable that contains the index of the latest attested // Commitment object in the chain. -func (c *chainThresholds) LatestAttestedIndexVariable() reactive.Variable[iotago.SlotIndex] { +func (c *chainThresholds) LatestAttestedIndex() reactive.Variable[iotago.SlotIndex] { return c.latestAttestedIndex } -// LatestVerifiedIndex returns the index of the latest verified Commitment object in the chain. -func (c *chainThresholds) LatestVerifiedIndex() iotago.SlotIndex { - return c.latestVerifiedIndex.Get() -} - -// LatestVerifiedIndexVariable returns a reactive variable that contains the index of the latest verified +// LatestVerifiedIndex returns a reactive variable that contains the index of the latest verified // Commitment object in the chain. -func (c *chainThresholds) LatestVerifiedIndexVariable() reactive.Variable[iotago.SlotIndex] { +func (c *chainThresholds) LatestVerifiedIndex() reactive.Variable[iotago.SlotIndex] { return c.latestVerifiedIndex } -// SyncThreshold returns the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). -func (c *chainThresholds) SyncThreshold() iotago.SlotIndex { - return c.syncThreshold.Get() -} - -// SyncThresholdVariable returns a reactive variable that contains the upper bound for slots that are being fed to the +// SyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the // engine (to prevent memory exhaustion). -func (c *chainThresholds) SyncThresholdVariable() reactive.Variable[iotago.SlotIndex] { +func (c *chainThresholds) SyncThreshold() reactive.Variable[iotago.SlotIndex] { return c.syncThreshold } -// WarpSyncThreshold returns an offset from latest index where the warp sync process starts (we don't request slots that -// we are about to commit ourselves). -func (c *chainThresholds) WarpSyncThreshold() iotago.SlotIndex { - return c.warpSyncThreshold.Get() -} - -// WarpSyncThresholdVariable returns a reactive variable that contains an offset from latest index where the warp sync +// WarpSyncThreshold returns a reactive variable that contains an offset from latest index where the warp sync // process starts (we don't request slots that we are about to commit ourselves). -func (c *chainThresholds) WarpSyncThresholdVariable() reactive.Variable[iotago.SlotIndex] { +func (c *chainThresholds) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { return c.warpSyncThreshold } diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 592120793..c7fb5e72c 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -77,7 +77,7 @@ func TestChainManager(t *testing.T) { require.True(t, commitment3Metadata.IsAboveLatestVerifiedIndex()) require.True(t, commitment3Metadata.IsBelowSyncThreshold()) require.True(t, commitment3Metadata.Solid().WasTriggered()) - require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().LatestIndex()) + require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().LatestIndex().Get()) require.Equal(t, uint64(3), commitment3Metadata.Chain().ClaimedWeight()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) diff --git a/pkg/protocol/chainmanagerv1/commitment_thresholds.go b/pkg/protocol/chainmanagerv1/commitment_thresholds.go index ea93a2bfb..ef778b0b2 100644 --- a/pkg/protocol/chainmanagerv1/commitment_thresholds.go +++ b/pkg/protocol/chainmanagerv1/commitment_thresholds.go @@ -90,8 +90,8 @@ func triggerBelowThresholdEventsIfNecessary(commitment *Commitment) func() { }) } - triggerIfBelowThreshold((*Commitment).IsBelowLatestVerifiedIndexEvent, (*Chain).LatestVerifiedIndexVariable) - triggerIfBelowThreshold((*Commitment).IsBelowSyncThresholdEvent, (*Chain).SyncThresholdVariable) - triggerIfBelowThreshold((*Commitment).IsBelowWarpSyncThresholdEvent, (*Chain).WarpSyncThresholdVariable) + triggerIfBelowThreshold((*Commitment).IsBelowLatestVerifiedIndexEvent, (*Chain).LatestVerifiedIndex) + triggerIfBelowThreshold((*Commitment).IsBelowSyncThresholdEvent, (*Chain).SyncThreshold) + triggerIfBelowThreshold((*Commitment).IsBelowWarpSyncThresholdEvent, (*Chain).WarpSyncThreshold) }) } From 6a66aa11417f750d9b7a482a313bd47f91d14b8c Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 29 Aug 2023 23:34:29 +0200 Subject: [PATCH 049/356] Refactor: removed unnecessary getter --- pkg/protocol/chainmanagerv1/chain_weights.go | 51 +++++++------------ pkg/protocol/chainmanagerv1/chainmanager.go | 8 +-- .../chainmanagerv1/chainmanager_test.go | 2 +- 3 files changed, 23 insertions(+), 38 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain_weights.go b/pkg/protocol/chainmanagerv1/chain_weights.go index 8c2efdd2e..3f47ac3c1 100644 --- a/pkg/protocol/chainmanagerv1/chain_weights.go +++ b/pkg/protocol/chainmanagerv1/chain_weights.go @@ -10,54 +10,39 @@ type chainWeights struct { chain *Chain // claimed contains the total cumulative weight of the chain that is claimed by the latest commitments. - claimed reactive.Variable[uint64] + claimedWeight reactive.Variable[uint64] - // attested contains the total cumulative weight of the chain that we received attestations for. - attested reactive.Variable[uint64] + // attestedWeight contains the total cumulative weight of the chain that we received attestations for. + attestedWeight reactive.Variable[uint64] - // verified contains the total cumulative weight of the chain that we verified ourselves. - verified reactive.Variable[uint64] + // verifiedWeight contains the total cumulative weight of the chain that we verified ourselves. + verifiedWeight reactive.Variable[uint64] } // newChainWeights creates a new chainWeights for the given chain. func newChainWeights(chain *Chain) *chainWeights { return &chainWeights{ - chain: chain, - claimed: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestCommitment), - attested: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestAttestedCommitment), - verified: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestVerifiedCommitment), + chain: chain, + claimedWeight: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestCommitment), + attestedWeight: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestAttestedCommitment), + verifiedWeight: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestVerifiedCommitment), } } -// ClaimedWeight returns the total cumulative weight of the chain that is claimed by the latest commitments. -func (c *chainWeights) ClaimedWeight() uint64 { - return c.claimed.Get() -} - -// ClaimedWeightVariable returns a reactive variable that tracks the total cumulative weight of the chain that is claimed by +// ClaimedWeight returns a reactive variable that tracks the total cumulative weight of the chain that is claimed by // the latest commitments. -func (c *chainWeights) ClaimedWeightVariable() reactive.Variable[uint64] { - return c.claimed -} - -// AttestedWeight returns the total cumulative weight of the chain that we received attestations for. -func (c *chainWeights) AttestedWeight() uint64 { - return c.attested.Get() +func (c *chainWeights) ClaimedWeight() reactive.Variable[uint64] { + return c.claimedWeight } -// AttestedWeightVariable returns a reactive variable that tracks the total cumulative weight of the chain that we received +// AttestedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we received // attestations for. -func (c *chainWeights) AttestedWeightVariable() reactive.Variable[uint64] { - return c.attested -} - -// VerifiedWeight returns the total cumulative weight of the chain that we verified ourselves. -func (c *chainWeights) VerifiedWeight() uint64 { - return c.verified.Get() +func (c *chainWeights) AttestedWeight() reactive.Variable[uint64] { + return c.attestedWeight } -// VerifiedWeightVariable returns a reactive variable that tracks the total cumulative weight of the chain that we verified +// VerifiedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we verified // ourselves. -func (c *chainWeights) VerifiedWeightVariable() reactive.Variable[uint64] { - return c.verified +func (c *chainWeights) VerifiedWeight() reactive.Variable[uint64] { + return c.verifiedWeight } diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 85ec7d14d..e87f0f4c5 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -45,9 +45,9 @@ func NewChainManager(rootCommitment *model.Commitment) *ChainManager { } c.OnChainCreated(func(chain *Chain) { - c.selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*Chain).ClaimedWeightVariable) - c.selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*Chain).AttestedWeightVariable) - c.selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*Chain).VerifiedWeightVariable) + c.selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) + c.selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) + c.selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*Chain).VerifiedWeight) }) return c @@ -93,7 +93,7 @@ func (c *ChainManager) HeaviestVerifiedCandidateChain() reactive.Variable[*Chain func (c *ChainManager) selectHeaviestCandidate(variable reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= c.MainChain().VerifiedWeight() { + if newChainWeight <= c.MainChain().verifiedWeight.Get() { return } diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index c7fb5e72c..0bfc189c2 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -78,7 +78,7 @@ func TestChainManager(t *testing.T) { require.True(t, commitment3Metadata.IsBelowSyncThreshold()) require.True(t, commitment3Metadata.Solid().WasTriggered()) require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().LatestIndex().Get()) - require.Equal(t, uint64(3), commitment3Metadata.Chain().ClaimedWeight()) + require.Equal(t, uint64(3), commitment3Metadata.Chain().ClaimedWeight().Get()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) commitment3aMetadata.Attested().Trigger() From f1d702ee01a97cb6742118ba535335eddbb91bca Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 00:00:10 +0200 Subject: [PATCH 050/356] Refactor: removed more unused code --- pkg/protocol/chainmanagerv1/chain.go | 10 ++-- .../{chain_commitments.go => chain_dag.go} | 47 +++++++++---------- pkg/protocol/chainmanagerv1/chain_weights.go | 2 +- pkg/protocol/chainmanagerv1/chainmanager.go | 2 +- .../chainmanagerv1/chainmanager_test.go | 6 +-- pkg/protocol/chainmanagerv1/commitment_dag.go | 26 ++-------- .../chainmanagerv1/commitment_flags.go | 2 +- .../chainmanagerv1/commitment_thresholds.go | 6 +-- 8 files changed, 40 insertions(+), 61 deletions(-) rename pkg/protocol/chainmanagerv1/{chain_commitments.go => chain_dag.go} (69%) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 826e33d7a..c37a5523a 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -12,8 +12,8 @@ type Chain struct { // evicted is an event that gets triggered when the chain gets evicted. evicted reactive.Event - // chainCommitments is a reactive collection of Commitment objects that belong to the same chain. - *chainCommitments + // chainDAG is a reactive collection of Commitment objects that belong to the same chain. + *chainDAG // weight is a reactive component that tracks the cumulative weight of the chain. *chainWeights @@ -30,7 +30,7 @@ func NewChain(root *Commitment) *Chain { } // embed reactive subcomponents - c.chainCommitments = newChainCommitments(c) + c.chainDAG = newChainDAG(c) c.chainWeights = newChainWeights(c) c.chainThresholds = newChainThresholds(c) @@ -52,12 +52,12 @@ func (c *Chain) ParentChain() *Chain { return nil } - parent := root.Parent() + parent := root.parent.Get() if parent == nil { return nil } - return parent.Chain() + return parent.chain.Get() } // Evicted returns whether the chain got evicted. diff --git a/pkg/protocol/chainmanagerv1/chain_commitments.go b/pkg/protocol/chainmanagerv1/chain_dag.go similarity index 69% rename from pkg/protocol/chainmanagerv1/chain_commitments.go rename to pkg/protocol/chainmanagerv1/chain_dag.go index 1a313bef3..ab073af25 100644 --- a/pkg/protocol/chainmanagerv1/chain_commitments.go +++ b/pkg/protocol/chainmanagerv1/chain_dag.go @@ -7,8 +7,8 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -// chainCommitments is a reactive collection of Commitment objects that belong to the same chain. -type chainCommitments struct { +// chainDAG is a reactive collection of Commitment objects that belong to the same chain. +type chainDAG struct { // chain is the chain that this collection belongs to. chain *Chain @@ -25,9 +25,9 @@ type chainCommitments struct { latestVerifiedCommitment reactive.Variable[*Commitment] } -// newChainCommitments creates a new chainCommitments instance. -func newChainCommitments(chain *Chain) *chainCommitments { - return &chainCommitments{ +// newChainDAG creates a new chainDAG instance. +func newChainDAG(chain *Chain) *chainDAG { + return &chainDAG{ chain: chain, commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), latestCommitment: reactive.NewVariable[*Commitment](), @@ -36,19 +36,8 @@ func newChainCommitments(chain *Chain) *chainCommitments { } } -// RegisterCommitment adds a Commitment object to this collection. -func (c *chainCommitments) RegisterCommitment(commitment *Commitment) { - unsubscribe := c.register(commitment) - - commitment.ChainVariable().OnUpdateOnce(func(_, _ *Chain) { - unsubscribe() - - c.unregister(commitment) - }, func(_, newChain *Chain) bool { return newChain != c.chain }) -} - // Commitment returns the Commitment object with the given index, if it exists. -func (c *chainCommitments) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { +func (c *chainDAG) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c.chain; currentChain != nil; currentChain = currentChain.ParentChain() { if root := currentChain.Root(); root != nil && index >= root.Index() { return currentChain.commitments.Get(index) @@ -60,36 +49,42 @@ func (c *chainCommitments) Commitment(index iotago.SlotIndex) (commitment *Commi // LatestCommitment returns a reactive variable that always contains the latest Commitment object in this // collection. -func (c *chainCommitments) LatestCommitment() reactive.Variable[*Commitment] { +func (c *chainDAG) LatestCommitment() reactive.Variable[*Commitment] { return c.latestCommitment } // LatestAttestedCommitment returns a reactive variable that always contains the latest attested Commitment object // in this collection. -func (c *chainCommitments) LatestAttestedCommitment() reactive.Variable[*Commitment] { +func (c *chainDAG) LatestAttestedCommitment() reactive.Variable[*Commitment] { return c.latestAttestedCommitment } // LatestVerifiedCommitment returns a reactive variable that always contains the latest verified Commitment object // in this collection. -func (c *chainCommitments) LatestVerifiedCommitment() reactive.Variable[*Commitment] { +func (c *chainDAG) LatestVerifiedCommitment() reactive.Variable[*Commitment] { return c.latestVerifiedCommitment } -// register adds a Commitment object to this collection. -func (c *chainCommitments) register(commitment *Commitment) (unsubscribe func()) { +// registerCommitment adds a Commitment object to this collection. +func (c *chainDAG) registerCommitment(commitment *Commitment) { c.commitments.Set(commitment.Index(), commitment) c.latestCommitment.Compute(commitment.max) - return lo.Batch( + unsubscribe := lo.Batch( commitment.attested.OnTrigger(func() { c.latestAttestedCommitment.Compute(commitment.max) }), commitment.verified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.max) }), ) + + commitment.chain.OnUpdateOnce(func(_, _ *Chain) { + unsubscribe() + + c.unregisterCommitment(commitment) + }, func(_, newChain *Chain) bool { return newChain != c.chain }) } -// unregister removes a Commitment object from this collection. -func (c *chainCommitments) unregister(commitment *Commitment) { +// unregisterCommitment removes a Commitment object from this collection. +func (c *chainDAG) unregisterCommitment(commitment *Commitment) { c.commitments.Delete(commitment.Index()) resetToParent := func(latestCommitment *Commitment) *Commitment { @@ -97,7 +92,7 @@ func (c *chainCommitments) unregister(commitment *Commitment) { return latestCommitment } - return commitment.Parent() + return commitment.parent.Get() } c.latestCommitment.Compute(resetToParent) diff --git a/pkg/protocol/chainmanagerv1/chain_weights.go b/pkg/protocol/chainmanagerv1/chain_weights.go index 3f47ac3c1..7241cd0a6 100644 --- a/pkg/protocol/chainmanagerv1/chain_weights.go +++ b/pkg/protocol/chainmanagerv1/chain_weights.go @@ -9,7 +9,7 @@ type chainWeights struct { // chain is the chain that this chainWeights is tracking the cumulative weight of. chain *Chain - // claimed contains the total cumulative weight of the chain that is claimed by the latest commitments. + // claimedWeight contains the total cumulative weight of the chain that is claimed by the latest commitments. claimedWeight reactive.Variable[uint64] // attestedWeight contains the total cumulative weight of the chain that we received attestations for. diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index e87f0f4c5..8232ec444 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -116,7 +116,7 @@ func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent c.commitmentCreated.Trigger(commitment) - commitment.SpawnedChainVariable().OnUpdate(func(_, newChain *Chain) { + commitment.spawnedChain.OnUpdate(func(_, newChain *Chain) { if newChain != nil { c.chainCreated.Trigger(newChain) } diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 0bfc189c2..c8eb1723f 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -77,11 +77,11 @@ func TestChainManager(t *testing.T) { require.True(t, commitment3Metadata.IsAboveLatestVerifiedIndex()) require.True(t, commitment3Metadata.IsBelowSyncThreshold()) require.True(t, commitment3Metadata.Solid().WasTriggered()) - require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().LatestIndex().Get()) - require.Equal(t, uint64(3), commitment3Metadata.Chain().ClaimedWeight().Get()) + require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().LatestIndex().Get()) + require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().ClaimedWeight().Get()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) commitment3aMetadata.Attested().Trigger() commitment3aMetadata.Verified().Trigger() - fmt.Println(commitment3aMetadata.Chain()) + fmt.Println(commitment3aMetadata.Chain().Get()) } diff --git a/pkg/protocol/chainmanagerv1/commitment_dag.go b/pkg/protocol/chainmanagerv1/commitment_dag.go index ff4c0bbd1..bbe844188 100644 --- a/pkg/protocol/chainmanagerv1/commitment_dag.go +++ b/pkg/protocol/chainmanagerv1/commitment_dag.go @@ -22,40 +22,24 @@ func newCommitmentDAG(commitment *Commitment) *commitmentDAG { chain: reactive.NewVariable[*Chain](), } - c.chain.OnUpdate(func(_, chain *Chain) { chain.RegisterCommitment(commitment) }) + c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(commitment) }) return c } -func (c *commitmentDAG) Parent() *Commitment { - return c.parent.Get() -} - -func (c *commitmentDAG) Successor() *Commitment { - return c.successor.Get() -} - -func (c *commitmentDAG) SpawnedChain() *Chain { - return c.spawnedChain.Get() -} - -func (c *commitmentDAG) Chain() *Chain { - return c.chain.Get() -} - -func (c *commitmentDAG) ParentVariable() reactive.Variable[*Commitment] { +func (c *commitmentDAG) Parent() reactive.Variable[*Commitment] { return c.parent } -func (c *commitmentDAG) SuccessorVariable() reactive.Variable[*Commitment] { +func (c *commitmentDAG) Successor() reactive.Variable[*Commitment] { return c.successor } -func (c *commitmentDAG) SpawnedChainVariable() reactive.Variable[*Chain] { +func (c *commitmentDAG) SpawnedChain() reactive.Variable[*Chain] { return c.spawnedChain } -func (c *commitmentDAG) ChainVariable() reactive.Variable[*Chain] { +func (c *commitmentDAG) Chain() reactive.Variable[*Chain] { return c.chain } diff --git a/pkg/protocol/chainmanagerv1/commitment_flags.go b/pkg/protocol/chainmanagerv1/commitment_flags.go index 94cfabcb1..4d560774a 100644 --- a/pkg/protocol/chainmanagerv1/commitment_flags.go +++ b/pkg/protocol/chainmanagerv1/commitment_flags.go @@ -17,7 +17,7 @@ func newCommitmentFlags(commitment *Commitment) *commitmentFlags { evicted: reactive.NewEvent(), } - commitment.ParentVariable().OnUpdate(func(_, parent *Commitment) { + commitment.parent.OnUpdate(func(_, parent *Commitment) { c.solid.InheritFrom(parent.solid) }) diff --git a/pkg/protocol/chainmanagerv1/commitment_thresholds.go b/pkg/protocol/chainmanagerv1/commitment_thresholds.go index ef778b0b2..56c715493 100644 --- a/pkg/protocol/chainmanagerv1/commitment_thresholds.go +++ b/pkg/protocol/chainmanagerv1/commitment_thresholds.go @@ -66,7 +66,7 @@ func isAboveLatestVerifiedIndex(commitment *Commitment) reactive.Variable[bool] }, parentVerified, commitment.verified) ) - commitment.ParentVariable().OnUpdateOnce(func(_, parent *Commitment) { + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { parentVerified.InheritFrom(parent.verified) parentAboveLatestVerifiedCommitment.InheritFrom(parent.isAboveLatestVerifiedIndex) }) @@ -77,12 +77,12 @@ func isAboveLatestVerifiedIndex(commitment *Commitment) reactive.Variable[bool] } func triggerBelowThresholdEventsIfNecessary(commitment *Commitment) func() { - return commitment.ParentVariable().OnUpdate(func(_, parent *Commitment) { + return commitment.parent.OnUpdate(func(_, parent *Commitment) { // we only monitor the threshold after the corresponding parent event was triggered (to minimize the amount of // elements that listen to updates of the same threshold - it spreads monotonically). triggerIfBelowThreshold := func(event func(*Commitment) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { event(parent).OnTrigger(func() { - chainThreshold(commitment.Chain()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { + chainThreshold(commitment.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { event(commitment).Trigger() }, func(_ iotago.SlotIndex, slotIndex iotago.SlotIndex) bool { return commitment.Index() < slotIndex From 9d7a2c1f7c00c510e14d0dcbd10d53d582c379d3 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 00:03:15 +0200 Subject: [PATCH 051/356] Refactor: merged commitment and commitment_dag --- pkg/protocol/chainmanagerv1/commitment.go | 89 ++++++++++++++++- pkg/protocol/chainmanagerv1/commitment_dag.go | 98 ------------------- 2 files changed, 86 insertions(+), 101 deletions(-) delete mode 100644 pkg/protocol/chainmanagerv1/commitment_dag.go diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index c5cec8b75..7757882f8 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -1,22 +1,35 @@ package chainmanagerv1 import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/iota-core/pkg/model" ) type Commitment struct { *model.Commitment - *commitmentDAG + parent reactive.Variable[*Commitment] + successor reactive.Variable[*Commitment] + spawnedChain reactive.Variable[*Chain] + chain reactive.Variable[*Chain] + *commitmentFlags *commitmentThresholds *commitmentDispatcherFlags } func NewCommitment(commitment *model.Commitment) *Commitment { - c := &Commitment{Commitment: commitment} + c := &Commitment{ + Commitment: commitment, + parent: reactive.NewVariable[*Commitment](), + successor: reactive.NewVariable[*Commitment](), + spawnedChain: reactive.NewVariable[*Chain](), + chain: reactive.NewVariable[*Chain](), + } + + c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) - c.commitmentDAG = newCommitmentDAG(c) c.commitmentFlags = newCommitmentFlags(c) c.commitmentThresholds = newCommitmentThresholds(c) c.commitmentDispatcherFlags = newCommitmentDispatcherFlags(c) @@ -37,6 +50,76 @@ func NewRootCommitment(commitment *model.Commitment) *Commitment { return commitmentMetadata } +func (c *Commitment) Parent() reactive.Variable[*Commitment] { + return c.parent +} + +func (c *Commitment) Successor() reactive.Variable[*Commitment] { + return c.successor +} + +func (c *Commitment) SpawnedChain() reactive.Variable[*Chain] { + return c.spawnedChain +} + +func (c *Commitment) Chain() reactive.Variable[*Chain] { + return c.chain +} + +func (c *Commitment) setParent(parent *Commitment) { + c.parent.Compute(func(currentParent *Commitment) *Commitment { + if currentParent != nil { + panic("parent may not be changed once it was set") + } + + parent.registerChild(c, c.createChainUpdater(parent)) + + return parent + }) +} + +func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { + c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { + return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) + }) + + unsubscribe := c.successor.OnUpdate(onSuccessorUpdated) + + c.evicted.OnTrigger(unsubscribe) +} + +func (c *Commitment) createChainUpdater(parent *Commitment) func(*Commitment, *Commitment) { + var unsubscribeFromParent func() + + return func(_, successor *Commitment) { + c.spawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { + if successor == nil { + panic("successor may not be changed back to nil") + } + + if successor == c { + if spawnedChain != nil { + spawnedChain.evicted.Trigger() + } + + unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) + + return nil + } + + if spawnedChain != nil { + return spawnedChain + } + + if unsubscribeFromParent != nil { + unsubscribeFromParent() + } + + return NewChain(c) + }) + } +} + // max compares the commitment with the given other commitment and returns the one with the higher index. func (c *Commitment) max(other *Commitment) *Commitment { if c == nil || other != nil && other.Index() >= c.Index() { diff --git a/pkg/protocol/chainmanagerv1/commitment_dag.go b/pkg/protocol/chainmanagerv1/commitment_dag.go deleted file mode 100644 index bbe844188..000000000 --- a/pkg/protocol/chainmanagerv1/commitment_dag.go +++ /dev/null @@ -1,98 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/lo" -) - -type commitmentDAG struct { - commitment *Commitment - parent reactive.Variable[*Commitment] - successor reactive.Variable[*Commitment] - spawnedChain reactive.Variable[*Chain] - chain reactive.Variable[*Chain] -} - -func newCommitmentDAG(commitment *Commitment) *commitmentDAG { - c := &commitmentDAG{ - commitment: commitment, - parent: reactive.NewVariable[*Commitment](), - successor: reactive.NewVariable[*Commitment](), - spawnedChain: reactive.NewVariable[*Chain](), - chain: reactive.NewVariable[*Chain](), - } - - c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(commitment) }) - - return c -} - -func (c *commitmentDAG) Parent() reactive.Variable[*Commitment] { - return c.parent -} - -func (c *commitmentDAG) Successor() reactive.Variable[*Commitment] { - return c.successor -} - -func (c *commitmentDAG) SpawnedChain() reactive.Variable[*Chain] { - return c.spawnedChain -} - -func (c *commitmentDAG) Chain() reactive.Variable[*Chain] { - return c.chain -} - -func (c *commitmentDAG) setParent(parent *Commitment) { - c.parent.Compute(func(currentParent *Commitment) *Commitment { - if currentParent != nil { - panic("parent may not be changed once it was set") - } - - parent.registerChild(c.commitment, c.createChainUpdater(parent)) - - return parent - }) -} - -func (c *commitmentDAG) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { - c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { - return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) - }) - - unsubscribe := c.successor.OnUpdate(onSuccessorUpdated) - - c.commitment.evicted.OnTrigger(unsubscribe) -} - -func (c *commitmentDAG) createChainUpdater(parent *Commitment) func(*Commitment, *Commitment) { - var unsubscribeFromParent func() - - return func(_, successor *Commitment) { - c.spawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { - if successor == nil { - panic("successor may not be changed back to nil") - } - - if successor == c.commitment { - if spawnedChain != nil { - spawnedChain.evicted.Trigger() - } - - unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) - - return nil - } - - if spawnedChain != nil { - return spawnedChain - } - - if unsubscribeFromParent != nil { - unsubscribeFromParent() - } - - return NewChain(c.commitment) - }) - } -} From 276f3ad15fd30d84204dad5d0b7dc46096743dda Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 10:38:22 +0200 Subject: [PATCH 052/356] Refactor: removed unused thresholds --- .../chainmanagerv1/chain_thresholds.go | 52 +++++++------------ .../chainmanagerv1/chainmanager_test.go | 2 +- .../chainmanagerv1/commitment_thresholds.go | 39 +++++++------- 3 files changed, 40 insertions(+), 53 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain_thresholds.go b/pkg/protocol/chainmanagerv1/chain_thresholds.go index 7f6453e04..3656c8ab7 100644 --- a/pkg/protocol/chainmanagerv1/chain_thresholds.go +++ b/pkg/protocol/chainmanagerv1/chain_thresholds.go @@ -7,14 +7,8 @@ import ( // chainThresholds is a reactive component that provides a set of thresholds that are derived from the chain. type chainThresholds struct { - // latestIndex is the index of the latest Commitment object in the chain. - latestIndex reactive.Variable[iotago.SlotIndex] - - // latestAttestedIndex is the index of the latest attested Commitment object in the chain. - latestAttestedIndex reactive.Variable[iotago.SlotIndex] - - // latestVerifiedIndex is the index of the latest verified Commitment object in the chain. - latestVerifiedIndex reactive.Variable[iotago.SlotIndex] + // latestVerifiedCommitmentIndex is the index of the latest verified Commitment object in the chain. + latestVerifiedCommitmentIndex reactive.Variable[iotago.SlotIndex] // syncThreshold is the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). syncThreshold reactive.Variable[iotago.SlotIndex] @@ -27,38 +21,32 @@ type chainThresholds struct { // newChainThresholds creates a new chainThresholds instance. func newChainThresholds(chain *Chain) *chainThresholds { c := &chainThresholds{ - latestIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.latestCommitment), - latestAttestedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.latestAttestedCommitment), - latestVerifiedIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.latestVerifiedCommitment), + latestVerifiedCommitmentIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.latestVerifiedCommitment), } - c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestIndex iotago.SlotIndex) iotago.SlotIndex { - return latestIndex - WarpSyncOffset - }, c.latestIndex) + c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { + if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { + return 0 + } - c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedIndex iotago.SlotIndex) iotago.SlotIndex { - return latestVerifiedIndex + 1 + SyncWindow - }, c.latestVerifiedIndex) + return latestCommitment.Index() - WarpSyncOffset + }, chain.latestCommitment) - return c -} + c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitment *Commitment) iotago.SlotIndex { + if latestVerifiedCommitment == nil { + return SyncWindow + 1 + } -// LatestIndex returns a reactive variable that always contains the index of the latest Commitment -// object in the chain. -func (c *chainThresholds) LatestIndex() reactive.Variable[iotago.SlotIndex] { - return c.latestIndex -} + return latestVerifiedCommitment.Index() + SyncWindow + 1 + }, chain.latestVerifiedCommitment) -// LatestAttestedIndex returns a reactive variable that contains the index of the latest attested -// Commitment object in the chain. -func (c *chainThresholds) LatestAttestedIndex() reactive.Variable[iotago.SlotIndex] { - return c.latestAttestedIndex + return c } -// LatestVerifiedIndex returns a reactive variable that contains the index of the latest verified -// Commitment object in the chain. -func (c *chainThresholds) LatestVerifiedIndex() reactive.Variable[iotago.SlotIndex] { - return c.latestVerifiedIndex +// LatestVerifiedCommitmentIndex returns a reactive variable that contains the index of the latest verified Commitment +// object in the chain. +func (c *chainThresholds) LatestVerifiedCommitmentIndex() reactive.Variable[iotago.SlotIndex] { + return c.latestVerifiedCommitmentIndex } // SyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index c8eb1723f..55e874a18 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -77,7 +77,7 @@ func TestChainManager(t *testing.T) { require.True(t, commitment3Metadata.IsAboveLatestVerifiedIndex()) require.True(t, commitment3Metadata.IsBelowSyncThreshold()) require.True(t, commitment3Metadata.Solid().WasTriggered()) - require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().LatestIndex().Get()) + require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().LatestCommitment().Get().Index()) require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().ClaimedWeight().Get()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) diff --git a/pkg/protocol/chainmanagerv1/commitment_thresholds.go b/pkg/protocol/chainmanagerv1/commitment_thresholds.go index 56c715493..ba14fbcf6 100644 --- a/pkg/protocol/chainmanagerv1/commitment_thresholds.go +++ b/pkg/protocol/chainmanagerv1/commitment_thresholds.go @@ -13,14 +13,20 @@ type commitmentThresholds struct { } func newCommitmentThresholds(commitment *Commitment) *commitmentThresholds { - defer triggerBelowThresholdEventsIfNecessary(commitment) - - return &commitmentThresholds{ + c := &commitmentThresholds{ isAboveLatestVerifiedIndex: isAboveLatestVerifiedIndex(commitment), isBelowLatestVerifiedIndex: reactive.NewEvent(), isBelowSyncThreshold: reactive.NewEvent(), isBelowWarpSyncThreshold: reactive.NewEvent(), } + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowLatestVerifiedIndexEvent, commitment, (*Chain).LatestVerifiedCommitmentIndex) + triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowSyncThresholdEvent, commitment, (*Chain).SyncThreshold) + triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowWarpSyncThresholdEvent, commitment, (*Chain).WarpSyncThreshold) + }) + + return c } func (c *commitmentThresholds) IsAboveLatestVerifiedIndex() bool { @@ -76,22 +82,15 @@ func isAboveLatestVerifiedIndex(commitment *Commitment) reactive.Variable[bool] }, directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment) } -func triggerBelowThresholdEventsIfNecessary(commitment *Commitment) func() { - return commitment.parent.OnUpdate(func(_, parent *Commitment) { - // we only monitor the threshold after the corresponding parent event was triggered (to minimize the amount of - // elements that listen to updates of the same threshold - it spreads monotonically). - triggerIfBelowThreshold := func(event func(*Commitment) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { - event(parent).OnTrigger(func() { - chainThreshold(commitment.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { - event(commitment).Trigger() - }, func(_ iotago.SlotIndex, slotIndex iotago.SlotIndex) bool { - return commitment.Index() < slotIndex - }) - }) - } - - triggerIfBelowThreshold((*Commitment).IsBelowLatestVerifiedIndexEvent, (*Chain).LatestVerifiedIndex) - triggerIfBelowThreshold((*Commitment).IsBelowSyncThresholdEvent, (*Chain).SyncThreshold) - triggerIfBelowThreshold((*Commitment).IsBelowWarpSyncThresholdEvent, (*Chain).WarpSyncThreshold) +// triggerEventIfCommitmentBelowThreshold triggers the given event if the given commitment is below the given threshold. +func triggerEventIfCommitmentBelowThreshold(event func(*Commitment) reactive.Event, commitment *Commitment, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { + // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) + event(commitment.parent.Get()).OnTrigger(func() { + // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met + chainThreshold(commitment.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { + event(commitment).Trigger() + }, func(_, slotIndex iotago.SlotIndex) bool { + return commitment.Index() < slotIndex + }) }) } From 5b8025864d38bdcf5f9383f4a36631109d38272b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 13:21:22 +0200 Subject: [PATCH 053/356] Refactor: removed chain_dag --- pkg/protocol/chainmanagerv1/chain.go | 111 ++++++++++++++---- pkg/protocol/chainmanagerv1/chain_dag.go | 101 ---------------- pkg/protocol/chainmanagerv1/commitment.go | 14 ++- .../chainmanagerv1/commitment_flags.go | 6 - 4 files changed, 100 insertions(+), 132 deletions(-) delete mode 100644 pkg/protocol/chainmanagerv1/chain_dag.go diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index c37a5523a..c5d761c75 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -2,6 +2,9 @@ package chainmanagerv1 import ( "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/lo" + iotago "github.com/iotaledger/iota.go/v4" ) // Chain is a reactive component that manages the state of a chain. @@ -9,12 +12,21 @@ type Chain struct { // root contains the Commitment object that spawned this chain. root *Commitment + // commitments is a map of Commitment objects that belong to the same chain. + commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] + + // latestCommitment is the latest Commitment object in this collection. + latestCommitment reactive.Variable[*Commitment] + + // latestAttestedCommitment is the latest attested Commitment object in this collection. + latestAttestedCommitment reactive.Variable[*Commitment] + + // latestVerifiedCommitment is the latest verified Commitment object in this collection. + latestVerifiedCommitment reactive.Variable[*Commitment] + // evicted is an event that gets triggered when the chain gets evicted. evicted reactive.Event - // chainDAG is a reactive collection of Commitment objects that belong to the same chain. - *chainDAG - // weight is a reactive component that tracks the cumulative weight of the chain. *chainWeights @@ -25,12 +37,15 @@ type Chain struct { // NewChain creates a new Chain instance. func NewChain(root *Commitment) *Chain { c := &Chain{ - root: root, - evicted: reactive.NewEvent(), + root: root, + commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), + latestCommitment: reactive.NewVariable[*Commitment](), + latestAttestedCommitment: reactive.NewVariable[*Commitment](), + latestVerifiedCommitment: reactive.NewVariable[*Commitment](), + evicted: reactive.NewEvent(), } // embed reactive subcomponents - c.chainDAG = newChainDAG(c) c.chainWeights = newChainWeights(c) c.chainThresholds = newChainThresholds(c) @@ -45,27 +60,81 @@ func (c *Chain) Root() *Commitment { return c.root } -// ParentChain returns the parent chain of this chain (if it exists and is solid). -func (c *Chain) ParentChain() *Chain { - root := c.Root() - if root == nil { - return nil +// Commitment returns the Commitment object with the given index, if it exists. +func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { + for currentChain := c; currentChain != nil; { + root := currentChain.Root() + if root == nil { + return nil, false + } else if index >= root.Index() { + return currentChain.commitments.Get(index) + } + + parent := root.parent.Get() + if parent == nil { + return nil, false + } + + currentChain = parent.chain.Get() } - parent := root.parent.Get() - if parent == nil { - return nil - } + return nil, false +} + +// LatestCommitment returns a reactive variable that always contains the latest Commitment object in this +// collection. +func (c *Chain) LatestCommitment() reactive.Variable[*Commitment] { + return c.latestCommitment +} - return parent.chain.Get() +// LatestAttestedCommitment returns a reactive variable that always contains the latest attested Commitment object +// in this collection. +func (c *Chain) LatestAttestedCommitment() reactive.Variable[*Commitment] { + return c.latestAttestedCommitment } -// Evicted returns whether the chain got evicted. -func (c *Chain) Evicted() bool { - return c.evicted.WasTriggered() +// LatestVerifiedCommitment returns a reactive variable that always contains the latest verified Commitment object +// in this collection. +func (c *Chain) LatestVerifiedCommitment() reactive.Variable[*Commitment] { + return c.latestVerifiedCommitment } -// EvictedEvent returns a reactive event that gets triggered when the chain is evicted. -func (c *Chain) EvictedEvent() reactive.Event { +// Evicted returns a reactive event that gets triggered when the chain is evicted. +func (c *Chain) Evicted() reactive.Event { return c.evicted } + +// registerCommitment adds a Commitment object to this collection. +func (c *Chain) registerCommitment(commitment *Commitment) { + c.commitments.Set(commitment.Index(), commitment) + + c.latestCommitment.Compute(commitment.max) + + unsubscribe := lo.Batch( + commitment.attested.OnTrigger(func() { c.latestAttestedCommitment.Compute(commitment.max) }), + commitment.verified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.max) }), + ) + + commitment.chain.OnUpdateOnce(func(_, _ *Chain) { + unsubscribe() + + c.unregisterCommitment(commitment) + }, func(_, newChain *Chain) bool { return newChain != c }) +} + +// unregisterCommitment removes a Commitment object from this collection. +func (c *Chain) unregisterCommitment(commitment *Commitment) { + c.commitments.Delete(commitment.Index()) + + resetToParent := func(latestCommitment *Commitment) *Commitment { + if commitment.Index() > latestCommitment.Index() { + return latestCommitment + } + + return commitment.parent.Get() + } + + c.latestCommitment.Compute(resetToParent) + c.latestAttestedCommitment.Compute(resetToParent) + c.latestVerifiedCommitment.Compute(resetToParent) +} diff --git a/pkg/protocol/chainmanagerv1/chain_dag.go b/pkg/protocol/chainmanagerv1/chain_dag.go deleted file mode 100644 index ab073af25..000000000 --- a/pkg/protocol/chainmanagerv1/chain_dag.go +++ /dev/null @@ -1,101 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/lo" - iotago "github.com/iotaledger/iota.go/v4" -) - -// chainDAG is a reactive collection of Commitment objects that belong to the same chain. -type chainDAG struct { - // chain is the chain that this collection belongs to. - chain *Chain - - // commitments is a map of Commitment objects that belong to the same chain. - commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] - - // latestCommitment is the latest Commitment object in this collection. - latestCommitment reactive.Variable[*Commitment] - - // latestAttestedCommitment is the latest attested Commitment object in this collection. - latestAttestedCommitment reactive.Variable[*Commitment] - - // latestVerifiedCommitment is the latest verified Commitment object in this collection. - latestVerifiedCommitment reactive.Variable[*Commitment] -} - -// newChainDAG creates a new chainDAG instance. -func newChainDAG(chain *Chain) *chainDAG { - return &chainDAG{ - chain: chain, - commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), - latestCommitment: reactive.NewVariable[*Commitment](), - latestAttestedCommitment: reactive.NewVariable[*Commitment](), - latestVerifiedCommitment: reactive.NewVariable[*Commitment](), - } -} - -// Commitment returns the Commitment object with the given index, if it exists. -func (c *chainDAG) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { - for currentChain := c.chain; currentChain != nil; currentChain = currentChain.ParentChain() { - if root := currentChain.Root(); root != nil && index >= root.Index() { - return currentChain.commitments.Get(index) - } - } - - return nil, false -} - -// LatestCommitment returns a reactive variable that always contains the latest Commitment object in this -// collection. -func (c *chainDAG) LatestCommitment() reactive.Variable[*Commitment] { - return c.latestCommitment -} - -// LatestAttestedCommitment returns a reactive variable that always contains the latest attested Commitment object -// in this collection. -func (c *chainDAG) LatestAttestedCommitment() reactive.Variable[*Commitment] { - return c.latestAttestedCommitment -} - -// LatestVerifiedCommitment returns a reactive variable that always contains the latest verified Commitment object -// in this collection. -func (c *chainDAG) LatestVerifiedCommitment() reactive.Variable[*Commitment] { - return c.latestVerifiedCommitment -} - -// registerCommitment adds a Commitment object to this collection. -func (c *chainDAG) registerCommitment(commitment *Commitment) { - c.commitments.Set(commitment.Index(), commitment) - - c.latestCommitment.Compute(commitment.max) - - unsubscribe := lo.Batch( - commitment.attested.OnTrigger(func() { c.latestAttestedCommitment.Compute(commitment.max) }), - commitment.verified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.max) }), - ) - - commitment.chain.OnUpdateOnce(func(_, _ *Chain) { - unsubscribe() - - c.unregisterCommitment(commitment) - }, func(_, newChain *Chain) bool { return newChain != c.chain }) -} - -// unregisterCommitment removes a Commitment object from this collection. -func (c *chainDAG) unregisterCommitment(commitment *Commitment) { - c.commitments.Delete(commitment.Index()) - - resetToParent := func(latestCommitment *Commitment) *Commitment { - if commitment.Index() > latestCommitment.Index() { - return latestCommitment - } - - return commitment.parent.Get() - } - - c.latestCommitment.Compute(resetToParent) - c.latestAttestedCommitment.Compute(resetToParent) - c.latestVerifiedCommitment.Compute(resetToParent) -} diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 7757882f8..4d71f4237 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -13,6 +13,7 @@ type Commitment struct { successor reactive.Variable[*Commitment] spawnedChain reactive.Variable[*Chain] chain reactive.Variable[*Chain] + evicted reactive.Event *commitmentFlags *commitmentThresholds @@ -26,14 +27,15 @@ func NewCommitment(commitment *model.Commitment) *Commitment { successor: reactive.NewVariable[*Commitment](), spawnedChain: reactive.NewVariable[*Chain](), chain: reactive.NewVariable[*Chain](), + evicted: reactive.NewEvent(), } - c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) - c.commitmentFlags = newCommitmentFlags(c) c.commitmentThresholds = newCommitmentThresholds(c) c.commitmentDispatcherFlags = newCommitmentDispatcherFlags(c) + c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) + return c } @@ -66,13 +68,17 @@ func (c *Commitment) Chain() reactive.Variable[*Chain] { return c.chain } +func (c *Commitment) Evicted() reactive.Event { + return c.evicted +} + func (c *Commitment) setParent(parent *Commitment) { c.parent.Compute(func(currentParent *Commitment) *Commitment { if currentParent != nil { panic("parent may not be changed once it was set") } - parent.registerChild(c, c.createChainUpdater(parent)) + parent.registerChild(c, c.chainUpdater(parent)) return parent }) @@ -88,7 +94,7 @@ func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func c.evicted.OnTrigger(unsubscribe) } -func (c *Commitment) createChainUpdater(parent *Commitment) func(*Commitment, *Commitment) { +func (c *Commitment) chainUpdater(parent *Commitment) func(*Commitment, *Commitment) { var unsubscribeFromParent func() return func(_, successor *Commitment) { diff --git a/pkg/protocol/chainmanagerv1/commitment_flags.go b/pkg/protocol/chainmanagerv1/commitment_flags.go index 4d560774a..7eb6dd0ca 100644 --- a/pkg/protocol/chainmanagerv1/commitment_flags.go +++ b/pkg/protocol/chainmanagerv1/commitment_flags.go @@ -6,7 +6,6 @@ type commitmentFlags struct { solid reactive.Event attested reactive.Event verified reactive.Event - evicted reactive.Event } func newCommitmentFlags(commitment *Commitment) *commitmentFlags { @@ -14,7 +13,6 @@ func newCommitmentFlags(commitment *Commitment) *commitmentFlags { solid: reactive.NewEvent(), attested: reactive.NewEvent(), verified: reactive.NewEvent(), - evicted: reactive.NewEvent(), } commitment.parent.OnUpdate(func(_, parent *Commitment) { @@ -35,7 +33,3 @@ func (c *commitmentFlags) Attested() reactive.Event { func (c *commitmentFlags) Verified() reactive.Event { return c.verified } - -func (c *commitmentFlags) Evicted() reactive.Event { - return c.evicted -} From eb5ef1391a7174d51936ea3787e8e0b2f867477f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 13:25:16 +0200 Subject: [PATCH 054/356] Refactor: simplified Commitment --- pkg/protocol/chainmanagerv1/chain.go | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index c5d761c75..a5806b98e 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -63,19 +63,21 @@ func (c *Chain) Root() *Commitment { // Commitment returns the Commitment object with the given index, if it exists. func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c; currentChain != nil; { - root := currentChain.Root() - if root == nil { + switch root := currentChain.Root(); { + case root == nil: return nil, false - } else if index >= root.Index() { + case root.Index() == index: + return root, true + case index > root.Index(): return currentChain.commitments.Get(index) - } + default: + parent := root.parent.Get() + if parent == nil { + return nil, false + } - parent := root.parent.Get() - if parent == nil { - return nil, false + currentChain = parent.chain.Get() } - - currentChain = parent.chain.Get() } return nil, false From 30198b81b74e9ec56c473da9240a6f40d329c642 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 13:27:06 +0200 Subject: [PATCH 055/356] Refactor: added comment --- pkg/protocol/chainmanagerv1/chain.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index a5806b98e..0ce30c5c5 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -65,7 +65,7 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exis for currentChain := c; currentChain != nil; { switch root := currentChain.Root(); { case root == nil: - return nil, false + return nil, false // this should never happen, but we can handle it gracefully anyway case root.Index() == index: return root, true case index > root.Index(): From c544b883d1892a189231cfa29337c2d926e292e9 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:04:03 +0200 Subject: [PATCH 056/356] Refactor: simplified code --- pkg/protocol/chainmanagerv1/chain.go | 4 +- ...olds.go => chain_dispatcher_thresholds.go} | 16 ++-- .../chainmanagerv1/chainmanager_test.go | 4 +- pkg/protocol/chainmanagerv1/commitment.go | 3 - .../commitment_dispatcher_flags.go | 73 ++++++++++++-- .../chainmanagerv1/commitment_thresholds.go | 96 ------------------- 6 files changed, 79 insertions(+), 117 deletions(-) rename pkg/protocol/chainmanagerv1/{chain_thresholds.go => chain_dispatcher_thresholds.go} (75%) delete mode 100644 pkg/protocol/chainmanagerv1/commitment_thresholds.go diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 0ce30c5c5..9acf8d28e 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -31,7 +31,7 @@ type Chain struct { *chainWeights // thresholds is a reactive component that tracks the thresholds of the chain. - *chainThresholds + *chainDispatcherThresholds } // NewChain creates a new Chain instance. @@ -47,7 +47,7 @@ func NewChain(root *Commitment) *Chain { // embed reactive subcomponents c.chainWeights = newChainWeights(c) - c.chainThresholds = newChainThresholds(c) + c.chainDispatcherThresholds = newChainDispatcherThresholds(c) // associate the root commitment with its chain root.chain.Set(c) diff --git a/pkg/protocol/chainmanagerv1/chain_thresholds.go b/pkg/protocol/chainmanagerv1/chain_dispatcher_thresholds.go similarity index 75% rename from pkg/protocol/chainmanagerv1/chain_thresholds.go rename to pkg/protocol/chainmanagerv1/chain_dispatcher_thresholds.go index 3656c8ab7..5f524c6fa 100644 --- a/pkg/protocol/chainmanagerv1/chain_thresholds.go +++ b/pkg/protocol/chainmanagerv1/chain_dispatcher_thresholds.go @@ -5,8 +5,8 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -// chainThresholds is a reactive component that provides a set of thresholds that are derived from the chain. -type chainThresholds struct { +// chainDispatcherThresholds is a reactive component that provides a set of thresholds that are derived from the chain. +type chainDispatcherThresholds struct { // latestVerifiedCommitmentIndex is the index of the latest verified Commitment object in the chain. latestVerifiedCommitmentIndex reactive.Variable[iotago.SlotIndex] @@ -18,9 +18,9 @@ type chainThresholds struct { warpSyncThreshold reactive.Variable[iotago.SlotIndex] } -// newChainThresholds creates a new chainThresholds instance. -func newChainThresholds(chain *Chain) *chainThresholds { - c := &chainThresholds{ +// newChainDispatcherThresholds creates a new chainDispatcherThresholds instance. +func newChainDispatcherThresholds(chain *Chain) *chainDispatcherThresholds { + c := &chainDispatcherThresholds{ latestVerifiedCommitmentIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.latestVerifiedCommitment), } @@ -45,18 +45,18 @@ func newChainThresholds(chain *Chain) *chainThresholds { // LatestVerifiedCommitmentIndex returns a reactive variable that contains the index of the latest verified Commitment // object in the chain. -func (c *chainThresholds) LatestVerifiedCommitmentIndex() reactive.Variable[iotago.SlotIndex] { +func (c *chainDispatcherThresholds) LatestVerifiedCommitmentIndex() reactive.Variable[iotago.SlotIndex] { return c.latestVerifiedCommitmentIndex } // SyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the // engine (to prevent memory exhaustion). -func (c *chainThresholds) SyncThreshold() reactive.Variable[iotago.SlotIndex] { +func (c *chainDispatcherThresholds) SyncThreshold() reactive.Variable[iotago.SlotIndex] { return c.syncThreshold } // WarpSyncThreshold returns a reactive variable that contains an offset from latest index where the warp sync // process starts (we don't request slots that we are about to commit ourselves). -func (c *chainThresholds) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { +func (c *chainDispatcherThresholds) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { return c.warpSyncThreshold } diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 55e874a18..076b9e047 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -74,8 +74,8 @@ func TestChainManager(t *testing.T) { require.True(t, commitment3Metadata.Solid().WasTriggered()) commitment2Metadata.Verified().Trigger() - require.True(t, commitment3Metadata.IsAboveLatestVerifiedIndex()) - require.True(t, commitment3Metadata.IsBelowSyncThreshold()) + require.True(t, commitment3Metadata.InSyncWindow().Get()) + require.True(t, commitment3Metadata.IsBelowSyncThreshold().WasTriggered()) require.True(t, commitment3Metadata.Solid().WasTriggered()) require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().LatestCommitment().Get().Index()) require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().ClaimedWeight().Get()) diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 4d71f4237..5d949ab3b 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -16,7 +16,6 @@ type Commitment struct { evicted reactive.Event *commitmentFlags - *commitmentThresholds *commitmentDispatcherFlags } @@ -31,7 +30,6 @@ func NewCommitment(commitment *model.Commitment) *Commitment { } c.commitmentFlags = newCommitmentFlags(c) - c.commitmentThresholds = newCommitmentThresholds(c) c.commitmentDispatcherFlags = newCommitmentDispatcherFlags(c) c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) @@ -46,7 +44,6 @@ func NewRootCommitment(commitment *model.Commitment) *Commitment { commitmentMetadata.verified.Set(true) commitmentMetadata.isBelowSyncThreshold.Set(true) commitmentMetadata.isBelowWarpSyncThreshold.Set(true) - commitmentMetadata.isBelowLatestVerifiedIndex.Set(true) commitmentMetadata.evicted.Set(false) return commitmentMetadata diff --git a/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go b/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go index f58092dc9..e838252bb 100644 --- a/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go +++ b/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go @@ -1,26 +1,53 @@ package chainmanagerv1 -import "github.com/iotaledger/hive.go/ds/reactive" +import ( + "github.com/iotaledger/hive.go/ds/reactive" + iotago "github.com/iotaledger/iota.go/v4" +) type commitmentDispatcherFlags struct { - inSyncWindow reactive.Variable[bool] - requiresWarpSync reactive.Variable[bool] + isAboveLatestVerifiedCommitment reactive.Variable[bool] + isBelowSyncThreshold reactive.Event + isBelowWarpSyncThreshold reactive.Event + inSyncWindow reactive.Variable[bool] + requiresWarpSync reactive.Variable[bool] } func newCommitmentDispatcherFlags(commitment *Commitment) *commitmentDispatcherFlags { - c := &commitmentDispatcherFlags{} + c := &commitmentDispatcherFlags{ + isAboveLatestVerifiedCommitment: isAboveLatestVerifiedCommitment(commitment), + isBelowSyncThreshold: reactive.NewEvent(), + isBelowWarpSyncThreshold: reactive.NewEvent(), + } c.inSyncWindow = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { return belowSyncThreshold && aboveLatestVerifiedCommitment - }, commitment.isBelowSyncThreshold, commitment.isAboveLatestVerifiedIndex) + }, c.isBelowSyncThreshold, c.isAboveLatestVerifiedCommitment) c.requiresWarpSync = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { return inSyncWindow && belowWarpSyncThreshold - }, c.inSyncWindow, commitment.isBelowWarpSyncThreshold) + }, c.inSyncWindow, c.isBelowWarpSyncThreshold) + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowSyncThreshold, commitment, (*Chain).SyncThreshold) + triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowWarpSyncThreshold, commitment, (*Chain).WarpSyncThreshold) + }) return c } +func (c *commitmentDispatcherFlags) IsAboveLatestVerifiedCommitment() reactive.Variable[bool] { + return c.isAboveLatestVerifiedCommitment +} + +func (c *commitmentDispatcherFlags) IsBelowSyncThreshold() reactive.Event { + return c.isBelowSyncThreshold +} + +func (c *commitmentDispatcherFlags) IsBelowWarpSyncThreshold() reactive.Event { + return c.isBelowWarpSyncThreshold +} + func (c *commitmentDispatcherFlags) InSyncWindow() reactive.Variable[bool] { return c.inSyncWindow } @@ -28,3 +55,37 @@ func (c *commitmentDispatcherFlags) InSyncWindow() reactive.Variable[bool] { func (c *commitmentDispatcherFlags) RequiresWarpSync() reactive.Variable[bool] { return c.requiresWarpSync } + +func isAboveLatestVerifiedCommitment(commitment *Commitment) reactive.Variable[bool] { + var ( + parentVerified = reactive.NewEvent() + + parentAboveLatestVerifiedCommitment = reactive.NewVariable[bool]() + + directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { + return parentVerified && !verified + }, parentVerified, commitment.verified) + ) + + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { + parentVerified.InheritFrom(parent.verified) + parentAboveLatestVerifiedCommitment.InheritFrom(parent.isAboveLatestVerifiedCommitment) + }) + + return reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { + return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment + }, directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment) +} + +// triggerEventIfCommitmentBelowThreshold triggers the given event if the given commitment is below the given threshold. +func triggerEventIfCommitmentBelowThreshold(event func(*Commitment) reactive.Event, commitment *Commitment, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { + // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) + event(commitment.parent.Get()).OnTrigger(func() { + // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met + chainThreshold(commitment.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { + event(commitment).Trigger() + }, func(_, slotIndex iotago.SlotIndex) bool { + return commitment.Index() < slotIndex + }) + }) +} diff --git a/pkg/protocol/chainmanagerv1/commitment_thresholds.go b/pkg/protocol/chainmanagerv1/commitment_thresholds.go deleted file mode 100644 index ba14fbcf6..000000000 --- a/pkg/protocol/chainmanagerv1/commitment_thresholds.go +++ /dev/null @@ -1,96 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - iotago "github.com/iotaledger/iota.go/v4" -) - -type commitmentThresholds struct { - isAboveLatestVerifiedIndex reactive.Variable[bool] - isBelowLatestVerifiedIndex reactive.Event - isBelowSyncThreshold reactive.Event - isBelowWarpSyncThreshold reactive.Event -} - -func newCommitmentThresholds(commitment *Commitment) *commitmentThresholds { - c := &commitmentThresholds{ - isAboveLatestVerifiedIndex: isAboveLatestVerifiedIndex(commitment), - isBelowLatestVerifiedIndex: reactive.NewEvent(), - isBelowSyncThreshold: reactive.NewEvent(), - isBelowWarpSyncThreshold: reactive.NewEvent(), - } - - commitment.parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowLatestVerifiedIndexEvent, commitment, (*Chain).LatestVerifiedCommitmentIndex) - triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowSyncThresholdEvent, commitment, (*Chain).SyncThreshold) - triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowWarpSyncThresholdEvent, commitment, (*Chain).WarpSyncThreshold) - }) - - return c -} - -func (c *commitmentThresholds) IsAboveLatestVerifiedIndex() bool { - return c.isAboveLatestVerifiedIndex.Get() -} - -func (c *commitmentThresholds) IsAboveLatestVerifiedIndexVariable() reactive.Variable[bool] { - return c.isAboveLatestVerifiedIndex -} - -func (c *commitmentThresholds) IsBelowLatestVerifiedIndex() bool { - return c.isBelowLatestVerifiedIndex.Get() -} - -func (c *commitmentThresholds) IsBelowLatestVerifiedIndexEvent() reactive.Event { - return c.isBelowLatestVerifiedIndex -} - -func (c *commitmentThresholds) IsBelowSyncThreshold() bool { - return c.isBelowSyncThreshold.Get() -} - -func (c *commitmentThresholds) IsBelowSyncThresholdEvent() reactive.Event { - return c.isBelowSyncThreshold -} - -func (c *commitmentThresholds) IsBelowWarpSyncThreshold() bool { - return c.isBelowWarpSyncThreshold.Get() -} - -func (c *commitmentThresholds) IsBelowWarpSyncThresholdEvent() reactive.Event { - return c.isBelowWarpSyncThreshold -} - -func isAboveLatestVerifiedIndex(commitment *Commitment) reactive.Variable[bool] { - var ( - parentVerified = reactive.NewEvent() - - parentAboveLatestVerifiedCommitment = reactive.NewVariable[bool]() - - directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { - return parentVerified && !verified - }, parentVerified, commitment.verified) - ) - - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { - parentVerified.InheritFrom(parent.verified) - parentAboveLatestVerifiedCommitment.InheritFrom(parent.isAboveLatestVerifiedIndex) - }) - - return reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { - return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment - }, directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment) -} - -// triggerEventIfCommitmentBelowThreshold triggers the given event if the given commitment is below the given threshold. -func triggerEventIfCommitmentBelowThreshold(event func(*Commitment) reactive.Event, commitment *Commitment, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { - // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) - event(commitment.parent.Get()).OnTrigger(func() { - // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met - chainThreshold(commitment.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { - event(commitment).Trigger() - }, func(_, slotIndex iotago.SlotIndex) bool { - return commitment.Index() < slotIndex - }) - }) -} From 1a94e3da3274cb7decad51eba9fddad5cb4d3c74 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:13:15 +0200 Subject: [PATCH 057/356] Refactor: reverted test case --- pkg/protocol/chainmanagerv1/chainmanager_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 076b9e047..fc6a6ffb8 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -75,7 +75,7 @@ func TestChainManager(t *testing.T) { commitment2Metadata.Verified().Trigger() require.True(t, commitment3Metadata.InSyncWindow().Get()) - require.True(t, commitment3Metadata.IsBelowSyncThreshold().WasTriggered()) + require.True(t, commitment3Metadata.IsAboveLatestVerifiedCommitment().Get()) require.True(t, commitment3Metadata.Solid().WasTriggered()) require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().LatestCommitment().Get().Index()) require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().ClaimedWeight().Get()) From 848e2e6e831f2abff6ff6e3643fe51aa9f96b354 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:26:41 +0200 Subject: [PATCH 058/356] Feat: removed unused threshold --- .../chain_dispatcher_thresholds.go | 45 +++++++------------ 1 file changed, 16 insertions(+), 29 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain_dispatcher_thresholds.go b/pkg/protocol/chainmanagerv1/chain_dispatcher_thresholds.go index 5f524c6fa..3d193d104 100644 --- a/pkg/protocol/chainmanagerv1/chain_dispatcher_thresholds.go +++ b/pkg/protocol/chainmanagerv1/chain_dispatcher_thresholds.go @@ -7,9 +7,6 @@ import ( // chainDispatcherThresholds is a reactive component that provides a set of thresholds that are derived from the chain. type chainDispatcherThresholds struct { - // latestVerifiedCommitmentIndex is the index of the latest verified Commitment object in the chain. - latestVerifiedCommitmentIndex reactive.Variable[iotago.SlotIndex] - // syncThreshold is the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). syncThreshold reactive.Variable[iotago.SlotIndex] @@ -20,33 +17,23 @@ type chainDispatcherThresholds struct { // newChainDispatcherThresholds creates a new chainDispatcherThresholds instance. func newChainDispatcherThresholds(chain *Chain) *chainDispatcherThresholds { - c := &chainDispatcherThresholds{ - latestVerifiedCommitmentIndex: reactive.NewDerivedVariable[iotago.SlotIndex](zeroValueIfNil((*Commitment).Index), chain.latestVerifiedCommitment), + return &chainDispatcherThresholds{ + warpSyncThreshold: reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { + if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { + return 0 + } + + return latestCommitment.Index() - WarpSyncOffset + }, chain.latestCommitment), + + syncThreshold: reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitment *Commitment) iotago.SlotIndex { + if latestVerifiedCommitment == nil { + return SyncWindow + 1 + } + + return latestVerifiedCommitment.Index() + SyncWindow + 1 + }, chain.latestVerifiedCommitment), } - - c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { - if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { - return 0 - } - - return latestCommitment.Index() - WarpSyncOffset - }, chain.latestCommitment) - - c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitment *Commitment) iotago.SlotIndex { - if latestVerifiedCommitment == nil { - return SyncWindow + 1 - } - - return latestVerifiedCommitment.Index() + SyncWindow + 1 - }, chain.latestVerifiedCommitment) - - return c -} - -// LatestVerifiedCommitmentIndex returns a reactive variable that contains the index of the latest verified Commitment -// object in the chain. -func (c *chainDispatcherThresholds) LatestVerifiedCommitmentIndex() reactive.Variable[iotago.SlotIndex] { - return c.latestVerifiedCommitmentIndex } // SyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the From 1c0cbb072678b9291be18ed3eb1d231e694857fb Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:28:51 +0200 Subject: [PATCH 059/356] Feat: removed unused chain reference --- pkg/protocol/chainmanagerv1/chain_weights.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain_weights.go b/pkg/protocol/chainmanagerv1/chain_weights.go index 7241cd0a6..ec92ac649 100644 --- a/pkg/protocol/chainmanagerv1/chain_weights.go +++ b/pkg/protocol/chainmanagerv1/chain_weights.go @@ -6,9 +6,6 @@ import ( // chainWeights is a reactive component that tracks the cumulative weight of a chain. type chainWeights struct { - // chain is the chain that this chainWeights is tracking the cumulative weight of. - chain *Chain - // claimedWeight contains the total cumulative weight of the chain that is claimed by the latest commitments. claimedWeight reactive.Variable[uint64] @@ -22,7 +19,6 @@ type chainWeights struct { // newChainWeights creates a new chainWeights for the given chain. func newChainWeights(chain *Chain) *chainWeights { return &chainWeights{ - chain: chain, claimedWeight: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestCommitment), attestedWeight: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestAttestedCommitment), verifiedWeight: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestVerifiedCommitment), From 775728c1b78b92fe81fe08c2039ec57c54c0b90d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:31:33 +0200 Subject: [PATCH 060/356] Refactor: cleaned up --- pkg/protocol/chainmanagerv1/chain.go | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 9acf8d28e..b59d3ba4a 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -15,22 +15,22 @@ type Chain struct { // commitments is a map of Commitment objects that belong to the same chain. commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] - // latestCommitment is the latest Commitment object in this collection. + // latestCommitment is the latest Commitment object in this chain. latestCommitment reactive.Variable[*Commitment] - // latestAttestedCommitment is the latest attested Commitment object in this collection. + // latestAttestedCommitment is the latest attested Commitment object in this chain. latestAttestedCommitment reactive.Variable[*Commitment] - // latestVerifiedCommitment is the latest verified Commitment object in this collection. + // latestVerifiedCommitment is the latest verified Commitment object in this chain. latestVerifiedCommitment reactive.Variable[*Commitment] // evicted is an event that gets triggered when the chain gets evicted. evicted reactive.Event - // weight is a reactive component that tracks the cumulative weight of the chain. + // weight is a reactive subcomponent that tracks the cumulative weight of the chain. *chainWeights - // thresholds is a reactive component that tracks the thresholds of the chain. + // thresholds is a reactive subcomponent that tracks the thresholds of the chain. *chainDispatcherThresholds } @@ -49,7 +49,7 @@ func NewChain(root *Commitment) *Chain { c.chainWeights = newChainWeights(c) c.chainDispatcherThresholds = newChainDispatcherThresholds(c) - // associate the root commitment with its chain + // associate the commitment with its chain root.chain.Set(c) return c @@ -90,13 +90,13 @@ func (c *Chain) LatestCommitment() reactive.Variable[*Commitment] { } // LatestAttestedCommitment returns a reactive variable that always contains the latest attested Commitment object -// in this collection. +// in this chain. func (c *Chain) LatestAttestedCommitment() reactive.Variable[*Commitment] { return c.latestAttestedCommitment } // LatestVerifiedCommitment returns a reactive variable that always contains the latest verified Commitment object -// in this collection. +// in this chain. func (c *Chain) LatestVerifiedCommitment() reactive.Variable[*Commitment] { return c.latestVerifiedCommitment } @@ -117,6 +117,7 @@ func (c *Chain) registerCommitment(commitment *Commitment) { commitment.verified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.max) }), ) + // unsubscribe and unregister the commitment when it changes its chain commitment.chain.OnUpdateOnce(func(_, _ *Chain) { unsubscribe() From aa95d3a39130af577e8df394536115731cbad468 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:41:35 +0200 Subject: [PATCH 061/356] Refactor: cleaned up root commitment API --- pkg/protocol/chainmanagerv1/chainmanager.go | 2 +- pkg/protocol/chainmanagerv1/commitment.go | 18 +++--------------- .../commitment_dispatcher_flags.go | 7 ++++++- .../chainmanagerv1/commitment_flags.go | 14 ++++++++++---- 4 files changed, 20 insertions(+), 21 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 8232ec444..2f75c9259 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -33,7 +33,7 @@ type ChainManager struct { func NewChainManager(rootCommitment *model.Commitment) *ChainManager { c := &ChainManager{ - mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewRootCommitment(rootCommitment))), + mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(rootCommitment, true))), heaviestClaimedCandidate: reactive.NewVariable[*Chain](), heaviestAttestedCandidate: reactive.NewVariable[*Chain](), heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 5d949ab3b..3eb2f57be 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -19,7 +19,7 @@ type Commitment struct { *commitmentDispatcherFlags } -func NewCommitment(commitment *model.Commitment) *Commitment { +func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment { c := &Commitment{ Commitment: commitment, parent: reactive.NewVariable[*Commitment](), @@ -29,26 +29,14 @@ func NewCommitment(commitment *model.Commitment) *Commitment { evicted: reactive.NewEvent(), } - c.commitmentFlags = newCommitmentFlags(c) - c.commitmentDispatcherFlags = newCommitmentDispatcherFlags(c) + c.commitmentFlags = newCommitmentFlags(c, lo.First(optIsRoot)) + c.commitmentDispatcherFlags = newCommitmentDispatcherFlags(c, lo.First(optIsRoot)) c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) return c } -func NewRootCommitment(commitment *model.Commitment) *Commitment { - commitmentMetadata := NewCommitment(commitment) - - commitmentMetadata.solid.Set(true) - commitmentMetadata.verified.Set(true) - commitmentMetadata.isBelowSyncThreshold.Set(true) - commitmentMetadata.isBelowWarpSyncThreshold.Set(true) - commitmentMetadata.evicted.Set(false) - - return commitmentMetadata -} - func (c *Commitment) Parent() reactive.Variable[*Commitment] { return c.parent } diff --git a/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go b/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go index e838252bb..3f8dcc633 100644 --- a/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go +++ b/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go @@ -13,13 +13,18 @@ type commitmentDispatcherFlags struct { requiresWarpSync reactive.Variable[bool] } -func newCommitmentDispatcherFlags(commitment *Commitment) *commitmentDispatcherFlags { +func newCommitmentDispatcherFlags(commitment *Commitment, isRoot bool) *commitmentDispatcherFlags { c := &commitmentDispatcherFlags{ isAboveLatestVerifiedCommitment: isAboveLatestVerifiedCommitment(commitment), isBelowSyncThreshold: reactive.NewEvent(), isBelowWarpSyncThreshold: reactive.NewEvent(), } + if isRoot { + c.isBelowSyncThreshold.Set(true) + c.isBelowWarpSyncThreshold.Set(true) + } + c.inSyncWindow = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { return belowSyncThreshold && aboveLatestVerifiedCommitment }, c.isBelowSyncThreshold, c.isAboveLatestVerifiedCommitment) diff --git a/pkg/protocol/chainmanagerv1/commitment_flags.go b/pkg/protocol/chainmanagerv1/commitment_flags.go index 7eb6dd0ca..72de9d098 100644 --- a/pkg/protocol/chainmanagerv1/commitment_flags.go +++ b/pkg/protocol/chainmanagerv1/commitment_flags.go @@ -8,16 +8,22 @@ type commitmentFlags struct { verified reactive.Event } -func newCommitmentFlags(commitment *Commitment) *commitmentFlags { +func newCommitmentFlags(commitment *Commitment, isRoot bool) *commitmentFlags { c := &commitmentFlags{ solid: reactive.NewEvent(), attested: reactive.NewEvent(), verified: reactive.NewEvent(), } - commitment.parent.OnUpdate(func(_, parent *Commitment) { - c.solid.InheritFrom(parent.solid) - }) + if isRoot { + c.solid.Set(true) + c.attested.Set(true) + c.verified.Set(true) + } else { + commitment.parent.OnUpdate(func(_, parent *Commitment) { + c.solid.InheritFrom(parent.solid) + }) + } return c } From f75ebb8682f351e9bb52bae5a39e3aa1edd43891 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 14:48:12 +0200 Subject: [PATCH 062/356] Refactor: cleaned up utils --- pkg/protocol/chainmanagerv1/chain_weights.go | 6 +++--- pkg/protocol/chainmanagerv1/utils.go | 13 ++++++------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chain_weights.go b/pkg/protocol/chainmanagerv1/chain_weights.go index ec92ac649..78924f188 100644 --- a/pkg/protocol/chainmanagerv1/chain_weights.go +++ b/pkg/protocol/chainmanagerv1/chain_weights.go @@ -19,9 +19,9 @@ type chainWeights struct { // newChainWeights creates a new chainWeights for the given chain. func newChainWeights(chain *Chain) *chainWeights { return &chainWeights{ - claimedWeight: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestCommitment), - attestedWeight: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestAttestedCommitment), - verifiedWeight: reactive.NewDerivedVariable[uint64](zeroValueIfNil((*Commitment).CumulativeWeight), chain.latestVerifiedCommitment), + claimedWeight: reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), chain.latestCommitment), + attestedWeight: reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), chain.latestAttestedCommitment), + verifiedWeight: reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), chain.latestVerifiedCommitment), } } diff --git a/pkg/protocol/chainmanagerv1/utils.go b/pkg/protocol/chainmanagerv1/utils.go index 42f78e01a..0a6f46b37 100644 --- a/pkg/protocol/chainmanagerv1/utils.go +++ b/pkg/protocol/chainmanagerv1/utils.go @@ -1,13 +1,12 @@ package chainmanagerv1 -// zeroValueIfNil turns a getter function into a getter function that returns the zero value of the return type if the -// object is nil. -func zeroValueIfNil[ObjectType, ReturnType any](getterFunc func(*ObjectType) ReturnType) func(*ObjectType) ReturnType { - return func(obj *ObjectType) (returnValue ReturnType) { - if obj == nil { - return returnValue +// noPanicIfNil prevents a panic of the getter when the receiver is nil by returning the zero value of the return type. +func noPanicIfNil[ReceiverType, ReturnType any](getter func(*ReceiverType) ReturnType) func(*ReceiverType) ReturnType { + return func(receiver *ReceiverType) (zeroValue ReturnType) { + if receiver == nil { + return zeroValue } - return getterFunc(obj) + return getter(receiver) } } From 9aab4c18a3b7efd94d4ace69295a832f3348142f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 15:17:26 +0200 Subject: [PATCH 063/356] Feat: added reactive chain switching component --- pkg/protocol/chainmanagerv1/chainmanager.go | 69 ++++--------------- .../chainmanager_chain_switching.go | 44 ++++++++++++ .../chainmanagerv1/chainmanager_test.go | 12 +--- 3 files changed, 59 insertions(+), 66 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 2f75c9259..361ea41bf 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -14,12 +14,6 @@ import ( type ChainManager struct { mainChain reactive.Variable[*Chain] - heaviestClaimedCandidate reactive.Variable[*Chain] - - heaviestAttestedCandidate reactive.Variable[*Chain] - - heaviestVerifiedCandidate reactive.Variable[*Chain] - commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] @@ -28,31 +22,30 @@ type ChainManager struct { chainCreated *event.Event1[*Chain] + *chainManagerChainSwitching + reactive.EvictionState[iotago.SlotIndex] } func NewChainManager(rootCommitment *model.Commitment) *ChainManager { c := &ChainManager{ - mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(rootCommitment, true))), - heaviestClaimedCandidate: reactive.NewVariable[*Chain](), - heaviestAttestedCandidate: reactive.NewVariable[*Chain](), - heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), - commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - commitmentCreated: event.New1[*Commitment](), - chainCreated: event.New1[*Chain](), - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), + mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(rootCommitment, true))), + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + commitmentCreated: event.New1[*Commitment](), + chainCreated: event.New1[*Chain](), + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), } - c.OnChainCreated(func(chain *Chain) { - c.selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) - c.selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) - c.selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*Chain).VerifiedWeight) - }) + c.chainManagerChainSwitching = newChainManagerChainSwitching(c) return c } +func (c *ChainManager) MainChain() reactive.Variable[*Chain] { + return c.mainChain +} + func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment) { if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *Commitment) { commitmentMetadata = resolvedMetadata @@ -71,42 +64,6 @@ func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe return c.chainCreated.Hook(callback).Unhook } -func (c *ChainManager) MainChain() *Chain { - return c.mainChain.Get() -} - -func (c *ChainManager) MainChainVar() reactive.Variable[*Chain] { - return c.mainChain -} - -func (c *ChainManager) HeaviestCandidateChain() reactive.Variable[*Chain] { - return c.heaviestClaimedCandidate -} - -func (c *ChainManager) HeaviestAttestedCandidateChain() reactive.Variable[*Chain] { - return c.heaviestAttestedCandidate -} - -func (c *ChainManager) HeaviestVerifiedCandidateChain() reactive.Variable[*Chain] { - return c.heaviestVerifiedCandidate -} - -func (c *ChainManager) selectHeaviestCandidate(variable reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { - chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= c.MainChain().verifiedWeight.Get() { - return - } - - variable.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { - return newCandidate - } - - return currentCandidate - }) - }) -} - func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.setParent) diff --git a/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go b/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go new file mode 100644 index 000000000..0fb514eaf --- /dev/null +++ b/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go @@ -0,0 +1,44 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +type chainManagerChainSwitching struct { + candidateChain reactive.Variable[*Chain] +} + +func newChainManagerChainSwitching(chainManager *ChainManager) *chainManagerChainSwitching { + c := &chainManagerChainSwitching{ + candidateChain: reactive.NewVariable[*Chain](), + } + + heaviestClaimedCandidate := reactive.NewVariable[*Chain]() + heaviestAttestedCandidate := reactive.NewVariable[*Chain]() + + selectHeaviestCandidate := func(variable reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { + chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { + if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { + return + } + + variable.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { + return newCandidate + } + + return currentCandidate + }) + }) + } + + chainManager.OnChainCreated(func(chain *Chain) { + selectHeaviestCandidate(heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) + selectHeaviestCandidate(heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) + selectHeaviestCandidate(c.candidateChain, chain, (*Chain).VerifiedWeight) + }) + + return c +} + +func (c *chainManagerChainSwitching) CandidateChain() reactive.Variable[*Chain] { + return c.candidateChain +} diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index fc6a6ffb8..3cb9823d9 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -17,16 +17,8 @@ func TestChainManager(t *testing.T) { rootCommitment := model.NewEmptyCommitment(testAPI) chainManager := NewChainManager(rootCommitment) - chainManager.HeaviestCandidateChain().OnUpdate(func(oldValue, newValue *Chain) { - fmt.Println("HeaviestCandidateChain", oldValue, newValue) - }) - - chainManager.HeaviestAttestedCandidateChain().OnUpdate(func(oldValue, newValue *Chain) { - fmt.Println("HeaviestAttestedCandidateChain", oldValue, newValue) - }) - - chainManager.HeaviestVerifiedCandidateChain().OnUpdate(func(oldValue, newValue *Chain) { - fmt.Println("HeaviestVerifiedCandidateChain", oldValue, newValue) + chainManager.CandidateChain().OnUpdate(func(oldValue, newValue *Chain) { + fmt.Println("CandidateChain", oldValue, newValue) }) commitment1 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), From fea8d38439845fc219c45c869be1563523e4f0e7 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 15:59:05 +0200 Subject: [PATCH 064/356] Feat: started working on chain switching stub --- .../chainmanager_chain_switching.go | 39 +++++++++++++------ 1 file changed, 27 insertions(+), 12 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go b/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go index 0fb514eaf..6b6cb4398 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go @@ -12,25 +12,40 @@ func newChainManagerChainSwitching(chainManager *ChainManager) *chainManagerChai } heaviestClaimedCandidate := reactive.NewVariable[*Chain]() + heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + // TODO: STOP REQUESTING ATTESTATIONS FOR OLD CANDIDATE + } + + // TODO: REQUEST ATTESTATIONS FOR NEW CANDIDATE + }) + heaviestAttestedCandidate := reactive.NewVariable[*Chain]() + heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + // TODO: STOP SYNCING OLD CANDIDATE + } - selectHeaviestCandidate := func(variable reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { - chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { - return - } + // TODO: START SYNCING NEW CANDIDATE + }) - variable.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { - return newCandidate + chainManager.OnChainCreated(func(chain *Chain) { + selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { + chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { + if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { + return } - return currentCandidate + candidate.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { + return newCandidate + } + + return currentCandidate + }) }) - }) - } + } - chainManager.OnChainCreated(func(chain *Chain) { selectHeaviestCandidate(heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) selectHeaviestCandidate(heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) selectHeaviestCandidate(c.candidateChain, chain, (*Chain).VerifiedWeight) From 148bad1a1e99fa746a21abd50c6f7e15b1792ae0 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 16:21:45 +0200 Subject: [PATCH 065/356] Feat: concretized stub --- .../chainmanagerv1/chainmanager_chain_switching.go | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go b/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go index 6b6cb4398..1f20ba23d 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go @@ -14,22 +14,24 @@ func newChainManagerChainSwitching(chainManager *ChainManager) *chainManagerChai heaviestClaimedCandidate := reactive.NewVariable[*Chain]() heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { - // TODO: STOP REQUESTING ATTESTATIONS FOR OLD CANDIDATE + // prevCandidate.validateAttestations.Set(false) } - // TODO: REQUEST ATTESTATIONS FOR NEW CANDIDATE + // newCandidate.validateAttestations.Set(true) }) heaviestAttestedCandidate := reactive.NewVariable[*Chain]() heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { - // TODO: STOP SYNCING OLD CANDIDATE + // prevCandidate.validateState.Set(false) } - // TODO: START SYNCING NEW CANDIDATE + // newCandidate.validateState.Set(true) }) chainManager.OnChainCreated(func(chain *Chain) { + // TODO: ON SOLID + selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { From 0c3c18edb23650c250be13d486c2bdb38cd89781 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 21:27:34 +0200 Subject: [PATCH 066/356] Refactor: cleaned up initialization --- .../chainmanager_chain_switching.go | 35 +++++++++---------- .../commitment_dispatcher_flags.go | 18 +++++----- 2 files changed, 26 insertions(+), 27 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go b/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go index 1f20ba23d..4987faef3 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go @@ -14,40 +14,39 @@ func newChainManagerChainSwitching(chainManager *ChainManager) *chainManagerChai heaviestClaimedCandidate := reactive.NewVariable[*Chain]() heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { - // prevCandidate.validateAttestations.Set(false) + // prevCandidate.attestationsRequested.Set(false) } - // newCandidate.validateAttestations.Set(true) + // newCandidate.attestationsRequested.Set(true) }) heaviestAttestedCandidate := reactive.NewVariable[*Chain]() heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { - // prevCandidate.validateState.Set(false) + // prevCandidate.stateRequested.Set(false) } - // newCandidate.validateState.Set(true) + // newCandidate.stateRequested.Set(true) }) - chainManager.OnChainCreated(func(chain *Chain) { - // TODO: ON SOLID + selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { + chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { + if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { + return + } - selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { - chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { - return + candidate.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { + return newCandidate } - candidate.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { - return newCandidate - } - - return currentCandidate - }) + return currentCandidate }) - } + }) + } + chainManager.OnChainCreated(func(chain *Chain) { + // TODO: ON SOLID selectHeaviestCandidate(heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) selectHeaviestCandidate(heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) selectHeaviestCandidate(c.candidateChain, chain, (*Chain).VerifiedWeight) diff --git a/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go b/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go index 3f8dcc633..d1301f4e1 100644 --- a/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go +++ b/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go @@ -20,11 +20,6 @@ func newCommitmentDispatcherFlags(commitment *Commitment, isRoot bool) *commitme isBelowWarpSyncThreshold: reactive.NewEvent(), } - if isRoot { - c.isBelowSyncThreshold.Set(true) - c.isBelowWarpSyncThreshold.Set(true) - } - c.inSyncWindow = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { return belowSyncThreshold && aboveLatestVerifiedCommitment }, c.isBelowSyncThreshold, c.isAboveLatestVerifiedCommitment) @@ -33,10 +28,15 @@ func newCommitmentDispatcherFlags(commitment *Commitment, isRoot bool) *commitme return inSyncWindow && belowWarpSyncThreshold }, c.inSyncWindow, c.isBelowWarpSyncThreshold) - commitment.parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowSyncThreshold, commitment, (*Chain).SyncThreshold) - triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowWarpSyncThreshold, commitment, (*Chain).WarpSyncThreshold) - }) + if isRoot { + c.isBelowSyncThreshold.Set(true) + c.isBelowWarpSyncThreshold.Set(true) + } else { + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowSyncThreshold, commitment, (*Chain).SyncThreshold) + triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowWarpSyncThreshold, commitment, (*Chain).WarpSyncThreshold) + }) + } return c } From 71a3f3a7155780f90a92f3db904509c294e2c9c8 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 30 Aug 2023 22:06:51 +0200 Subject: [PATCH 067/356] Feat: added chain switching flags --- pkg/protocol/chainmanagerv1/chain.go | 8 ++++++-- .../chainmanagerv1/chain_switching_flags.go | 17 +++++++++++++++++ .../chainmanager_chain_switching.go | 4 ++-- 3 files changed, 25 insertions(+), 4 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/chain_switching_flags.go diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index b59d3ba4a..eebebd1db 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -27,11 +27,14 @@ type Chain struct { // evicted is an event that gets triggered when the chain gets evicted. evicted reactive.Event - // weight is a reactive subcomponent that tracks the cumulative weight of the chain. + // chainWeights is a reactive subcomponent that tracks the cumulative weight of the chain. *chainWeights - // thresholds is a reactive subcomponent that tracks the thresholds of the chain. + // chainDispatcherThresholds is a reactive subcomponent that tracks the thresholds of the chain. *chainDispatcherThresholds + + // chainSwitchingFlags is a reactive subcomponent that tracks the chain switching flags of the chain. + *chainSwitchingFlags } // NewChain creates a new Chain instance. @@ -48,6 +51,7 @@ func NewChain(root *Commitment) *Chain { // embed reactive subcomponents c.chainWeights = newChainWeights(c) c.chainDispatcherThresholds = newChainDispatcherThresholds(c) + c.chainSwitchingFlags = newChainSwitchingFlags(c) // associate the commitment with its chain root.chain.Set(c) diff --git a/pkg/protocol/chainmanagerv1/chain_switching_flags.go b/pkg/protocol/chainmanagerv1/chain_switching_flags.go new file mode 100644 index 000000000..382db8cab --- /dev/null +++ b/pkg/protocol/chainmanagerv1/chain_switching_flags.go @@ -0,0 +1,17 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +type chainSwitchingFlags struct { + requestAttestations reactive.Variable[bool] +} + +func newChainSwitchingFlags(chainManager *Chain) *chainSwitchingFlags { + return &chainSwitchingFlags{ + requestAttestations: reactive.NewVariable[bool](), + } +} + +func (c *chainSwitchingFlags) RequestAttestations() reactive.Variable[bool] { + return c.requestAttestations +} diff --git a/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go b/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go index 4987faef3..725d7a2e2 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go @@ -14,10 +14,10 @@ func newChainManagerChainSwitching(chainManager *ChainManager) *chainManagerChai heaviestClaimedCandidate := reactive.NewVariable[*Chain]() heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { - // prevCandidate.attestationsRequested.Set(false) + prevCandidate.requestAttestations.Set(false) } - // newCandidate.attestationsRequested.Set(true) + newCandidate.requestAttestations.Set(true) }) heaviestAttestedCandidate := reactive.NewVariable[*Chain]() From 6cc5a928e44c56b7a40221f82461947e3c110e13 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 31 Aug 2023 00:42:04 +0200 Subject: [PATCH 068/356] Feat: added commitment chaing switching flags --- pkg/protocol/chainmanagerv1/commitment.go | 2 + .../commitment_chain_switching_flags.go | 49 +++++++++++++++++++ 2 files changed, 51 insertions(+) create mode 100644 pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 3eb2f57be..134e039b2 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -17,6 +17,7 @@ type Commitment struct { *commitmentFlags *commitmentDispatcherFlags + *commitmentChainSwitchingFlags } func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment { @@ -31,6 +32,7 @@ func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment c.commitmentFlags = newCommitmentFlags(c, lo.First(optIsRoot)) c.commitmentDispatcherFlags = newCommitmentDispatcherFlags(c, lo.First(optIsRoot)) + c.commitmentChainSwitchingFlags = newCommitmentChainSwitchingFlags(c, lo.First(optIsRoot)) c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) diff --git a/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go b/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go new file mode 100644 index 000000000..658fb312e --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go @@ -0,0 +1,49 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +type commitmentChainSwitchingFlags struct { + isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] + attestationRequested reactive.Variable[bool] +} + +func newCommitmentChainSwitchingFlags(commitment *Commitment, isRoot bool) *commitmentChainSwitchingFlags { + c := &commitmentChainSwitchingFlags{ + isDirectlyAboveLatestAttestedCommitment: isDirectlyAboveLatestAttestedCommitment(commitment), + attestationRequested: reactive.NewVariable[bool](), + } + + var attestationRequestedByChain reactive.DerivedVariable[bool] + commitment.chain.OnUpdate(func(_, newChain *Chain) { + if attestationRequestedByChain != nil { + attestationRequestedByChain.Unsubscribe() + } + + attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isAboveLatestAttestedCommitment bool) bool { + return requestAttestations && isAboveLatestAttestedCommitment + }, newChain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) + + c.attestationRequested.InheritFrom(attestationRequestedByChain) + }) + + return c +} + +func (c *commitmentChainSwitchingFlags) IsDirectlyAboveLatestAttestedCommitment() reactive.Variable[bool] { + return c.isDirectlyAboveLatestAttestedCommitment +} + +func (c *commitmentChainSwitchingFlags) AttestationRequested() reactive.Variable[bool] { + return c.attestationRequested +} + +func isDirectlyAboveLatestAttestedCommitment(commitment *Commitment) reactive.Variable[bool] { + parentAttested := reactive.NewEvent() + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { + parentAttested.InheritFrom(parent.attested) + }) + + return reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { + return parentAttested && !attested + }, parentAttested, commitment.attested) +} From c8d92a9ec446e7c637056055a5dcddfa177646b9 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 31 Aug 2023 02:03:11 +0200 Subject: [PATCH 069/356] Feat: added chain switching flags --- pkg/protocol/chainmanagerv1/chainmanager_test.go | 11 ++++++++--- .../commitment_chain_switching_flags.go | 8 +++++--- 2 files changed, 13 insertions(+), 6 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 3cb9823d9..54ca398a3 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -73,7 +73,12 @@ func TestChainManager(t *testing.T) { require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().ClaimedWeight().Get()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) - commitment3aMetadata.Attested().Trigger() - commitment3aMetadata.Verified().Trigger() - fmt.Println(commitment3aMetadata.Chain().Get()) + + fmt.Println(commitment3aMetadata.AttestationRequested().Get()) + fmt.Println("TRIGGER ATTESTATION") + commitment3Metadata.Parent().Get().Attested().Trigger() + fmt.Println(commitment3aMetadata.AttestationRequested().Get()) + + fmt.Println(commitment3aMetadata.Attested().Trigger()) + fmt.Println(commitment3aMetadata.AttestationRequested().Get()) } diff --git a/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go b/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go index 658fb312e..82d999306 100644 --- a/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go +++ b/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go @@ -1,6 +1,8 @@ package chainmanagerv1 -import "github.com/iotaledger/hive.go/ds/reactive" +import ( + "github.com/iotaledger/hive.go/ds/reactive" +) type commitmentChainSwitchingFlags struct { isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] @@ -19,8 +21,8 @@ func newCommitmentChainSwitchingFlags(commitment *Commitment, isRoot bool) *comm attestationRequestedByChain.Unsubscribe() } - attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isAboveLatestAttestedCommitment bool) bool { - return requestAttestations && isAboveLatestAttestedCommitment + attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { + return requestAttestations && isDirectlyAboveLatestAttestedCommitment }, newChain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) c.attestationRequested.InheritFrom(attestationRequestedByChain) From e343974712e6613770fde66db4881c4c7cd93f4b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 31 Aug 2023 02:34:41 +0200 Subject: [PATCH 070/356] Feat: made isDirectlyAboveLatestAttestedCommitment private --- .../commitment_chain_switching_flags.go | 32 +++++++------------ 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go b/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go index 82d999306..3501d9554 100644 --- a/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go +++ b/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go @@ -5,16 +5,23 @@ import ( ) type commitmentChainSwitchingFlags struct { - isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] - attestationRequested reactive.Variable[bool] + attestationRequested reactive.Variable[bool] } func newCommitmentChainSwitchingFlags(commitment *Commitment, isRoot bool) *commitmentChainSwitchingFlags { c := &commitmentChainSwitchingFlags{ - isDirectlyAboveLatestAttestedCommitment: isDirectlyAboveLatestAttestedCommitment(commitment), - attestationRequested: reactive.NewVariable[bool](), + attestationRequested: reactive.NewVariable[bool](), } + parentAttested := reactive.NewEvent() + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { + parentAttested.InheritFrom(parent.attested) + }) + + isDirectlyAboveLatestAttestedCommitment := reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { + return parentAttested && !attested + }, parentAttested, commitment.attested) + var attestationRequestedByChain reactive.DerivedVariable[bool] commitment.chain.OnUpdate(func(_, newChain *Chain) { if attestationRequestedByChain != nil { @@ -23,7 +30,7 @@ func newCommitmentChainSwitchingFlags(commitment *Commitment, isRoot bool) *comm attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { return requestAttestations && isDirectlyAboveLatestAttestedCommitment - }, newChain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) + }, newChain.requestAttestations, isDirectlyAboveLatestAttestedCommitment) c.attestationRequested.InheritFrom(attestationRequestedByChain) }) @@ -31,21 +38,6 @@ func newCommitmentChainSwitchingFlags(commitment *Commitment, isRoot bool) *comm return c } -func (c *commitmentChainSwitchingFlags) IsDirectlyAboveLatestAttestedCommitment() reactive.Variable[bool] { - return c.isDirectlyAboveLatestAttestedCommitment -} - func (c *commitmentChainSwitchingFlags) AttestationRequested() reactive.Variable[bool] { return c.attestationRequested } - -func isDirectlyAboveLatestAttestedCommitment(commitment *Commitment) reactive.Variable[bool] { - parentAttested := reactive.NewEvent() - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { - parentAttested.InheritFrom(parent.attested) - }) - - return reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { - return parentAttested && !attested - }, parentAttested, commitment.attested) -} From cc5d32fcf95fa4f9534f44c30a1edf20f7b71b48 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 31 Aug 2023 15:36:57 +0200 Subject: [PATCH 071/356] Feat: stuff converges :P --- pkg/protocol/chainmanagerv1/chain.go | 91 ++++++++++++++++--- .../chain_dispatcher_thresholds.go | 49 ---------- .../chainmanagerv1/chain_switching.go | 80 ++++++++++++++++ .../chainmanagerv1/chain_switching_flags.go | 17 ---- pkg/protocol/chainmanagerv1/chain_weights.go | 44 --------- pkg/protocol/chainmanagerv1/chainmanager.go | 7 +- .../chainmanager_chain_switching.go | 60 ------------ .../chainmanagerv1/chainmanager_test.go | 2 +- .../commitment_chain_switching_flags.go | 4 + 9 files changed, 168 insertions(+), 186 deletions(-) delete mode 100644 pkg/protocol/chainmanagerv1/chain_dispatcher_thresholds.go create mode 100644 pkg/protocol/chainmanagerv1/chain_switching.go delete mode 100644 pkg/protocol/chainmanagerv1/chain_switching_flags.go delete mode 100644 pkg/protocol/chainmanagerv1/chain_weights.go delete mode 100644 pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index eebebd1db..7fb33349f 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -24,17 +24,30 @@ type Chain struct { // latestVerifiedCommitment is the latest verified Commitment object in this chain. latestVerifiedCommitment reactive.Variable[*Commitment] - // evicted is an event that gets triggered when the chain gets evicted. - evicted reactive.Event + // claimedWeight contains the total cumulative weight of the chain that is claimed by the latest commitments. + claimedWeight reactive.Variable[uint64] + + // attestedWeight contains the total cumulative weight of the chain that we received attestations for. + attestedWeight reactive.Variable[uint64] + + // verifiedWeight contains the total cumulative weight of the chain that we verified ourselves. + verifiedWeight reactive.Variable[uint64] - // chainWeights is a reactive subcomponent that tracks the cumulative weight of the chain. - *chainWeights + // syncThreshold is the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). + syncThreshold reactive.Variable[iotago.SlotIndex] - // chainDispatcherThresholds is a reactive subcomponent that tracks the thresholds of the chain. - *chainDispatcherThresholds + // warpSyncThreshold defines an offset from latest index where the warp sync process starts (we don't request slots + // that we are about to commit ourselves). + warpSyncThreshold reactive.Variable[iotago.SlotIndex] - // chainSwitchingFlags is a reactive subcomponent that tracks the chain switching flags of the chain. - *chainSwitchingFlags + // requestAttestations is a flag that indicates whether this chain shall request attestations. + requestAttestations reactive.Variable[bool] + + // instantiated is a flag that indicates whether this chain shall be instantiated. + instantiate reactive.Variable[bool] + + // evicted is an event that gets triggered when the chain gets evicted. + evicted reactive.Event } // NewChain creates a new Chain instance. @@ -45,13 +58,31 @@ func NewChain(root *Commitment) *Chain { latestCommitment: reactive.NewVariable[*Commitment](), latestAttestedCommitment: reactive.NewVariable[*Commitment](), latestVerifiedCommitment: reactive.NewVariable[*Commitment](), + requestAttestations: reactive.NewVariable[bool](), + instantiate: reactive.NewVariable[bool](), evicted: reactive.NewEvent(), } - // embed reactive subcomponents - c.chainWeights = newChainWeights(c) - c.chainDispatcherThresholds = newChainDispatcherThresholds(c) - c.chainSwitchingFlags = newChainSwitchingFlags(c) + // track weights of the chain + c.claimedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestCommitment) + c.attestedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestAttestedCommitment) + c.verifiedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestVerifiedCommitment) + + c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { + if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { + return 0 + } + + return latestCommitment.Index() - WarpSyncOffset + }, c.latestCommitment) + + c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitment *Commitment) iotago.SlotIndex { + if latestVerifiedCommitment == nil { + return SyncWindow + 1 + } + + return latestVerifiedCommitment.Index() + SyncWindow + 1 + }, c.latestVerifiedCommitment) // associate the commitment with its chain root.chain.Set(c) @@ -105,6 +136,42 @@ func (c *Chain) LatestVerifiedCommitment() reactive.Variable[*Commitment] { return c.latestVerifiedCommitment } +// ClaimedWeight returns a reactive variable that tracks the total cumulative weight of the chain that is claimed by +// the latest commitments. +func (c *Chain) ClaimedWeight() reactive.Variable[uint64] { + return c.claimedWeight +} + +// AttestedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we received +// attestations for. +func (c *Chain) AttestedWeight() reactive.Variable[uint64] { + return c.attestedWeight +} + +// VerifiedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we verified +// ourselves. +func (c *Chain) VerifiedWeight() reactive.Variable[uint64] { + return c.verifiedWeight +} + +// SyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the +// engine (to prevent memory exhaustion). +func (c *Chain) SyncThreshold() reactive.Variable[iotago.SlotIndex] { + return c.syncThreshold +} + +// WarpSyncThreshold returns a reactive variable that contains an offset from latest index where the warp sync +// process starts (we don't request slots that we are about to commit ourselves). +func (c *Chain) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { + return c.warpSyncThreshold +} + +// RequestAttestations returns a reactive variable that contains a flag that indicates whether this chain shall request +// attestations. +func (c *Chain) RequestAttestations() reactive.Variable[bool] { + return c.requestAttestations +} + // Evicted returns a reactive event that gets triggered when the chain is evicted. func (c *Chain) Evicted() reactive.Event { return c.evicted diff --git a/pkg/protocol/chainmanagerv1/chain_dispatcher_thresholds.go b/pkg/protocol/chainmanagerv1/chain_dispatcher_thresholds.go deleted file mode 100644 index 3d193d104..000000000 --- a/pkg/protocol/chainmanagerv1/chain_dispatcher_thresholds.go +++ /dev/null @@ -1,49 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - iotago "github.com/iotaledger/iota.go/v4" -) - -// chainDispatcherThresholds is a reactive component that provides a set of thresholds that are derived from the chain. -type chainDispatcherThresholds struct { - // syncThreshold is the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). - syncThreshold reactive.Variable[iotago.SlotIndex] - - // warpSyncThreshold defines an offset from latest index where the warp sync process starts (we don't request slots - // that we are about to commit ourselves). - warpSyncThreshold reactive.Variable[iotago.SlotIndex] -} - -// newChainDispatcherThresholds creates a new chainDispatcherThresholds instance. -func newChainDispatcherThresholds(chain *Chain) *chainDispatcherThresholds { - return &chainDispatcherThresholds{ - warpSyncThreshold: reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { - if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { - return 0 - } - - return latestCommitment.Index() - WarpSyncOffset - }, chain.latestCommitment), - - syncThreshold: reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitment *Commitment) iotago.SlotIndex { - if latestVerifiedCommitment == nil { - return SyncWindow + 1 - } - - return latestVerifiedCommitment.Index() + SyncWindow + 1 - }, chain.latestVerifiedCommitment), - } -} - -// SyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the -// engine (to prevent memory exhaustion). -func (c *chainDispatcherThresholds) SyncThreshold() reactive.Variable[iotago.SlotIndex] { - return c.syncThreshold -} - -// WarpSyncThreshold returns a reactive variable that contains an offset from latest index where the warp sync -// process starts (we don't request slots that we are about to commit ourselves). -func (c *chainDispatcherThresholds) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { - return c.warpSyncThreshold -} diff --git a/pkg/protocol/chainmanagerv1/chain_switching.go b/pkg/protocol/chainmanagerv1/chain_switching.go new file mode 100644 index 000000000..398753dba --- /dev/null +++ b/pkg/protocol/chainmanagerv1/chain_switching.go @@ -0,0 +1,80 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +type ChainSwitching struct { + heaviestClaimedCandidate reactive.Variable[*Chain] + + heaviestAttestedCandidate reactive.Variable[*Chain] + + heaviestVerifiedCandidate reactive.Variable[*Chain] +} + +func NewChainSwitching(chainManager *ChainManager) *ChainSwitching { + c := &ChainSwitching{ + heaviestClaimedCandidate: reactive.NewVariable[*Chain](), + heaviestAttestedCandidate: reactive.NewVariable[*Chain](), + heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), + } + + c.heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + prevCandidate.requestAttestations.Set(false) + } + + newCandidate.requestAttestations.Set(true) + }) + + c.heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + prevCandidate.instantiate.Set(false) + } + + newCandidate.instantiate.Set(true) + }) + + c.heaviestVerifiedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + prevCandidate.evicted.Trigger() + } + + // TODO: MAKE MAIN CHAIN + }) + + selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { + chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { + if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { + return + } + + candidate.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { + return newCandidate + } + + return currentCandidate + }) + }) + } + + chainManager.OnChainCreated(func(chain *Chain) { + // TODO: ON SOLID + selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) + selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) + selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*Chain).VerifiedWeight) + }) + + return c +} + +func (c *ChainSwitching) HeaviestClaimedCandidate() reactive.Variable[*Chain] { + return c.heaviestClaimedCandidate +} + +func (c *ChainSwitching) HeaviestAttestedCandidate() reactive.Variable[*Chain] { + return c.heaviestAttestedCandidate +} + +func (c *ChainSwitching) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { + return c.heaviestVerifiedCandidate +} diff --git a/pkg/protocol/chainmanagerv1/chain_switching_flags.go b/pkg/protocol/chainmanagerv1/chain_switching_flags.go deleted file mode 100644 index 382db8cab..000000000 --- a/pkg/protocol/chainmanagerv1/chain_switching_flags.go +++ /dev/null @@ -1,17 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/ds/reactive" - -type chainSwitchingFlags struct { - requestAttestations reactive.Variable[bool] -} - -func newChainSwitchingFlags(chainManager *Chain) *chainSwitchingFlags { - return &chainSwitchingFlags{ - requestAttestations: reactive.NewVariable[bool](), - } -} - -func (c *chainSwitchingFlags) RequestAttestations() reactive.Variable[bool] { - return c.requestAttestations -} diff --git a/pkg/protocol/chainmanagerv1/chain_weights.go b/pkg/protocol/chainmanagerv1/chain_weights.go deleted file mode 100644 index 78924f188..000000000 --- a/pkg/protocol/chainmanagerv1/chain_weights.go +++ /dev/null @@ -1,44 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" -) - -// chainWeights is a reactive component that tracks the cumulative weight of a chain. -type chainWeights struct { - // claimedWeight contains the total cumulative weight of the chain that is claimed by the latest commitments. - claimedWeight reactive.Variable[uint64] - - // attestedWeight contains the total cumulative weight of the chain that we received attestations for. - attestedWeight reactive.Variable[uint64] - - // verifiedWeight contains the total cumulative weight of the chain that we verified ourselves. - verifiedWeight reactive.Variable[uint64] -} - -// newChainWeights creates a new chainWeights for the given chain. -func newChainWeights(chain *Chain) *chainWeights { - return &chainWeights{ - claimedWeight: reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), chain.latestCommitment), - attestedWeight: reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), chain.latestAttestedCommitment), - verifiedWeight: reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), chain.latestVerifiedCommitment), - } -} - -// ClaimedWeight returns a reactive variable that tracks the total cumulative weight of the chain that is claimed by -// the latest commitments. -func (c *chainWeights) ClaimedWeight() reactive.Variable[uint64] { - return c.claimedWeight -} - -// AttestedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we received -// attestations for. -func (c *chainWeights) AttestedWeight() reactive.Variable[uint64] { - return c.attestedWeight -} - -// VerifiedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we verified -// ourselves. -func (c *chainWeights) VerifiedWeight() reactive.Variable[uint64] { - return c.verifiedWeight -} diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chainmanager.go index 361ea41bf..96b06cefb 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chainmanager.go @@ -22,22 +22,23 @@ type ChainManager struct { chainCreated *event.Event1[*Chain] - *chainManagerChainSwitching + *ChainSwitching reactive.EvictionState[iotago.SlotIndex] } func NewChainManager(rootCommitment *model.Commitment) *ChainManager { c := &ChainManager{ + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(rootCommitment, true))), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), commitmentCreated: event.New1[*Commitment](), chainCreated: event.New1[*Chain](), - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), } - c.chainManagerChainSwitching = newChainManagerChainSwitching(c) + // embed reactive orchestrators + c.ChainSwitching = NewChainSwitching(c) return c } diff --git a/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go b/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go deleted file mode 100644 index 725d7a2e2..000000000 --- a/pkg/protocol/chainmanagerv1/chainmanager_chain_switching.go +++ /dev/null @@ -1,60 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/ds/reactive" - -type chainManagerChainSwitching struct { - candidateChain reactive.Variable[*Chain] -} - -func newChainManagerChainSwitching(chainManager *ChainManager) *chainManagerChainSwitching { - c := &chainManagerChainSwitching{ - candidateChain: reactive.NewVariable[*Chain](), - } - - heaviestClaimedCandidate := reactive.NewVariable[*Chain]() - heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - prevCandidate.requestAttestations.Set(false) - } - - newCandidate.requestAttestations.Set(true) - }) - - heaviestAttestedCandidate := reactive.NewVariable[*Chain]() - heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - // prevCandidate.stateRequested.Set(false) - } - - // newCandidate.stateRequested.Set(true) - }) - - selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { - chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { - return - } - - candidate.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { - return newCandidate - } - - return currentCandidate - }) - }) - } - - chainManager.OnChainCreated(func(chain *Chain) { - // TODO: ON SOLID - selectHeaviestCandidate(heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) - selectHeaviestCandidate(heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) - selectHeaviestCandidate(c.candidateChain, chain, (*Chain).VerifiedWeight) - }) - - return c -} - -func (c *chainManagerChainSwitching) CandidateChain() reactive.Variable[*Chain] { - return c.candidateChain -} diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 54ca398a3..530c67c75 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -17,7 +17,7 @@ func TestChainManager(t *testing.T) { rootCommitment := model.NewEmptyCommitment(testAPI) chainManager := NewChainManager(rootCommitment) - chainManager.CandidateChain().OnUpdate(func(oldValue, newValue *Chain) { + chainManager.ChainSwitching.heaviestAttestedCandidate.OnUpdate(func(oldValue, newValue *Chain) { fmt.Println("CandidateChain", oldValue, newValue) }) diff --git a/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go b/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go index 3501d9554..aec38f663 100644 --- a/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go +++ b/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go @@ -23,15 +23,19 @@ func newCommitmentChainSwitchingFlags(commitment *Commitment, isRoot bool) *comm }, parentAttested, commitment.attested) var attestationRequestedByChain reactive.DerivedVariable[bool] + commitment.chain.OnUpdate(func(_, newChain *Chain) { + // cleanup the old chain specific derived variable if it exists if attestationRequestedByChain != nil { attestationRequestedByChain.Unsubscribe() } + // create a chain specific derived variable attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { return requestAttestations && isDirectlyAboveLatestAttestedCommitment }, newChain.requestAttestations, isDirectlyAboveLatestAttestedCommitment) + // expose the chain specific derived variable to the commitment property c.attestationRequested.InheritFrom(attestationRequestedByChain) }) From ac57e8a082eae662393c5ed052aa3b6ade8bc18c Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 31 Aug 2023 16:55:36 +0200 Subject: [PATCH 072/356] Refactor: cleaned up code --- pkg/protocol/chainmanagerv1/commitment.go | 30 +++++++++++++- .../chainmanagerv1/commitment_flags.go | 41 ------------------- 2 files changed, 28 insertions(+), 43 deletions(-) delete mode 100644 pkg/protocol/chainmanagerv1/commitment_flags.go diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 134e039b2..8863137fd 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -13,9 +13,11 @@ type Commitment struct { successor reactive.Variable[*Commitment] spawnedChain reactive.Variable[*Chain] chain reactive.Variable[*Chain] + solid reactive.Event + attested reactive.Event + verified reactive.Event evicted reactive.Event - *commitmentFlags *commitmentDispatcherFlags *commitmentChainSwitchingFlags } @@ -27,13 +29,25 @@ func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment successor: reactive.NewVariable[*Commitment](), spawnedChain: reactive.NewVariable[*Chain](), chain: reactive.NewVariable[*Chain](), + solid: reactive.NewEvent(), + attested: reactive.NewEvent(), + verified: reactive.NewEvent(), evicted: reactive.NewEvent(), } - c.commitmentFlags = newCommitmentFlags(c, lo.First(optIsRoot)) + c.parent.OnUpdate(func(_, parent *Commitment) { + c.solid.InheritFrom(parent.solid) + }) + c.commitmentDispatcherFlags = newCommitmentDispatcherFlags(c, lo.First(optIsRoot)) c.commitmentChainSwitchingFlags = newCommitmentChainSwitchingFlags(c, lo.First(optIsRoot)) + if lo.First(optIsRoot) { + c.solid.Set(true) + c.attested.Set(true) + c.verified.Set(true) + } + c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) return c @@ -55,6 +69,18 @@ func (c *Commitment) Chain() reactive.Variable[*Chain] { return c.chain } +func (c *Commitment) Solid() reactive.Event { + return c.solid +} + +func (c *Commitment) Attested() reactive.Event { + return c.attested +} + +func (c *Commitment) Verified() reactive.Event { + return c.verified +} + func (c *Commitment) Evicted() reactive.Event { return c.evicted } diff --git a/pkg/protocol/chainmanagerv1/commitment_flags.go b/pkg/protocol/chainmanagerv1/commitment_flags.go deleted file mode 100644 index 72de9d098..000000000 --- a/pkg/protocol/chainmanagerv1/commitment_flags.go +++ /dev/null @@ -1,41 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/ds/reactive" - -type commitmentFlags struct { - solid reactive.Event - attested reactive.Event - verified reactive.Event -} - -func newCommitmentFlags(commitment *Commitment, isRoot bool) *commitmentFlags { - c := &commitmentFlags{ - solid: reactive.NewEvent(), - attested: reactive.NewEvent(), - verified: reactive.NewEvent(), - } - - if isRoot { - c.solid.Set(true) - c.attested.Set(true) - c.verified.Set(true) - } else { - commitment.parent.OnUpdate(func(_, parent *Commitment) { - c.solid.InheritFrom(parent.solid) - }) - } - - return c -} - -func (c *commitmentFlags) Solid() reactive.Event { - return c.solid -} - -func (c *commitmentFlags) Attested() reactive.Event { - return c.attested -} - -func (c *commitmentFlags) Verified() reactive.Event { - return c.verified -} From fa12f9acd40c471b734d44e31a69ac7ee89ae831 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 31 Aug 2023 22:11:27 +0200 Subject: [PATCH 073/356] Refactor: cleaned up more code --- .../chainmanagerv1/chainmanager_test.go | 2 +- pkg/protocol/chainmanagerv1/commitment.go | 41 ++++---- ...itment_above_latest_verified_commitment.go | 35 +++++++ ...o => commitment_attestations_requested.go} | 0 .../commitment_dispatcher_flags.go | 96 ------------------- .../commitment_in_sync_window.go | 33 +++++++ .../commitment_requires_warp_sync.go | 33 +++++++ pkg/protocol/chainmanagerv1/utils.go | 18 ++++ 8 files changed, 145 insertions(+), 113 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/commitment_above_latest_verified_commitment.go rename pkg/protocol/chainmanagerv1/{commitment_chain_switching_flags.go => commitment_attestations_requested.go} (100%) delete mode 100644 pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go create mode 100644 pkg/protocol/chainmanagerv1/commitment_in_sync_window.go create mode 100644 pkg/protocol/chainmanagerv1/commitment_requires_warp_sync.go diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 530c67c75..30fa19b82 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -67,7 +67,7 @@ func TestChainManager(t *testing.T) { commitment2Metadata.Verified().Trigger() require.True(t, commitment3Metadata.InSyncWindow().Get()) - require.True(t, commitment3Metadata.IsAboveLatestVerifiedCommitment().Get()) + require.False(t, commitment3Metadata.RequiresWarpSync().Get()) require.True(t, commitment3Metadata.Solid().WasTriggered()) require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().LatestCommitment().Get().Index()) require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().ClaimedWeight().Get()) diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 8863137fd..84bbcc3c5 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -9,16 +9,17 @@ import ( type Commitment struct { *model.Commitment - parent reactive.Variable[*Commitment] - successor reactive.Variable[*Commitment] - spawnedChain reactive.Variable[*Chain] - chain reactive.Variable[*Chain] - solid reactive.Event - attested reactive.Event - verified reactive.Event - evicted reactive.Event - - *commitmentDispatcherFlags + parent reactive.Variable[*Commitment] + successor reactive.Variable[*Commitment] + spawnedChain reactive.Variable[*Chain] + chain reactive.Variable[*Chain] + solid reactive.Event + attested reactive.Event + verified reactive.Event + inSyncWindow *inSyncWindow + requiresWarpSync *requiresWarpSync + evicted reactive.Event + *commitmentChainSwitchingFlags } @@ -35,21 +36,21 @@ func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment evicted: reactive.NewEvent(), } - c.parent.OnUpdate(func(_, parent *Commitment) { - c.solid.InheritFrom(parent.solid) - }) + c.inSyncWindow = newInSyncWindow(c, lo.First(optIsRoot)) + c.requiresWarpSync = newRequiresWarpSync(c, lo.First(optIsRoot)) + + c.parent.OnUpdate(func(_, parent *Commitment) { c.solid.InheritFrom(parent.solid) }) - c.commitmentDispatcherFlags = newCommitmentDispatcherFlags(c, lo.First(optIsRoot)) c.commitmentChainSwitchingFlags = newCommitmentChainSwitchingFlags(c, lo.First(optIsRoot)) + c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) + if lo.First(optIsRoot) { c.solid.Set(true) c.attested.Set(true) c.verified.Set(true) } - c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) - return c } @@ -81,6 +82,14 @@ func (c *Commitment) Verified() reactive.Event { return c.verified } +func (c *Commitment) InSyncWindow() reactive.Variable[bool] { + return c.inSyncWindow +} + +func (c *Commitment) RequiresWarpSync() reactive.Variable[bool] { + return c.requiresWarpSync +} + func (c *Commitment) Evicted() reactive.Event { return c.evicted } diff --git a/pkg/protocol/chainmanagerv1/commitment_above_latest_verified_commitment.go b/pkg/protocol/chainmanagerv1/commitment_above_latest_verified_commitment.go new file mode 100644 index 000000000..dc201ab7f --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment_above_latest_verified_commitment.go @@ -0,0 +1,35 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +type aboveLatestVerifiedCommitment struct { + reactive.Variable[bool] + + parentVerified reactive.Event + + parentAboveLatestVerifiedCommitment reactive.Variable[bool] + + directlyAboveLatestVerifiedCommitment reactive.Variable[bool] +} + +func newAboveLatestVerifiedCommitment(commitment *Commitment) *aboveLatestVerifiedCommitment { + a := &aboveLatestVerifiedCommitment{ + parentVerified: reactive.NewEvent(), + parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), + } + + a.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { + return parentVerified && !verified + }, a.parentVerified, commitment.verified) + + a.Variable = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { + return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment + }, a.directlyAboveLatestVerifiedCommitment, a.parentAboveLatestVerifiedCommitment) + + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { + a.parentVerified.InheritFrom(parent.verified) + a.parentAboveLatestVerifiedCommitment.InheritFrom(parent.inSyncWindow.isAboveLatestVerifiedCommitment) + }) + + return a +} diff --git a/pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go b/pkg/protocol/chainmanagerv1/commitment_attestations_requested.go similarity index 100% rename from pkg/protocol/chainmanagerv1/commitment_chain_switching_flags.go rename to pkg/protocol/chainmanagerv1/commitment_attestations_requested.go diff --git a/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go b/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go deleted file mode 100644 index d1301f4e1..000000000 --- a/pkg/protocol/chainmanagerv1/commitment_dispatcher_flags.go +++ /dev/null @@ -1,96 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - iotago "github.com/iotaledger/iota.go/v4" -) - -type commitmentDispatcherFlags struct { - isAboveLatestVerifiedCommitment reactive.Variable[bool] - isBelowSyncThreshold reactive.Event - isBelowWarpSyncThreshold reactive.Event - inSyncWindow reactive.Variable[bool] - requiresWarpSync reactive.Variable[bool] -} - -func newCommitmentDispatcherFlags(commitment *Commitment, isRoot bool) *commitmentDispatcherFlags { - c := &commitmentDispatcherFlags{ - isAboveLatestVerifiedCommitment: isAboveLatestVerifiedCommitment(commitment), - isBelowSyncThreshold: reactive.NewEvent(), - isBelowWarpSyncThreshold: reactive.NewEvent(), - } - - c.inSyncWindow = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { - return belowSyncThreshold && aboveLatestVerifiedCommitment - }, c.isBelowSyncThreshold, c.isAboveLatestVerifiedCommitment) - - c.requiresWarpSync = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { - return inSyncWindow && belowWarpSyncThreshold - }, c.inSyncWindow, c.isBelowWarpSyncThreshold) - - if isRoot { - c.isBelowSyncThreshold.Set(true) - c.isBelowWarpSyncThreshold.Set(true) - } else { - commitment.parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowSyncThreshold, commitment, (*Chain).SyncThreshold) - triggerEventIfCommitmentBelowThreshold((*Commitment).IsBelowWarpSyncThreshold, commitment, (*Chain).WarpSyncThreshold) - }) - } - - return c -} - -func (c *commitmentDispatcherFlags) IsAboveLatestVerifiedCommitment() reactive.Variable[bool] { - return c.isAboveLatestVerifiedCommitment -} - -func (c *commitmentDispatcherFlags) IsBelowSyncThreshold() reactive.Event { - return c.isBelowSyncThreshold -} - -func (c *commitmentDispatcherFlags) IsBelowWarpSyncThreshold() reactive.Event { - return c.isBelowWarpSyncThreshold -} - -func (c *commitmentDispatcherFlags) InSyncWindow() reactive.Variable[bool] { - return c.inSyncWindow -} - -func (c *commitmentDispatcherFlags) RequiresWarpSync() reactive.Variable[bool] { - return c.requiresWarpSync -} - -func isAboveLatestVerifiedCommitment(commitment *Commitment) reactive.Variable[bool] { - var ( - parentVerified = reactive.NewEvent() - - parentAboveLatestVerifiedCommitment = reactive.NewVariable[bool]() - - directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { - return parentVerified && !verified - }, parentVerified, commitment.verified) - ) - - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { - parentVerified.InheritFrom(parent.verified) - parentAboveLatestVerifiedCommitment.InheritFrom(parent.isAboveLatestVerifiedCommitment) - }) - - return reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { - return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment - }, directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment) -} - -// triggerEventIfCommitmentBelowThreshold triggers the given event if the given commitment is below the given threshold. -func triggerEventIfCommitmentBelowThreshold(event func(*Commitment) reactive.Event, commitment *Commitment, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { - // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) - event(commitment.parent.Get()).OnTrigger(func() { - // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met - chainThreshold(commitment.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { - event(commitment).Trigger() - }, func(_, slotIndex iotago.SlotIndex) bool { - return commitment.Index() < slotIndex - }) - }) -} diff --git a/pkg/protocol/chainmanagerv1/commitment_in_sync_window.go b/pkg/protocol/chainmanagerv1/commitment_in_sync_window.go new file mode 100644 index 000000000..4b2e1f62d --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment_in_sync_window.go @@ -0,0 +1,33 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +type inSyncWindow struct { + reactive.Variable[bool] + + isAboveLatestVerifiedCommitment *aboveLatestVerifiedCommitment + isBelowSyncThreshold reactive.Event +} + +func newInSyncWindow(commitment *Commitment, isRoot bool) *inSyncWindow { + i := &inSyncWindow{ + isAboveLatestVerifiedCommitment: newAboveLatestVerifiedCommitment(commitment), + isBelowSyncThreshold: reactive.NewEvent(), + } + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { + return commitment.inSyncWindow.isBelowSyncThreshold + }, commitment, (*Chain).SyncThreshold) + }) + + if isRoot { + i.isBelowSyncThreshold.Set(true) + } + + i.Variable = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { + return belowSyncThreshold && aboveLatestVerifiedCommitment + }, i.isBelowSyncThreshold, newAboveLatestVerifiedCommitment(commitment)) + + return i +} diff --git a/pkg/protocol/chainmanagerv1/commitment_requires_warp_sync.go b/pkg/protocol/chainmanagerv1/commitment_requires_warp_sync.go new file mode 100644 index 000000000..6afa14602 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment_requires_warp_sync.go @@ -0,0 +1,33 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" +) + +type requiresWarpSync struct { + reactive.Variable[bool] + + isBelowWarpSyncThreshold reactive.Event +} + +func newRequiresWarpSync(commitment *Commitment, isRoot bool) *requiresWarpSync { + r := &requiresWarpSync{ + isBelowWarpSyncThreshold: reactive.NewEvent(), + } + + if isRoot { + r.isBelowWarpSyncThreshold.Set(true) + } + + r.Variable = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { + return inSyncWindow && belowWarpSyncThreshold + }, commitment.inSyncWindow, r.isBelowWarpSyncThreshold) + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { + return commitment.requiresWarpSync.isBelowWarpSyncThreshold + }, commitment, (*Chain).WarpSyncThreshold) + }) + + return r +} diff --git a/pkg/protocol/chainmanagerv1/utils.go b/pkg/protocol/chainmanagerv1/utils.go index 0a6f46b37..b1ee12546 100644 --- a/pkg/protocol/chainmanagerv1/utils.go +++ b/pkg/protocol/chainmanagerv1/utils.go @@ -1,5 +1,10 @@ package chainmanagerv1 +import ( + "github.com/iotaledger/hive.go/ds/reactive" + iotago "github.com/iotaledger/iota.go/v4" +) + // noPanicIfNil prevents a panic of the getter when the receiver is nil by returning the zero value of the return type. func noPanicIfNil[ReceiverType, ReturnType any](getter func(*ReceiverType) ReturnType) func(*ReceiverType) ReturnType { return func(receiver *ReceiverType) (zeroValue ReturnType) { @@ -10,3 +15,16 @@ func noPanicIfNil[ReceiverType, ReturnType any](getter func(*ReceiverType) Retur return getter(receiver) } } + +// triggerEventIfCommitmentBelowThreshold triggers the given event if the given commitment is below the given threshold. +func triggerEventIfCommitmentBelowThreshold(event func(*Commitment) reactive.Event, commitment *Commitment, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { + // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) + event(commitment.parent.Get()).OnTrigger(func() { + // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met + chainThreshold(commitment.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { + event(commitment).Trigger() + }, func(_, slotIndex iotago.SlotIndex) bool { + return commitment.Index() < slotIndex + }) + }) +} From a83f1ed105969e05fe198302156588b46ecc1e76 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 31 Aug 2023 22:19:47 +0200 Subject: [PATCH 074/356] Refactor: removed unused code --- pkg/protocol/chainmanagerv1/commitment.go | 2 +- .../chainmanagerv1/commitment_attestations_requested.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 84bbcc3c5..9d664ae69 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -41,7 +41,7 @@ func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment c.parent.OnUpdate(func(_, parent *Commitment) { c.solid.InheritFrom(parent.solid) }) - c.commitmentChainSwitchingFlags = newCommitmentChainSwitchingFlags(c, lo.First(optIsRoot)) + c.commitmentChainSwitchingFlags = newCommitmentChainSwitchingFlags(c) c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) diff --git a/pkg/protocol/chainmanagerv1/commitment_attestations_requested.go b/pkg/protocol/chainmanagerv1/commitment_attestations_requested.go index aec38f663..2a0191673 100644 --- a/pkg/protocol/chainmanagerv1/commitment_attestations_requested.go +++ b/pkg/protocol/chainmanagerv1/commitment_attestations_requested.go @@ -8,7 +8,7 @@ type commitmentChainSwitchingFlags struct { attestationRequested reactive.Variable[bool] } -func newCommitmentChainSwitchingFlags(commitment *Commitment, isRoot bool) *commitmentChainSwitchingFlags { +func newCommitmentChainSwitchingFlags(commitment *Commitment) *commitmentChainSwitchingFlags { c := &commitmentChainSwitchingFlags{ attestationRequested: reactive.NewVariable[bool](), } From eea223ad69d0af3255aa3f9978f2f0e4abb925d3 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 31 Aug 2023 22:48:03 +0200 Subject: [PATCH 075/356] Feat: merged commitment files --- .../chainmanagerv1/chainmanager_test.go | 6 +- pkg/protocol/chainmanagerv1/commitment.go | 160 ++++++++++++++++-- ...itment_above_latest_verified_commitment.go | 35 ---- .../commitment_attestations_requested.go | 47 ----- .../commitment_in_sync_window.go | 33 ---- .../commitment_requires_warp_sync.go | 33 ---- 6 files changed, 150 insertions(+), 164 deletions(-) delete mode 100644 pkg/protocol/chainmanagerv1/commitment_above_latest_verified_commitment.go delete mode 100644 pkg/protocol/chainmanagerv1/commitment_attestations_requested.go delete mode 100644 pkg/protocol/chainmanagerv1/commitment_in_sync_window.go delete mode 100644 pkg/protocol/chainmanagerv1/commitment_requires_warp_sync.go diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 30fa19b82..667f7e57c 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -74,11 +74,11 @@ func TestChainManager(t *testing.T) { commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) - fmt.Println(commitment3aMetadata.AttestationRequested().Get()) + fmt.Println(commitment3aMetadata.RequestAttestations().Get()) fmt.Println("TRIGGER ATTESTATION") commitment3Metadata.Parent().Get().Attested().Trigger() - fmt.Println(commitment3aMetadata.AttestationRequested().Get()) + fmt.Println(commitment3aMetadata.RequestAttestations().Get()) fmt.Println(commitment3aMetadata.Attested().Trigger()) - fmt.Println(commitment3aMetadata.AttestationRequested().Get()) + fmt.Println(commitment3aMetadata.RequestAttestations().Get()) } diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 9d664ae69..7d924797e 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -9,18 +9,17 @@ import ( type Commitment struct { *model.Commitment - parent reactive.Variable[*Commitment] - successor reactive.Variable[*Commitment] - spawnedChain reactive.Variable[*Chain] - chain reactive.Variable[*Chain] - solid reactive.Event - attested reactive.Event - verified reactive.Event - inSyncWindow *inSyncWindow - requiresWarpSync *requiresWarpSync - evicted reactive.Event - - *commitmentChainSwitchingFlags + parent reactive.Variable[*Commitment] + successor reactive.Variable[*Commitment] + spawnedChain reactive.Variable[*Chain] + chain reactive.Variable[*Chain] + solid reactive.Event + attested reactive.Event + verified reactive.Event + inSyncWindow *inSyncWindow + requiresWarpSync *requiresWarpSync + requestAttestations *requestAttestations + evicted reactive.Event } func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment { @@ -38,10 +37,11 @@ func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment c.inSyncWindow = newInSyncWindow(c, lo.First(optIsRoot)) c.requiresWarpSync = newRequiresWarpSync(c, lo.First(optIsRoot)) + c.requestAttestations = newRequestAttestations(c) c.parent.OnUpdate(func(_, parent *Commitment) { c.solid.InheritFrom(parent.solid) }) - c.commitmentChainSwitchingFlags = newCommitmentChainSwitchingFlags(c) + c.requestAttestations = newRequestAttestations(c) c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) @@ -90,6 +90,10 @@ func (c *Commitment) RequiresWarpSync() reactive.Variable[bool] { return c.requiresWarpSync } +func (c *Commitment) RequestAttestations() reactive.Variable[bool] { + return c.requestAttestations +} + func (c *Commitment) Evicted() reactive.Event { return c.evicted } @@ -156,3 +160,133 @@ func (c *Commitment) max(other *Commitment) *Commitment { return c } + +type aboveLatestVerifiedCommitment struct { + reactive.Variable[bool] + + parentVerified reactive.Event + + parentAboveLatestVerifiedCommitment reactive.Variable[bool] + + directlyAboveLatestVerifiedCommitment reactive.Variable[bool] +} + +func newAboveLatestVerifiedCommitment(commitment *Commitment) *aboveLatestVerifiedCommitment { + a := &aboveLatestVerifiedCommitment{ + parentVerified: reactive.NewEvent(), + parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), + } + + a.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { + return parentVerified && !verified + }, a.parentVerified, commitment.verified) + + a.Variable = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { + return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment + }, a.directlyAboveLatestVerifiedCommitment, a.parentAboveLatestVerifiedCommitment) + + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { + a.parentVerified.InheritFrom(parent.verified) + a.parentAboveLatestVerifiedCommitment.InheritFrom(parent.inSyncWindow.isAboveLatestVerifiedCommitment) + }) + + return a +} + +type inSyncWindow struct { + reactive.Variable[bool] + + isAboveLatestVerifiedCommitment *aboveLatestVerifiedCommitment + isBelowSyncThreshold reactive.Event +} + +func newInSyncWindow(commitment *Commitment, isRoot bool) *inSyncWindow { + i := &inSyncWindow{ + isAboveLatestVerifiedCommitment: newAboveLatestVerifiedCommitment(commitment), + isBelowSyncThreshold: reactive.NewEvent(), + } + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { + return commitment.inSyncWindow.isBelowSyncThreshold + }, commitment, (*Chain).SyncThreshold) + }) + + if isRoot { + i.isBelowSyncThreshold.Set(true) + } + + i.Variable = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { + return belowSyncThreshold && aboveLatestVerifiedCommitment + }, i.isBelowSyncThreshold, newAboveLatestVerifiedCommitment(commitment)) + + return i +} + +type requestAttestations struct { + reactive.Variable[bool] + + parentAttested reactive.Event + + isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] +} + +func newRequestAttestations(commitment *Commitment) *requestAttestations { + c := &requestAttestations{ + Variable: reactive.NewVariable[bool](), + parentAttested: reactive.NewEvent(), + } + + c.isDirectlyAboveLatestAttestedCommitment = reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { + return parentAttested && !attested + }, c.parentAttested, commitment.attested) + + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { c.parentAttested.InheritFrom(parent.attested) }) + + var attestationRequestedByChain reactive.DerivedVariable[bool] + + commitment.chain.OnUpdate(func(_, newChain *Chain) { + // cleanup the old chain specific derived variable if it exists + if attestationRequestedByChain != nil { + attestationRequestedByChain.Unsubscribe() + } + + // create a chain specific derived variable + attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { + return requestAttestations && isDirectlyAboveLatestAttestedCommitment + }, newChain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) + + // expose the chain specific derived variable to the commitment property + c.InheritFrom(attestationRequestedByChain) + }) + + return c +} + +type requiresWarpSync struct { + reactive.Variable[bool] + + isBelowWarpSyncThreshold reactive.Event +} + +func newRequiresWarpSync(commitment *Commitment, isRoot bool) *requiresWarpSync { + r := &requiresWarpSync{ + isBelowWarpSyncThreshold: reactive.NewEvent(), + } + + if isRoot { + r.isBelowWarpSyncThreshold.Set(true) + } + + r.Variable = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { + return inSyncWindow && belowWarpSyncThreshold + }, commitment.inSyncWindow, r.isBelowWarpSyncThreshold) + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { + return commitment.requiresWarpSync.isBelowWarpSyncThreshold + }, commitment, (*Chain).WarpSyncThreshold) + }) + + return r +} diff --git a/pkg/protocol/chainmanagerv1/commitment_above_latest_verified_commitment.go b/pkg/protocol/chainmanagerv1/commitment_above_latest_verified_commitment.go deleted file mode 100644 index dc201ab7f..000000000 --- a/pkg/protocol/chainmanagerv1/commitment_above_latest_verified_commitment.go +++ /dev/null @@ -1,35 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/ds/reactive" - -type aboveLatestVerifiedCommitment struct { - reactive.Variable[bool] - - parentVerified reactive.Event - - parentAboveLatestVerifiedCommitment reactive.Variable[bool] - - directlyAboveLatestVerifiedCommitment reactive.Variable[bool] -} - -func newAboveLatestVerifiedCommitment(commitment *Commitment) *aboveLatestVerifiedCommitment { - a := &aboveLatestVerifiedCommitment{ - parentVerified: reactive.NewEvent(), - parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - } - - a.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { - return parentVerified && !verified - }, a.parentVerified, commitment.verified) - - a.Variable = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { - return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment - }, a.directlyAboveLatestVerifiedCommitment, a.parentAboveLatestVerifiedCommitment) - - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { - a.parentVerified.InheritFrom(parent.verified) - a.parentAboveLatestVerifiedCommitment.InheritFrom(parent.inSyncWindow.isAboveLatestVerifiedCommitment) - }) - - return a -} diff --git a/pkg/protocol/chainmanagerv1/commitment_attestations_requested.go b/pkg/protocol/chainmanagerv1/commitment_attestations_requested.go deleted file mode 100644 index 2a0191673..000000000 --- a/pkg/protocol/chainmanagerv1/commitment_attestations_requested.go +++ /dev/null @@ -1,47 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" -) - -type commitmentChainSwitchingFlags struct { - attestationRequested reactive.Variable[bool] -} - -func newCommitmentChainSwitchingFlags(commitment *Commitment) *commitmentChainSwitchingFlags { - c := &commitmentChainSwitchingFlags{ - attestationRequested: reactive.NewVariable[bool](), - } - - parentAttested := reactive.NewEvent() - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { - parentAttested.InheritFrom(parent.attested) - }) - - isDirectlyAboveLatestAttestedCommitment := reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { - return parentAttested && !attested - }, parentAttested, commitment.attested) - - var attestationRequestedByChain reactive.DerivedVariable[bool] - - commitment.chain.OnUpdate(func(_, newChain *Chain) { - // cleanup the old chain specific derived variable if it exists - if attestationRequestedByChain != nil { - attestationRequestedByChain.Unsubscribe() - } - - // create a chain specific derived variable - attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { - return requestAttestations && isDirectlyAboveLatestAttestedCommitment - }, newChain.requestAttestations, isDirectlyAboveLatestAttestedCommitment) - - // expose the chain specific derived variable to the commitment property - c.attestationRequested.InheritFrom(attestationRequestedByChain) - }) - - return c -} - -func (c *commitmentChainSwitchingFlags) AttestationRequested() reactive.Variable[bool] { - return c.attestationRequested -} diff --git a/pkg/protocol/chainmanagerv1/commitment_in_sync_window.go b/pkg/protocol/chainmanagerv1/commitment_in_sync_window.go deleted file mode 100644 index 4b2e1f62d..000000000 --- a/pkg/protocol/chainmanagerv1/commitment_in_sync_window.go +++ /dev/null @@ -1,33 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/ds/reactive" - -type inSyncWindow struct { - reactive.Variable[bool] - - isAboveLatestVerifiedCommitment *aboveLatestVerifiedCommitment - isBelowSyncThreshold reactive.Event -} - -func newInSyncWindow(commitment *Commitment, isRoot bool) *inSyncWindow { - i := &inSyncWindow{ - isAboveLatestVerifiedCommitment: newAboveLatestVerifiedCommitment(commitment), - isBelowSyncThreshold: reactive.NewEvent(), - } - - commitment.parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.inSyncWindow.isBelowSyncThreshold - }, commitment, (*Chain).SyncThreshold) - }) - - if isRoot { - i.isBelowSyncThreshold.Set(true) - } - - i.Variable = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { - return belowSyncThreshold && aboveLatestVerifiedCommitment - }, i.isBelowSyncThreshold, newAboveLatestVerifiedCommitment(commitment)) - - return i -} diff --git a/pkg/protocol/chainmanagerv1/commitment_requires_warp_sync.go b/pkg/protocol/chainmanagerv1/commitment_requires_warp_sync.go deleted file mode 100644 index 6afa14602..000000000 --- a/pkg/protocol/chainmanagerv1/commitment_requires_warp_sync.go +++ /dev/null @@ -1,33 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" -) - -type requiresWarpSync struct { - reactive.Variable[bool] - - isBelowWarpSyncThreshold reactive.Event -} - -func newRequiresWarpSync(commitment *Commitment, isRoot bool) *requiresWarpSync { - r := &requiresWarpSync{ - isBelowWarpSyncThreshold: reactive.NewEvent(), - } - - if isRoot { - r.isBelowWarpSyncThreshold.Set(true) - } - - r.Variable = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { - return inSyncWindow && belowWarpSyncThreshold - }, commitment.inSyncWindow, r.isBelowWarpSyncThreshold) - - commitment.parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.requiresWarpSync.isBelowWarpSyncThreshold - }, commitment, (*Chain).WarpSyncThreshold) - }) - - return r -} From 432124bc04b7cde81d2ddc0919bb0311d532c48d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 31 Aug 2023 23:08:10 +0200 Subject: [PATCH 076/356] Feat: This shit is so beautiful --- .../chainmanagerv1/chainmanager_test.go | 4 +- pkg/protocol/chainmanagerv1/commitment.go | 146 +----------------- pkg/protocol/chainmanagerv1/in_sync_range.go | 65 ++++++++ .../chainmanagerv1/request_attestations.go | 43 ++++++ pkg/protocol/chainmanagerv1/request_blocks.go | 31 ++++ 5 files changed, 149 insertions(+), 140 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/in_sync_range.go create mode 100644 pkg/protocol/chainmanagerv1/request_attestations.go create mode 100644 pkg/protocol/chainmanagerv1/request_blocks.go diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chainmanager_test.go index 667f7e57c..35f02add0 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager_test.go +++ b/pkg/protocol/chainmanagerv1/chainmanager_test.go @@ -66,8 +66,8 @@ func TestChainManager(t *testing.T) { require.True(t, commitment3Metadata.Solid().WasTriggered()) commitment2Metadata.Verified().Trigger() - require.True(t, commitment3Metadata.InSyncWindow().Get()) - require.False(t, commitment3Metadata.RequiresWarpSync().Get()) + require.True(t, commitment3Metadata.InSyncRange().Get()) + require.False(t, commitment3Metadata.RequestBlocks().Get()) require.True(t, commitment3Metadata.Solid().WasTriggered()) require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().LatestCommitment().Get().Index()) require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().ClaimedWeight().Get()) diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index 7d924797e..ca5af1998 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -16,8 +16,8 @@ type Commitment struct { solid reactive.Event attested reactive.Event verified reactive.Event - inSyncWindow *inSyncWindow - requiresWarpSync *requiresWarpSync + inSyncRange *inSyncRange + requestBlocks *requestBlocks requestAttestations *requestAttestations evicted reactive.Event } @@ -35,8 +35,8 @@ func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment evicted: reactive.NewEvent(), } - c.inSyncWindow = newInSyncWindow(c, lo.First(optIsRoot)) - c.requiresWarpSync = newRequiresWarpSync(c, lo.First(optIsRoot)) + c.inSyncRange = newInSyncRange(c, lo.First(optIsRoot)) + c.requestBlocks = newRequestBlocks(c, lo.First(optIsRoot)) c.requestAttestations = newRequestAttestations(c) c.parent.OnUpdate(func(_, parent *Commitment) { c.solid.InheritFrom(parent.solid) }) @@ -82,12 +82,12 @@ func (c *Commitment) Verified() reactive.Event { return c.verified } -func (c *Commitment) InSyncWindow() reactive.Variable[bool] { - return c.inSyncWindow +func (c *Commitment) InSyncRange() reactive.Variable[bool] { + return c.inSyncRange } -func (c *Commitment) RequiresWarpSync() reactive.Variable[bool] { - return c.requiresWarpSync +func (c *Commitment) RequestBlocks() reactive.Variable[bool] { + return c.requestBlocks } func (c *Commitment) RequestAttestations() reactive.Variable[bool] { @@ -160,133 +160,3 @@ func (c *Commitment) max(other *Commitment) *Commitment { return c } - -type aboveLatestVerifiedCommitment struct { - reactive.Variable[bool] - - parentVerified reactive.Event - - parentAboveLatestVerifiedCommitment reactive.Variable[bool] - - directlyAboveLatestVerifiedCommitment reactive.Variable[bool] -} - -func newAboveLatestVerifiedCommitment(commitment *Commitment) *aboveLatestVerifiedCommitment { - a := &aboveLatestVerifiedCommitment{ - parentVerified: reactive.NewEvent(), - parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - } - - a.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { - return parentVerified && !verified - }, a.parentVerified, commitment.verified) - - a.Variable = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { - return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment - }, a.directlyAboveLatestVerifiedCommitment, a.parentAboveLatestVerifiedCommitment) - - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { - a.parentVerified.InheritFrom(parent.verified) - a.parentAboveLatestVerifiedCommitment.InheritFrom(parent.inSyncWindow.isAboveLatestVerifiedCommitment) - }) - - return a -} - -type inSyncWindow struct { - reactive.Variable[bool] - - isAboveLatestVerifiedCommitment *aboveLatestVerifiedCommitment - isBelowSyncThreshold reactive.Event -} - -func newInSyncWindow(commitment *Commitment, isRoot bool) *inSyncWindow { - i := &inSyncWindow{ - isAboveLatestVerifiedCommitment: newAboveLatestVerifiedCommitment(commitment), - isBelowSyncThreshold: reactive.NewEvent(), - } - - commitment.parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.inSyncWindow.isBelowSyncThreshold - }, commitment, (*Chain).SyncThreshold) - }) - - if isRoot { - i.isBelowSyncThreshold.Set(true) - } - - i.Variable = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { - return belowSyncThreshold && aboveLatestVerifiedCommitment - }, i.isBelowSyncThreshold, newAboveLatestVerifiedCommitment(commitment)) - - return i -} - -type requestAttestations struct { - reactive.Variable[bool] - - parentAttested reactive.Event - - isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] -} - -func newRequestAttestations(commitment *Commitment) *requestAttestations { - c := &requestAttestations{ - Variable: reactive.NewVariable[bool](), - parentAttested: reactive.NewEvent(), - } - - c.isDirectlyAboveLatestAttestedCommitment = reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { - return parentAttested && !attested - }, c.parentAttested, commitment.attested) - - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { c.parentAttested.InheritFrom(parent.attested) }) - - var attestationRequestedByChain reactive.DerivedVariable[bool] - - commitment.chain.OnUpdate(func(_, newChain *Chain) { - // cleanup the old chain specific derived variable if it exists - if attestationRequestedByChain != nil { - attestationRequestedByChain.Unsubscribe() - } - - // create a chain specific derived variable - attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { - return requestAttestations && isDirectlyAboveLatestAttestedCommitment - }, newChain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) - - // expose the chain specific derived variable to the commitment property - c.InheritFrom(attestationRequestedByChain) - }) - - return c -} - -type requiresWarpSync struct { - reactive.Variable[bool] - - isBelowWarpSyncThreshold reactive.Event -} - -func newRequiresWarpSync(commitment *Commitment, isRoot bool) *requiresWarpSync { - r := &requiresWarpSync{ - isBelowWarpSyncThreshold: reactive.NewEvent(), - } - - if isRoot { - r.isBelowWarpSyncThreshold.Set(true) - } - - r.Variable = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { - return inSyncWindow && belowWarpSyncThreshold - }, commitment.inSyncWindow, r.isBelowWarpSyncThreshold) - - commitment.parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.requiresWarpSync.isBelowWarpSyncThreshold - }, commitment, (*Chain).WarpSyncThreshold) - }) - - return r -} diff --git a/pkg/protocol/chainmanagerv1/in_sync_range.go b/pkg/protocol/chainmanagerv1/in_sync_range.go new file mode 100644 index 000000000..5c3d9e8b8 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/in_sync_range.go @@ -0,0 +1,65 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +type inSyncRange struct { + reactive.Variable[bool] + + aboveLatestVerifiedCommitment *aboveLatestVerifiedCommitmentVariable + isBelowSyncThreshold reactive.Event +} + +func newInSyncRange(commitment *Commitment, isRoot bool) *inSyncRange { + i := &inSyncRange{ + aboveLatestVerifiedCommitment: newAboveLatestVerifiedCommitmentVariable(commitment), + isBelowSyncThreshold: reactive.NewEvent(), + } + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { + return commitment.inSyncRange.isBelowSyncThreshold + }, commitment, (*Chain).SyncThreshold) + }) + + if isRoot { + i.isBelowSyncThreshold.Set(true) + } + + i.Variable = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { + return belowSyncThreshold && aboveLatestVerifiedCommitment + }, i.isBelowSyncThreshold, newAboveLatestVerifiedCommitmentVariable(commitment)) + + return i +} + +type aboveLatestVerifiedCommitmentVariable struct { + reactive.Variable[bool] + + parentVerified reactive.Event + + parentAboveLatestVerifiedCommitment reactive.Variable[bool] + + directlyAboveLatestVerifiedCommitment reactive.Variable[bool] +} + +func newAboveLatestVerifiedCommitmentVariable(commitment *Commitment) *aboveLatestVerifiedCommitmentVariable { + a := &aboveLatestVerifiedCommitmentVariable{ + parentVerified: reactive.NewEvent(), + parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), + } + + a.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { + return parentVerified && !verified + }, a.parentVerified, commitment.verified) + + a.Variable = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { + return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment + }, a.directlyAboveLatestVerifiedCommitment, a.parentAboveLatestVerifiedCommitment) + + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { + a.parentVerified.InheritFrom(parent.verified) + a.parentAboveLatestVerifiedCommitment.InheritFrom(parent.inSyncRange.aboveLatestVerifiedCommitment) + }) + + return a +} diff --git a/pkg/protocol/chainmanagerv1/request_attestations.go b/pkg/protocol/chainmanagerv1/request_attestations.go new file mode 100644 index 000000000..5fd87a1d6 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/request_attestations.go @@ -0,0 +1,43 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +type requestAttestations struct { + reactive.Variable[bool] + + parentAttested reactive.Event + + isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] +} + +func newRequestAttestations(commitment *Commitment) *requestAttestations { + c := &requestAttestations{ + Variable: reactive.NewVariable[bool](), + parentAttested: reactive.NewEvent(), + } + + c.isDirectlyAboveLatestAttestedCommitment = reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { + return parentAttested && !attested + }, c.parentAttested, commitment.attested) + + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { c.parentAttested.InheritFrom(parent.attested) }) + + var attestationRequestedByChain reactive.DerivedVariable[bool] + + commitment.chain.OnUpdate(func(_, newChain *Chain) { + // cleanup the old chain specific derived variable if it exists + if attestationRequestedByChain != nil { + attestationRequestedByChain.Unsubscribe() + } + + // create a chain specific derived variable + attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { + return requestAttestations && isDirectlyAboveLatestAttestedCommitment + }, newChain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) + + // expose the chain specific derived variable to the commitment property + c.InheritFrom(attestationRequestedByChain) + }) + + return c +} diff --git a/pkg/protocol/chainmanagerv1/request_blocks.go b/pkg/protocol/chainmanagerv1/request_blocks.go new file mode 100644 index 000000000..2d68a3245 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/request_blocks.go @@ -0,0 +1,31 @@ +package chainmanagerv1 + +import "github.com/iotaledger/hive.go/ds/reactive" + +type requestBlocks struct { + reactive.Variable[bool] + + isBelowWarpSyncThreshold reactive.Event +} + +func newRequestBlocks(commitment *Commitment, isRoot bool) *requestBlocks { + r := &requestBlocks{ + isBelowWarpSyncThreshold: reactive.NewEvent(), + } + + if isRoot { + r.isBelowWarpSyncThreshold.Set(true) + } + + r.Variable = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { + return inSyncWindow && belowWarpSyncThreshold + }, commitment.inSyncRange, r.isBelowWarpSyncThreshold) + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { + return commitment.requestBlocks.isBelowWarpSyncThreshold + }, commitment, (*Chain).WarpSyncThreshold) + }) + + return r +} From 0dd28a1d1616c54b0d5a055c13dd7734eddf2414 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 1 Sep 2023 04:35:31 +0200 Subject: [PATCH 077/356] Feat: started building out protocol stub --- .../chainmanagerv1/attestations_requester.go | 84 +++++++++ pkg/protocol/chainmanagerv1/chain.go | 13 +- .../{chainmanager.go => chain_manager.go} | 18 +- ...nmanager_test.go => chain_manager_test.go} | 0 .../chainmanagerv1/chain_switching.go | 4 +- pkg/protocol/chainmanagerv1/commitment.go | 23 ++- .../chainmanagerv1/commitment_verifier.go | 175 ++++++++++++++++++ pkg/protocol/chainmanagerv1/engine_manager.go | 74 ++++++++ .../chainmanagerv1/engine_variable.go | 39 ++++ pkg/protocol/chainmanagerv1/protocol.go | 14 ++ 10 files changed, 423 insertions(+), 21 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/attestations_requester.go rename pkg/protocol/chainmanagerv1/{chainmanager.go => chain_manager.go} (94%) rename pkg/protocol/chainmanagerv1/{chainmanager_test.go => chain_manager_test.go} (100%) create mode 100644 pkg/protocol/chainmanagerv1/commitment_verifier.go create mode 100644 pkg/protocol/chainmanagerv1/engine_manager.go create mode 100644 pkg/protocol/chainmanagerv1/engine_variable.go create mode 100644 pkg/protocol/chainmanagerv1/protocol.go diff --git a/pkg/protocol/chainmanagerv1/attestations_requester.go b/pkg/protocol/chainmanagerv1/attestations_requester.go new file mode 100644 index 000000000..43eb348b1 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/attestations_requester.go @@ -0,0 +1,84 @@ +package chainmanagerv1 + +import ( + "fmt" + + "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/network" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/merklehasher" +) + +type AttestationsRequester struct { + chainManager *ChainManager + requester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] +} + +func NewAttestationsRequester(chainManager *ChainManager) *AttestationsRequester { + a := &AttestationsRequester{ + chainManager: chainManager, + requester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), + } + + chainManager.chainCreated.Hook(func(chain *Chain) { + chain.RequestAttestations().OnUpdate(func(_, requestAttestations bool) { + if requestAttestations { + a.commitmentVerifiers.GetOrCreate(chain.Root().ID(), func() *CommitmentVerifier { + return NewCommitmentVerifier(chain.Engine().Get(), chain.Root().Parent().Get().CommitmentModel()) + }) + } else { + a.commitmentVerifiers.Delete(chain.Root().ID()) + } + }) + }) + + chainManager.commitmentCreated.Hook(func(commitment *Commitment) { + commitment.requestAttestations.OnUpdate(func(_, requestAttestations bool) { + if requestAttestations { + a.requester.StartTicker(commitment.ID()) + } else { + a.requester.StopTicker(commitment.ID()) + } + }) + }) + + return a +} + +func (a *AttestationsRequester) ProcessAttestationsResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source network.PeerID) { + commitment := a.chainManager.ProcessCommitment(commitmentModel) + if commitment == nil { + // TODO: log warning that we received attestations for a commitment that we don't know (maybe punish sender) + + return + } + + chain := commitment.Chain().Get() + if chain == nil { + // TODO: log warning that we received attestations for an unsolid commitment (we did not request that - maybe punish sender) + + return + } + + commitmentVerifier, exists := a.commitmentVerifiers.Get(chain.Root().ID()) + if !exists { + // TODO: log debug that we received attestations for a commitment that we did not request + + return + } + + blockIDs, actualCumulativeWeight, err := commitmentVerifier.verifyCommitment(commitmentModel, attestations, merkleProof) + if err != nil { + // TODO: do something with the error + + return + } + + // TODO: publish blockIDs, actualCumulativeWeight to target commitment + commitment.attested.Set(true) + fmt.Println(blockIDs, actualCumulativeWeight, source) +} diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 7fb33349f..53733d84c 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -4,6 +4,7 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" ) @@ -43,8 +44,8 @@ type Chain struct { // requestAttestations is a flag that indicates whether this chain shall request attestations. requestAttestations reactive.Variable[bool] - // instantiated is a flag that indicates whether this chain shall be instantiated. - instantiate reactive.Variable[bool] + // engine is the engine that is used to process blocks of this chain. + engine *engineVariable // evicted is an event that gets triggered when the chain gets evicted. evicted reactive.Event @@ -59,10 +60,11 @@ func NewChain(root *Commitment) *Chain { latestAttestedCommitment: reactive.NewVariable[*Commitment](), latestVerifiedCommitment: reactive.NewVariable[*Commitment](), requestAttestations: reactive.NewVariable[bool](), - instantiate: reactive.NewVariable[bool](), evicted: reactive.NewEvent(), } + c.engine = newEngineVariable(root) + // track weights of the chain c.claimedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestCommitment) c.attestedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestAttestedCommitment) @@ -172,6 +174,11 @@ func (c *Chain) RequestAttestations() reactive.Variable[bool] { return c.requestAttestations } +// Engine returns a reactive variable that contains the engine that is used to process blocks of this chain. +func (c *Chain) Engine() reactive.Variable[*engine.Engine] { + return c.engine +} + // Evicted returns a reactive event that gets triggered when the chain is evicted. func (c *Chain) Evicted() reactive.Event { return c.evicted diff --git a/pkg/protocol/chainmanagerv1/chainmanager.go b/pkg/protocol/chainmanagerv1/chain_manager.go similarity index 94% rename from pkg/protocol/chainmanagerv1/chainmanager.go rename to pkg/protocol/chainmanagerv1/chain_manager.go index 96b06cefb..af6a1e67f 100644 --- a/pkg/protocol/chainmanagerv1/chainmanager.go +++ b/pkg/protocol/chainmanagerv1/chain_manager.go @@ -16,31 +16,37 @@ type ChainManager struct { commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] - commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - commitmentCreated *event.Event1[*Commitment] chainCreated *event.Event1[*Chain] + commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + + *EngineManager + *ChainSwitching + *AttestationsRequester + reactive.EvictionState[iotago.SlotIndex] } func NewChainManager(rootCommitment *model.Commitment) *ChainManager { - c := &ChainManager{ + p := &ChainManager{ EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(rootCommitment, true))), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), - commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), commitmentCreated: event.New1[*Commitment](), chainCreated: event.New1[*Chain](), + commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), } // embed reactive orchestrators - c.ChainSwitching = NewChainSwitching(c) + p.EngineManager = NewEngineManager(p) + p.ChainSwitching = NewChainSwitching(p) + p.AttestationsRequester = NewAttestationsRequester(p) - return c + return p } func (c *ChainManager) MainChain() reactive.Variable[*Chain] { diff --git a/pkg/protocol/chainmanagerv1/chainmanager_test.go b/pkg/protocol/chainmanagerv1/chain_manager_test.go similarity index 100% rename from pkg/protocol/chainmanagerv1/chainmanager_test.go rename to pkg/protocol/chainmanagerv1/chain_manager_test.go diff --git a/pkg/protocol/chainmanagerv1/chain_switching.go b/pkg/protocol/chainmanagerv1/chain_switching.go index 398753dba..1a9a48ce5 100644 --- a/pkg/protocol/chainmanagerv1/chain_switching.go +++ b/pkg/protocol/chainmanagerv1/chain_switching.go @@ -27,10 +27,10 @@ func NewChainSwitching(chainManager *ChainManager) *ChainSwitching { c.heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { - prevCandidate.instantiate.Set(false) + prevCandidate.engine.instantiate.Set(false) } - newCandidate.instantiate.Set(true) + newCandidate.engine.instantiate.Set(true) }) c.heaviestVerifiedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go index ca5af1998..bcdd0c742 100644 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ b/pkg/protocol/chainmanagerv1/commitment.go @@ -4,6 +4,7 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/protocol/engine" ) type Commitment struct { @@ -41,8 +42,6 @@ func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment c.parent.OnUpdate(func(_, parent *Commitment) { c.solid.InheritFrom(parent.solid) }) - c.requestAttestations = newRequestAttestations(c) - c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) if lo.First(optIsRoot) { @@ -54,6 +53,10 @@ func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment return c } +func (c *Commitment) CommitmentModel() *model.Commitment { + return c.Commitment +} + func (c *Commitment) Parent() reactive.Variable[*Commitment] { return c.parent } @@ -94,20 +97,20 @@ func (c *Commitment) RequestAttestations() reactive.Variable[bool] { return c.requestAttestations } +func (c *Commitment) Engine() reactive.Variable[*engine.Engine] { + return c.chain.Get().Engine() +} + func (c *Commitment) Evicted() reactive.Event { return c.evicted } func (c *Commitment) setParent(parent *Commitment) { - c.parent.Compute(func(currentParent *Commitment) *Commitment { - if currentParent != nil { - panic("parent may not be changed once it was set") - } - - parent.registerChild(c, c.chainUpdater(parent)) + parent.registerChild(c, c.chainUpdater(parent)) - return parent - }) + if c.parent.Set(parent) != nil { + panic("parent may not be changed once it was set") + } } func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { diff --git a/pkg/protocol/chainmanagerv1/commitment_verifier.go b/pkg/protocol/chainmanagerv1/commitment_verifier.go new file mode 100644 index 000000000..e98d9396d --- /dev/null +++ b/pkg/protocol/chainmanagerv1/commitment_verifier.go @@ -0,0 +1,175 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ads" + "github.com/iotaledger/hive.go/ds" + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/kvstore/mapdb" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/merklehasher" +) + +type CommitmentVerifier struct { + engine *engine.Engine + cumulativeWeight uint64 + validatorAccountsAtFork map[iotago.AccountID]*accounts.AccountData +} + +func NewCommitmentVerifier(mainEngine *engine.Engine, lastCommonCommitmentBeforeFork *model.Commitment) *CommitmentVerifier { + committeeAtForkingPoint := mainEngine.SybilProtection.SeatManager().Committee(lastCommonCommitmentBeforeFork.Index()).Accounts().IDs() + + return &CommitmentVerifier{ + engine: mainEngine, + cumulativeWeight: lastCommonCommitmentBeforeFork.CumulativeWeight(), + validatorAccountsAtFork: lo.PanicOnErr(mainEngine.Ledger.PastAccounts(committeeAtForkingPoint, lastCommonCommitmentBeforeFork.Index())), + // TODO: what happens if the committee rotated after the fork? + } +} + +func (c *CommitmentVerifier) verifyCommitment(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier]) (blockIDsFromAttestations iotago.BlockIDs, cumulativeWeight uint64, err error) { + // 1. Verify that the provided attestations are indeed the ones that were included in the commitment. + tree := ads.NewMap(mapdb.NewMapDB(), + iotago.Identifier.Bytes, + iotago.IdentifierFromBytes, + func(attestation *iotago.Attestation) ([]byte, error) { + apiForVersion, err := c.engine.APIForVersion(attestation.ProtocolVersion) + if err != nil { + return nil, ierrors.Wrapf(err, "failed to get API for version %d", attestation.ProtocolVersion) + } + + return apiForVersion.Encode(attestation) + }, + func(bytes []byte) (*iotago.Attestation, int, error) { + version, _, err := iotago.VersionFromBytes(bytes) + if err != nil { + return nil, 0, ierrors.Wrap(err, "failed to determine version") + } + + a := new(iotago.Attestation) + apiForVersion, err := c.engine.APIForVersion(version) + if err != nil { + return nil, 0, ierrors.Wrapf(err, "failed to get API for version %d", version) + } + n, err := apiForVersion.Decode(bytes, a) + + return a, n, err + }, + ) + + for _, att := range attestations { + if err := tree.Set(att.IssuerID, att); err != nil { + return nil, 0, ierrors.Wrapf(err, "failed to set attestation for issuerID %s", att.IssuerID) + } + } + if !iotago.VerifyProof(merkleProof, iotago.Identifier(tree.Root()), commitment.RootsID()) { + return nil, 0, ierrors.Errorf("invalid merkle proof for attestations for commitment %s", commitment.ID()) + } + + // 2. Verify attestations. + blockIDs, seatCount, err := c.verifyAttestations(attestations) + if err != nil { + return nil, 0, ierrors.Wrapf(err, "error validating attestations for commitment %s", commitment.ID()) + } + + // 3. Verify that calculated cumulative weight from attestations is lower or equal to cumulative weight of commitment. + // This is necessary due to public key changes of validators in the window of forking point and the current state of + // the other chain (as validators could have added/removed public keys that we don't know about yet). + // + // 1. The weight should be equal if all public keys are known and unchanged. + // + // 2. A public key is added to an account. + // We do not count a seat for the issuer for this slot and the computed CW will be lower than the CW in + // the commitment. This is fine, since this is a rare occasion and a heavier chain will become heavier anyway, eventually. + // It will simply take a bit longer to accumulate enough CW so that the chain-switch rule kicks in. + // Note: In an extreme scenario where all validators add and use a new public key, the chain will never become heavier. + // This can only be prevented by adding such key changes provably to the commitments so that these changes + // can be reconstructed and verified by nodes that do not have the latest ledger state. + // + // 3. A public key is removed from an account. + // We count the seat for the issuer for this slot even though we shouldn't have. According to the protocol, a valid + // chain with such a block can never exist because the block itself (here provided as an attestation) would be invalid. + // However, we do not know about this yet since we do not have the latest ledger state. + // In a rare and elaborate scenario, an attacker might have acquired such removed (private) keys and could + // fabricate attestations and thus a theoretically heavier chain (solely when looking on the chain backed by attestations) + // than it actually is. Nodes might consider to switch to this chain, even though it is invalid which will be discovered + // before the candidate chain/engine is activated (it will never get heavier than the current chain). + c.cumulativeWeight += seatCount + if c.cumulativeWeight > commitment.CumulativeWeight() { + return nil, 0, ierrors.Errorf("invalid cumulative weight for commitment %s: expected %d, got %d", commitment.ID(), commitment.CumulativeWeight(), c.cumulativeWeight) + } + + return blockIDs, c.cumulativeWeight, nil +} + +func (c *CommitmentVerifier) verifyAttestations(attestations []*iotago.Attestation) (iotago.BlockIDs, uint64, error) { + visitedIdentities := ds.NewSet[iotago.AccountID]() + var blockIDs iotago.BlockIDs + var seatCount uint64 + + for _, att := range attestations { + // 1. Make sure the public key used to sign is valid for the given issuerID. + // We ignore attestations that don't have a valid public key for the given issuerID. + // 1. The attestation might be fake. + // 2. The issuer might have added a new public key in the meantime, but we don't know about it yet + // since we only have the ledger state at the forking point. + accountData, exists := c.validatorAccountsAtFork[att.IssuerID] + + // We always need to have the accountData for a validator. + if !exists { + return nil, 0, ierrors.Errorf("accountData for issuerID %s does not exist", att.IssuerID) + } + + edSig, isEdSig := att.Signature.(*iotago.Ed25519Signature) + if !isEdSig { + return nil, 0, ierrors.Errorf("only ed2519 signatures supported, got %s", att.Signature.Type()) + } + + // We found the accountData, but we don't know the public key used to sign this block/attestation. Ignore. + if !accountData.PubKeys.Has(edSig.PublicKey) { + continue + } + + api, err := c.engine.APIForVersion(att.ProtocolVersion) + if err != nil { + return nil, 0, ierrors.Wrap(err, "error determining API for attestation") + } + + // 2. Verify the signature of the attestation. + if valid, err := att.VerifySignature(api); !valid { + if err != nil { + return nil, 0, ierrors.Wrap(err, "error validating attestation signature") + } + + return nil, 0, ierrors.New("invalid attestation signature") + } + + // 3. A valid set of attestations can't contain multiple attestations from the same issuerID. + if visitedIdentities.Has(att.IssuerID) { + return nil, 0, ierrors.Errorf("issuerID %s contained in multiple attestations", att.IssuerID) + } + + // TODO: this might differ if we have a Accounts with changing weights depending on the SlotIndex/epoch + attestationBlockID, err := att.BlockID(api) + if err != nil { + return nil, 0, ierrors.Wrap(err, "error calculating blockID from attestation") + } + if _, seatExists := c.engine.SybilProtection.SeatManager().Committee(attestationBlockID.Index()).GetSeat(att.IssuerID); seatExists { + seatCount++ + } + + visitedIdentities.Add(att.IssuerID) + + blockID, err := att.BlockID(api) + if err != nil { + return nil, 0, ierrors.Wrap(err, "error calculating blockID from attestation") + } + + blockIDs = append(blockIDs, blockID) + } + + return blockIDs, seatCount, nil +} diff --git a/pkg/protocol/chainmanagerv1/engine_manager.go b/pkg/protocol/chainmanagerv1/engine_manager.go new file mode 100644 index 000000000..7a08dfaaa --- /dev/null +++ b/pkg/protocol/chainmanagerv1/engine_manager.go @@ -0,0 +1,74 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/runtime/module" + "github.com/iotaledger/hive.go/runtime/options" + "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" + "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" + "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" + "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" + "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" + "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" + "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" + "github.com/iotaledger/iota-core/pkg/retainer" + "github.com/iotaledger/iota-core/pkg/storage" +) + +type EngineManager struct { + protocol *ChainManager + + *enginemanager.EngineManager +} + +func NewEngineManager( + protocol *ChainManager, + workers *workerpool.Group, + errorHandler func(error), + dir string, + dbVersion byte, storageOptions []options.Option[storage.Storage], engineOptions []options.Option[engine.Engine], + filterProvider module.Provider[*engine.Engine, filter.Filter], + commitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter], + blockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG], + bookerProvider module.Provider[*engine.Engine, booker.Booker], + clockProvider module.Provider[*engine.Engine, clock.Clock], + blockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget], + slotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget], + sybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection], + notarizationProvider module.Provider[*engine.Engine, notarization.Notarization], + attestationProvider module.Provider[*engine.Engine, attestation.Attestations], + ledgerProvider module.Provider[*engine.Engine, ledger.Ledger], + schedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler], + tipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager], + tipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection], + retainerProvider module.Provider[*engine.Engine, retainer.Retainer], + upgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator], +) *EngineManager { + e := &EngineManager{ + protocol: protocol, + EngineManager: enginemanager.New(workers, errorHandler, dir, dbVersion, storageOptions, engineOptions, + filterProvider, commitmentFilterProvider, blockDAGProvider, bookerProvider, clockProvider, + blockGadgetProvider, slotGadgetProvider, sybilProtectionProvider, notarizationProvider, attestationProvider, + ledgerProvider, schedulerProvider, tipManagerProvider, tipSelectionProvider, retainerProvider, + upgradeOrchestratorProvider, + ), + } + + protocol.chainCreated.Hook(func(chain *Chain) { + chain.engine.instantiate.OnUpdate(func(_, instantiate bool) { + + }) + }) + + return e +} diff --git a/pkg/protocol/chainmanagerv1/engine_variable.go b/pkg/protocol/chainmanagerv1/engine_variable.go new file mode 100644 index 000000000..4ff4b5284 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/engine_variable.go @@ -0,0 +1,39 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/iota-core/pkg/protocol/engine" +) + +type engineVariable struct { + reactive.Variable[*engine.Engine] + + parentEngine reactive.Variable[*engine.Engine] + + spawnedEngine reactive.Variable[*engine.Engine] + + // instantiated is a flag that indicates whether this chain shall be instantiated. + instantiate reactive.Variable[bool] +} + +func newEngineVariable(commitment *Commitment) *engineVariable { + e := &engineVariable{ + parentEngine: reactive.NewVariable[*engine.Engine](), + instantiate: reactive.NewVariable[bool](), + spawnedEngine: reactive.NewVariable[*engine.Engine](), + } + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + e.parentEngine.InheritFrom(parent.Engine()) + }) + + e.Variable = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { + if spawnedEngine != nil { + return spawnedEngine + } + + return parentEngine + }, e.spawnedEngine, e.parentEngine) + + return e +} diff --git a/pkg/protocol/chainmanagerv1/protocol.go b/pkg/protocol/chainmanagerv1/protocol.go new file mode 100644 index 000000000..9b77bfe82 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/protocol.go @@ -0,0 +1,14 @@ +package chainmanagerv1 + +type Protocol struct { + *EngineManager + *ChainManager +} + +func NewProtocol() *Protocol { + p := &Protocol{ + EngineManager: NewEngineManager(p), + ChainManager: NewChainManager(), + } + return p +} From b8b7461c42aa1790b8ca6f2a01f36838d13870a3 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 1 Sep 2023 06:15:14 +0200 Subject: [PATCH 078/356] Feat: more work done --- pkg/protocol/chainmanagerv1/chain.go | 4 +- pkg/protocol/chainmanagerv1/chain_manager.go | 15 ++-- pkg/protocol/chainmanagerv1/engine_manager.go | 80 +++++++------------ .../chainmanagerv1/engine_variable.go | 15 ++-- pkg/protocol/chainmanagerv1/protocol.go | 14 ++-- .../chainmanagerv1/protocol_parameters.go | 46 +++++++++++ 6 files changed, 107 insertions(+), 67 deletions(-) create mode 100644 pkg/protocol/chainmanagerv1/protocol_parameters.go diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go index 53733d84c..0f5532778 100644 --- a/pkg/protocol/chainmanagerv1/chain.go +++ b/pkg/protocol/chainmanagerv1/chain.go @@ -52,7 +52,7 @@ type Chain struct { } // NewChain creates a new Chain instance. -func NewChain(root *Commitment) *Chain { +func NewChain(root *Commitment, optStartingEngine ...*engine.Engine) *Chain { c := &Chain{ root: root, commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), @@ -63,7 +63,7 @@ func NewChain(root *Commitment) *Chain { evicted: reactive.NewEvent(), } - c.engine = newEngineVariable(root) + c.engine = newEngineVariable(root, optStartingEngine...) // track weights of the chain c.claimedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestCommitment) diff --git a/pkg/protocol/chainmanagerv1/chain_manager.go b/pkg/protocol/chainmanagerv1/chain_manager.go index af6a1e67f..743d82a64 100644 --- a/pkg/protocol/chainmanagerv1/chain_manager.go +++ b/pkg/protocol/chainmanagerv1/chain_manager.go @@ -8,6 +8,7 @@ import ( "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/core/promise" "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" ) @@ -22,8 +23,6 @@ type ChainManager struct { commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - *EngineManager - *ChainSwitching *AttestationsRequester @@ -31,10 +30,15 @@ type ChainManager struct { reactive.EvictionState[iotago.SlotIndex] } -func NewChainManager(rootCommitment *model.Commitment) *ChainManager { +func NewChainManager(startingEngine *engine.Engine) *ChainManager { p := &ChainManager{ - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(rootCommitment, true))), + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), + mainChain: reactive.NewVariable[*Chain]().Init( + NewChain( + NewCommitment(startingEngine.Storage.Settings().LatestCommitment(), true), + startingEngine, + ), + ), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), commitmentCreated: event.New1[*Commitment](), chainCreated: event.New1[*Chain](), @@ -42,7 +46,6 @@ func NewChainManager(rootCommitment *model.Commitment) *ChainManager { } // embed reactive orchestrators - p.EngineManager = NewEngineManager(p) p.ChainSwitching = NewChainSwitching(p) p.AttestationsRequester = NewAttestationsRequester(p) diff --git a/pkg/protocol/chainmanagerv1/engine_manager.go b/pkg/protocol/chainmanagerv1/engine_manager.go index 7a08dfaaa..c92ad06a6 100644 --- a/pkg/protocol/chainmanagerv1/engine_manager.go +++ b/pkg/protocol/chainmanagerv1/engine_manager.go @@ -1,67 +1,45 @@ package chainmanagerv1 import ( - "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" - "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" - "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" - "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" - "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" - "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" - "github.com/iotaledger/iota-core/pkg/retainer" - "github.com/iotaledger/iota-core/pkg/storage" ) type EngineManager struct { - protocol *ChainManager + protocol *Protocol *enginemanager.EngineManager } -func NewEngineManager( - protocol *ChainManager, - workers *workerpool.Group, - errorHandler func(error), - dir string, - dbVersion byte, storageOptions []options.Option[storage.Storage], engineOptions []options.Option[engine.Engine], - filterProvider module.Provider[*engine.Engine, filter.Filter], - commitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter], - blockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG], - bookerProvider module.Provider[*engine.Engine, booker.Booker], - clockProvider module.Provider[*engine.Engine, clock.Clock], - blockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget], - slotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget], - sybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection], - notarizationProvider module.Provider[*engine.Engine, notarization.Notarization], - attestationProvider module.Provider[*engine.Engine, attestation.Attestations], - ledgerProvider module.Provider[*engine.Engine, ledger.Ledger], - schedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler], - tipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager], - tipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection], - retainerProvider module.Provider[*engine.Engine, retainer.Retainer], - upgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator], -) *EngineManager { +func NewEngineManager(protocol *Protocol, workers *workerpool.Group, errorHandler func(error), dir string, dbVersion byte, parameters *ProtocolParameters) *EngineManager { e := &EngineManager{ - protocol: protocol, - EngineManager: enginemanager.New(workers, errorHandler, dir, dbVersion, storageOptions, engineOptions, - filterProvider, commitmentFilterProvider, blockDAGProvider, bookerProvider, clockProvider, - blockGadgetProvider, slotGadgetProvider, sybilProtectionProvider, notarizationProvider, attestationProvider, - ledgerProvider, schedulerProvider, tipManagerProvider, tipSelectionProvider, retainerProvider, - upgradeOrchestratorProvider, + EngineManager: enginemanager.New( + workers, + errorHandler, + dir, + dbVersion, + parameters.storageOptions, + parameters.engineOptions, + parameters.filterProvider, + parameters.commitmentFilterProvider, + parameters.blockDAGProvider, + parameters.bookerProvider, + parameters.clockProvider, + parameters.blockGadgetProvider, + parameters.slotGadgetProvider, + parameters.sybilProtectionProvider, + parameters.notarizationProvider, + parameters.attestationProvider, + parameters.ledgerProvider, + parameters.schedulerProvider, + parameters.tipManagerProvider, + parameters.tipSelectionProvider, + parameters.retainerProvider, + parameters.upgradeOrchestratorProvider, ), + + protocol: protocol, } protocol.chainCreated.Hook(func(chain *Chain) { @@ -72,3 +50,7 @@ func NewEngineManager( return e } + +func (e *EngineManager) MainInstance() *engine.Engine { + return nil +} diff --git a/pkg/protocol/chainmanagerv1/engine_variable.go b/pkg/protocol/chainmanagerv1/engine_variable.go index 4ff4b5284..a29fe7ca0 100644 --- a/pkg/protocol/chainmanagerv1/engine_variable.go +++ b/pkg/protocol/chainmanagerv1/engine_variable.go @@ -2,6 +2,7 @@ package chainmanagerv1 import ( "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/iota-core/pkg/protocol/engine" ) @@ -16,17 +17,13 @@ type engineVariable struct { instantiate reactive.Variable[bool] } -func newEngineVariable(commitment *Commitment) *engineVariable { +func newEngineVariable(commitment *Commitment, optStartingEngine ...*engine.Engine) *engineVariable { e := &engineVariable{ parentEngine: reactive.NewVariable[*engine.Engine](), instantiate: reactive.NewVariable[bool](), spawnedEngine: reactive.NewVariable[*engine.Engine](), } - commitment.parent.OnUpdate(func(_, parent *Commitment) { - e.parentEngine.InheritFrom(parent.Engine()) - }) - e.Variable = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { if spawnedEngine != nil { return spawnedEngine @@ -35,5 +32,13 @@ func newEngineVariable(commitment *Commitment) *engineVariable { return parentEngine }, e.spawnedEngine, e.parentEngine) + if startingEngine := lo.First(optStartingEngine); startingEngine != nil { + e.spawnedEngine.Set(startingEngine) + } else { + commitment.parent.OnUpdate(func(_, parent *Commitment) { + e.parentEngine.InheritFrom(parent.Engine()) + }) + } + return e } diff --git a/pkg/protocol/chainmanagerv1/protocol.go b/pkg/protocol/chainmanagerv1/protocol.go index 9b77bfe82..90f69fe0d 100644 --- a/pkg/protocol/chainmanagerv1/protocol.go +++ b/pkg/protocol/chainmanagerv1/protocol.go @@ -1,14 +1,18 @@ package chainmanagerv1 +import "github.com/iotaledger/hive.go/runtime/workerpool" + type Protocol struct { *EngineManager *ChainManager } -func NewProtocol() *Protocol { - p := &Protocol{ - EngineManager: NewEngineManager(p), - ChainManager: NewChainManager(), - } +func NewProtocol(workers *workerpool.Group, errorHandler func(error), dir string, dbVersion byte, params *ProtocolParameters) *Protocol { + p := &Protocol{} + + p.EngineManager = NewEngineManager(p, workers.CreateGroup("EngineManager"), errorHandler, dir, dbVersion, params) + + p.ChainManager = NewChainManager(p.EngineManager.MainInstance()) + return p } diff --git a/pkg/protocol/chainmanagerv1/protocol_parameters.go b/pkg/protocol/chainmanagerv1/protocol_parameters.go new file mode 100644 index 000000000..082cf9fe1 --- /dev/null +++ b/pkg/protocol/chainmanagerv1/protocol_parameters.go @@ -0,0 +1,46 @@ +package chainmanagerv1 + +import ( + "github.com/iotaledger/hive.go/runtime/module" + "github.com/iotaledger/hive.go/runtime/options" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" + "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" + "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" + "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" + "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" + "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" + "github.com/iotaledger/iota-core/pkg/retainer" + "github.com/iotaledger/iota-core/pkg/storage" +) + +type ProtocolParameters struct { + storageOptions []options.Option[storage.Storage] + engineOptions []options.Option[engine.Engine] + + filterProvider module.Provider[*engine.Engine, filter.Filter] + commitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] + blockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] + bookerProvider module.Provider[*engine.Engine, booker.Booker] + clockProvider module.Provider[*engine.Engine, clock.Clock] + blockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] + slotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] + sybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] + notarizationProvider module.Provider[*engine.Engine, notarization.Notarization] + attestationProvider module.Provider[*engine.Engine, attestation.Attestations] + ledgerProvider module.Provider[*engine.Engine, ledger.Ledger] + schedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] + tipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] + tipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] + retainerProvider module.Provider[*engine.Engine, retainer.Retainer] + upgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] +} From 356d14ab0925c8e54fb57591beebda239f4d938f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 2 Sep 2023 01:50:26 +0200 Subject: [PATCH 079/356] Feat: pre switch commit --- .../protocol/attestations_requester.go | 84 +++++++ pkg/protocol/protocol/chain.go | 221 ++++++++++++++++++ pkg/protocol/protocol/chain_manager.go | 131 +++++++++++ pkg/protocol/protocol/chain_manager_test.go | 84 +++++++ pkg/protocol/protocol/chain_switching.go | 80 +++++++ pkg/protocol/protocol/commitment.go | 165 +++++++++++++ pkg/protocol/protocol/commitment_verifier.go | 175 ++++++++++++++ pkg/protocol/protocol/constants.go | 10 + pkg/protocol/protocol/engine_manager.go | 99 ++++++++ pkg/protocol/protocol/engine_variable.go | 44 ++++ pkg/protocol/protocol/in_sync_range.go | 65 ++++++ pkg/protocol/protocol/protocol.go | 95 ++++++++ pkg/protocol/protocol/protocol_parameters.go | 46 ++++ pkg/protocol/protocol/request_attestations.go | 43 ++++ pkg/protocol/protocol/request_blocks.go | 31 +++ pkg/protocol/protocol/utils.go | 30 +++ 16 files changed, 1403 insertions(+) create mode 100644 pkg/protocol/protocol/attestations_requester.go create mode 100644 pkg/protocol/protocol/chain.go create mode 100644 pkg/protocol/protocol/chain_manager.go create mode 100644 pkg/protocol/protocol/chain_manager_test.go create mode 100644 pkg/protocol/protocol/chain_switching.go create mode 100644 pkg/protocol/protocol/commitment.go create mode 100644 pkg/protocol/protocol/commitment_verifier.go create mode 100644 pkg/protocol/protocol/constants.go create mode 100644 pkg/protocol/protocol/engine_manager.go create mode 100644 pkg/protocol/protocol/engine_variable.go create mode 100644 pkg/protocol/protocol/in_sync_range.go create mode 100644 pkg/protocol/protocol/protocol.go create mode 100644 pkg/protocol/protocol/protocol_parameters.go create mode 100644 pkg/protocol/protocol/request_attestations.go create mode 100644 pkg/protocol/protocol/request_blocks.go create mode 100644 pkg/protocol/protocol/utils.go diff --git a/pkg/protocol/protocol/attestations_requester.go b/pkg/protocol/protocol/attestations_requester.go new file mode 100644 index 000000000..db27d23b6 --- /dev/null +++ b/pkg/protocol/protocol/attestations_requester.go @@ -0,0 +1,84 @@ +package protocol + +import ( + "fmt" + + "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/network" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/merklehasher" +) + +type AttestationsRequester struct { + chainManager *ChainManager + requester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] +} + +func NewAttestationsRequester(chainManager *ChainManager) *AttestationsRequester { + a := &AttestationsRequester{ + chainManager: chainManager, + requester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), + } + + chainManager.chainCreated.Hook(func(chain *Chain) { + chain.RequestAttestations().OnUpdate(func(_, requestAttestations bool) { + if requestAttestations { + a.commitmentVerifiers.GetOrCreate(chain.Root().ID(), func() *CommitmentVerifier { + return NewCommitmentVerifier(chain.Engine().Get(), chain.Root().Parent().Get().CommitmentModel()) + }) + } else { + a.commitmentVerifiers.Delete(chain.Root().ID()) + } + }) + }) + + chainManager.commitmentCreated.Hook(func(commitment *Commitment) { + commitment.requestAttestations.OnUpdate(func(_, requestAttestations bool) { + if requestAttestations { + a.requester.StartTicker(commitment.ID()) + } else { + a.requester.StopTicker(commitment.ID()) + } + }) + }) + + return a +} + +func (a *AttestationsRequester) ProcessAttestationsResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source network.PeerID) { + commitment := a.chainManager.ProcessCommitment(commitmentModel) + if commitment == nil { + // TODO: log warning that we received attestations for a commitment that we don't know (maybe punish sender) + + return + } + + chain := commitment.Chain().Get() + if chain == nil { + // TODO: log warning that we received attestations for an unsolid commitment (we did not request that - maybe punish sender) + + return + } + + commitmentVerifier, exists := a.commitmentVerifiers.Get(chain.Root().ID()) + if !exists { + // TODO: log debug that we received attestations for a commitment that we did not request + + return + } + + blockIDs, actualCumulativeWeight, err := commitmentVerifier.verifyCommitment(commitmentModel, attestations, merkleProof) + if err != nil { + // TODO: do something with the error + + return + } + + // TODO: publish blockIDs, actualCumulativeWeight to target commitment + commitment.attested.Set(true) + fmt.Println(blockIDs, actualCumulativeWeight, source) +} diff --git a/pkg/protocol/protocol/chain.go b/pkg/protocol/protocol/chain.go new file mode 100644 index 000000000..f59281632 --- /dev/null +++ b/pkg/protocol/protocol/chain.go @@ -0,0 +1,221 @@ +package protocol + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + iotago "github.com/iotaledger/iota.go/v4" +) + +// Chain is a reactive component that manages the state of a chain. +type Chain struct { + // root contains the Commitment object that spawned this chain. + root *Commitment + + // commitments is a map of Commitment objects that belong to the same chain. + commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] + + // latestCommitment is the latest Commitment object in this chain. + latestCommitment reactive.Variable[*Commitment] + + // latestAttestedCommitment is the latest attested Commitment object in this chain. + latestAttestedCommitment reactive.Variable[*Commitment] + + // latestVerifiedCommitment is the latest verified Commitment object in this chain. + latestVerifiedCommitment reactive.Variable[*Commitment] + + // claimedWeight contains the total cumulative weight of the chain that is claimed by the latest commitments. + claimedWeight reactive.Variable[uint64] + + // attestedWeight contains the total cumulative weight of the chain that we received attestations for. + attestedWeight reactive.Variable[uint64] + + // verifiedWeight contains the total cumulative weight of the chain that we verified ourselves. + verifiedWeight reactive.Variable[uint64] + + // syncThreshold is the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). + syncThreshold reactive.Variable[iotago.SlotIndex] + + // warpSyncThreshold defines an offset from latest index where the warp sync process starts (we don't request slots + // that we are about to commit ourselves). + warpSyncThreshold reactive.Variable[iotago.SlotIndex] + + // requestAttestations is a flag that indicates whether this chain shall request attestations. + requestAttestations reactive.Variable[bool] + + // engine is the engine that is used to process blocks of this chain. + engine *engineVariable + + // evicted is an event that gets triggered when the chain gets evicted. + evicted reactive.Event +} + +// NewChain creates a new Chain instance. +func NewChain(root *Commitment, optStartingEngine ...*engine.Engine) *Chain { + c := &Chain{ + root: root, + commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), + latestCommitment: reactive.NewVariable[*Commitment](), + latestAttestedCommitment: reactive.NewVariable[*Commitment](), + latestVerifiedCommitment: reactive.NewVariable[*Commitment](), + requestAttestations: reactive.NewVariable[bool](), + evicted: reactive.NewEvent(), + } + + c.engine = newEngineVariable(root, optStartingEngine...) + + // track weights of the chain + c.claimedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestCommitment) + c.attestedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestAttestedCommitment) + c.verifiedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestVerifiedCommitment) + + c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { + if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { + return 0 + } + + return latestCommitment.Index() - WarpSyncOffset + }, c.latestCommitment) + + c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitment *Commitment) iotago.SlotIndex { + if latestVerifiedCommitment == nil { + return SyncWindow + 1 + } + + return latestVerifiedCommitment.Index() + SyncWindow + 1 + }, c.latestVerifiedCommitment) + + // associate the commitment with its chain + root.chain.Set(c) + + return c +} + +// Root returns the Commitment object that spawned this chain. +func (c *Chain) Root() *Commitment { + return c.root +} + +// Commitment returns the Commitment object with the given index, if it exists. +func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { + for currentChain := c; currentChain != nil; { + switch root := currentChain.Root(); { + case root == nil: + return nil, false // this should never happen, but we can handle it gracefully anyway + case root.Index() == index: + return root, true + case index > root.Index(): + return currentChain.commitments.Get(index) + default: + parent := root.parent.Get() + if parent == nil { + return nil, false + } + + currentChain = parent.chain.Get() + } + } + + return nil, false +} + +// LatestCommitment returns a reactive variable that always contains the latest Commitment object in this +// collection. +func (c *Chain) LatestCommitment() reactive.Variable[*Commitment] { + return c.latestCommitment +} + +// LatestAttestedCommitment returns a reactive variable that always contains the latest attested Commitment object +// in this chain. +func (c *Chain) LatestAttestedCommitment() reactive.Variable[*Commitment] { + return c.latestAttestedCommitment +} + +// LatestVerifiedCommitment returns a reactive variable that always contains the latest verified Commitment object +// in this chain. +func (c *Chain) LatestVerifiedCommitment() reactive.Variable[*Commitment] { + return c.latestVerifiedCommitment +} + +// ClaimedWeight returns a reactive variable that tracks the total cumulative weight of the chain that is claimed by +// the latest commitments. +func (c *Chain) ClaimedWeight() reactive.Variable[uint64] { + return c.claimedWeight +} + +// AttestedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we received +// attestations for. +func (c *Chain) AttestedWeight() reactive.Variable[uint64] { + return c.attestedWeight +} + +// VerifiedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we verified +// ourselves. +func (c *Chain) VerifiedWeight() reactive.Variable[uint64] { + return c.verifiedWeight +} + +// SyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the +// engine (to prevent memory exhaustion). +func (c *Chain) SyncThreshold() reactive.Variable[iotago.SlotIndex] { + return c.syncThreshold +} + +// WarpSyncThreshold returns a reactive variable that contains an offset from latest index where the warp sync +// process starts (we don't request slots that we are about to commit ourselves). +func (c *Chain) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { + return c.warpSyncThreshold +} + +// RequestAttestations returns a reactive variable that contains a flag that indicates whether this chain shall request +// attestations. +func (c *Chain) RequestAttestations() reactive.Variable[bool] { + return c.requestAttestations +} + +// Engine returns a reactive variable that contains the engine that is used to process blocks of this chain. +func (c *Chain) Engine() reactive.Variable[*engine.Engine] { + return c.engine +} + +// Evicted returns a reactive event that gets triggered when the chain is evicted. +func (c *Chain) Evicted() reactive.Event { + return c.evicted +} + +// registerCommitment adds a Commitment object to this collection. +func (c *Chain) registerCommitment(commitment *Commitment) { + c.commitments.Set(commitment.Index(), commitment) + + c.latestCommitment.Compute(commitment.max) + + unsubscribe := lo.Batch( + commitment.attested.OnTrigger(func() { c.latestAttestedCommitment.Compute(commitment.max) }), + commitment.verified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.max) }), + ) + + // unsubscribe and unregister the commitment when it changes its chain + commitment.chain.OnUpdateOnce(func(_, _ *Chain) { + unsubscribe() + + c.unregisterCommitment(commitment) + }, func(_, newChain *Chain) bool { return newChain != c }) +} + +// unregisterCommitment removes a Commitment object from this collection. +func (c *Chain) unregisterCommitment(commitment *Commitment) { + c.commitments.Delete(commitment.Index()) + + resetToParent := func(latestCommitment *Commitment) *Commitment { + if commitment.Index() > latestCommitment.Index() { + return latestCommitment + } + + return commitment.parent.Get() + } + + c.latestCommitment.Compute(resetToParent) + c.latestAttestedCommitment.Compute(resetToParent) + c.latestVerifiedCommitment.Compute(resetToParent) +} diff --git a/pkg/protocol/protocol/chain_manager.go b/pkg/protocol/protocol/chain_manager.go new file mode 100644 index 000000000..1cb64ada1 --- /dev/null +++ b/pkg/protocol/protocol/chain_manager.go @@ -0,0 +1,131 @@ +package protocol + +import ( + "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/runtime/event" + "github.com/iotaledger/iota-core/pkg/core/promise" + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + iotago "github.com/iotaledger/iota.go/v4" +) + +type ChainManager struct { + mainChain reactive.Variable[*Chain] + + commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] + + commitmentCreated *event.Event1[*Commitment] + + chainCreated *event.Event1[*Chain] + + commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + + *ChainSwitching + + *AttestationsRequester + + reactive.EvictionState[iotago.SlotIndex] +} + +func NewChainManager(startingEngine *engine.Engine) *ChainManager { + p := &ChainManager{ + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), + mainChain: reactive.NewVariable[*Chain]().Init( + NewChain( + NewCommitment(startingEngine.Storage.Settings().LatestCommitment(), true), + startingEngine, + ), + ), + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + commitmentCreated: event.New1[*Commitment](), + chainCreated: event.New1[*Chain](), + commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + } + + // embed reactive orchestrators + p.ChainSwitching = NewChainSwitching(p) + p.AttestationsRequester = NewAttestationsRequester(p) + + return p +} + +func (c *ChainManager) MainChain() reactive.Variable[*Chain] { + return c.mainChain +} + +func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment) { + if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *Commitment) { + commitmentMetadata = resolvedMetadata + }); commitmentRequest != nil { + commitmentRequest.Resolve(NewCommitment(commitment)) + } + + return commitmentMetadata +} + +func (c *ChainManager) OnCommitmentCreated(callback func(commitment *Commitment)) (unsubscribe func()) { + return c.commitmentCreated.Hook(callback).Unhook +} + +func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { + return c.chainCreated.Hook(callback).Unhook +} + +func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { + c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.setParent) + + slotEvictedEvent.OnTrigger(func() { + commitment.evicted.Trigger() + }) + + c.commitmentCreated.Trigger(commitment) + + commitment.spawnedChain.OnUpdate(func(_, newChain *Chain) { + if newChain != nil { + c.chainCreated.Trigger(newChain) + } + }) +} + +func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, index iotago.SlotIndex, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { + slotEvicted := c.EvictionEvent(index) + if slotEvicted.WasTriggered() { + rootCommitment := c.mainChain.Get().Root() + + if rootCommitment == nil || commitmentID != rootCommitment.ID() { + return nil + } + + for _, successCallback := range optSuccessCallbacks { + successCallback(rootCommitment) + } + + return promise.New[*Commitment]().Resolve(rootCommitment) + } + + commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) + if requestCreated { + if requestFromPeers { + c.commitmentRequester.StartTicker(commitmentID) + + commitmentRequest.OnComplete(func() { + c.commitmentRequester.StopTicker(commitmentID) + }) + } + + commitmentRequest.OnSuccess(func(commitment *Commitment) { + c.setupCommitment(commitment, slotEvicted) + }) + + slotEvicted.OnTrigger(func() { c.commitments.Delete(commitmentID) }) + } + + for _, successCallback := range optSuccessCallbacks { + commitmentRequest.OnSuccess(successCallback) + } + + return commitmentRequest +} diff --git a/pkg/protocol/protocol/chain_manager_test.go b/pkg/protocol/protocol/chain_manager_test.go new file mode 100644 index 000000000..e1f30ccd0 --- /dev/null +++ b/pkg/protocol/protocol/chain_manager_test.go @@ -0,0 +1,84 @@ +package protocol + +import ( + "fmt" + "testing" + + "github.com/stretchr/testify/require" + + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/iota-core/pkg/model" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/tpkg" +) + +func TestChainManager(t *testing.T) { + testAPI := tpkg.TestAPI + rootCommitment := model.NewEmptyCommitment(testAPI) + chainManager := NewChainManager(rootCommitment) + + chainManager.ChainSwitching.heaviestAttestedCandidate.OnUpdate(func(oldValue, newValue *Chain) { + fmt.Println("CandidateChain", oldValue, newValue) + }) + + commitment1 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), + rootCommitment.Index()+1, + rootCommitment.ID(), + rootCommitment.RootsID(), + 1, + 1, + ), testAPI)) + + commitment2 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), + commitment1.Index()+1, + commitment1.ID(), + commitment1.RootsID(), + 2, + 2, + ), testAPI)) + + commitment3 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), + commitment2.Index()+1, + commitment2.ID(), + commitment2.RootsID(), + 3, + 2, + ), testAPI)) + + commitment3a := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), + commitment2.Index()+1, + commitment2.ID(), + commitment2.RootsID(), + 40, + 2, + ), testAPI)) + + commitment1Metadata := chainManager.ProcessCommitment(commitment1) + require.True(t, commitment1Metadata.Solid().WasTriggered()) + + commitment3Metadata := chainManager.ProcessCommitment(commitment3) + require.True(t, commitment1Metadata.Solid().WasTriggered()) + require.False(t, commitment3Metadata.Solid().WasTriggered()) + + commitment2Metadata := chainManager.ProcessCommitment(commitment2) + require.True(t, commitment1Metadata.Solid().WasTriggered()) + require.True(t, commitment2Metadata.Solid().WasTriggered()) + require.True(t, commitment3Metadata.Solid().WasTriggered()) + + commitment2Metadata.Verified().Trigger() + require.True(t, commitment3Metadata.InSyncRange().Get()) + require.False(t, commitment3Metadata.RequestBlocks().Get()) + require.True(t, commitment3Metadata.Solid().WasTriggered()) + require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().LatestCommitment().Get().Index()) + require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().ClaimedWeight().Get()) + + commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) + + fmt.Println(commitment3aMetadata.RequestAttestations().Get()) + fmt.Println("TRIGGER ATTESTATION") + commitment3Metadata.Parent().Get().Attested().Trigger() + fmt.Println(commitment3aMetadata.RequestAttestations().Get()) + + fmt.Println(commitment3aMetadata.Attested().Trigger()) + fmt.Println(commitment3aMetadata.RequestAttestations().Get()) +} diff --git a/pkg/protocol/protocol/chain_switching.go b/pkg/protocol/protocol/chain_switching.go new file mode 100644 index 000000000..6bbb5f38a --- /dev/null +++ b/pkg/protocol/protocol/chain_switching.go @@ -0,0 +1,80 @@ +package protocol + +import "github.com/iotaledger/hive.go/ds/reactive" + +type ChainSwitching struct { + heaviestClaimedCandidate reactive.Variable[*Chain] + + heaviestAttestedCandidate reactive.Variable[*Chain] + + heaviestVerifiedCandidate reactive.Variable[*Chain] +} + +func NewChainSwitching(chainManager *ChainManager) *ChainSwitching { + c := &ChainSwitching{ + heaviestClaimedCandidate: reactive.NewVariable[*Chain](), + heaviestAttestedCandidate: reactive.NewVariable[*Chain](), + heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), + } + + c.heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + prevCandidate.requestAttestations.Set(false) + } + + newCandidate.requestAttestations.Set(true) + }) + + c.heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + prevCandidate.engine.instantiate.Set(false) + } + + newCandidate.engine.instantiate.Set(true) + }) + + c.heaviestVerifiedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + prevCandidate.evicted.Trigger() + } + + // TODO: MAKE MAIN CHAIN + }) + + selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { + chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { + if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { + return + } + + candidate.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { + return newCandidate + } + + return currentCandidate + }) + }) + } + + chainManager.OnChainCreated(func(chain *Chain) { + // TODO: ON SOLID + selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) + selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) + selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*Chain).VerifiedWeight) + }) + + return c +} + +func (c *ChainSwitching) HeaviestClaimedCandidate() reactive.Variable[*Chain] { + return c.heaviestClaimedCandidate +} + +func (c *ChainSwitching) HeaviestAttestedCandidate() reactive.Variable[*Chain] { + return c.heaviestAttestedCandidate +} + +func (c *ChainSwitching) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { + return c.heaviestVerifiedCandidate +} diff --git a/pkg/protocol/protocol/commitment.go b/pkg/protocol/protocol/commitment.go new file mode 100644 index 000000000..c1f68ea87 --- /dev/null +++ b/pkg/protocol/protocol/commitment.go @@ -0,0 +1,165 @@ +package protocol + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/protocol/engine" +) + +type Commitment struct { + *model.Commitment + + parent reactive.Variable[*Commitment] + successor reactive.Variable[*Commitment] + spawnedChain reactive.Variable[*Chain] + chain reactive.Variable[*Chain] + solid reactive.Event + attested reactive.Event + verified reactive.Event + inSyncRange *inSyncRange + requestBlocks *requestBlocks + requestAttestations *requestAttestations + evicted reactive.Event +} + +func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment { + c := &Commitment{ + Commitment: commitment, + parent: reactive.NewVariable[*Commitment](), + successor: reactive.NewVariable[*Commitment](), + spawnedChain: reactive.NewVariable[*Chain](), + chain: reactive.NewVariable[*Chain](), + solid: reactive.NewEvent(), + attested: reactive.NewEvent(), + verified: reactive.NewEvent(), + evicted: reactive.NewEvent(), + } + + c.inSyncRange = newInSyncRange(c, lo.First(optIsRoot)) + c.requestBlocks = newRequestBlocks(c, lo.First(optIsRoot)) + c.requestAttestations = newRequestAttestations(c) + + c.parent.OnUpdate(func(_, parent *Commitment) { c.solid.InheritFrom(parent.solid) }) + + c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) + + if lo.First(optIsRoot) { + c.solid.Set(true) + c.attested.Set(true) + c.verified.Set(true) + } + + return c +} + +func (c *Commitment) CommitmentModel() *model.Commitment { + return c.Commitment +} + +func (c *Commitment) Parent() reactive.Variable[*Commitment] { + return c.parent +} + +func (c *Commitment) Successor() reactive.Variable[*Commitment] { + return c.successor +} + +func (c *Commitment) SpawnedChain() reactive.Variable[*Chain] { + return c.spawnedChain +} + +func (c *Commitment) Chain() reactive.Variable[*Chain] { + return c.chain +} + +func (c *Commitment) Solid() reactive.Event { + return c.solid +} + +func (c *Commitment) Attested() reactive.Event { + return c.attested +} + +func (c *Commitment) Verified() reactive.Event { + return c.verified +} + +func (c *Commitment) InSyncRange() reactive.Variable[bool] { + return c.inSyncRange +} + +func (c *Commitment) RequestBlocks() reactive.Variable[bool] { + return c.requestBlocks +} + +func (c *Commitment) RequestAttestations() reactive.Variable[bool] { + return c.requestAttestations +} + +func (c *Commitment) Engine() reactive.Variable[*engine.Engine] { + return c.chain.Get().Engine() +} + +func (c *Commitment) Evicted() reactive.Event { + return c.evicted +} + +func (c *Commitment) setParent(parent *Commitment) { + parent.registerChild(c, c.chainUpdater(parent)) + + if c.parent.Set(parent) != nil { + panic("parent may not be changed once it was set") + } +} + +func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { + c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { + return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) + }) + + unsubscribe := c.successor.OnUpdate(onSuccessorUpdated) + + c.evicted.OnTrigger(unsubscribe) +} + +func (c *Commitment) chainUpdater(parent *Commitment) func(*Commitment, *Commitment) { + var unsubscribeFromParent func() + + return func(_, successor *Commitment) { + c.spawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { + if successor == nil { + panic("successor may not be changed back to nil") + } + + if successor == c { + if spawnedChain != nil { + spawnedChain.evicted.Trigger() + } + + unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) + + return nil + } + + if spawnedChain != nil { + return spawnedChain + } + + if unsubscribeFromParent != nil { + unsubscribeFromParent() + } + + return NewChain(c) + }) + } +} + +// max compares the commitment with the given other commitment and returns the one with the higher index. +func (c *Commitment) max(other *Commitment) *Commitment { + if c == nil || other != nil && other.Index() >= c.Index() { + return other + } + + return c +} diff --git a/pkg/protocol/protocol/commitment_verifier.go b/pkg/protocol/protocol/commitment_verifier.go new file mode 100644 index 000000000..704785cf1 --- /dev/null +++ b/pkg/protocol/protocol/commitment_verifier.go @@ -0,0 +1,175 @@ +package protocol + +import ( + "github.com/iotaledger/hive.go/ads" + "github.com/iotaledger/hive.go/ds" + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/kvstore/mapdb" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/merklehasher" +) + +type CommitmentVerifier struct { + engine *engine.Engine + cumulativeWeight uint64 + validatorAccountsAtFork map[iotago.AccountID]*accounts.AccountData +} + +func NewCommitmentVerifier(mainEngine *engine.Engine, lastCommonCommitmentBeforeFork *model.Commitment) *CommitmentVerifier { + committeeAtForkingPoint := mainEngine.SybilProtection.SeatManager().Committee(lastCommonCommitmentBeforeFork.Index()).Accounts().IDs() + + return &CommitmentVerifier{ + engine: mainEngine, + cumulativeWeight: lastCommonCommitmentBeforeFork.CumulativeWeight(), + validatorAccountsAtFork: lo.PanicOnErr(mainEngine.Ledger.PastAccounts(committeeAtForkingPoint, lastCommonCommitmentBeforeFork.Index())), + // TODO: what happens if the committee rotated after the fork? + } +} + +func (c *CommitmentVerifier) verifyCommitment(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier]) (blockIDsFromAttestations iotago.BlockIDs, cumulativeWeight uint64, err error) { + // 1. Verify that the provided attestations are indeed the ones that were included in the commitment. + tree := ads.NewMap(mapdb.NewMapDB(), + iotago.Identifier.Bytes, + iotago.IdentifierFromBytes, + func(attestation *iotago.Attestation) ([]byte, error) { + apiForVersion, err := c.engine.APIForVersion(attestation.ProtocolVersion) + if err != nil { + return nil, ierrors.Wrapf(err, "failed to get API for version %d", attestation.ProtocolVersion) + } + + return apiForVersion.Encode(attestation) + }, + func(bytes []byte) (*iotago.Attestation, int, error) { + version, _, err := iotago.VersionFromBytes(bytes) + if err != nil { + return nil, 0, ierrors.Wrap(err, "failed to determine version") + } + + a := new(iotago.Attestation) + apiForVersion, err := c.engine.APIForVersion(version) + if err != nil { + return nil, 0, ierrors.Wrapf(err, "failed to get API for version %d", version) + } + n, err := apiForVersion.Decode(bytes, a) + + return a, n, err + }, + ) + + for _, att := range attestations { + if err := tree.Set(att.IssuerID, att); err != nil { + return nil, 0, ierrors.Wrapf(err, "failed to set attestation for issuerID %s", att.IssuerID) + } + } + if !iotago.VerifyProof(merkleProof, iotago.Identifier(tree.Root()), commitment.RootsID()) { + return nil, 0, ierrors.Errorf("invalid merkle proof for attestations for commitment %s", commitment.ID()) + } + + // 2. Verify attestations. + blockIDs, seatCount, err := c.verifyAttestations(attestations) + if err != nil { + return nil, 0, ierrors.Wrapf(err, "error validating attestations for commitment %s", commitment.ID()) + } + + // 3. Verify that calculated cumulative weight from attestations is lower or equal to cumulative weight of commitment. + // This is necessary due to public key changes of validators in the window of forking point and the current state of + // the other chain (as validators could have added/removed public keys that we don't know about yet). + // + // 1. The weight should be equal if all public keys are known and unchanged. + // + // 2. A public key is added to an account. + // We do not count a seat for the issuer for this slot and the computed CW will be lower than the CW in + // the commitment. This is fine, since this is a rare occasion and a heavier chain will become heavier anyway, eventually. + // It will simply take a bit longer to accumulate enough CW so that the chain-switch rule kicks in. + // Note: In an extreme scenario where all validators add and use a new public key, the chain will never become heavier. + // This can only be prevented by adding such key changes provably to the commitments so that these changes + // can be reconstructed and verified by nodes that do not have the latest ledger state. + // + // 3. A public key is removed from an account. + // We count the seat for the issuer for this slot even though we shouldn't have. According to the protocol, a valid + // chain with such a block can never exist because the block itself (here provided as an attestation) would be invalid. + // However, we do not know about this yet since we do not have the latest ledger state. + // In a rare and elaborate scenario, an attacker might have acquired such removed (private) keys and could + // fabricate attestations and thus a theoretically heavier chain (solely when looking on the chain backed by attestations) + // than it actually is. Nodes might consider to switch to this chain, even though it is invalid which will be discovered + // before the candidate chain/engine is activated (it will never get heavier than the current chain). + c.cumulativeWeight += seatCount + if c.cumulativeWeight > commitment.CumulativeWeight() { + return nil, 0, ierrors.Errorf("invalid cumulative weight for commitment %s: expected %d, got %d", commitment.ID(), commitment.CumulativeWeight(), c.cumulativeWeight) + } + + return blockIDs, c.cumulativeWeight, nil +} + +func (c *CommitmentVerifier) verifyAttestations(attestations []*iotago.Attestation) (iotago.BlockIDs, uint64, error) { + visitedIdentities := ds.NewSet[iotago.AccountID]() + var blockIDs iotago.BlockIDs + var seatCount uint64 + + for _, att := range attestations { + // 1. Make sure the public key used to sign is valid for the given issuerID. + // We ignore attestations that don't have a valid public key for the given issuerID. + // 1. The attestation might be fake. + // 2. The issuer might have added a new public key in the meantime, but we don't know about it yet + // since we only have the ledger state at the forking point. + accountData, exists := c.validatorAccountsAtFork[att.IssuerID] + + // We always need to have the accountData for a validator. + if !exists { + return nil, 0, ierrors.Errorf("accountData for issuerID %s does not exist", att.IssuerID) + } + + edSig, isEdSig := att.Signature.(*iotago.Ed25519Signature) + if !isEdSig { + return nil, 0, ierrors.Errorf("only ed2519 signatures supported, got %s", att.Signature.Type()) + } + + // We found the accountData, but we don't know the public key used to sign this block/attestation. Ignore. + if !accountData.PubKeys.Has(edSig.PublicKey) { + continue + } + + api, err := c.engine.APIForVersion(att.ProtocolVersion) + if err != nil { + return nil, 0, ierrors.Wrap(err, "error determining API for attestation") + } + + // 2. Verify the signature of the attestation. + if valid, err := att.VerifySignature(api); !valid { + if err != nil { + return nil, 0, ierrors.Wrap(err, "error validating attestation signature") + } + + return nil, 0, ierrors.New("invalid attestation signature") + } + + // 3. A valid set of attestations can't contain multiple attestations from the same issuerID. + if visitedIdentities.Has(att.IssuerID) { + return nil, 0, ierrors.Errorf("issuerID %s contained in multiple attestations", att.IssuerID) + } + + // TODO: this might differ if we have a Accounts with changing weights depending on the SlotIndex/epoch + attestationBlockID, err := att.BlockID(api) + if err != nil { + return nil, 0, ierrors.Wrap(err, "error calculating blockID from attestation") + } + if _, seatExists := c.engine.SybilProtection.SeatManager().Committee(attestationBlockID.Index()).GetSeat(att.IssuerID); seatExists { + seatCount++ + } + + visitedIdentities.Add(att.IssuerID) + + blockID, err := att.BlockID(api) + if err != nil { + return nil, 0, ierrors.Wrap(err, "error calculating blockID from attestation") + } + + blockIDs = append(blockIDs, blockID) + } + + return blockIDs, seatCount, nil +} diff --git a/pkg/protocol/protocol/constants.go b/pkg/protocol/protocol/constants.go new file mode 100644 index 000000000..67ba2708c --- /dev/null +++ b/pkg/protocol/protocol/constants.go @@ -0,0 +1,10 @@ +package protocol + +const ( + // SyncWindow defines the maximum amount of slots that a node requests on top of its latest verified commitment. + SyncWindow = 20 + + // WarpSyncOffset defines how many slots a commitment needs to be behind the latest commitment to be requested by + // the warp sync process. + WarpSyncOffset = 1 +) diff --git a/pkg/protocol/protocol/engine_manager.go b/pkg/protocol/protocol/engine_manager.go new file mode 100644 index 000000000..57d22bdf0 --- /dev/null +++ b/pkg/protocol/protocol/engine_manager.go @@ -0,0 +1,99 @@ +package protocol + +import ( + "github.com/iotaledger/hive.go/runtime/module" + "github.com/iotaledger/hive.go/runtime/options" + "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" + "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" + "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" + "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" + "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" + "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" + "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" + "github.com/iotaledger/iota-core/pkg/retainer" + "github.com/iotaledger/iota-core/pkg/storage" +) + +type EngineManager struct { + protocol *Protocol + + *enginemanager.EngineManager +} + +func NewEngineManager( + protocol *Protocol, + workers *workerpool.Group, + errorHandler func(error), + dir string, + dbVersion byte, + storageOptions []options.Option[storage.Storage], + engineOptions []options.Option[engine.Engine], + filterProvider module.Provider[*engine.Engine, filter.Filter], + commitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter], + blockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG], + bookerProvider module.Provider[*engine.Engine, booker.Booker], + clockProvider module.Provider[*engine.Engine, clock.Clock], + blockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget], + slotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget], + sybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection], + notarizationProvider module.Provider[*engine.Engine, notarization.Notarization], + attestationProvider module.Provider[*engine.Engine, attestation.Attestations], + ledgerProvider module.Provider[*engine.Engine, ledger.Ledger], + schedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler], + tipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager], + tipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection], + retainerProvider module.Provider[*engine.Engine, retainer.Retainer], + upgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator], +) *EngineManager { + e := &EngineManager{ + EngineManager: enginemanager.New( + workers, + errorHandler, + dir, + dbVersion, + storageOptions, + engineOptions, + filterProvider, + commitmentFilterProvider, + blockDAGProvider, + bookerProvider, + clockProvider, + blockGadgetProvider, + slotGadgetProvider, + sybilProtectionProvider, + notarizationProvider, + attestationProvider, + ledgerProvider, + schedulerProvider, + tipManagerProvider, + tipSelectionProvider, + retainerProvider, + upgradeOrchestratorProvider, + ), + + protocol: protocol, + } + + protocol.chainCreated.Hook(func(chain *Chain) { + chain.engine.instantiate.OnUpdate(func(_, instantiate bool) { + + }) + }) + + return e +} + +func (e *EngineManager) MainInstance() *engine.Engine { + return nil +} diff --git a/pkg/protocol/protocol/engine_variable.go b/pkg/protocol/protocol/engine_variable.go new file mode 100644 index 000000000..c8f88d320 --- /dev/null +++ b/pkg/protocol/protocol/engine_variable.go @@ -0,0 +1,44 @@ +package protocol + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/iota-core/pkg/protocol/engine" +) + +type engineVariable struct { + reactive.Variable[*engine.Engine] + + parentEngine reactive.Variable[*engine.Engine] + + spawnedEngine reactive.Variable[*engine.Engine] + + // instantiated is a flag that indicates whether this chain shall be instantiated. + instantiate reactive.Variable[bool] +} + +func newEngineVariable(commitment *Commitment, optStartingEngine ...*engine.Engine) *engineVariable { + e := &engineVariable{ + parentEngine: reactive.NewVariable[*engine.Engine](), + instantiate: reactive.NewVariable[bool](), + spawnedEngine: reactive.NewVariable[*engine.Engine](), + } + + e.Variable = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { + if spawnedEngine != nil { + return spawnedEngine + } + + return parentEngine + }, e.spawnedEngine, e.parentEngine) + + if startingEngine := lo.First(optStartingEngine); startingEngine != nil { + e.spawnedEngine.Set(startingEngine) + } else { + commitment.parent.OnUpdate(func(_, parent *Commitment) { + e.parentEngine.InheritFrom(parent.Engine()) + }) + } + + return e +} diff --git a/pkg/protocol/protocol/in_sync_range.go b/pkg/protocol/protocol/in_sync_range.go new file mode 100644 index 000000000..099b768e3 --- /dev/null +++ b/pkg/protocol/protocol/in_sync_range.go @@ -0,0 +1,65 @@ +package protocol + +import "github.com/iotaledger/hive.go/ds/reactive" + +type inSyncRange struct { + reactive.Variable[bool] + + aboveLatestVerifiedCommitment *aboveLatestVerifiedCommitmentVariable + isBelowSyncThreshold reactive.Event +} + +func newInSyncRange(commitment *Commitment, isRoot bool) *inSyncRange { + i := &inSyncRange{ + aboveLatestVerifiedCommitment: newAboveLatestVerifiedCommitmentVariable(commitment), + isBelowSyncThreshold: reactive.NewEvent(), + } + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { + return commitment.inSyncRange.isBelowSyncThreshold + }, commitment, (*Chain).SyncThreshold) + }) + + if isRoot { + i.isBelowSyncThreshold.Set(true) + } + + i.Variable = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { + return belowSyncThreshold && aboveLatestVerifiedCommitment + }, i.isBelowSyncThreshold, newAboveLatestVerifiedCommitmentVariable(commitment)) + + return i +} + +type aboveLatestVerifiedCommitmentVariable struct { + reactive.Variable[bool] + + parentVerified reactive.Event + + parentAboveLatestVerifiedCommitment reactive.Variable[bool] + + directlyAboveLatestVerifiedCommitment reactive.Variable[bool] +} + +func newAboveLatestVerifiedCommitmentVariable(commitment *Commitment) *aboveLatestVerifiedCommitmentVariable { + a := &aboveLatestVerifiedCommitmentVariable{ + parentVerified: reactive.NewEvent(), + parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), + } + + a.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { + return parentVerified && !verified + }, a.parentVerified, commitment.verified) + + a.Variable = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { + return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment + }, a.directlyAboveLatestVerifiedCommitment, a.parentAboveLatestVerifiedCommitment) + + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { + a.parentVerified.InheritFrom(parent.verified) + a.parentAboveLatestVerifiedCommitment.InheritFrom(parent.inSyncRange.aboveLatestVerifiedCommitment) + }) + + return a +} diff --git a/pkg/protocol/protocol/protocol.go b/pkg/protocol/protocol/protocol.go new file mode 100644 index 000000000..3b1038fe9 --- /dev/null +++ b/pkg/protocol/protocol/protocol.go @@ -0,0 +1,95 @@ +package protocol + +import ( + "fmt" + + "github.com/iotaledger/hive.go/runtime/module" + "github.com/iotaledger/hive.go/runtime/options" + "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/network" + "github.com/iotaledger/iota-core/pkg/protocol" + "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" + "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" + "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" + "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" + "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" + "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" + "github.com/iotaledger/iota-core/pkg/protocol/syncmanager" + "github.com/iotaledger/iota-core/pkg/retainer" + "github.com/iotaledger/iota-core/pkg/storage" +) + +type Protocol struct { + optsBaseDirectory string + optsSnapshotPath string + + optsEngineOptions []options.Option[engine.Engine] + optsChainManagerOptions []options.Option[chainmanager.Manager] + optsStorageOptions []options.Option[storage.Storage] + + optsFilterProvider module.Provider[*engine.Engine, filter.Filter] + optsCommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] + optsBlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] + optsTipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] + optsTipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] + optsBookerProvider module.Provider[*engine.Engine, booker.Booker] + optsClockProvider module.Provider[*engine.Engine, clock.Clock] + optsBlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] + optsSlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] + optsSybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] + optsNotarizationProvider module.Provider[*engine.Engine, notarization.Notarization] + optsAttestationProvider module.Provider[*engine.Engine, attestation.Attestations] + optsSyncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager] + optsLedgerProvider module.Provider[*engine.Engine, ledger.Ledger] + optsRetainerProvider module.Provider[*engine.Engine, retainer.Retainer] + optsSchedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] + optsUpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] + + *EngineManager + *ChainManager +} + +func NewProtocol(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { + return options.Apply(&Protocol{}, opts, func(p *Protocol) { + p.EngineManager = NewEngineManager( + p, + workers.CreateGroup("EngineManager"), + func(err error) { + fmt.Println(err) + }, + p.optsBaseDirectory, + protocol.DatabaseVersion, + p.optsStorageOptions, + p.optsEngineOptions, + p.optsFilterProvider, + p.optsCommitmentFilterProvider, + p.optsBlockDAGProvider, + p.optsBookerProvider, + p.optsClockProvider, + p.optsBlockGadgetProvider, + p.optsSlotGadgetProvider, + p.optsSybilProtectionProvider, + p.optsNotarizationProvider, + p.optsAttestationProvider, + p.optsLedgerProvider, + p.optsSchedulerProvider, + p.optsTipManagerProvider, + p.optsTipSelectionProvider, + p.optsRetainerProvider, + p.optsUpgradeOrchestratorProvider, + ) + + p.ChainManager = NewChainManager(p.EngineManager.MainInstance()) + }) +} diff --git a/pkg/protocol/protocol/protocol_parameters.go b/pkg/protocol/protocol/protocol_parameters.go new file mode 100644 index 000000000..ff80ddc9d --- /dev/null +++ b/pkg/protocol/protocol/protocol_parameters.go @@ -0,0 +1,46 @@ +package protocol + +import ( + "github.com/iotaledger/hive.go/runtime/module" + "github.com/iotaledger/hive.go/runtime/options" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" + "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" + "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" + "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" + "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" + "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" + "github.com/iotaledger/iota-core/pkg/retainer" + "github.com/iotaledger/iota-core/pkg/storage" +) + +type ProtocolParameters struct { + storageOptions []options.Option[storage.Storage] + engineOptions []options.Option[engine.Engine] + + filterProvider module.Provider[*engine.Engine, filter.Filter] + commitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] + blockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] + bookerProvider module.Provider[*engine.Engine, booker.Booker] + clockProvider module.Provider[*engine.Engine, clock.Clock] + blockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] + slotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] + sybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] + notarizationProvider module.Provider[*engine.Engine, notarization.Notarization] + attestationProvider module.Provider[*engine.Engine, attestation.Attestations] + ledgerProvider module.Provider[*engine.Engine, ledger.Ledger] + schedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] + tipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] + tipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] + retainerProvider module.Provider[*engine.Engine, retainer.Retainer] + upgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] +} diff --git a/pkg/protocol/protocol/request_attestations.go b/pkg/protocol/protocol/request_attestations.go new file mode 100644 index 000000000..98d7df677 --- /dev/null +++ b/pkg/protocol/protocol/request_attestations.go @@ -0,0 +1,43 @@ +package protocol + +import "github.com/iotaledger/hive.go/ds/reactive" + +type requestAttestations struct { + reactive.Variable[bool] + + parentAttested reactive.Event + + isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] +} + +func newRequestAttestations(commitment *Commitment) *requestAttestations { + c := &requestAttestations{ + Variable: reactive.NewVariable[bool](), + parentAttested: reactive.NewEvent(), + } + + c.isDirectlyAboveLatestAttestedCommitment = reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { + return parentAttested && !attested + }, c.parentAttested, commitment.attested) + + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { c.parentAttested.InheritFrom(parent.attested) }) + + var attestationRequestedByChain reactive.DerivedVariable[bool] + + commitment.chain.OnUpdate(func(_, newChain *Chain) { + // cleanup the old chain specific derived variable if it exists + if attestationRequestedByChain != nil { + attestationRequestedByChain.Unsubscribe() + } + + // create a chain specific derived variable + attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { + return requestAttestations && isDirectlyAboveLatestAttestedCommitment + }, newChain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) + + // expose the chain specific derived variable to the commitment property + c.InheritFrom(attestationRequestedByChain) + }) + + return c +} diff --git a/pkg/protocol/protocol/request_blocks.go b/pkg/protocol/protocol/request_blocks.go new file mode 100644 index 000000000..676772bf5 --- /dev/null +++ b/pkg/protocol/protocol/request_blocks.go @@ -0,0 +1,31 @@ +package protocol + +import "github.com/iotaledger/hive.go/ds/reactive" + +type requestBlocks struct { + reactive.Variable[bool] + + isBelowWarpSyncThreshold reactive.Event +} + +func newRequestBlocks(commitment *Commitment, isRoot bool) *requestBlocks { + r := &requestBlocks{ + isBelowWarpSyncThreshold: reactive.NewEvent(), + } + + if isRoot { + r.isBelowWarpSyncThreshold.Set(true) + } + + r.Variable = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { + return inSyncWindow && belowWarpSyncThreshold + }, commitment.inSyncRange, r.isBelowWarpSyncThreshold) + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { + return commitment.requestBlocks.isBelowWarpSyncThreshold + }, commitment, (*Chain).WarpSyncThreshold) + }) + + return r +} diff --git a/pkg/protocol/protocol/utils.go b/pkg/protocol/protocol/utils.go new file mode 100644 index 000000000..92c1d441f --- /dev/null +++ b/pkg/protocol/protocol/utils.go @@ -0,0 +1,30 @@ +package protocol + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + iotago "github.com/iotaledger/iota.go/v4" +) + +// noPanicIfNil prevents a panic of the getter when the receiver is nil by returning the zero value of the return type. +func noPanicIfNil[ReceiverType, ReturnType any](getter func(*ReceiverType) ReturnType) func(*ReceiverType) ReturnType { + return func(receiver *ReceiverType) (zeroValue ReturnType) { + if receiver == nil { + return zeroValue + } + + return getter(receiver) + } +} + +// triggerEventIfCommitmentBelowThreshold triggers the given event if the given commitment is below the given threshold. +func triggerEventIfCommitmentBelowThreshold(event func(*Commitment) reactive.Event, commitment *Commitment, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { + // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) + event(commitment.parent.Get()).OnTrigger(func() { + // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met + chainThreshold(commitment.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { + event(commitment).Trigger() + }, func(_, slotIndex iotago.SlotIndex) bool { + return commitment.Index() < slotIndex + }) + }) +} From 4e84ce117b983d18ed2861fcd94f5918b3e5e8c0 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 2 Sep 2023 01:50:48 +0200 Subject: [PATCH 080/356] Refactor: deleted old folder --- .../chainmanagerv1/attestations_requester.go | 84 ------- pkg/protocol/chainmanagerv1/chain.go | 221 ------------------ pkg/protocol/chainmanagerv1/chain_manager.go | 131 ----------- .../chainmanagerv1/chain_manager_test.go | 84 ------- .../chainmanagerv1/chain_switching.go | 80 ------- pkg/protocol/chainmanagerv1/commitment.go | 165 ------------- .../chainmanagerv1/commitment_verifier.go | 175 -------------- pkg/protocol/chainmanagerv1/constants.go | 10 - pkg/protocol/chainmanagerv1/engine_manager.go | 56 ----- .../chainmanagerv1/engine_variable.go | 44 ---- pkg/protocol/chainmanagerv1/in_sync_range.go | 65 ------ pkg/protocol/chainmanagerv1/protocol.go | 18 -- .../chainmanagerv1/protocol_parameters.go | 46 ---- .../chainmanagerv1/request_attestations.go | 43 ---- pkg/protocol/chainmanagerv1/request_blocks.go | 31 --- pkg/protocol/chainmanagerv1/utils.go | 30 --- 16 files changed, 1283 deletions(-) delete mode 100644 pkg/protocol/chainmanagerv1/attestations_requester.go delete mode 100644 pkg/protocol/chainmanagerv1/chain.go delete mode 100644 pkg/protocol/chainmanagerv1/chain_manager.go delete mode 100644 pkg/protocol/chainmanagerv1/chain_manager_test.go delete mode 100644 pkg/protocol/chainmanagerv1/chain_switching.go delete mode 100644 pkg/protocol/chainmanagerv1/commitment.go delete mode 100644 pkg/protocol/chainmanagerv1/commitment_verifier.go delete mode 100644 pkg/protocol/chainmanagerv1/constants.go delete mode 100644 pkg/protocol/chainmanagerv1/engine_manager.go delete mode 100644 pkg/protocol/chainmanagerv1/engine_variable.go delete mode 100644 pkg/protocol/chainmanagerv1/in_sync_range.go delete mode 100644 pkg/protocol/chainmanagerv1/protocol.go delete mode 100644 pkg/protocol/chainmanagerv1/protocol_parameters.go delete mode 100644 pkg/protocol/chainmanagerv1/request_attestations.go delete mode 100644 pkg/protocol/chainmanagerv1/request_blocks.go delete mode 100644 pkg/protocol/chainmanagerv1/utils.go diff --git a/pkg/protocol/chainmanagerv1/attestations_requester.go b/pkg/protocol/chainmanagerv1/attestations_requester.go deleted file mode 100644 index 43eb348b1..000000000 --- a/pkg/protocol/chainmanagerv1/attestations_requester.go +++ /dev/null @@ -1,84 +0,0 @@ -package chainmanagerv1 - -import ( - "fmt" - - "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/network" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/merklehasher" -) - -type AttestationsRequester struct { - chainManager *ChainManager - requester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] -} - -func NewAttestationsRequester(chainManager *ChainManager) *AttestationsRequester { - a := &AttestationsRequester{ - chainManager: chainManager, - requester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), - } - - chainManager.chainCreated.Hook(func(chain *Chain) { - chain.RequestAttestations().OnUpdate(func(_, requestAttestations bool) { - if requestAttestations { - a.commitmentVerifiers.GetOrCreate(chain.Root().ID(), func() *CommitmentVerifier { - return NewCommitmentVerifier(chain.Engine().Get(), chain.Root().Parent().Get().CommitmentModel()) - }) - } else { - a.commitmentVerifiers.Delete(chain.Root().ID()) - } - }) - }) - - chainManager.commitmentCreated.Hook(func(commitment *Commitment) { - commitment.requestAttestations.OnUpdate(func(_, requestAttestations bool) { - if requestAttestations { - a.requester.StartTicker(commitment.ID()) - } else { - a.requester.StopTicker(commitment.ID()) - } - }) - }) - - return a -} - -func (a *AttestationsRequester) ProcessAttestationsResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source network.PeerID) { - commitment := a.chainManager.ProcessCommitment(commitmentModel) - if commitment == nil { - // TODO: log warning that we received attestations for a commitment that we don't know (maybe punish sender) - - return - } - - chain := commitment.Chain().Get() - if chain == nil { - // TODO: log warning that we received attestations for an unsolid commitment (we did not request that - maybe punish sender) - - return - } - - commitmentVerifier, exists := a.commitmentVerifiers.Get(chain.Root().ID()) - if !exists { - // TODO: log debug that we received attestations for a commitment that we did not request - - return - } - - blockIDs, actualCumulativeWeight, err := commitmentVerifier.verifyCommitment(commitmentModel, attestations, merkleProof) - if err != nil { - // TODO: do something with the error - - return - } - - // TODO: publish blockIDs, actualCumulativeWeight to target commitment - commitment.attested.Set(true) - fmt.Println(blockIDs, actualCumulativeWeight, source) -} diff --git a/pkg/protocol/chainmanagerv1/chain.go b/pkg/protocol/chainmanagerv1/chain.go deleted file mode 100644 index 0f5532778..000000000 --- a/pkg/protocol/chainmanagerv1/chain.go +++ /dev/null @@ -1,221 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - iotago "github.com/iotaledger/iota.go/v4" -) - -// Chain is a reactive component that manages the state of a chain. -type Chain struct { - // root contains the Commitment object that spawned this chain. - root *Commitment - - // commitments is a map of Commitment objects that belong to the same chain. - commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] - - // latestCommitment is the latest Commitment object in this chain. - latestCommitment reactive.Variable[*Commitment] - - // latestAttestedCommitment is the latest attested Commitment object in this chain. - latestAttestedCommitment reactive.Variable[*Commitment] - - // latestVerifiedCommitment is the latest verified Commitment object in this chain. - latestVerifiedCommitment reactive.Variable[*Commitment] - - // claimedWeight contains the total cumulative weight of the chain that is claimed by the latest commitments. - claimedWeight reactive.Variable[uint64] - - // attestedWeight contains the total cumulative weight of the chain that we received attestations for. - attestedWeight reactive.Variable[uint64] - - // verifiedWeight contains the total cumulative weight of the chain that we verified ourselves. - verifiedWeight reactive.Variable[uint64] - - // syncThreshold is the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). - syncThreshold reactive.Variable[iotago.SlotIndex] - - // warpSyncThreshold defines an offset from latest index where the warp sync process starts (we don't request slots - // that we are about to commit ourselves). - warpSyncThreshold reactive.Variable[iotago.SlotIndex] - - // requestAttestations is a flag that indicates whether this chain shall request attestations. - requestAttestations reactive.Variable[bool] - - // engine is the engine that is used to process blocks of this chain. - engine *engineVariable - - // evicted is an event that gets triggered when the chain gets evicted. - evicted reactive.Event -} - -// NewChain creates a new Chain instance. -func NewChain(root *Commitment, optStartingEngine ...*engine.Engine) *Chain { - c := &Chain{ - root: root, - commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), - latestCommitment: reactive.NewVariable[*Commitment](), - latestAttestedCommitment: reactive.NewVariable[*Commitment](), - latestVerifiedCommitment: reactive.NewVariable[*Commitment](), - requestAttestations: reactive.NewVariable[bool](), - evicted: reactive.NewEvent(), - } - - c.engine = newEngineVariable(root, optStartingEngine...) - - // track weights of the chain - c.claimedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestCommitment) - c.attestedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestAttestedCommitment) - c.verifiedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestVerifiedCommitment) - - c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { - if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { - return 0 - } - - return latestCommitment.Index() - WarpSyncOffset - }, c.latestCommitment) - - c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitment *Commitment) iotago.SlotIndex { - if latestVerifiedCommitment == nil { - return SyncWindow + 1 - } - - return latestVerifiedCommitment.Index() + SyncWindow + 1 - }, c.latestVerifiedCommitment) - - // associate the commitment with its chain - root.chain.Set(c) - - return c -} - -// Root returns the Commitment object that spawned this chain. -func (c *Chain) Root() *Commitment { - return c.root -} - -// Commitment returns the Commitment object with the given index, if it exists. -func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { - for currentChain := c; currentChain != nil; { - switch root := currentChain.Root(); { - case root == nil: - return nil, false // this should never happen, but we can handle it gracefully anyway - case root.Index() == index: - return root, true - case index > root.Index(): - return currentChain.commitments.Get(index) - default: - parent := root.parent.Get() - if parent == nil { - return nil, false - } - - currentChain = parent.chain.Get() - } - } - - return nil, false -} - -// LatestCommitment returns a reactive variable that always contains the latest Commitment object in this -// collection. -func (c *Chain) LatestCommitment() reactive.Variable[*Commitment] { - return c.latestCommitment -} - -// LatestAttestedCommitment returns a reactive variable that always contains the latest attested Commitment object -// in this chain. -func (c *Chain) LatestAttestedCommitment() reactive.Variable[*Commitment] { - return c.latestAttestedCommitment -} - -// LatestVerifiedCommitment returns a reactive variable that always contains the latest verified Commitment object -// in this chain. -func (c *Chain) LatestVerifiedCommitment() reactive.Variable[*Commitment] { - return c.latestVerifiedCommitment -} - -// ClaimedWeight returns a reactive variable that tracks the total cumulative weight of the chain that is claimed by -// the latest commitments. -func (c *Chain) ClaimedWeight() reactive.Variable[uint64] { - return c.claimedWeight -} - -// AttestedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we received -// attestations for. -func (c *Chain) AttestedWeight() reactive.Variable[uint64] { - return c.attestedWeight -} - -// VerifiedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we verified -// ourselves. -func (c *Chain) VerifiedWeight() reactive.Variable[uint64] { - return c.verifiedWeight -} - -// SyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the -// engine (to prevent memory exhaustion). -func (c *Chain) SyncThreshold() reactive.Variable[iotago.SlotIndex] { - return c.syncThreshold -} - -// WarpSyncThreshold returns a reactive variable that contains an offset from latest index where the warp sync -// process starts (we don't request slots that we are about to commit ourselves). -func (c *Chain) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { - return c.warpSyncThreshold -} - -// RequestAttestations returns a reactive variable that contains a flag that indicates whether this chain shall request -// attestations. -func (c *Chain) RequestAttestations() reactive.Variable[bool] { - return c.requestAttestations -} - -// Engine returns a reactive variable that contains the engine that is used to process blocks of this chain. -func (c *Chain) Engine() reactive.Variable[*engine.Engine] { - return c.engine -} - -// Evicted returns a reactive event that gets triggered when the chain is evicted. -func (c *Chain) Evicted() reactive.Event { - return c.evicted -} - -// registerCommitment adds a Commitment object to this collection. -func (c *Chain) registerCommitment(commitment *Commitment) { - c.commitments.Set(commitment.Index(), commitment) - - c.latestCommitment.Compute(commitment.max) - - unsubscribe := lo.Batch( - commitment.attested.OnTrigger(func() { c.latestAttestedCommitment.Compute(commitment.max) }), - commitment.verified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.max) }), - ) - - // unsubscribe and unregister the commitment when it changes its chain - commitment.chain.OnUpdateOnce(func(_, _ *Chain) { - unsubscribe() - - c.unregisterCommitment(commitment) - }, func(_, newChain *Chain) bool { return newChain != c }) -} - -// unregisterCommitment removes a Commitment object from this collection. -func (c *Chain) unregisterCommitment(commitment *Commitment) { - c.commitments.Delete(commitment.Index()) - - resetToParent := func(latestCommitment *Commitment) *Commitment { - if commitment.Index() > latestCommitment.Index() { - return latestCommitment - } - - return commitment.parent.Get() - } - - c.latestCommitment.Compute(resetToParent) - c.latestAttestedCommitment.Compute(resetToParent) - c.latestVerifiedCommitment.Compute(resetToParent) -} diff --git a/pkg/protocol/chainmanagerv1/chain_manager.go b/pkg/protocol/chainmanagerv1/chain_manager.go deleted file mode 100644 index 743d82a64..000000000 --- a/pkg/protocol/chainmanagerv1/chain_manager.go +++ /dev/null @@ -1,131 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/runtime/event" - "github.com/iotaledger/iota-core/pkg/core/promise" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - iotago "github.com/iotaledger/iota.go/v4" -) - -type ChainManager struct { - mainChain reactive.Variable[*Chain] - - commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] - - commitmentCreated *event.Event1[*Commitment] - - chainCreated *event.Event1[*Chain] - - commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - - *ChainSwitching - - *AttestationsRequester - - reactive.EvictionState[iotago.SlotIndex] -} - -func NewChainManager(startingEngine *engine.Engine) *ChainManager { - p := &ChainManager{ - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - mainChain: reactive.NewVariable[*Chain]().Init( - NewChain( - NewCommitment(startingEngine.Storage.Settings().LatestCommitment(), true), - startingEngine, - ), - ), - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), - commitmentCreated: event.New1[*Commitment](), - chainCreated: event.New1[*Chain](), - commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - } - - // embed reactive orchestrators - p.ChainSwitching = NewChainSwitching(p) - p.AttestationsRequester = NewAttestationsRequester(p) - - return p -} - -func (c *ChainManager) MainChain() reactive.Variable[*Chain] { - return c.mainChain -} - -func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment) { - if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *Commitment) { - commitmentMetadata = resolvedMetadata - }); commitmentRequest != nil { - commitmentRequest.Resolve(NewCommitment(commitment)) - } - - return commitmentMetadata -} - -func (c *ChainManager) OnCommitmentCreated(callback func(commitment *Commitment)) (unsubscribe func()) { - return c.commitmentCreated.Hook(callback).Unhook -} - -func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { - return c.chainCreated.Hook(callback).Unhook -} - -func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { - c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.setParent) - - slotEvictedEvent.OnTrigger(func() { - commitment.evicted.Trigger() - }) - - c.commitmentCreated.Trigger(commitment) - - commitment.spawnedChain.OnUpdate(func(_, newChain *Chain) { - if newChain != nil { - c.chainCreated.Trigger(newChain) - } - }) -} - -func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, index iotago.SlotIndex, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { - slotEvicted := c.EvictionEvent(index) - if slotEvicted.WasTriggered() { - rootCommitment := c.mainChain.Get().Root() - - if rootCommitment == nil || commitmentID != rootCommitment.ID() { - return nil - } - - for _, successCallback := range optSuccessCallbacks { - successCallback(rootCommitment) - } - - return promise.New[*Commitment]().Resolve(rootCommitment) - } - - commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) - if requestCreated { - if requestFromPeers { - c.commitmentRequester.StartTicker(commitmentID) - - commitmentRequest.OnComplete(func() { - c.commitmentRequester.StopTicker(commitmentID) - }) - } - - commitmentRequest.OnSuccess(func(commitment *Commitment) { - c.setupCommitment(commitment, slotEvicted) - }) - - slotEvicted.OnTrigger(func() { c.commitments.Delete(commitmentID) }) - } - - for _, successCallback := range optSuccessCallbacks { - commitmentRequest.OnSuccess(successCallback) - } - - return commitmentRequest -} diff --git a/pkg/protocol/chainmanagerv1/chain_manager_test.go b/pkg/protocol/chainmanagerv1/chain_manager_test.go deleted file mode 100644 index 35f02add0..000000000 --- a/pkg/protocol/chainmanagerv1/chain_manager_test.go +++ /dev/null @@ -1,84 +0,0 @@ -package chainmanagerv1 - -import ( - "fmt" - "testing" - - "github.com/stretchr/testify/require" - - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/model" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/tpkg" -) - -func TestChainManager(t *testing.T) { - testAPI := tpkg.TestAPI - rootCommitment := model.NewEmptyCommitment(testAPI) - chainManager := NewChainManager(rootCommitment) - - chainManager.ChainSwitching.heaviestAttestedCandidate.OnUpdate(func(oldValue, newValue *Chain) { - fmt.Println("CandidateChain", oldValue, newValue) - }) - - commitment1 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), - rootCommitment.Index()+1, - rootCommitment.ID(), - rootCommitment.RootsID(), - 1, - 1, - ), testAPI)) - - commitment2 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), - commitment1.Index()+1, - commitment1.ID(), - commitment1.RootsID(), - 2, - 2, - ), testAPI)) - - commitment3 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), - commitment2.Index()+1, - commitment2.ID(), - commitment2.RootsID(), - 3, - 2, - ), testAPI)) - - commitment3a := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), - commitment2.Index()+1, - commitment2.ID(), - commitment2.RootsID(), - 40, - 2, - ), testAPI)) - - commitment1Metadata := chainManager.ProcessCommitment(commitment1) - require.True(t, commitment1Metadata.Solid().WasTriggered()) - - commitment3Metadata := chainManager.ProcessCommitment(commitment3) - require.True(t, commitment1Metadata.Solid().WasTriggered()) - require.False(t, commitment3Metadata.Solid().WasTriggered()) - - commitment2Metadata := chainManager.ProcessCommitment(commitment2) - require.True(t, commitment1Metadata.Solid().WasTriggered()) - require.True(t, commitment2Metadata.Solid().WasTriggered()) - require.True(t, commitment3Metadata.Solid().WasTriggered()) - - commitment2Metadata.Verified().Trigger() - require.True(t, commitment3Metadata.InSyncRange().Get()) - require.False(t, commitment3Metadata.RequestBlocks().Get()) - require.True(t, commitment3Metadata.Solid().WasTriggered()) - require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().LatestCommitment().Get().Index()) - require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().ClaimedWeight().Get()) - - commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) - - fmt.Println(commitment3aMetadata.RequestAttestations().Get()) - fmt.Println("TRIGGER ATTESTATION") - commitment3Metadata.Parent().Get().Attested().Trigger() - fmt.Println(commitment3aMetadata.RequestAttestations().Get()) - - fmt.Println(commitment3aMetadata.Attested().Trigger()) - fmt.Println(commitment3aMetadata.RequestAttestations().Get()) -} diff --git a/pkg/protocol/chainmanagerv1/chain_switching.go b/pkg/protocol/chainmanagerv1/chain_switching.go deleted file mode 100644 index 1a9a48ce5..000000000 --- a/pkg/protocol/chainmanagerv1/chain_switching.go +++ /dev/null @@ -1,80 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/ds/reactive" - -type ChainSwitching struct { - heaviestClaimedCandidate reactive.Variable[*Chain] - - heaviestAttestedCandidate reactive.Variable[*Chain] - - heaviestVerifiedCandidate reactive.Variable[*Chain] -} - -func NewChainSwitching(chainManager *ChainManager) *ChainSwitching { - c := &ChainSwitching{ - heaviestClaimedCandidate: reactive.NewVariable[*Chain](), - heaviestAttestedCandidate: reactive.NewVariable[*Chain](), - heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), - } - - c.heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - prevCandidate.requestAttestations.Set(false) - } - - newCandidate.requestAttestations.Set(true) - }) - - c.heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - prevCandidate.engine.instantiate.Set(false) - } - - newCandidate.engine.instantiate.Set(true) - }) - - c.heaviestVerifiedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - prevCandidate.evicted.Trigger() - } - - // TODO: MAKE MAIN CHAIN - }) - - selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { - chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { - return - } - - candidate.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { - return newCandidate - } - - return currentCandidate - }) - }) - } - - chainManager.OnChainCreated(func(chain *Chain) { - // TODO: ON SOLID - selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) - selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) - selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*Chain).VerifiedWeight) - }) - - return c -} - -func (c *ChainSwitching) HeaviestClaimedCandidate() reactive.Variable[*Chain] { - return c.heaviestClaimedCandidate -} - -func (c *ChainSwitching) HeaviestAttestedCandidate() reactive.Variable[*Chain] { - return c.heaviestAttestedCandidate -} - -func (c *ChainSwitching) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { - return c.heaviestVerifiedCandidate -} diff --git a/pkg/protocol/chainmanagerv1/commitment.go b/pkg/protocol/chainmanagerv1/commitment.go deleted file mode 100644 index bcdd0c742..000000000 --- a/pkg/protocol/chainmanagerv1/commitment.go +++ /dev/null @@ -1,165 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/protocol/engine" -) - -type Commitment struct { - *model.Commitment - - parent reactive.Variable[*Commitment] - successor reactive.Variable[*Commitment] - spawnedChain reactive.Variable[*Chain] - chain reactive.Variable[*Chain] - solid reactive.Event - attested reactive.Event - verified reactive.Event - inSyncRange *inSyncRange - requestBlocks *requestBlocks - requestAttestations *requestAttestations - evicted reactive.Event -} - -func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment { - c := &Commitment{ - Commitment: commitment, - parent: reactive.NewVariable[*Commitment](), - successor: reactive.NewVariable[*Commitment](), - spawnedChain: reactive.NewVariable[*Chain](), - chain: reactive.NewVariable[*Chain](), - solid: reactive.NewEvent(), - attested: reactive.NewEvent(), - verified: reactive.NewEvent(), - evicted: reactive.NewEvent(), - } - - c.inSyncRange = newInSyncRange(c, lo.First(optIsRoot)) - c.requestBlocks = newRequestBlocks(c, lo.First(optIsRoot)) - c.requestAttestations = newRequestAttestations(c) - - c.parent.OnUpdate(func(_, parent *Commitment) { c.solid.InheritFrom(parent.solid) }) - - c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) - - if lo.First(optIsRoot) { - c.solid.Set(true) - c.attested.Set(true) - c.verified.Set(true) - } - - return c -} - -func (c *Commitment) CommitmentModel() *model.Commitment { - return c.Commitment -} - -func (c *Commitment) Parent() reactive.Variable[*Commitment] { - return c.parent -} - -func (c *Commitment) Successor() reactive.Variable[*Commitment] { - return c.successor -} - -func (c *Commitment) SpawnedChain() reactive.Variable[*Chain] { - return c.spawnedChain -} - -func (c *Commitment) Chain() reactive.Variable[*Chain] { - return c.chain -} - -func (c *Commitment) Solid() reactive.Event { - return c.solid -} - -func (c *Commitment) Attested() reactive.Event { - return c.attested -} - -func (c *Commitment) Verified() reactive.Event { - return c.verified -} - -func (c *Commitment) InSyncRange() reactive.Variable[bool] { - return c.inSyncRange -} - -func (c *Commitment) RequestBlocks() reactive.Variable[bool] { - return c.requestBlocks -} - -func (c *Commitment) RequestAttestations() reactive.Variable[bool] { - return c.requestAttestations -} - -func (c *Commitment) Engine() reactive.Variable[*engine.Engine] { - return c.chain.Get().Engine() -} - -func (c *Commitment) Evicted() reactive.Event { - return c.evicted -} - -func (c *Commitment) setParent(parent *Commitment) { - parent.registerChild(c, c.chainUpdater(parent)) - - if c.parent.Set(parent) != nil { - panic("parent may not be changed once it was set") - } -} - -func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { - c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { - return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) - }) - - unsubscribe := c.successor.OnUpdate(onSuccessorUpdated) - - c.evicted.OnTrigger(unsubscribe) -} - -func (c *Commitment) chainUpdater(parent *Commitment) func(*Commitment, *Commitment) { - var unsubscribeFromParent func() - - return func(_, successor *Commitment) { - c.spawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { - if successor == nil { - panic("successor may not be changed back to nil") - } - - if successor == c { - if spawnedChain != nil { - spawnedChain.evicted.Trigger() - } - - unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) - - return nil - } - - if spawnedChain != nil { - return spawnedChain - } - - if unsubscribeFromParent != nil { - unsubscribeFromParent() - } - - return NewChain(c) - }) - } -} - -// max compares the commitment with the given other commitment and returns the one with the higher index. -func (c *Commitment) max(other *Commitment) *Commitment { - if c == nil || other != nil && other.Index() >= c.Index() { - return other - } - - return c -} diff --git a/pkg/protocol/chainmanagerv1/commitment_verifier.go b/pkg/protocol/chainmanagerv1/commitment_verifier.go deleted file mode 100644 index e98d9396d..000000000 --- a/pkg/protocol/chainmanagerv1/commitment_verifier.go +++ /dev/null @@ -1,175 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ads" - "github.com/iotaledger/hive.go/ds" - "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/kvstore/mapdb" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/merklehasher" -) - -type CommitmentVerifier struct { - engine *engine.Engine - cumulativeWeight uint64 - validatorAccountsAtFork map[iotago.AccountID]*accounts.AccountData -} - -func NewCommitmentVerifier(mainEngine *engine.Engine, lastCommonCommitmentBeforeFork *model.Commitment) *CommitmentVerifier { - committeeAtForkingPoint := mainEngine.SybilProtection.SeatManager().Committee(lastCommonCommitmentBeforeFork.Index()).Accounts().IDs() - - return &CommitmentVerifier{ - engine: mainEngine, - cumulativeWeight: lastCommonCommitmentBeforeFork.CumulativeWeight(), - validatorAccountsAtFork: lo.PanicOnErr(mainEngine.Ledger.PastAccounts(committeeAtForkingPoint, lastCommonCommitmentBeforeFork.Index())), - // TODO: what happens if the committee rotated after the fork? - } -} - -func (c *CommitmentVerifier) verifyCommitment(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier]) (blockIDsFromAttestations iotago.BlockIDs, cumulativeWeight uint64, err error) { - // 1. Verify that the provided attestations are indeed the ones that were included in the commitment. - tree := ads.NewMap(mapdb.NewMapDB(), - iotago.Identifier.Bytes, - iotago.IdentifierFromBytes, - func(attestation *iotago.Attestation) ([]byte, error) { - apiForVersion, err := c.engine.APIForVersion(attestation.ProtocolVersion) - if err != nil { - return nil, ierrors.Wrapf(err, "failed to get API for version %d", attestation.ProtocolVersion) - } - - return apiForVersion.Encode(attestation) - }, - func(bytes []byte) (*iotago.Attestation, int, error) { - version, _, err := iotago.VersionFromBytes(bytes) - if err != nil { - return nil, 0, ierrors.Wrap(err, "failed to determine version") - } - - a := new(iotago.Attestation) - apiForVersion, err := c.engine.APIForVersion(version) - if err != nil { - return nil, 0, ierrors.Wrapf(err, "failed to get API for version %d", version) - } - n, err := apiForVersion.Decode(bytes, a) - - return a, n, err - }, - ) - - for _, att := range attestations { - if err := tree.Set(att.IssuerID, att); err != nil { - return nil, 0, ierrors.Wrapf(err, "failed to set attestation for issuerID %s", att.IssuerID) - } - } - if !iotago.VerifyProof(merkleProof, iotago.Identifier(tree.Root()), commitment.RootsID()) { - return nil, 0, ierrors.Errorf("invalid merkle proof for attestations for commitment %s", commitment.ID()) - } - - // 2. Verify attestations. - blockIDs, seatCount, err := c.verifyAttestations(attestations) - if err != nil { - return nil, 0, ierrors.Wrapf(err, "error validating attestations for commitment %s", commitment.ID()) - } - - // 3. Verify that calculated cumulative weight from attestations is lower or equal to cumulative weight of commitment. - // This is necessary due to public key changes of validators in the window of forking point and the current state of - // the other chain (as validators could have added/removed public keys that we don't know about yet). - // - // 1. The weight should be equal if all public keys are known and unchanged. - // - // 2. A public key is added to an account. - // We do not count a seat for the issuer for this slot and the computed CW will be lower than the CW in - // the commitment. This is fine, since this is a rare occasion and a heavier chain will become heavier anyway, eventually. - // It will simply take a bit longer to accumulate enough CW so that the chain-switch rule kicks in. - // Note: In an extreme scenario where all validators add and use a new public key, the chain will never become heavier. - // This can only be prevented by adding such key changes provably to the commitments so that these changes - // can be reconstructed and verified by nodes that do not have the latest ledger state. - // - // 3. A public key is removed from an account. - // We count the seat for the issuer for this slot even though we shouldn't have. According to the protocol, a valid - // chain with such a block can never exist because the block itself (here provided as an attestation) would be invalid. - // However, we do not know about this yet since we do not have the latest ledger state. - // In a rare and elaborate scenario, an attacker might have acquired such removed (private) keys and could - // fabricate attestations and thus a theoretically heavier chain (solely when looking on the chain backed by attestations) - // than it actually is. Nodes might consider to switch to this chain, even though it is invalid which will be discovered - // before the candidate chain/engine is activated (it will never get heavier than the current chain). - c.cumulativeWeight += seatCount - if c.cumulativeWeight > commitment.CumulativeWeight() { - return nil, 0, ierrors.Errorf("invalid cumulative weight for commitment %s: expected %d, got %d", commitment.ID(), commitment.CumulativeWeight(), c.cumulativeWeight) - } - - return blockIDs, c.cumulativeWeight, nil -} - -func (c *CommitmentVerifier) verifyAttestations(attestations []*iotago.Attestation) (iotago.BlockIDs, uint64, error) { - visitedIdentities := ds.NewSet[iotago.AccountID]() - var blockIDs iotago.BlockIDs - var seatCount uint64 - - for _, att := range attestations { - // 1. Make sure the public key used to sign is valid for the given issuerID. - // We ignore attestations that don't have a valid public key for the given issuerID. - // 1. The attestation might be fake. - // 2. The issuer might have added a new public key in the meantime, but we don't know about it yet - // since we only have the ledger state at the forking point. - accountData, exists := c.validatorAccountsAtFork[att.IssuerID] - - // We always need to have the accountData for a validator. - if !exists { - return nil, 0, ierrors.Errorf("accountData for issuerID %s does not exist", att.IssuerID) - } - - edSig, isEdSig := att.Signature.(*iotago.Ed25519Signature) - if !isEdSig { - return nil, 0, ierrors.Errorf("only ed2519 signatures supported, got %s", att.Signature.Type()) - } - - // We found the accountData, but we don't know the public key used to sign this block/attestation. Ignore. - if !accountData.PubKeys.Has(edSig.PublicKey) { - continue - } - - api, err := c.engine.APIForVersion(att.ProtocolVersion) - if err != nil { - return nil, 0, ierrors.Wrap(err, "error determining API for attestation") - } - - // 2. Verify the signature of the attestation. - if valid, err := att.VerifySignature(api); !valid { - if err != nil { - return nil, 0, ierrors.Wrap(err, "error validating attestation signature") - } - - return nil, 0, ierrors.New("invalid attestation signature") - } - - // 3. A valid set of attestations can't contain multiple attestations from the same issuerID. - if visitedIdentities.Has(att.IssuerID) { - return nil, 0, ierrors.Errorf("issuerID %s contained in multiple attestations", att.IssuerID) - } - - // TODO: this might differ if we have a Accounts with changing weights depending on the SlotIndex/epoch - attestationBlockID, err := att.BlockID(api) - if err != nil { - return nil, 0, ierrors.Wrap(err, "error calculating blockID from attestation") - } - if _, seatExists := c.engine.SybilProtection.SeatManager().Committee(attestationBlockID.Index()).GetSeat(att.IssuerID); seatExists { - seatCount++ - } - - visitedIdentities.Add(att.IssuerID) - - blockID, err := att.BlockID(api) - if err != nil { - return nil, 0, ierrors.Wrap(err, "error calculating blockID from attestation") - } - - blockIDs = append(blockIDs, blockID) - } - - return blockIDs, seatCount, nil -} diff --git a/pkg/protocol/chainmanagerv1/constants.go b/pkg/protocol/chainmanagerv1/constants.go deleted file mode 100644 index b7af841e8..000000000 --- a/pkg/protocol/chainmanagerv1/constants.go +++ /dev/null @@ -1,10 +0,0 @@ -package chainmanagerv1 - -const ( - // SyncWindow defines the maximum amount of slots that a node requests on top of its latest verified commitment. - SyncWindow = 20 - - // WarpSyncOffset defines how many slots a commitment needs to be behind the latest commitment to be requested by - // the warp sync process. - WarpSyncOffset = 1 -) diff --git a/pkg/protocol/chainmanagerv1/engine_manager.go b/pkg/protocol/chainmanagerv1/engine_manager.go deleted file mode 100644 index c92ad06a6..000000000 --- a/pkg/protocol/chainmanagerv1/engine_manager.go +++ /dev/null @@ -1,56 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/runtime/workerpool" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" -) - -type EngineManager struct { - protocol *Protocol - - *enginemanager.EngineManager -} - -func NewEngineManager(protocol *Protocol, workers *workerpool.Group, errorHandler func(error), dir string, dbVersion byte, parameters *ProtocolParameters) *EngineManager { - e := &EngineManager{ - EngineManager: enginemanager.New( - workers, - errorHandler, - dir, - dbVersion, - parameters.storageOptions, - parameters.engineOptions, - parameters.filterProvider, - parameters.commitmentFilterProvider, - parameters.blockDAGProvider, - parameters.bookerProvider, - parameters.clockProvider, - parameters.blockGadgetProvider, - parameters.slotGadgetProvider, - parameters.sybilProtectionProvider, - parameters.notarizationProvider, - parameters.attestationProvider, - parameters.ledgerProvider, - parameters.schedulerProvider, - parameters.tipManagerProvider, - parameters.tipSelectionProvider, - parameters.retainerProvider, - parameters.upgradeOrchestratorProvider, - ), - - protocol: protocol, - } - - protocol.chainCreated.Hook(func(chain *Chain) { - chain.engine.instantiate.OnUpdate(func(_, instantiate bool) { - - }) - }) - - return e -} - -func (e *EngineManager) MainInstance() *engine.Engine { - return nil -} diff --git a/pkg/protocol/chainmanagerv1/engine_variable.go b/pkg/protocol/chainmanagerv1/engine_variable.go deleted file mode 100644 index a29fe7ca0..000000000 --- a/pkg/protocol/chainmanagerv1/engine_variable.go +++ /dev/null @@ -1,44 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/protocol/engine" -) - -type engineVariable struct { - reactive.Variable[*engine.Engine] - - parentEngine reactive.Variable[*engine.Engine] - - spawnedEngine reactive.Variable[*engine.Engine] - - // instantiated is a flag that indicates whether this chain shall be instantiated. - instantiate reactive.Variable[bool] -} - -func newEngineVariable(commitment *Commitment, optStartingEngine ...*engine.Engine) *engineVariable { - e := &engineVariable{ - parentEngine: reactive.NewVariable[*engine.Engine](), - instantiate: reactive.NewVariable[bool](), - spawnedEngine: reactive.NewVariable[*engine.Engine](), - } - - e.Variable = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { - if spawnedEngine != nil { - return spawnedEngine - } - - return parentEngine - }, e.spawnedEngine, e.parentEngine) - - if startingEngine := lo.First(optStartingEngine); startingEngine != nil { - e.spawnedEngine.Set(startingEngine) - } else { - commitment.parent.OnUpdate(func(_, parent *Commitment) { - e.parentEngine.InheritFrom(parent.Engine()) - }) - } - - return e -} diff --git a/pkg/protocol/chainmanagerv1/in_sync_range.go b/pkg/protocol/chainmanagerv1/in_sync_range.go deleted file mode 100644 index 5c3d9e8b8..000000000 --- a/pkg/protocol/chainmanagerv1/in_sync_range.go +++ /dev/null @@ -1,65 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/ds/reactive" - -type inSyncRange struct { - reactive.Variable[bool] - - aboveLatestVerifiedCommitment *aboveLatestVerifiedCommitmentVariable - isBelowSyncThreshold reactive.Event -} - -func newInSyncRange(commitment *Commitment, isRoot bool) *inSyncRange { - i := &inSyncRange{ - aboveLatestVerifiedCommitment: newAboveLatestVerifiedCommitmentVariable(commitment), - isBelowSyncThreshold: reactive.NewEvent(), - } - - commitment.parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.inSyncRange.isBelowSyncThreshold - }, commitment, (*Chain).SyncThreshold) - }) - - if isRoot { - i.isBelowSyncThreshold.Set(true) - } - - i.Variable = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { - return belowSyncThreshold && aboveLatestVerifiedCommitment - }, i.isBelowSyncThreshold, newAboveLatestVerifiedCommitmentVariable(commitment)) - - return i -} - -type aboveLatestVerifiedCommitmentVariable struct { - reactive.Variable[bool] - - parentVerified reactive.Event - - parentAboveLatestVerifiedCommitment reactive.Variable[bool] - - directlyAboveLatestVerifiedCommitment reactive.Variable[bool] -} - -func newAboveLatestVerifiedCommitmentVariable(commitment *Commitment) *aboveLatestVerifiedCommitmentVariable { - a := &aboveLatestVerifiedCommitmentVariable{ - parentVerified: reactive.NewEvent(), - parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - } - - a.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { - return parentVerified && !verified - }, a.parentVerified, commitment.verified) - - a.Variable = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { - return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment - }, a.directlyAboveLatestVerifiedCommitment, a.parentAboveLatestVerifiedCommitment) - - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { - a.parentVerified.InheritFrom(parent.verified) - a.parentAboveLatestVerifiedCommitment.InheritFrom(parent.inSyncRange.aboveLatestVerifiedCommitment) - }) - - return a -} diff --git a/pkg/protocol/chainmanagerv1/protocol.go b/pkg/protocol/chainmanagerv1/protocol.go deleted file mode 100644 index 90f69fe0d..000000000 --- a/pkg/protocol/chainmanagerv1/protocol.go +++ /dev/null @@ -1,18 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/runtime/workerpool" - -type Protocol struct { - *EngineManager - *ChainManager -} - -func NewProtocol(workers *workerpool.Group, errorHandler func(error), dir string, dbVersion byte, params *ProtocolParameters) *Protocol { - p := &Protocol{} - - p.EngineManager = NewEngineManager(p, workers.CreateGroup("EngineManager"), errorHandler, dir, dbVersion, params) - - p.ChainManager = NewChainManager(p.EngineManager.MainInstance()) - - return p -} diff --git a/pkg/protocol/chainmanagerv1/protocol_parameters.go b/pkg/protocol/chainmanagerv1/protocol_parameters.go deleted file mode 100644 index 082cf9fe1..000000000 --- a/pkg/protocol/chainmanagerv1/protocol_parameters.go +++ /dev/null @@ -1,46 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" - "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" - "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" - "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" - "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" - "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" - "github.com/iotaledger/iota-core/pkg/retainer" - "github.com/iotaledger/iota-core/pkg/storage" -) - -type ProtocolParameters struct { - storageOptions []options.Option[storage.Storage] - engineOptions []options.Option[engine.Engine] - - filterProvider module.Provider[*engine.Engine, filter.Filter] - commitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] - blockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] - bookerProvider module.Provider[*engine.Engine, booker.Booker] - clockProvider module.Provider[*engine.Engine, clock.Clock] - blockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] - slotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] - sybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] - notarizationProvider module.Provider[*engine.Engine, notarization.Notarization] - attestationProvider module.Provider[*engine.Engine, attestation.Attestations] - ledgerProvider module.Provider[*engine.Engine, ledger.Ledger] - schedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] - tipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] - tipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] - retainerProvider module.Provider[*engine.Engine, retainer.Retainer] - upgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] -} diff --git a/pkg/protocol/chainmanagerv1/request_attestations.go b/pkg/protocol/chainmanagerv1/request_attestations.go deleted file mode 100644 index 5fd87a1d6..000000000 --- a/pkg/protocol/chainmanagerv1/request_attestations.go +++ /dev/null @@ -1,43 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/ds/reactive" - -type requestAttestations struct { - reactive.Variable[bool] - - parentAttested reactive.Event - - isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] -} - -func newRequestAttestations(commitment *Commitment) *requestAttestations { - c := &requestAttestations{ - Variable: reactive.NewVariable[bool](), - parentAttested: reactive.NewEvent(), - } - - c.isDirectlyAboveLatestAttestedCommitment = reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { - return parentAttested && !attested - }, c.parentAttested, commitment.attested) - - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { c.parentAttested.InheritFrom(parent.attested) }) - - var attestationRequestedByChain reactive.DerivedVariable[bool] - - commitment.chain.OnUpdate(func(_, newChain *Chain) { - // cleanup the old chain specific derived variable if it exists - if attestationRequestedByChain != nil { - attestationRequestedByChain.Unsubscribe() - } - - // create a chain specific derived variable - attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { - return requestAttestations && isDirectlyAboveLatestAttestedCommitment - }, newChain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) - - // expose the chain specific derived variable to the commitment property - c.InheritFrom(attestationRequestedByChain) - }) - - return c -} diff --git a/pkg/protocol/chainmanagerv1/request_blocks.go b/pkg/protocol/chainmanagerv1/request_blocks.go deleted file mode 100644 index 2d68a3245..000000000 --- a/pkg/protocol/chainmanagerv1/request_blocks.go +++ /dev/null @@ -1,31 +0,0 @@ -package chainmanagerv1 - -import "github.com/iotaledger/hive.go/ds/reactive" - -type requestBlocks struct { - reactive.Variable[bool] - - isBelowWarpSyncThreshold reactive.Event -} - -func newRequestBlocks(commitment *Commitment, isRoot bool) *requestBlocks { - r := &requestBlocks{ - isBelowWarpSyncThreshold: reactive.NewEvent(), - } - - if isRoot { - r.isBelowWarpSyncThreshold.Set(true) - } - - r.Variable = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { - return inSyncWindow && belowWarpSyncThreshold - }, commitment.inSyncRange, r.isBelowWarpSyncThreshold) - - commitment.parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.requestBlocks.isBelowWarpSyncThreshold - }, commitment, (*Chain).WarpSyncThreshold) - }) - - return r -} diff --git a/pkg/protocol/chainmanagerv1/utils.go b/pkg/protocol/chainmanagerv1/utils.go deleted file mode 100644 index b1ee12546..000000000 --- a/pkg/protocol/chainmanagerv1/utils.go +++ /dev/null @@ -1,30 +0,0 @@ -package chainmanagerv1 - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - iotago "github.com/iotaledger/iota.go/v4" -) - -// noPanicIfNil prevents a panic of the getter when the receiver is nil by returning the zero value of the return type. -func noPanicIfNil[ReceiverType, ReturnType any](getter func(*ReceiverType) ReturnType) func(*ReceiverType) ReturnType { - return func(receiver *ReceiverType) (zeroValue ReturnType) { - if receiver == nil { - return zeroValue - } - - return getter(receiver) - } -} - -// triggerEventIfCommitmentBelowThreshold triggers the given event if the given commitment is below the given threshold. -func triggerEventIfCommitmentBelowThreshold(event func(*Commitment) reactive.Event, commitment *Commitment, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { - // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) - event(commitment.parent.Get()).OnTrigger(func() { - // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met - chainThreshold(commitment.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { - event(commitment).Trigger() - }, func(_, slotIndex iotago.SlotIndex) bool { - return commitment.Index() < slotIndex - }) - }) -} From 3936f00012781100e035c652f626f4334718e97d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 2 Sep 2023 01:59:16 +0200 Subject: [PATCH 081/356] Refactor: removed old protocol - lets rewire it --- .../{protocol => }/attestations_requester.go | 0 pkg/protocol/{protocol => }/chain.go | 0 pkg/protocol/{protocol => }/chain_manager.go | 0 .../{protocol => }/chain_manager_test.go | 0 .../{protocol => }/chain_switching.go | 0 pkg/protocol/{protocol => }/commitment.go | 0 pkg/protocol/{protocol => }/constants.go | 0 pkg/protocol/{protocol => }/engine_manager.go | 0 .../{protocol => }/engine_variable.go | 0 pkg/protocol/{protocol => }/in_sync_range.go | 0 pkg/protocol/protocol.go | 296 +++------------- pkg/protocol/protocol/protocol.go | 95 ------ .../{protocol => }/protocol_parameters.go | 0 .../{protocol => }/request_attestations.go | 0 pkg/protocol/{protocol => }/request_blocks.go | 0 pkg/protocol/{protocol => }/utils.go | 0 .../block_dispatcher.go | 0 .../candidate_engine.go | 0 .../commitment_verifier.go | 0 pkg/{protocol => protocol_legacy}/events.go | 0 pkg/{protocol => protocol_legacy}/options.go | 0 pkg/protocol_legacy/protocol.go | 315 ++++++++++++++++++ .../protocol_fork.go | 0 .../protocol_network.go | 0 .../versioning.go | 0 25 files changed, 353 insertions(+), 353 deletions(-) rename pkg/protocol/{protocol => }/attestations_requester.go (100%) rename pkg/protocol/{protocol => }/chain.go (100%) rename pkg/protocol/{protocol => }/chain_manager.go (100%) rename pkg/protocol/{protocol => }/chain_manager_test.go (100%) rename pkg/protocol/{protocol => }/chain_switching.go (100%) rename pkg/protocol/{protocol => }/commitment.go (100%) rename pkg/protocol/{protocol => }/constants.go (100%) rename pkg/protocol/{protocol => }/engine_manager.go (100%) rename pkg/protocol/{protocol => }/engine_variable.go (100%) rename pkg/protocol/{protocol => }/in_sync_range.go (100%) delete mode 100644 pkg/protocol/protocol/protocol.go rename pkg/protocol/{protocol => }/protocol_parameters.go (100%) rename pkg/protocol/{protocol => }/request_attestations.go (100%) rename pkg/protocol/{protocol => }/request_blocks.go (100%) rename pkg/protocol/{protocol => }/utils.go (100%) rename pkg/{protocol => protocol_legacy}/block_dispatcher.go (100%) rename pkg/{protocol => protocol_legacy}/candidate_engine.go (100%) rename pkg/{protocol/protocol => protocol_legacy}/commitment_verifier.go (100%) rename pkg/{protocol => protocol_legacy}/events.go (100%) rename pkg/{protocol => protocol_legacy}/options.go (100%) create mode 100644 pkg/protocol_legacy/protocol.go rename pkg/{protocol => protocol_legacy}/protocol_fork.go (100%) rename pkg/{protocol => protocol_legacy}/protocol_network.go (100%) rename pkg/{protocol => protocol_legacy}/versioning.go (100%) diff --git a/pkg/protocol/protocol/attestations_requester.go b/pkg/protocol/attestations_requester.go similarity index 100% rename from pkg/protocol/protocol/attestations_requester.go rename to pkg/protocol/attestations_requester.go diff --git a/pkg/protocol/protocol/chain.go b/pkg/protocol/chain.go similarity index 100% rename from pkg/protocol/protocol/chain.go rename to pkg/protocol/chain.go diff --git a/pkg/protocol/protocol/chain_manager.go b/pkg/protocol/chain_manager.go similarity index 100% rename from pkg/protocol/protocol/chain_manager.go rename to pkg/protocol/chain_manager.go diff --git a/pkg/protocol/protocol/chain_manager_test.go b/pkg/protocol/chain_manager_test.go similarity index 100% rename from pkg/protocol/protocol/chain_manager_test.go rename to pkg/protocol/chain_manager_test.go diff --git a/pkg/protocol/protocol/chain_switching.go b/pkg/protocol/chain_switching.go similarity index 100% rename from pkg/protocol/protocol/chain_switching.go rename to pkg/protocol/chain_switching.go diff --git a/pkg/protocol/protocol/commitment.go b/pkg/protocol/commitment.go similarity index 100% rename from pkg/protocol/protocol/commitment.go rename to pkg/protocol/commitment.go diff --git a/pkg/protocol/protocol/constants.go b/pkg/protocol/constants.go similarity index 100% rename from pkg/protocol/protocol/constants.go rename to pkg/protocol/constants.go diff --git a/pkg/protocol/protocol/engine_manager.go b/pkg/protocol/engine_manager.go similarity index 100% rename from pkg/protocol/protocol/engine_manager.go rename to pkg/protocol/engine_manager.go diff --git a/pkg/protocol/protocol/engine_variable.go b/pkg/protocol/engine_variable.go similarity index 100% rename from pkg/protocol/protocol/engine_variable.go rename to pkg/protocol/engine_variable.go diff --git a/pkg/protocol/protocol/in_sync_range.go b/pkg/protocol/in_sync_range.go similarity index 100% rename from pkg/protocol/protocol/in_sync_range.go rename to pkg/protocol/in_sync_range.go diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 3dd88c2d6..3b1038fe9 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -1,78 +1,38 @@ package protocol import ( - "context" "fmt" - "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/hive.go/runtime/syncutils" "github.com/iotaledger/hive.go/runtime/workerpool" - "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" - "github.com/iotaledger/iota-core/pkg/network/protocols/core" + "github.com/iotaledger/iota-core/pkg/protocol" "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" - "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation/slotattestation" "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag/inmemoryblockdag" "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" - "github.com/iotaledger/iota-core/pkg/protocol/engine/booker/inmemorybooker" "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" - "github.com/iotaledger/iota-core/pkg/protocol/engine/clock/blocktime" "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter/accountsfilter" "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" - "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler/drr" "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget" "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget" "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/filter/blockfilter" "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" - ledger1 "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger/ledger" "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization/slotnotarization" "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" - tipmanagerv1 "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager/v1" "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" - tipselectionv1 "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection/v1" "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" - "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade/signalingupgradeorchestrator" - "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" "github.com/iotaledger/iota-core/pkg/protocol/syncmanager" - "github.com/iotaledger/iota-core/pkg/protocol/syncmanager/trivialsyncmanager" "github.com/iotaledger/iota-core/pkg/retainer" - retainer1 "github.com/iotaledger/iota-core/pkg/retainer/retainer" "github.com/iotaledger/iota-core/pkg/storage" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/api" ) type Protocol struct { - context context.Context - Events *Events - SyncManager syncmanager.SyncManager - BlockDispatcher *BlockDispatcher - engineManager *enginemanager.EngineManager - ChainManager *chainmanager.Manager - - Workers *workerpool.Group - networkDispatcher network.Endpoint - networkProtocol *core.Protocol - - activeEngineMutex syncutils.RWMutex - mainEngine *engine.Engine - candidateEngine *candidateEngine - - optsBaseDirectory string - optsSnapshotPath string - optsChainSwitchingThreshold int + optsBaseDirectory string + optsSnapshotPath string optsEngineOptions []options.Option[engine.Engine] optsChainManagerOptions []options.Option[chainmanager.Manager] @@ -96,220 +56,40 @@ type Protocol struct { optsSchedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] optsUpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] - module.Module -} - -func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) (protocol *Protocol) { - return options.Apply(&Protocol{ - Events: NewEvents(), - Workers: workers, - networkDispatcher: dispatcher, - optsFilterProvider: blockfilter.NewProvider(), - optsCommitmentFilterProvider: accountsfilter.NewProvider(), - optsBlockDAGProvider: inmemoryblockdag.NewProvider(), - optsTipManagerProvider: tipmanagerv1.NewProvider(), - optsTipSelectionProvider: tipselectionv1.NewProvider(), - optsBookerProvider: inmemorybooker.NewProvider(), - optsClockProvider: blocktime.NewProvider(), - optsBlockGadgetProvider: thresholdblockgadget.NewProvider(), - optsSlotGadgetProvider: totalweightslotgadget.NewProvider(), - optsSybilProtectionProvider: sybilprotectionv1.NewProvider(), - optsNotarizationProvider: slotnotarization.NewProvider(), - optsAttestationProvider: slotattestation.NewProvider(), - optsSyncManagerProvider: trivialsyncmanager.NewProvider(), - optsLedgerProvider: ledger1.NewProvider(), - optsRetainerProvider: retainer1.NewProvider(), - optsSchedulerProvider: drr.NewProvider(), - optsUpgradeOrchestratorProvider: signalingupgradeorchestrator.NewProvider(), - - optsBaseDirectory: "", - optsChainSwitchingThreshold: 3, - }, opts, func(p *Protocol) { - p.BlockDispatcher = NewBlockDispatcher(p) - }, (*Protocol).initEngineManager, (*Protocol).initChainManager, (*Protocol).TriggerConstructed) -} - -// Run runs the protocol. -func (p *Protocol) Run(ctx context.Context) error { - var innerCtxCancel func() - - p.context, innerCtxCancel = context.WithCancel(ctx) - defer innerCtxCancel() - - p.linkToEngine(p.mainEngine) - - rootCommitment := p.mainEngine.EarliestRootCommitment(p.mainEngine.Storage.Settings().LatestFinalizedSlot()) - - // The root commitment is the earliest commitment we will ever need to know to solidify commitment chains, we can - // then initialize the chain manager with it, and identify our engine to be on such chain. - // Upon engine restart, such chain will be loaded with the latest finalized slot, and the chain manager, not needing - // persistent storage, will be able to continue from there. - p.mainEngine.SetChainID(rootCommitment.ID()) - p.ChainManager.Initialize(rootCommitment) - - // Fill the chain manager with all our known commitments so that the chain is solid - for i := rootCommitment.Index(); i <= p.mainEngine.Storage.Settings().LatestCommitment().Index(); i++ { - if cm, err := p.mainEngine.Storage.Commitments().Load(i); err == nil { - p.ChainManager.ProcessCommitment(cm) - } - } - - p.runNetworkProtocol() - - p.TriggerInitialized() - - <-p.context.Done() - - p.TriggerShutdown() - - p.shutdown() - - p.TriggerStopped() - - return p.context.Err() -} - -func (p *Protocol) linkToEngine(engineInstance *engine.Engine) { - if p.SyncManager != nil { - p.SyncManager.Shutdown() - p.SyncManager = nil - } - p.SyncManager = p.optsSyncManagerProvider(engineInstance) - - p.Events.Engine.LinkTo(engineInstance.Events) -} - -func (p *Protocol) shutdown() { - if p.networkProtocol != nil { - p.networkProtocol.Shutdown() - } - - p.ChainManager.Shutdown() - p.Workers.Shutdown() - - p.activeEngineMutex.RLock() - p.mainEngine.Shutdown() - if p.candidateEngine != nil { - p.candidateEngine.engine.Shutdown() - } - p.activeEngineMutex.RUnlock() - - p.SyncManager.Shutdown() -} - -func (p *Protocol) initEngineManager() { - p.engineManager = enginemanager.New( - p.Workers.CreateGroup("EngineManager"), - p.HandleError, - p.optsBaseDirectory, - DatabaseVersion, - p.optsStorageOptions, - p.optsEngineOptions, - p.optsFilterProvider, - p.optsCommitmentFilterProvider, - p.optsBlockDAGProvider, - p.optsBookerProvider, - p.optsClockProvider, - p.optsBlockGadgetProvider, - p.optsSlotGadgetProvider, - p.optsSybilProtectionProvider, - p.optsNotarizationProvider, - p.optsAttestationProvider, - p.optsLedgerProvider, - p.optsSchedulerProvider, - p.optsTipManagerProvider, - p.optsTipSelectionProvider, - p.optsRetainerProvider, - p.optsUpgradeOrchestratorProvider, - ) - - mainEngine, err := p.engineManager.LoadActiveEngine(p.optsSnapshotPath) - if err != nil { - panic(fmt.Sprintf("could not load active engine: %s", err)) - } - p.mainEngine = mainEngine -} - -func (p *Protocol) initChainManager() { - p.ChainManager = chainmanager.NewManager(p.optsChainManagerOptions...) - p.Events.ChainManager.LinkTo(p.ChainManager.Events) - - // This needs to be hooked so that the ChainManager always knows the commitments we issued. - // Else our own BlockIssuer might use a commitment that the ChainManager does not know yet. - p.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { - p.ChainManager.ProcessCommitment(details.Commitment) - }) - - p.Events.Engine.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { - rootCommitment := p.MainEngineInstance().EarliestRootCommitment(index) - - // It is essential that we set the rootCommitment before evicting the chainManager's state, this way - // we first specify the chain's cut-off point, and only then evict the state. It is also important to - // note that no multiple goroutines should be allowed to perform this operation at once, hence the - // hooking worker pool should always have a single worker or these two calls should be protected by a lock. - p.ChainManager.SetRootCommitment(rootCommitment) - - // We want to evict just below the height of our new root commitment (so that the slot of the root commitment - // stays in memory storage and with it the root commitment itself as well). - if rootCommitment.ID().Index() > 0 { - p.ChainManager.EvictUntil(rootCommitment.ID().Index() - 1) - } + *EngineManager + *ChainManager +} + +func NewProtocol(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { + return options.Apply(&Protocol{}, opts, func(p *Protocol) { + p.EngineManager = NewEngineManager( + p, + workers.CreateGroup("EngineManager"), + func(err error) { + fmt.Println(err) + }, + p.optsBaseDirectory, + protocol.DatabaseVersion, + p.optsStorageOptions, + p.optsEngineOptions, + p.optsFilterProvider, + p.optsCommitmentFilterProvider, + p.optsBlockDAGProvider, + p.optsBookerProvider, + p.optsClockProvider, + p.optsBlockGadgetProvider, + p.optsSlotGadgetProvider, + p.optsSybilProtectionProvider, + p.optsNotarizationProvider, + p.optsAttestationProvider, + p.optsLedgerProvider, + p.optsSchedulerProvider, + p.optsTipManagerProvider, + p.optsTipSelectionProvider, + p.optsRetainerProvider, + p.optsUpgradeOrchestratorProvider, + ) + + p.ChainManager = NewChainManager(p.EngineManager.MainInstance()) }) - - wpForking := p.Workers.CreatePool("Protocol.Forking", 1) // Using just 1 worker to avoid contention - p.Events.ChainManager.ForkDetected.Hook(p.onForkDetected, event.WithWorkerPool(wpForking)) -} - -func (p *Protocol) IssueBlock(block *model.Block) error { - return p.BlockDispatcher.Dispatch(block, p.networkDispatcher.LocalPeerID()) -} - -func (p *Protocol) MainEngineInstance() *engine.Engine { - p.activeEngineMutex.RLock() - defer p.activeEngineMutex.RUnlock() - - return p.mainEngine -} - -func (p *Protocol) CandidateEngineInstance() *engine.Engine { - p.activeEngineMutex.RLock() - defer p.activeEngineMutex.RUnlock() - - if p.candidateEngine == nil { - return nil - } - - return p.candidateEngine.engine } - -func (p *Protocol) Network() *core.Protocol { - return p.networkProtocol -} - -func (p *Protocol) LatestAPI() iotago.API { - return p.MainEngineInstance().LatestAPI() -} - -func (p *Protocol) CurrentAPI() iotago.API { - return p.MainEngineInstance().CurrentAPI() -} - -func (p *Protocol) APIForVersion(version iotago.Version) (iotago.API, error) { - return p.MainEngineInstance().APIForVersion(version) -} - -func (p *Protocol) APIForSlot(slot iotago.SlotIndex) iotago.API { - return p.MainEngineInstance().APIForSlot(slot) -} - -func (p *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { - return p.MainEngineInstance().APIForEpoch(epoch) -} - -func (p *Protocol) HandleError(err error) { - if err != nil { - p.Events.Error.Trigger(err) - } -} - -var _ api.Provider = &Protocol{} diff --git a/pkg/protocol/protocol/protocol.go b/pkg/protocol/protocol/protocol.go deleted file mode 100644 index 3b1038fe9..000000000 --- a/pkg/protocol/protocol/protocol.go +++ /dev/null @@ -1,95 +0,0 @@ -package protocol - -import ( - "fmt" - - "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/hive.go/runtime/workerpool" - "github.com/iotaledger/iota-core/pkg/network" - "github.com/iotaledger/iota-core/pkg/protocol" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" - "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" - "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" - "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" - "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" - "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" - "github.com/iotaledger/iota-core/pkg/protocol/syncmanager" - "github.com/iotaledger/iota-core/pkg/retainer" - "github.com/iotaledger/iota-core/pkg/storage" -) - -type Protocol struct { - optsBaseDirectory string - optsSnapshotPath string - - optsEngineOptions []options.Option[engine.Engine] - optsChainManagerOptions []options.Option[chainmanager.Manager] - optsStorageOptions []options.Option[storage.Storage] - - optsFilterProvider module.Provider[*engine.Engine, filter.Filter] - optsCommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] - optsBlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] - optsTipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] - optsTipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] - optsBookerProvider module.Provider[*engine.Engine, booker.Booker] - optsClockProvider module.Provider[*engine.Engine, clock.Clock] - optsBlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] - optsSlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] - optsSybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] - optsNotarizationProvider module.Provider[*engine.Engine, notarization.Notarization] - optsAttestationProvider module.Provider[*engine.Engine, attestation.Attestations] - optsSyncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager] - optsLedgerProvider module.Provider[*engine.Engine, ledger.Ledger] - optsRetainerProvider module.Provider[*engine.Engine, retainer.Retainer] - optsSchedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] - optsUpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] - - *EngineManager - *ChainManager -} - -func NewProtocol(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { - return options.Apply(&Protocol{}, opts, func(p *Protocol) { - p.EngineManager = NewEngineManager( - p, - workers.CreateGroup("EngineManager"), - func(err error) { - fmt.Println(err) - }, - p.optsBaseDirectory, - protocol.DatabaseVersion, - p.optsStorageOptions, - p.optsEngineOptions, - p.optsFilterProvider, - p.optsCommitmentFilterProvider, - p.optsBlockDAGProvider, - p.optsBookerProvider, - p.optsClockProvider, - p.optsBlockGadgetProvider, - p.optsSlotGadgetProvider, - p.optsSybilProtectionProvider, - p.optsNotarizationProvider, - p.optsAttestationProvider, - p.optsLedgerProvider, - p.optsSchedulerProvider, - p.optsTipManagerProvider, - p.optsTipSelectionProvider, - p.optsRetainerProvider, - p.optsUpgradeOrchestratorProvider, - ) - - p.ChainManager = NewChainManager(p.EngineManager.MainInstance()) - }) -} diff --git a/pkg/protocol/protocol/protocol_parameters.go b/pkg/protocol/protocol_parameters.go similarity index 100% rename from pkg/protocol/protocol/protocol_parameters.go rename to pkg/protocol/protocol_parameters.go diff --git a/pkg/protocol/protocol/request_attestations.go b/pkg/protocol/request_attestations.go similarity index 100% rename from pkg/protocol/protocol/request_attestations.go rename to pkg/protocol/request_attestations.go diff --git a/pkg/protocol/protocol/request_blocks.go b/pkg/protocol/request_blocks.go similarity index 100% rename from pkg/protocol/protocol/request_blocks.go rename to pkg/protocol/request_blocks.go diff --git a/pkg/protocol/protocol/utils.go b/pkg/protocol/utils.go similarity index 100% rename from pkg/protocol/protocol/utils.go rename to pkg/protocol/utils.go diff --git a/pkg/protocol/block_dispatcher.go b/pkg/protocol_legacy/block_dispatcher.go similarity index 100% rename from pkg/protocol/block_dispatcher.go rename to pkg/protocol_legacy/block_dispatcher.go diff --git a/pkg/protocol/candidate_engine.go b/pkg/protocol_legacy/candidate_engine.go similarity index 100% rename from pkg/protocol/candidate_engine.go rename to pkg/protocol_legacy/candidate_engine.go diff --git a/pkg/protocol/protocol/commitment_verifier.go b/pkg/protocol_legacy/commitment_verifier.go similarity index 100% rename from pkg/protocol/protocol/commitment_verifier.go rename to pkg/protocol_legacy/commitment_verifier.go diff --git a/pkg/protocol/events.go b/pkg/protocol_legacy/events.go similarity index 100% rename from pkg/protocol/events.go rename to pkg/protocol_legacy/events.go diff --git a/pkg/protocol/options.go b/pkg/protocol_legacy/options.go similarity index 100% rename from pkg/protocol/options.go rename to pkg/protocol_legacy/options.go diff --git a/pkg/protocol_legacy/protocol.go b/pkg/protocol_legacy/protocol.go new file mode 100644 index 000000000..3dd88c2d6 --- /dev/null +++ b/pkg/protocol_legacy/protocol.go @@ -0,0 +1,315 @@ +package protocol + +import ( + "context" + "fmt" + + "github.com/iotaledger/hive.go/runtime/event" + "github.com/iotaledger/hive.go/runtime/module" + "github.com/iotaledger/hive.go/runtime/options" + "github.com/iotaledger/hive.go/runtime/syncutils" + "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/network" + "github.com/iotaledger/iota-core/pkg/network/protocols/core" + "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" + "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation/slotattestation" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag/inmemoryblockdag" + "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" + "github.com/iotaledger/iota-core/pkg/protocol/engine/booker/inmemorybooker" + "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" + "github.com/iotaledger/iota-core/pkg/protocol/engine/clock/blocktime" + "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter/accountsfilter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" + "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler/drr" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/filter/blockfilter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" + ledger1 "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger/ledger" + "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" + "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization/slotnotarization" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" + tipmanagerv1 "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager/v1" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" + tipselectionv1 "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection/v1" + "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" + "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade/signalingupgradeorchestrator" + "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" + "github.com/iotaledger/iota-core/pkg/protocol/syncmanager" + "github.com/iotaledger/iota-core/pkg/protocol/syncmanager/trivialsyncmanager" + "github.com/iotaledger/iota-core/pkg/retainer" + retainer1 "github.com/iotaledger/iota-core/pkg/retainer/retainer" + "github.com/iotaledger/iota-core/pkg/storage" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/api" +) + +type Protocol struct { + context context.Context + Events *Events + SyncManager syncmanager.SyncManager + BlockDispatcher *BlockDispatcher + engineManager *enginemanager.EngineManager + ChainManager *chainmanager.Manager + + Workers *workerpool.Group + networkDispatcher network.Endpoint + networkProtocol *core.Protocol + + activeEngineMutex syncutils.RWMutex + mainEngine *engine.Engine + candidateEngine *candidateEngine + + optsBaseDirectory string + optsSnapshotPath string + optsChainSwitchingThreshold int + + optsEngineOptions []options.Option[engine.Engine] + optsChainManagerOptions []options.Option[chainmanager.Manager] + optsStorageOptions []options.Option[storage.Storage] + + optsFilterProvider module.Provider[*engine.Engine, filter.Filter] + optsCommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] + optsBlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] + optsTipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] + optsTipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] + optsBookerProvider module.Provider[*engine.Engine, booker.Booker] + optsClockProvider module.Provider[*engine.Engine, clock.Clock] + optsBlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] + optsSlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] + optsSybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] + optsNotarizationProvider module.Provider[*engine.Engine, notarization.Notarization] + optsAttestationProvider module.Provider[*engine.Engine, attestation.Attestations] + optsSyncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager] + optsLedgerProvider module.Provider[*engine.Engine, ledger.Ledger] + optsRetainerProvider module.Provider[*engine.Engine, retainer.Retainer] + optsSchedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] + optsUpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] + + module.Module +} + +func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) (protocol *Protocol) { + return options.Apply(&Protocol{ + Events: NewEvents(), + Workers: workers, + networkDispatcher: dispatcher, + optsFilterProvider: blockfilter.NewProvider(), + optsCommitmentFilterProvider: accountsfilter.NewProvider(), + optsBlockDAGProvider: inmemoryblockdag.NewProvider(), + optsTipManagerProvider: tipmanagerv1.NewProvider(), + optsTipSelectionProvider: tipselectionv1.NewProvider(), + optsBookerProvider: inmemorybooker.NewProvider(), + optsClockProvider: blocktime.NewProvider(), + optsBlockGadgetProvider: thresholdblockgadget.NewProvider(), + optsSlotGadgetProvider: totalweightslotgadget.NewProvider(), + optsSybilProtectionProvider: sybilprotectionv1.NewProvider(), + optsNotarizationProvider: slotnotarization.NewProvider(), + optsAttestationProvider: slotattestation.NewProvider(), + optsSyncManagerProvider: trivialsyncmanager.NewProvider(), + optsLedgerProvider: ledger1.NewProvider(), + optsRetainerProvider: retainer1.NewProvider(), + optsSchedulerProvider: drr.NewProvider(), + optsUpgradeOrchestratorProvider: signalingupgradeorchestrator.NewProvider(), + + optsBaseDirectory: "", + optsChainSwitchingThreshold: 3, + }, opts, func(p *Protocol) { + p.BlockDispatcher = NewBlockDispatcher(p) + }, (*Protocol).initEngineManager, (*Protocol).initChainManager, (*Protocol).TriggerConstructed) +} + +// Run runs the protocol. +func (p *Protocol) Run(ctx context.Context) error { + var innerCtxCancel func() + + p.context, innerCtxCancel = context.WithCancel(ctx) + defer innerCtxCancel() + + p.linkToEngine(p.mainEngine) + + rootCommitment := p.mainEngine.EarliestRootCommitment(p.mainEngine.Storage.Settings().LatestFinalizedSlot()) + + // The root commitment is the earliest commitment we will ever need to know to solidify commitment chains, we can + // then initialize the chain manager with it, and identify our engine to be on such chain. + // Upon engine restart, such chain will be loaded with the latest finalized slot, and the chain manager, not needing + // persistent storage, will be able to continue from there. + p.mainEngine.SetChainID(rootCommitment.ID()) + p.ChainManager.Initialize(rootCommitment) + + // Fill the chain manager with all our known commitments so that the chain is solid + for i := rootCommitment.Index(); i <= p.mainEngine.Storage.Settings().LatestCommitment().Index(); i++ { + if cm, err := p.mainEngine.Storage.Commitments().Load(i); err == nil { + p.ChainManager.ProcessCommitment(cm) + } + } + + p.runNetworkProtocol() + + p.TriggerInitialized() + + <-p.context.Done() + + p.TriggerShutdown() + + p.shutdown() + + p.TriggerStopped() + + return p.context.Err() +} + +func (p *Protocol) linkToEngine(engineInstance *engine.Engine) { + if p.SyncManager != nil { + p.SyncManager.Shutdown() + p.SyncManager = nil + } + p.SyncManager = p.optsSyncManagerProvider(engineInstance) + + p.Events.Engine.LinkTo(engineInstance.Events) +} + +func (p *Protocol) shutdown() { + if p.networkProtocol != nil { + p.networkProtocol.Shutdown() + } + + p.ChainManager.Shutdown() + p.Workers.Shutdown() + + p.activeEngineMutex.RLock() + p.mainEngine.Shutdown() + if p.candidateEngine != nil { + p.candidateEngine.engine.Shutdown() + } + p.activeEngineMutex.RUnlock() + + p.SyncManager.Shutdown() +} + +func (p *Protocol) initEngineManager() { + p.engineManager = enginemanager.New( + p.Workers.CreateGroup("EngineManager"), + p.HandleError, + p.optsBaseDirectory, + DatabaseVersion, + p.optsStorageOptions, + p.optsEngineOptions, + p.optsFilterProvider, + p.optsCommitmentFilterProvider, + p.optsBlockDAGProvider, + p.optsBookerProvider, + p.optsClockProvider, + p.optsBlockGadgetProvider, + p.optsSlotGadgetProvider, + p.optsSybilProtectionProvider, + p.optsNotarizationProvider, + p.optsAttestationProvider, + p.optsLedgerProvider, + p.optsSchedulerProvider, + p.optsTipManagerProvider, + p.optsTipSelectionProvider, + p.optsRetainerProvider, + p.optsUpgradeOrchestratorProvider, + ) + + mainEngine, err := p.engineManager.LoadActiveEngine(p.optsSnapshotPath) + if err != nil { + panic(fmt.Sprintf("could not load active engine: %s", err)) + } + p.mainEngine = mainEngine +} + +func (p *Protocol) initChainManager() { + p.ChainManager = chainmanager.NewManager(p.optsChainManagerOptions...) + p.Events.ChainManager.LinkTo(p.ChainManager.Events) + + // This needs to be hooked so that the ChainManager always knows the commitments we issued. + // Else our own BlockIssuer might use a commitment that the ChainManager does not know yet. + p.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + p.ChainManager.ProcessCommitment(details.Commitment) + }) + + p.Events.Engine.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { + rootCommitment := p.MainEngineInstance().EarliestRootCommitment(index) + + // It is essential that we set the rootCommitment before evicting the chainManager's state, this way + // we first specify the chain's cut-off point, and only then evict the state. It is also important to + // note that no multiple goroutines should be allowed to perform this operation at once, hence the + // hooking worker pool should always have a single worker or these two calls should be protected by a lock. + p.ChainManager.SetRootCommitment(rootCommitment) + + // We want to evict just below the height of our new root commitment (so that the slot of the root commitment + // stays in memory storage and with it the root commitment itself as well). + if rootCommitment.ID().Index() > 0 { + p.ChainManager.EvictUntil(rootCommitment.ID().Index() - 1) + } + }) + + wpForking := p.Workers.CreatePool("Protocol.Forking", 1) // Using just 1 worker to avoid contention + p.Events.ChainManager.ForkDetected.Hook(p.onForkDetected, event.WithWorkerPool(wpForking)) +} + +func (p *Protocol) IssueBlock(block *model.Block) error { + return p.BlockDispatcher.Dispatch(block, p.networkDispatcher.LocalPeerID()) +} + +func (p *Protocol) MainEngineInstance() *engine.Engine { + p.activeEngineMutex.RLock() + defer p.activeEngineMutex.RUnlock() + + return p.mainEngine +} + +func (p *Protocol) CandidateEngineInstance() *engine.Engine { + p.activeEngineMutex.RLock() + defer p.activeEngineMutex.RUnlock() + + if p.candidateEngine == nil { + return nil + } + + return p.candidateEngine.engine +} + +func (p *Protocol) Network() *core.Protocol { + return p.networkProtocol +} + +func (p *Protocol) LatestAPI() iotago.API { + return p.MainEngineInstance().LatestAPI() +} + +func (p *Protocol) CurrentAPI() iotago.API { + return p.MainEngineInstance().CurrentAPI() +} + +func (p *Protocol) APIForVersion(version iotago.Version) (iotago.API, error) { + return p.MainEngineInstance().APIForVersion(version) +} + +func (p *Protocol) APIForSlot(slot iotago.SlotIndex) iotago.API { + return p.MainEngineInstance().APIForSlot(slot) +} + +func (p *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { + return p.MainEngineInstance().APIForEpoch(epoch) +} + +func (p *Protocol) HandleError(err error) { + if err != nil { + p.Events.Error.Trigger(err) + } +} + +var _ api.Provider = &Protocol{} diff --git a/pkg/protocol/protocol_fork.go b/pkg/protocol_legacy/protocol_fork.go similarity index 100% rename from pkg/protocol/protocol_fork.go rename to pkg/protocol_legacy/protocol_fork.go diff --git a/pkg/protocol/protocol_network.go b/pkg/protocol_legacy/protocol_network.go similarity index 100% rename from pkg/protocol/protocol_network.go rename to pkg/protocol_legacy/protocol_network.go diff --git a/pkg/protocol/versioning.go b/pkg/protocol_legacy/versioning.go similarity index 100% rename from pkg/protocol/versioning.go rename to pkg/protocol_legacy/versioning.go From c4211624236d68358abcf18e5e6b33f617ee8416 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 09:56:34 +0200 Subject: [PATCH 082/356] Feat: started integrating protocol --- components/dashboard/component.go | 16 +- components/dashboard/explorer_routes.go | 24 +- components/dashboard/jsonresponse.go | 10 +- components/dashboard/livefeed.go | 2 +- components/dashboard/slotfeed.go | 2 +- components/dashboard/tip.go | 2 +- components/dashboard/visualizer.go | 16 +- components/dashboard/ws.go | 2 +- components/dashboard_metrics/component.go | 10 +- components/dashboard_metrics/node.go | 6 +- components/debugapi/blocks.go | 2 +- components/debugapi/commitment.go | 16 +- components/debugapi/component.go | 12 +- components/debugapi/node.go | 4 +- components/debugapi/transactions.go | 2 +- components/inx/server_blocks.go | 14 +- components/inx/server_commitments.go | 2 +- components/inx/server_node.go | 2 +- components/inx/server_utxo.go | 12 +- components/metrics/metrics_accounts.go | 18 +- components/metrics/metrics_commitments.go | 18 +- components/metrics/metrics_conflicts.go | 10 +- components/metrics/metrics_db.go | 4 +- components/metrics/metrics_info.go | 2 +- components/metrics/metrics_scheduler.go | 52 ++-- components/metrics/metrics_slots.go | 32 +-- components/metrics/metrics_tangle.go | 10 +- components/metricstracker/component.go | 34 ++- components/protocol/component.go | 194 +++++++-------- components/restapi/core/accounts.go | 38 +-- components/restapi/core/blocks.go | 14 +- components/restapi/core/commitment.go | 4 +- components/restapi/core/component.go | 6 +- components/restapi/core/node.go | 4 +- components/restapi/core/transaction.go | 4 +- components/restapi/core/utxo.go | 10 +- components/restapi/routes.go | 2 +- components/validator/component.go | 6 +- components/validator/issuer.go | 8 +- pkg/blockfactory/blockissuer.go | 36 +-- pkg/protocol/attestations_requester.go | 6 +- pkg/protocol/chain.go | 42 +++- pkg/protocol/chain_switching.go | 2 +- pkg/protocol/{chain_manager.go => chains.go} | 34 ++- .../{chain_manager_test.go => chains_test.go} | 6 +- pkg/protocol/commitment.go | 166 ++++++++++++- .../engine/consensus/blockgadget/gadget.go | 10 + .../thresholdblockgadget/gadget.go | 47 +++- .../engine/consensus/slotgadget/slotgadget.go | 6 + .../totalweightslotgadget/gadget.go | 19 +- pkg/protocol/engine/engine.go | 4 + pkg/protocol/engine_manager.go | 99 -------- pkg/protocol/engine_variable.go | 44 ---- pkg/protocol/engines.go | 65 +++++ pkg/protocol/in_sync_range.go | 65 ----- pkg/protocol/network.go | 49 ++++ pkg/protocol/options.go | 222 ++++++++++++++++++ pkg/protocol/protocol.go | 109 +++------ pkg/protocol/protocol_parameters.go | 46 ---- pkg/protocol/request_attestations.go | 43 ---- pkg/protocol/request_blocks.go | 31 --- pkg/storage/permanent/settings.go | 2 +- pkg/testsuite/chainmanager.go | 7 +- pkg/testsuite/storage_settings.go | 37 ++- 64 files changed, 1028 insertions(+), 795 deletions(-) rename pkg/protocol/{chain_manager.go => chains.go} (71%) rename pkg/protocol/{chain_manager_test.go => chains_test.go} (93%) delete mode 100644 pkg/protocol/engine_manager.go delete mode 100644 pkg/protocol/engine_variable.go create mode 100644 pkg/protocol/engines.go delete mode 100644 pkg/protocol/in_sync_range.go create mode 100644 pkg/protocol/network.go create mode 100644 pkg/protocol/options.go delete mode 100644 pkg/protocol/protocol_parameters.go delete mode 100644 pkg/protocol/request_attestations.go delete mode 100644 pkg/protocol/request_blocks.go diff --git a/components/dashboard/component.go b/components/dashboard/component.go index 16ecba80b..8741252c0 100644 --- a/components/dashboard/component.go +++ b/components/dashboard/component.go @@ -153,16 +153,16 @@ func currentNodeStatus() *nodestatus { LastPauseGC: m.PauseNs[(m.NumGC+255)%256], } // get TangleTime - cl := deps.Protocol.MainEngineInstance().Clock - syncStatus := deps.Protocol.SyncManager.SyncStatus() + cl := deps.Protocol.MainEngine().Clock + mainEngine := deps.Protocol.MainEngine() status.TangleTime = tangleTime{ - Synced: syncStatus.NodeSynced, - Bootstrapped: deps.Protocol.MainEngineInstance().IsBootstrapped(), - AcceptedBlockSlot: int64(syncStatus.LastAcceptedBlockSlot), - ConfirmedBlockSlot: int64(syncStatus.LastConfirmedBlockSlot), - CommittedSlot: int64(syncStatus.LatestCommitment.Index()), - ConfirmedSlot: int64(syncStatus.LatestFinalizedSlot), + Synced: mainEngine.IsSynced(), + Bootstrapped: mainEngine.IsBootstrapped(), + AcceptedBlockSlot: int64(mainEngine.BlockGadget.LastAcceptedBlockIndex()), + ConfirmedBlockSlot: int64(mainEngine.BlockGadget.LastConfirmedBlockIndex()), + CommittedSlot: int64(mainEngine.LatestCommitment().Index()), + ConfirmedSlot: int64(mainEngine.SlotGadget.LatestFinalizedSlot()), ATT: cl.Accepted().Time().UnixNano(), RATT: cl.Accepted().RelativeTime().UnixNano(), CTT: cl.Confirmed().Time().UnixNano(), diff --git a/components/dashboard/explorer_routes.go b/components/dashboard/explorer_routes.go index 8c16228dd..23e1ed942 100644 --- a/components/dashboard/explorer_routes.go +++ b/components/dashboard/explorer_routes.go @@ -79,14 +79,14 @@ func setupExplorerRoutes(routeGroup *echo.Group) { } func findBlock(blockID iotago.BlockID) (explorerBlk *ExplorerBlock, err error) { - block, exists := deps.Protocol.MainEngineInstance().Block(blockID) + block, exists := deps.Protocol.MainEngine().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.ToHex()) } - cachedBlock, _ := deps.Protocol.MainEngineInstance().BlockCache.Block(blockID) + cachedBlock, _ := deps.Protocol.MainEngine().BlockCache.Block(blockID) - blockMetadata, err := deps.Protocol.MainEngineInstance().Retainer.BlockMetadata(blockID) + blockMetadata, err := deps.Protocol.MainEngine().Retainer.BlockMetadata(blockID) if err != nil { return nil, ierrors.Wrapf(err, "block metadata %s", blockID.ToHex()) } @@ -105,7 +105,7 @@ func createExplorerBlock(block *model.Block, cachedBlock *blocks.Block, metadata var payloadJSON []byte basicBlock, isBasic := block.BasicBlock() if isBasic { - payloadJSON, err = lo.PanicOnErr(deps.Protocol.APIForVersion(iotaBlk.ProtocolVersion)).JSONEncode(basicBlock.Payload) + payloadJSON, err = lo.PanicOnErr(deps.Protocol.MainEngine().APIForVersion(iotaBlk.ProtocolVersion)).JSONEncode(basicBlock.Payload) if err != nil { return nil } @@ -145,7 +145,7 @@ func createExplorerBlock(block *model.Block, cachedBlock *blocks.Block, metadata TransactionID: func() string { if isBasic && basicBlock.Payload != nil && basicBlock.Payload.PayloadType() == iotago.PayloadTransaction { tx, _ := basicBlock.Payload.(*iotago.Transaction) - id, _ := tx.ID(lo.PanicOnErr(deps.Protocol.APIForVersion(iotaBlk.ProtocolVersion))) + id, _ := tx.ID(lo.PanicOnErr(deps.Protocol.MainEngine().APIForVersion(iotaBlk.ProtocolVersion))) return id.ToHex() } @@ -201,12 +201,12 @@ func getTransaction(c echo.Context) error { outputID := iotago.OutputID{} copy(outputID[:], txID[:]) - output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngine().Ledger.Output(outputID) if err != nil { return err } - block, exists := deps.Protocol.MainEngineInstance().Block(output.BlockID()) + block, exists := deps.Protocol.MainEngine().Block(output.BlockID()) if !exists { return ierrors.Errorf("block not found: %s", output.BlockID().ToHex()) } @@ -228,12 +228,12 @@ func getTransactionMetadata(c echo.Context) error { // Get the first output of that transaction (using index 0) outputID := iotago.OutputID{} copy(outputID[:], txID[:]) - txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(txID) + txMetadata, exists := deps.Protocol.MainEngine().Ledger.MemPool().TransactionMetadata(txID) if !exists { return ierrors.Errorf("tx metadata not found: %s", txID.ToHex()) } - conflicts, _ := deps.Protocol.MainEngineInstance().Ledger.ConflictDAG().ConflictingConflicts(txID) + conflicts, _ := deps.Protocol.MainEngine().Ledger.ConflictDAG().ConflictingConflicts(txID) return httpserver.JSONResponse(c, http.StatusOK, NewTransactionMetadata(txMetadata, conflicts)) } @@ -244,7 +244,7 @@ func getOutput(c echo.Context) error { return err } - output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngine().Ledger.Output(outputID) if err != nil { return err } @@ -258,12 +258,12 @@ func getSlotDetailsByID(c echo.Context) error { return err } - commitment, err := deps.Protocol.MainEngineInstance().Storage.Permanent.Commitments().Load(commitmentID.Index()) + commitment, err := deps.Protocol.MainEngine().Storage.Permanent.Commitments().Load(commitmentID.Index()) if err != nil { return err } - diffs, err := deps.Protocol.MainEngineInstance().Ledger.SlotDiffs(commitmentID.Index()) + diffs, err := deps.Protocol.MainEngine().Ledger.SlotDiffs(commitmentID.Index()) if err != nil { return err } diff --git a/components/dashboard/jsonresponse.go b/components/dashboard/jsonresponse.go index 08b0a1833..3b4ceba25 100644 --- a/components/dashboard/jsonresponse.go +++ b/components/dashboard/jsonresponse.go @@ -39,7 +39,7 @@ type Output struct { // NewOutput returns an Output from the given ledgerstate.Output. func NewOutput(output iotago.Output) (result *Output) { - outputJSON, err := deps.Protocol.CurrentAPI().JSONEncode(output) + outputJSON, err := deps.Protocol.MainEngine().CurrentAPI().JSONEncode(output) if err != nil { return nil } @@ -52,7 +52,7 @@ func NewOutput(output iotago.Output) (result *Output) { // NewOutput returns an Output from the given ledgerstate.Output. func NewOutputFromLedgerstateOutput(output *utxoledger.Output) (result *Output) { - outputJSON, err := deps.Protocol.APIForSlot(output.SlotCreated()).JSONEncode(output) + outputJSON, err := deps.Protocol.MainEngine().APIForSlot(output.SlotCreated()).JSONEncode(output) if err != nil { return nil } @@ -130,7 +130,7 @@ type Transaction struct { // NewTransaction returns a Transaction from the given ledgerstate.Transaction. func NewTransaction(iotaTx *iotago.Transaction) *Transaction { - txID, err := iotaTx.ID(deps.Protocol.CurrentAPI()) + txID, err := iotaTx.ID(deps.Protocol.MainEngine().CurrentAPI()) if err != nil { return nil } @@ -157,7 +157,7 @@ func NewTransaction(iotaTx *iotago.Transaction) *Transaction { dataPayload := make([]byte, 0) if iotaTx.Essence.Payload != nil { - dataPayload, _ = deps.Protocol.CurrentAPI().Encode(iotaTx.Essence.Payload) + dataPayload, _ = deps.Protocol.MainEngine().CurrentAPI().Encode(iotaTx.Essence.Payload) } return &Transaction{ @@ -216,7 +216,7 @@ func NewUnlockBlock(unlockBlock iotago.Unlock) *UnlockBlock { case *iotago.SignatureUnlock: switch signature := unlock.Signature.(type) { case *iotago.Ed25519Signature: - sigJSON, err := deps.Protocol.CurrentAPI().JSONEncode(signature) + sigJSON, err := deps.Protocol.MainEngine().CurrentAPI().JSONEncode(signature) if err != nil { return nil } diff --git a/components/dashboard/livefeed.go b/components/dashboard/livefeed.go index 2821106a6..9877a1cf5 100644 --- a/components/dashboard/livefeed.go +++ b/components/dashboard/livefeed.go @@ -12,7 +12,7 @@ import ( func runLiveFeed(component *app.Component) { if err := component.Daemon().BackgroundWorker("Dashboard[Livefeed]", func(ctx context.Context) { - hook := deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(b *blocks.Block) { + hook := deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(b *blocks.Block) { payloadType := iotago.PayloadType(0) if basicBlock, isBasicBlock := b.BasicBlock(); isBasicBlock && basicBlock.Payload != nil { payloadType = basicBlock.Payload.PayloadType() diff --git a/components/dashboard/slotfeed.go b/components/dashboard/slotfeed.go index 165840143..23a45ae26 100644 --- a/components/dashboard/slotfeed.go +++ b/components/dashboard/slotfeed.go @@ -17,7 +17,7 @@ type SlotInfo struct { func runSlotsLiveFeed(component *app.Component) { if err := component.Daemon().BackgroundWorker("Dashboard[SlotsLiveFeed]", func(ctx context.Context) { - hook := deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(onSlotCommitted, event.WithWorkerPool(component.WorkerPool)) + hook := deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(onSlotCommitted, event.WithWorkerPool(component.WorkerPool)) <-ctx.Done() diff --git a/components/dashboard/tip.go b/components/dashboard/tip.go index 0b75d9663..6a6b7d0fb 100644 --- a/components/dashboard/tip.go +++ b/components/dashboard/tip.go @@ -17,7 +17,7 @@ func setupTipsRoutes(routeGroup *echo.Group) { } func tips() *TipsResponse { - allTips := append(deps.Protocol.MainEngineInstance().TipManager.StrongTips(), deps.Protocol.MainEngineInstance().TipManager.WeakTips()...) + allTips := append(deps.Protocol.MainEngine().TipManager.StrongTips(), deps.Protocol.MainEngine().TipManager.WeakTips()...) t := make([]string, len(allTips)) for i, tip := range allTips { diff --git a/components/dashboard/visualizer.go b/components/dashboard/visualizer.go index 60f097fb6..e7db90506 100644 --- a/components/dashboard/visualizer.go +++ b/components/dashboard/visualizer.go @@ -42,7 +42,7 @@ type tipinfo struct { // } func sendVertex(blk *blocks.Block, confirmed bool) { - modelBlk, _ := model.BlockFromBlock(blk.ProtocolBlock(), deps.Protocol.APIForSlot(blk.ID().Index())) + modelBlk, _ := model.BlockFromBlock(blk.ProtocolBlock(), deps.Protocol.MainEngine().APIForSlot(blk.ID().Index())) tx, isTx := modelBlk.Transaction() broadcastWsBlock(&wsblk{MsgTypeVertex, &vertex{ @@ -54,8 +54,8 @@ func sendVertex(blk *blocks.Block, confirmed bool) { IsTx: isTx, IsTxAccepted: func() bool { if isTx { - api := lo.PanicOnErr(deps.Protocol.APIForVersion(blk.ProtocolBlock().ProtocolVersion)) - txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(tx.ID(api))) + api := lo.PanicOnErr(deps.Protocol.MainEngine().APIForVersion(blk.ProtocolBlock().ProtocolVersion)) + txMetadata, exists := deps.Protocol.MainEngine().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(tx.ID(api))) if exists { return txMetadata.IsAccepted() } @@ -83,13 +83,13 @@ func sendTipInfo(block *blocks.Block, isTip bool) { func runVisualizer(component *app.Component) { if err := component.Daemon().BackgroundWorker("Dashboard[Visualizer]", func(ctx context.Context) { unhook := lo.Batch( - deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { sendVertex(block, false) tx, hasTx := block.Transaction() if hasTx { - api := lo.PanicOnErr(deps.Protocol.APIForVersion(block.ProtocolBlock().ProtocolVersion)) - txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(tx.ID(api))) + api := lo.PanicOnErr(deps.Protocol.MainEngine().APIForVersion(block.ProtocolBlock().ProtocolVersion)) + txMetadata, exists := deps.Protocol.MainEngine().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(tx.ID(api))) if exists { txMetadata.OnAccepted(func() { sendTxAccepted(block.ID(), true) @@ -100,10 +100,10 @@ func runVisualizer(component *app.Component) { // currentSlot.Store(int64(block.ID().Index())) // } }, event.WithWorkerPool(component.WorkerPool)).Unhook, - deps.Protocol.Events.Engine.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { sendVertex(block, block.IsConfirmed()) }, event.WithWorkerPool(component.WorkerPool)).Unhook, - deps.Protocol.Events.Engine.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { + deps.Protocol.MainEngineEvents.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { tipMetadata.IsStrongTip().OnUpdate(func(_, newValue bool) { sendTipInfo(tipMetadata.Block(), newValue) }) diff --git a/components/dashboard/ws.go b/components/dashboard/ws.go index 251da18e6..582c87a78 100644 --- a/components/dashboard/ws.go +++ b/components/dashboard/ws.go @@ -50,7 +50,7 @@ func runWebSocketStreams(component *app.Component) { broadcastWsBlock(&wsblk{MsgTypeNodeStatus, currentNodeStatus()}) broadcastWsBlock(&wsblk{MsgTypeNeighborMetric, neighborMetrics()}) broadcastWsBlock(&wsblk{MsgTypeTipsMetric, &tipsInfo{ - TotalTips: len(deps.Protocol.MainEngineInstance().TipManager.StrongTips()) + len(deps.Protocol.MainEngineInstance().TipManager.WeakTips()), + TotalTips: len(deps.Protocol.MainEngine().TipManager.StrongTips()) + len(deps.Protocol.MainEngine().TipManager.WeakTips()), }}) case *componentsmetric: broadcastWsBlock(&wsblk{MsgTypeComponentCounterMetric, x}) diff --git a/components/dashboard_metrics/component.go b/components/dashboard_metrics/component.go index a1cf9c27b..6b97d4bcf 100644 --- a/components/dashboard_metrics/component.go +++ b/components/dashboard_metrics/component.go @@ -105,23 +105,23 @@ func run() error { } func configureComponentCountersEvents() { - deps.Protocol.Events.Network.BlockReceived.Hook(func(_ *model.Block, _ identity.ID) { + deps.Protocol.OnBlockReceived(func(_ *model.Block, _ identity.ID) { incComponentCounter(Received) }) - deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(_ *blocks.Block) { + deps.Protocol.Engines.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(_ *blocks.Block) { incComponentCounter(Attached) }) - deps.Protocol.Events.Engine.BlockDAG.BlockSolid.Hook(func(b *blocks.Block) { + deps.Protocol.Engines.MainEngineEvents.BlockDAG.BlockSolid.Hook(func(b *blocks.Block) { incComponentCounter(Solidified) }) - deps.Protocol.Events.Engine.Booker.BlockBooked.Hook(func(b *blocks.Block) { + deps.Protocol.Engines.MainEngineEvents.Booker.BlockBooked.Hook(func(b *blocks.Block) { incComponentCounter(Booked) }) - deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(b *blocks.Block) { + deps.Protocol.Engines.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(b *blocks.Block) { incComponentCounter(Scheduled) }) } diff --git a/components/dashboard_metrics/node.go b/components/dashboard_metrics/node.go index 1eca93fdd..024566212 100644 --- a/components/dashboard_metrics/node.go +++ b/components/dashboard_metrics/node.go @@ -27,9 +27,9 @@ func nodeInfoExtended() *NodeInfoExtended { func databaseSizesMetrics() (*DatabaseSizesMetric, error) { return &DatabaseSizesMetric{ - Prunable: deps.Protocol.MainEngineInstance().Storage.PrunableDatabaseSize(), - Permanent: deps.Protocol.MainEngineInstance().Storage.PermanentDatabaseSize(), - Total: deps.Protocol.MainEngineInstance().Storage.Size(), + Prunable: deps.Protocol.MainEngine().Storage.PrunableDatabaseSize(), + Permanent: deps.Protocol.MainEngine().Storage.PermanentDatabaseSize(), + Total: deps.Protocol.MainEngine().Storage.Size(), Time: time.Now().Unix(), }, nil } diff --git a/components/debugapi/blocks.go b/components/debugapi/blocks.go index 7771df62c..b2deee030 100644 --- a/components/debugapi/blocks.go +++ b/components/debugapi/blocks.go @@ -10,7 +10,7 @@ import ( ) func getSlotBlockIDs(index iotago.SlotIndex) (*BlockChangesResponse, error) { - blocksForSlot := deps.Protocol.MainEngineInstance().Storage.Blocks(index) + blocksForSlot := deps.Protocol.Engines.MainEngine().Storage.Blocks(index) if blocksForSlot == nil { return nil, ierrors.Errorf("cannot find block storage bucket for slot %d", index) } diff --git a/components/debugapi/commitment.go b/components/debugapi/commitment.go index 3a00f278a..a61bfc0c0 100644 --- a/components/debugapi/commitment.go +++ b/components/debugapi/commitment.go @@ -9,11 +9,11 @@ import ( "github.com/iotaledger/hive.go/ds/walker" "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" + "github.com/iotaledger/iota-core/pkg/protocol" ) func chainManagerAllChainsDot() (string, error) { - rootCommitment := deps.Protocol.ChainManager.RootCommitment() + rootCommitment := deps.Protocol.Chains.MainChain().Root() g := graphviz.New() defer g.Close() @@ -32,7 +32,7 @@ func chainManagerAllChainsDot() (string, error) { } func chainManagerAllChainsRendered() ([]byte, error) { - rootCommitment := deps.Protocol.ChainManager.RootCommitment() + rootCommitment := deps.Protocol.Chains.MainChain().Root() g := graphviz.New() defer g.Close() @@ -50,7 +50,7 @@ func chainManagerAllChainsRendered() ([]byte, error) { return buf.Bytes(), nil } -func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *chainmanager.ChainCommitment) (*cgraph.Graph, error) { +func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *protocol.Commitment) (*cgraph.Graph, error) { graph, err := g.Graph() if err != nil { return nil, err @@ -62,20 +62,20 @@ func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *chainmanager.C } root.SetColor("green") - for commitmentWalker := walker.New[*chainmanager.ChainCommitment](false).Push(rootCommitment); commitmentWalker.HasNext(); { + for commitmentWalker := walker.New[*protocol.Commitment](false).Push(rootCommitment); commitmentWalker.HasNext(); { parentCommitment := commitmentWalker.Next() parent, parentErr := createNode(graph, parentCommitment) if parentErr != nil { return nil, parentErr } - for _, childCommitment := range parentCommitment.Children() { + for _, childCommitment := range parentCommitment.Children().ToSlice() { child, childErr := createNode(graph, childCommitment) if childErr != nil { return nil, childErr } - if childCommitment.Chain().ForkingPoint.ID() == deps.Protocol.MainEngineInstance().ChainID() { + if childCommitment.Chain() == deps.Protocol.MainChain() { child.SetColor("green") } @@ -91,7 +91,7 @@ func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *chainmanager.C return graph, nil } -func createNode(graph *cgraph.Graph, commitment *chainmanager.ChainCommitment) (*cgraph.Node, error) { +func createNode(graph *cgraph.Graph, commitment *protocol.Commitment) (*cgraph.Node, error) { node, err := graph.Node(fmt.Sprintf("%d: %s", commitment.ID().Index(), commitment.ID().String()[:8])) if err != nil { return nil, ierrors.Wrapf(err, "could not create node %s", commitment.ID().String()[:8]) diff --git a/components/debugapi/component.go b/components/debugapi/component.go index c72535abd..85f9d892f 100644 --- a/components/debugapi/component.go +++ b/components/debugapi/component.go @@ -85,13 +85,13 @@ func configure() error { routeGroup := deps.RestRouteManager.AddRoute("debug/v2") - deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.Engines.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { blocksPerSlot.Set(block.ID().Index(), append(lo.Return1(blocksPerSlot.GetOrCreate(block.ID().Index(), func() []*blocks.Block { return make([]*blocks.Block, 0) })), block)) }) - deps.Protocol.Events.Engine.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { + deps.Protocol.Engines.MainEngineEvents.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { if index < iotago.SlotIndex(ParamsDebugAPI.PruningThreshold) { return } @@ -99,13 +99,13 @@ func configure() error { blocksPrunableStorage.PruneUntilSlot(index - iotago.SlotIndex(ParamsDebugAPI.PruningThreshold)) }, event.WithWorkerPool(workerpool.NewGroup("DebugAPI").CreatePool("PruneDebugAPI", 1))) - deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(scd *notarization.SlotCommittedDetails) { + deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(scd *notarization.SlotCommittedDetails) { if err := storeTransactionsPerSlot(scd); err != nil { fmt.Printf(">> DebugAPI Error: %s\n", err) } }) - deps.Protocol.Events.Engine.EvictionState.SlotEvicted.Hook(func(index iotago.SlotIndex) { + deps.Protocol.MainEngineEvents.EvictionState.SlotEvicted.Hook(func(index iotago.SlotIndex) { blocksInSlot, exists := blocksPerSlot.Get(index) if !exists { return @@ -134,7 +134,7 @@ func configure() error { return err } - if block, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(blockID); exists && block.ProtocolBlock() != nil { + if block, exists := deps.Protocol.MainEngine().BlockCache.Block(blockID); exists && block.ProtocolBlock() != nil { response := BlockMetadataResponseFromBlock(block) return httpserver.JSONResponse(c, http.StatusOK, response) @@ -157,7 +157,7 @@ func configure() error { return err } - j, err := deps.Protocol.CurrentAPI().JSONEncode(resp) + j, err := deps.Protocol.MainEngine().CurrentAPI().JSONEncode(resp) if err != nil { return err } diff --git a/components/debugapi/node.go b/components/debugapi/node.go index 49afe6433..0e6d513df 100644 --- a/components/debugapi/node.go +++ b/components/debugapi/node.go @@ -8,8 +8,8 @@ import ( //nolint:unparam // we have no error case right now func validatorsSummary() (*ValidatorsSummaryResponse, error) { - seatManager := deps.Protocol.MainEngineInstance().SybilProtection.SeatManager() - latestSlotIndex := deps.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index() + seatManager := deps.Protocol.MainEngine().SybilProtection.SeatManager() + latestSlotIndex := deps.Protocol.MainEngine().Storage.Settings().LatestCommitment().Index() latestCommittee := seatManager.Committee(latestSlotIndex) validatorSeats := []*Validator{} latestCommittee.Accounts().ForEach(func(id iotago.AccountID, pool *account.Pool) bool { diff --git a/components/debugapi/transactions.go b/components/debugapi/transactions.go index d72ce7806..90aa23e14 100644 --- a/components/debugapi/transactions.go +++ b/components/debugapi/transactions.go @@ -17,7 +17,7 @@ func init() { func storeTransactionsPerSlot(scd *notarization.SlotCommittedDetails) error { slot := scd.Commitment.Index() - stateDiff := deps.Protocol.MainEngineInstance().Ledger.MemPool().StateDiff(slot) + stateDiff := deps.Protocol.MainEngine().Ledger.MemPool().StateDiff(slot) mutationsTree := ads.NewSet(mapdb.NewMapDB(), iotago.Identifier.Bytes, iotago.IdentifierFromBytes) tcs := &TransactionsChangesResponse{ Index: slot, diff --git a/components/inx/server_blocks.go b/components/inx/server_blocks.go index 8c2c32bfb..aa25d6158 100644 --- a/components/inx/server_blocks.go +++ b/components/inx/server_blocks.go @@ -19,7 +19,7 @@ import ( func (s *Server) ReadBlock(_ context.Context, blockID *inx.BlockId) (*inx.RawBlock, error) { blkID := blockID.Unwrap() - block, exists := deps.Protocol.MainEngineInstance().Block(blkID) // block +1 + block, exists := deps.Protocol.MainEngine().Block(blkID) // block +1 if !exists { return nil, status.Errorf(codes.NotFound, "block %s not found", blkID.ToHex()) } @@ -30,7 +30,7 @@ func (s *Server) ReadBlock(_ context.Context, blockID *inx.BlockId) (*inx.RawBlo } func (s *Server) ReadBlockMetadata(_ context.Context, blockID *inx.BlockId) (*inx.BlockMetadata, error) { - blockMetadata, err := deps.Protocol.MainEngineInstance().Retainer.BlockMetadata(blockID.Unwrap()) + blockMetadata, err := deps.Protocol.MainEngine().Retainer.BlockMetadata(blockID.Unwrap()) if err != nil { return nil, err } @@ -49,7 +49,7 @@ func (s *Server) ListenToBlocks(_ *inx.NoParams, srv inx.INX_ListenToBlocksServe wp := workerpool.New("ListenToBlocks", workerCount).Start() - unhook := deps.Protocol.Events.Engine.Booker.BlockBooked.Hook(func(block *blocks.Block) { + unhook := deps.Protocol.MainEngineEvents.Booker.BlockBooked.Hook(func(block *blocks.Block) { payload := inx.NewBlockWithBytes(block.ID(), block.ModelBlock().Data()) if err := srv.Send(payload); err != nil { Component.LogErrorf("send error: %v", err) @@ -74,7 +74,7 @@ func (s *Server) ListenToAcceptedBlocks(_ *inx.NoParams, srv inx.INX_ListenToAcc wp := workerpool.New("ListenToAcceptedBlocks", workerCount).Start() - unhook := deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { + unhook := deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { payload := inx.NewBlockWithBytes(block.ID(), block.ModelBlock().Data()) if err := srv.Send(payload); err != nil { Component.LogErrorf("send error: %v", err) @@ -99,7 +99,7 @@ func (s *Server) ListenToConfirmedBlocks(_ *inx.NoParams, srv inx.INX_ListenToCo wp := workerpool.New("ListenToConfirmedBlocks", workerCount).Start() - unhook := deps.Protocol.Events.Engine.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { + unhook := deps.Protocol.MainEngineEvents.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { payload := inx.NewBlockWithBytes(block.ID(), block.ModelBlock().Data()) if err := srv.Send(payload); err != nil { Component.LogErrorf("send error: %v", err) @@ -125,7 +125,7 @@ func (s *Server) SubmitBlock(ctx context.Context, rawBlock *inx.RawBlock) (*inx. return nil, status.Errorf(codes.InvalidArgument, "failed to parse block version: %s", err.Error()) } - apiForVersion, err := deps.Protocol.APIForVersion(version) + apiForVersion, err := deps.Protocol.MainEngine().APIForVersion(version) if err != nil { return nil, status.Errorf(codes.InvalidArgument, "invalid block version: %s", err.Error()) } @@ -139,7 +139,7 @@ func (s *Server) SubmitBlock(ctx context.Context, rawBlock *inx.RawBlock) (*inx. } func (s *Server) SubmitPayload(ctx context.Context, rawPayload *inx.RawPayload) (*inx.BlockId, error) { - payload, err := rawPayload.Unwrap(deps.Protocol.CurrentAPI(), serix.WithValidation()) + payload, err := rawPayload.Unwrap(deps.Protocol.MainEngine().CurrentAPI(), serix.WithValidation()) if err != nil { return nil, err } diff --git a/components/inx/server_commitments.go b/components/inx/server_commitments.go index 9dbfb08c0..62bdfd0f5 100644 --- a/components/inx/server_commitments.go +++ b/components/inx/server_commitments.go @@ -28,7 +28,7 @@ func (s *Server) ReadCommitment(_ context.Context, req *inx.CommitmentRequest) ( commitmentIndex = req.GetCommitmentId().Unwrap().Index() } - commitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(commitmentIndex) + commitment, err := deps.Protocol.MainEngine().Storage.Commitments().Load(commitmentIndex) if err != nil { if ierrors.Is(err, kvstore.ErrKeyNotFound) { return nil, status.Errorf(codes.NotFound, "commitment index %d not found", req.GetCommitmentIndex()) diff --git a/components/inx/server_node.go b/components/inx/server_node.go index 24ec60dcf..2a4e78812 100644 --- a/components/inx/server_node.go +++ b/components/inx/server_node.go @@ -83,7 +83,7 @@ func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_List func (s *Server) ReadNodeConfiguration(context.Context, *inx.NoParams) (*inx.NodeConfiguration, error) { protoParams := make([]*inx.RawProtocolParameters, 0) - provider := deps.Protocol.MainEngineInstance().Storage.Settings().APIProvider() + provider := deps.Protocol.MainEngine().Storage.Settings().APIProvider() for _, version := range provider.ProtocolEpochVersions() { protocolParams := provider.ProtocolParameters(version.Version) if protocolParams == nil { diff --git a/components/inx/server_utxo.go b/components/inx/server_utxo.go index d2b65ee62..1cf747902 100644 --- a/components/inx/server_utxo.go +++ b/components/inx/server_utxo.go @@ -93,7 +93,7 @@ func NewLedgerUpdateBatchOperationConsumed(spent *utxoledger.Spent) (*inx.Ledger } func (s *Server) ReadOutput(_ context.Context, id *inx.OutputId) (*inx.OutputResponse, error) { - engine := deps.Protocol.MainEngineInstance() + engine := deps.Protocol.MainEngine() latestCommitment := engine.Storage.Settings().LatestCommitment() @@ -132,7 +132,7 @@ func (s *Server) ReadOutput(_ context.Context, id *inx.OutputId) (*inx.OutputRes } func (s *Server) ReadUnspentOutputs(_ *inx.NoParams, srv inx.INX_ReadUnspentOutputsServer) error { - engine := deps.Protocol.MainEngineInstance() + engine := deps.Protocol.MainEngine() latestCommitment := engine.Storage.Settings().LatestCommitment() var innerErr error @@ -205,7 +205,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li sendStateDiffsRange := func(startIndex iotago.SlotIndex, endIndex iotago.SlotIndex) error { for currentIndex := startIndex; currentIndex <= endIndex; currentIndex++ { - stateDiff, err := deps.Protocol.MainEngineInstance().Ledger.SlotDiffs(currentIndex) + stateDiff, err := deps.Protocol.MainEngine().Ledger.SlotDiffs(currentIndex) if err != nil { return status.Errorf(codes.NotFound, "ledger update for milestoneIndex %d not found", currentIndex) } @@ -227,7 +227,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li return 0, nil } - latestCommitment := deps.Protocol.SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.MainEngine().LatestCommitment() if startIndex > latestCommitment.Index() { // no need to send previous milestone diffs @@ -235,7 +235,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li } // Stream all available milestone diffs first - pruningIndex := deps.Protocol.SyncManager.LatestFinalizedSlot() + pruningIndex := deps.Protocol.MainEngine().SlotGadget.LatestFinalizedSlot() if startIndex <= pruningIndex { return 0, status.Errorf(codes.InvalidArgument, "given startMilestoneIndex %d is older than the current pruningIndex %d", startIndex, pruningIndex) } @@ -292,7 +292,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li wp := workerpool.New("ListenToLedgerUpdates", workerCount).Start() - unhook := deps.Protocol.Events.Engine.Ledger.StateDiffApplied.Hook(func(index iotago.SlotIndex, newOutputs utxoledger.Outputs, newSpents utxoledger.Spents) { + unhook := deps.Protocol.MainEngineEvents.Ledger.StateDiffApplied.Hook(func(index iotago.SlotIndex, newOutputs utxoledger.Outputs, newSpents utxoledger.Spents) { done, err := handleRangedSend2(index, newOutputs, newSpents, stream, catchUpFunc, sendFunc) switch { case err != nil: diff --git a/components/metrics/metrics_accounts.go b/components/metrics/metrics_accounts.go index 8a6a9adcf..0bd308c3e 100644 --- a/components/metrics/metrics_accounts.go +++ b/components/metrics/metrics_accounts.go @@ -5,6 +5,7 @@ import ( "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/components/metrics/collector" + "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" ) @@ -22,19 +23,22 @@ var AccountMetrics = collector.NewCollection(accountNamespace, collector.WithLabels("account"), collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - accountData, exists, _ := deps.Protocol.MainEngineInstance().Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.SyncManager.LatestCommitment().Index()) - if exists { - deps.Collector.Update(accountNamespace, credits, float64(accountData.Credits.Value), accountData.ID.String()) - } - }, event.WithWorkerPool(Component.WorkerPool)) + deps.Protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { + engine.Events.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { + accountData, exists, _ := engine.Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.Engines.MainEngine().LatestCommitment().Index()) + if exists { + deps.Collector.Update(accountNamespace, credits, float64(accountData.Credits.Value), accountData.ID.String()) + } + }, event.WithWorkerPool(Component.WorkerPool)) + }) + }), )), collector.WithMetric(collector.NewMetric(activeSeats, collector.WithType(collector.Gauge), collector.WithHelp("Seats seen as active by the node."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngineInstance().SybilProtection.SeatManager().OnlineCommittee().Size()), nil + return float64(deps.Protocol.MainEngine().SybilProtection.SeatManager().OnlineCommittee().Size()), nil }), )), ) diff --git a/components/metrics/metrics_commitments.go b/components/metrics/metrics_commitments.go index 01319859d..a94edcf7c 100644 --- a/components/metrics/metrics_commitments.go +++ b/components/metrics/metrics_commitments.go @@ -6,7 +6,7 @@ import ( "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/components/metrics/collector" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" + "github.com/iotaledger/iota-core/pkg/protocol" "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" iotago "github.com/iotaledger/iota.go/v4" ) @@ -29,7 +29,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithLabels("commitment"), collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + deps.Protocol.Engines.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { deps.Collector.Update(commitmentsNamespace, latestCommitment, float64(details.Commitment.ID().Index()), details.Commitment.ID().String()) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -38,7 +38,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Last commitment finalized by the node."), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.SlotGadget.SlotFinalized.Hook(func(slot iotago.SlotIndex) { + deps.Protocol.Engines.MainEngineEvents.SlotGadget.SlotFinalized.Hook(func(slot iotago.SlotIndex) { deps.Collector.Update(commitmentsNamespace, finalizedCommitment, float64(slot)) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -47,9 +47,11 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of forks seen by the node."), collector.WithInitFunc(func() { - deps.Protocol.Events.ChainManager.ForkDetected.Hook(func(_ *chainmanager.Fork) { - deps.Collector.Increment(commitmentsNamespace, forksCount) - }, event.WithWorkerPool(Component.WorkerPool)) + deps.Protocol.OnChainCreated(func(_ *protocol.Chain) { + Component.WorkerPool.Submit(func() { + deps.Collector.Increment(commitmentsNamespace, forksCount) + }) + }) }), )), collector.WithMetric(collector.NewMetric(acceptedBlocks, @@ -59,7 +61,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithResetBeforeCollecting(true), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { deps.Collector.Update(commitmentsNamespace, acceptedBlocks, float64(details.AcceptedBlocks.Size()), strconv.Itoa(int(details.Commitment.Index()))) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -71,7 +73,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithResetBeforeCollecting(true), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { deps.Collector.Update(commitmentsNamespace, validators, float64(details.ActiveValidatorsCount), strconv.Itoa(int(details.Commitment.Index()))) }, event.WithWorkerPool(Component.WorkerPool)) }), diff --git a/components/metrics/metrics_conflicts.go b/components/metrics/metrics_conflicts.go index 54caa7a8c..58833507c 100644 --- a/components/metrics/metrics_conflicts.go +++ b/components/metrics/metrics_conflicts.go @@ -21,10 +21,10 @@ var ConflictMetrics = collector.NewCollection(conflictNamespace, collector.WithType(collector.Counter), collector.WithHelp("Time since transaction issuance to the conflict acceptance"), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(conflictID); exists { + deps.Protocol.MainEngineEvents.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { + if txMetadata, exists := deps.Protocol.MainEngine().Ledger.MemPool().TransactionMetadata(conflictID); exists { firstAttachmentID := txMetadata.EarliestIncludedAttachment() - if block, blockExists := deps.Protocol.MainEngineInstance().BlockFromCache(firstAttachmentID); blockExists { + if block, blockExists := deps.Protocol.MainEngine().BlockFromCache(firstAttachmentID); blockExists { timeSinceIssuance := time.Since(block.IssuingTime()).Milliseconds() timeIssuanceSeconds := float64(timeSinceIssuance) / 1000 deps.Collector.Update(conflictNamespace, resolutionTime, timeIssuanceSeconds) @@ -37,7 +37,7 @@ var ConflictMetrics = collector.NewCollection(conflictNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of resolved (accepted) conflicts"), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { + deps.Protocol.Engines.MainEngineEvents.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { deps.Collector.Increment(conflictNamespace, resolvedConflictCount) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -46,7 +46,7 @@ var ConflictMetrics = collector.NewCollection(conflictNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of created conflicts"), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { + deps.Protocol.Engines.MainEngineEvents.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { deps.Collector.Increment(conflictNamespace, allConflictCounts) }, event.WithWorkerPool(Component.WorkerPool)) }), diff --git a/components/metrics/metrics_db.go b/components/metrics/metrics_db.go index c5147900e..6ed9e5842 100644 --- a/components/metrics/metrics_db.go +++ b/components/metrics/metrics_db.go @@ -17,14 +17,14 @@ var DBMetrics = collector.NewCollection(dbNamespace, collector.WithType(collector.Gauge), collector.WithHelp("DB size in bytes for permanent storage."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngineInstance().Storage.PermanentDatabaseSize()), nil + return float64(deps.Protocol.MainEngine().Storage.PermanentDatabaseSize()), nil }), )), collector.WithMetric(collector.NewMetric(sizeBytesPrunable, collector.WithType(collector.Gauge), collector.WithHelp("DB size in bytes for prunable storage."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngineInstance().Storage.PrunableDatabaseSize()), nil + return float64(deps.Protocol.MainEngine().Storage.PrunableDatabaseSize()), nil }), )), ) diff --git a/components/metrics/metrics_info.go b/components/metrics/metrics_info.go index 7853f23e8..51521503f 100644 --- a/components/metrics/metrics_info.go +++ b/components/metrics/metrics_info.go @@ -36,7 +36,7 @@ var InfoMetrics = collector.NewCollection(infoNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Node sync status based on ATT."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - if deps.Protocol.MainEngineInstance().IsSynced() { + if deps.Protocol.MainEngine().IsSynced() { return 1, nil } diff --git a/components/metrics/metrics_scheduler.go b/components/metrics/metrics_scheduler.go index 5f3e0e9a3..12d74673e 100644 --- a/components/metrics/metrics_scheduler.go +++ b/components/metrics/metrics_scheduler.go @@ -32,23 +32,23 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Current size of each node's queue (in work units)."), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Protocol.MainEngineEvents.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Protocol.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Protocol.Engines.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -60,23 +60,23 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Current size of each node's queue (as block count)."), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Protocol.MainEngineEvents.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Protocol.Engines.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Protocol.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -87,8 +87,8 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Current amount of mana of each issuer in the queue."), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - mana, err := deps.Protocol.MainEngineInstance().Ledger.ManaManager().GetManaOnAccount(block.ProtocolBlock().IssuerID, block.ID().Index()) + deps.Protocol.MainEngineEvents.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { + mana, err := deps.Protocol.MainEngine().Ledger.ManaManager().GetManaOnAccount(block.ProtocolBlock().IssuerID, block.ID().Index()) if err == nil { deps.Collector.Update(schedulerNamespace, manaAmountPerNode, float64(mana), block.ProtocolBlock().IssuerID.String()) } @@ -101,22 +101,22 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithLabels("state"), collector.WithHelp("Number of blocks processed by the scheduler."), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { deps.Collector.Increment(schedulerNamespace, schedulerProcessedBlocks, enqueuedBlockLabel) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { + deps.Protocol.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { deps.Collector.Increment(schedulerNamespace, schedulerProcessedBlocks, droppedBlockLabel) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { deps.Collector.Increment(schedulerNamespace, schedulerProcessedBlocks, skippedBlockLabel) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { deps.Collector.Increment(schedulerNamespace, schedulerProcessedBlocks, scheduledBlockLabel) }, event.WithWorkerPool(Component.WorkerPool)) @@ -126,28 +126,28 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Maximum number of blocks that can be stored in the buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngineInstance().Scheduler.MaxBufferSize()), []string{} + return float64(deps.Protocol.MainEngine().Scheduler.MaxBufferSize()), []string{} }), )), collector.WithMetric(collector.NewMetric(bufferReadyBlockCount, collector.WithType(collector.Gauge), collector.WithHelp("Number of ready blocks in the scheduler buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngineInstance().Scheduler.ReadyBlocksCount()), []string{} + return float64(deps.Protocol.MainEngine().Scheduler.ReadyBlocksCount()), []string{} }), )), collector.WithMetric(collector.NewMetric(bufferTotalSize, collector.WithType(collector.Gauge), collector.WithHelp("Current size of the scheduler buffer (in bytes)."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngineInstance().Scheduler.BufferSize()), []string{} + return float64(deps.Protocol.MainEngine().Scheduler.BufferSize()), []string{} }), )), collector.WithMetric(collector.NewMetric(rate, collector.WithType(collector.Gauge), collector.WithHelp("Current rate of the scheduler."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngineInstance().Scheduler.Rate()), []string{} + return float64(deps.Protocol.MainEngine().Scheduler.Rate()), []string{} }), )), ) diff --git a/components/metrics/metrics_slots.go b/components/metrics/metrics_slots.go index 5a5865544..3d417ca99 100644 --- a/components/metrics/metrics_slots.go +++ b/components/metrics/metrics_slots.go @@ -32,7 +32,7 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Number of blocks seen by the node in a slot."), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { eventSlot := int(block.ID().Index()) deps.Collector.Increment(slotNamespace, totalBlocks, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) @@ -45,7 +45,7 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithLabels(slotLabelName), collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { eventSlot := int(block.ID().Index()) deps.Collector.Increment(slotNamespace, acceptedBlocksInSlot, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) @@ -57,7 +57,7 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Number of invalid blocks in a slot."), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { + deps.Protocol.MainEngineEvents.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { eventSlot := int(block.ID().Index()) deps.Collector.Increment(slotNamespace, invalidBlocks, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) @@ -69,10 +69,10 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Number of accepted attachments by the node per slot."), collector.WithInitFunc(func() { - deps.Protocol.MainEngineInstance().Ledger.OnTransactionAttached(func(transactionMetadata mempool.TransactionMetadata) { + deps.Protocol.MainEngine().Ledger.OnTransactionAttached(func(transactionMetadata mempool.TransactionMetadata) { transactionMetadata.OnAccepted(func() { for _, attachmentBlockID := range transactionMetadata.Attachments() { - if block, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(attachmentBlockID); exists && block.IsAccepted() { + if block, exists := deps.Protocol.MainEngine().BlockCache.Block(attachmentBlockID); exists && block.IsAccepted() { deps.Collector.Increment(slotNamespace, acceptedAttachments, strconv.Itoa(int(attachmentBlockID.Index()))) } } @@ -88,13 +88,13 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithInitFunc(func() { // Attach to BlockAttached to initialize metric for the slot for improved readability in the Dashboard. // Update for a counter doesn't override the value with 0, but rather adds 0 to the value. - deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { eventSlot := int(block.ID().Index()) deps.Collector.Update(slotNamespace, createdConflicts, 0, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { + deps.Protocol.MainEngineEvents.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { + if txMetadata, exists := deps.Protocol.MainEngine().Ledger.TransactionMetadata(conflictID); exists { for _, attachment := range txMetadata.Attachments() { deps.Collector.Increment(slotNamespace, createdConflicts, strconv.Itoa(int(attachment.Index()))) } @@ -110,15 +110,15 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithInitFunc(func() { // Attach to BlockAttached to initialize metric for the slot for improved readability in the Dashboard. // Update for a counter doesn't override the value with 0, but rather adds 0 to the value. - deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { eventSlot := int(block.ID().Index()) deps.Collector.Update(slotNamespace, acceptedConflicts, 0, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { + deps.Protocol.MainEngineEvents.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { + if txMetadata, exists := deps.Protocol.MainEngine().Ledger.TransactionMetadata(conflictID); exists { for _, attachmentBlockID := range txMetadata.Attachments() { - if attachment, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { + if attachment, exists := deps.Protocol.MainEngine().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { deps.Collector.Increment(slotNamespace, acceptedConflicts, strconv.Itoa(int(attachment.ID().Index()))) } } @@ -134,15 +134,15 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithInitFunc(func() { // Attach to BlockAttached to initialize metric for the slot for improved readability in the Dashboard. // Update for a counter doesn't override the value with 0, but rather adds 0 to the value. - deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { eventSlot := int(block.ID().Index()) deps.Collector.Update(slotNamespace, rejectedConflicts, 0, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Events.Engine.ConflictDAG.ConflictRejected.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { + deps.Protocol.MainEngineEvents.ConflictDAG.ConflictRejected.Hook(func(conflictID iotago.TransactionID) { + if txMetadata, exists := deps.Protocol.MainEngine().Ledger.TransactionMetadata(conflictID); exists { for _, attachmentBlockID := range txMetadata.Attachments() { - if attachment, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { + if attachment, exists := deps.Protocol.MainEngine().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { deps.Collector.Increment(slotNamespace, rejectedConflicts, strconv.Itoa(int(attachment.ID().Index()))) } } diff --git a/components/metrics/metrics_tangle.go b/components/metrics/metrics_tangle.go index 44a20ba72..ea992ea99 100644 --- a/components/metrics/metrics_tangle.go +++ b/components/metrics/metrics_tangle.go @@ -21,7 +21,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Number of strong tips in the tangle"), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - count := len(deps.Protocol.MainEngineInstance().TipManager.StrongTips()) + count := len(deps.Protocol.MainEngine().TipManager.StrongTips()) return float64(count), nil }), @@ -30,7 +30,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Number of weak tips in the tangle"), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - count := len(deps.Protocol.MainEngineInstance().TipManager.WeakTips()) + count := len(deps.Protocol.MainEngine().TipManager.WeakTips()) return float64(count), nil }), @@ -39,7 +39,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Counter), collector.WithHelp("Total number of blocks attached."), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(_ *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(_ *blocks.Block) { deps.Collector.Increment(tangleNamespace, blocksTotal) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -48,7 +48,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of blocks missing during the solidification in the tangle"), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.BlockDAG.BlockMissing.Hook(func(_ *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockDAG.BlockMissing.Hook(func(_ *blocks.Block) { deps.Collector.Increment(tangleNamespace, missingBlocksCount) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -57,7 +57,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of accepted blocks"), collector.WithInitFunc(func() { - deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(_ *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(_ *blocks.Block) { deps.Collector.Increment(tangleNamespace, acceptedBlocksCount) }, event.WithWorkerPool(Component.WorkerPool)) }), diff --git a/components/metricstracker/component.go b/components/metricstracker/component.go index f105edec5..95de489af 100644 --- a/components/metricstracker/component.go +++ b/components/metricstracker/component.go @@ -10,6 +10,7 @@ import ( "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/daemon" "github.com/iotaledger/iota-core/pkg/protocol" + "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" ) @@ -46,7 +47,7 @@ func provide(c *dig.Container) error { } if err := c.Provide(func(deps metricsTrackerDeps) *MetricsTracker { - m := New(deps.Protocol.MainEngineInstance().IsBootstrapped) + m := New(deps.Protocol.MainEngine().IsBootstrapped) return m }); err != nil { @@ -62,22 +63,29 @@ func run() error { if err := Component.Daemon().BackgroundWorker("Metrics Tracker", func(ctx context.Context) { Component.LogInfo("Starting Metrics Tracker ... done") - unhook := lo.Batch( - deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(b *blocks.Block) { - deps.MetricsTracker.metrics.Blocks.Inc() - }, event.WithWorkerPool(Component.WorkerPool)).Unhook, - deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(_ *notarization.SlotCommittedDetails) { - deps.MetricsTracker.measure() - }, event.WithWorkerPool(Component.WorkerPool)).Unhook, - deps.Protocol.Events.Engine.BlockGadget.BlockConfirmed.Hook(func(b *blocks.Block) { - deps.MetricsTracker.metrics.ConfirmedBlocks.Inc() - }, event.WithWorkerPool(Component.WorkerPool)).Unhook, - ) + var unhookFromPreviousEngine func() + + deps.Protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { + if unhookFromPreviousEngine != nil { + unhookFromPreviousEngine() + } + + unhookFromPreviousEngine = lo.Batch( + engine.Events.BlockDAG.BlockAttached.Hook(func(b *blocks.Block) { + deps.MetricsTracker.metrics.Blocks.Inc() + }, event.WithWorkerPool(Component.WorkerPool)).Unhook, + engine.Events.Notarization.SlotCommitted.Hook(func(_ *notarization.SlotCommittedDetails) { + deps.MetricsTracker.measure() + }, event.WithWorkerPool(Component.WorkerPool)).Unhook, + engine.Events.BlockGadget.BlockConfirmed.Hook(func(b *blocks.Block) { + deps.MetricsTracker.metrics.ConfirmedBlocks.Inc() + }, event.WithWorkerPool(Component.WorkerPool)).Unhook, + ) + }) <-ctx.Done() Component.LogInfo("Stopping Metrics Tracker ...") - unhook() Component.LogInfo("Stopping Metrics Tracker ... done") }, daemon.PriorityDashboardMetrics); err != nil { Component.LogPanicf("failed to start worker: %s", err) diff --git a/components/protocol/component.go b/components/protocol/component.go index 2604f343d..858f21e25 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -17,6 +17,7 @@ import ( "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/network/p2p" "github.com/iotaledger/iota-core/pkg/protocol" + "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation/slotattestation" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" @@ -125,142 +126,147 @@ func provide(c *dig.Container) error { } func configure() error { - deps.Protocol.Events.Error.Hook(func(err error) { + deps.Protocol.OnError(func(err error) { Component.LogErrorf("Error in Protocol: %s", err) }) - deps.Protocol.Events.Network.Error.Hook(func(err error, id network.PeerID) { + deps.Protocol.Network.OnError(func(err error, id network.PeerID) { Component.LogErrorf("NetworkError: %s Source: %s", err.Error(), id) }) - deps.Protocol.Events.Network.BlockReceived.Hook(func(block *model.Block, source network.PeerID) { + deps.Protocol.Network.OnBlockReceived(func(block *model.Block, source network.PeerID) { Component.LogDebugf("BlockReceived: %s", block.ID()) }) - deps.Protocol.Events.Engine.BlockProcessed.Hook(func(blockID iotago.BlockID) { - Component.LogDebugf("BlockProcessed: %s", blockID) + deps.Protocol.Chains.OnCommitmentRequested(func(id iotago.CommitmentID) { + Component.LogDebugf("RequestCommitment: %s", id) }) - deps.Protocol.Events.Engine.AcceptedBlockProcessed.Hook(func(block *blocks.Block) { - Component.LogDebugf("AcceptedBlockProcessed: %s", block.ID()) + deps.Protocol.OnSlotCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, id network.PeerID) { + Component.LogDebugf("SlotCommitmentRequestReceived: %s", commitmentID) }) - deps.Protocol.Events.Engine.Filter.BlockPreFiltered.Hook(func(event *filter.BlockPreFilteredEvent) { - Component.LogDebugf("BlockPreFiltered: %s - %s", event.Block.ID(), event.Reason.Error()) + deps.Protocol.OnSlotCommitmentReceived(func(commitment *model.Commitment, id network.PeerID) { + Component.LogDebugf("SlotCommitmentReceived: %s", commitment.ID()) }) - deps.Protocol.Events.Engine.Filter.BlockPreAllowed.Hook(func(blk *model.Block) { - Component.LogDebugf("BlockPreAllowed: %s - %s", blk.ID()) - }) + deps.Protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { + engine.Events.BlockProcessed.Hook(func(blockID iotago.BlockID) { + Component.LogDebugf("BlockProcessed: %s", blockID) + }) - deps.Protocol.Events.Engine.CommitmentFilter.BlockAllowed.Hook(func(block *blocks.Block) { - Component.LogDebugf("CommitmentFilter.BlockAllowed: %s\n", block.ID()) - }) + engine.Events.AcceptedBlockProcessed.Hook(func(block *blocks.Block) { + Component.LogDebugf("AcceptedBlockProcessed: %s", block.ID()) + }) - deps.Protocol.Events.Engine.CommitmentFilter.BlockFiltered.Hook(func(event *commitmentfilter.BlockFilteredEvent) { - Component.LogWarnf("CommitmentFilter.BlockFiltered: %s - %s\n", event.Block.ID(), event.Reason.Error()) - }) + engine.Events.Filter.BlockPreFiltered.Hook(func(event *filter.BlockPreFilteredEvent) { + Component.LogDebugf("BlockPreFiltered: %s - %s", event.Block.ID(), event.Reason.Error()) + }) - deps.Protocol.Events.Engine.TipManager.BlockAdded.Hook(func(tip tipmanager.TipMetadata) { - Component.LogDebugf("BlockAdded to tip pool: %s; is strong: %v; is weak: %v", tip.ID(), tip.IsStrongTip(), tip.IsWeakTip()) - }) + engine.Events.Filter.BlockPreAllowed.Hook(func(blk *model.Block) { + Component.LogDebugf("BlockPreAllowed: %s - %s", blk.ID()) + }) - deps.Protocol.Events.Engine.BlockDAG.BlockSolid.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockSolid: %s", block.ID()) - }) + engine.Events.CommitmentFilter.BlockAllowed.Hook(func(block *blocks.Block) { + Component.LogDebugf("CommitmentFilter.BlockAllowed: %s\n", block.ID()) + }) - deps.Protocol.Events.Engine.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { - Component.LogDebugf("BlockInvalid in blockDAG: %s, error: %v", block.ID(), err.Error()) - }) + engine.Events.CommitmentFilter.BlockFiltered.Hook(func(event *commitmentfilter.BlockFilteredEvent) { + Component.LogWarnf("CommitmentFilter.BlockFiltered: %s - %s\n", event.Block.ID(), event.Reason.Error()) + }) - deps.Protocol.Events.Engine.Booker.BlockBooked.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockBooked: %s", block.ID()) - }) + engine.Events.TipManager.BlockAdded.Hook(func(tip tipmanager.TipMetadata) { + Component.LogDebugf("BlockAdded to tip pool: %s; is strong: %v; is weak: %v", tip.ID(), tip.IsStrongTip(), tip.IsWeakTip()) + }) - deps.Protocol.Events.Engine.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { - Component.LogDebugf("BlockInvalid in booker: %s, error: %v", block.ID(), err.Error()) - }) + engine.Events.BlockDAG.BlockSolid.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockSolid: %s", block.ID()) + }) - deps.Protocol.Events.Engine.BlockGadget.BlockPreAccepted.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockPreAccepted: %s", block.ID()) - }) + engine.Events.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { + Component.LogDebugf("BlockInvalid in blockDAG: %s, error: %v", block.ID(), err.Error()) + }) - deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockAccepted: %s", block.ID()) - }) + engine.Events.Booker.BlockBooked.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockBooked: %s", block.ID()) + }) - deps.Protocol.Events.Engine.BlockGadget.BlockPreConfirmed.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockPreConfirmed: %s", block.ID()) - }) + engine.Events.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { + Component.LogDebugf("BlockInvalid in booker: %s, error: %v", block.ID(), err.Error()) + }) - deps.Protocol.Events.Engine.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockConfirmed: %s", block.ID()) - }) + engine.Events.BlockGadget.BlockPreAccepted.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockPreAccepted: %s", block.ID()) + }) - deps.Protocol.Events.Engine.Clock.AcceptedTimeUpdated.Hook(func(time time.Time) { - Component.LogDebugf("AcceptedTimeUpdated: Slot %d @ %s", deps.Protocol.CurrentAPI().TimeProvider().SlotFromTime(time), time) - }) + engine.Events.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockAccepted: %s", block.ID()) + }) - deps.Protocol.Events.Engine.Clock.ConfirmedTimeUpdated.Hook(func(time time.Time) { - Component.LogDebugf("ConfirmedTimeUpdated: Slot %d @ %s", deps.Protocol.CurrentAPI().TimeProvider().SlotFromTime(time), time) - }) + engine.Events.BlockGadget.BlockPreConfirmed.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockPreConfirmed: %s", block.ID()) + }) - deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { - Component.LogInfof("SlotCommitted: %s - %d", details.Commitment.ID(), details.Commitment.Index()) - }) + engine.Events.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockConfirmed: %s", block.ID()) + }) - deps.Protocol.Events.Engine.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { - Component.LogInfof("SlotFinalized: %d", index) - }) + engine.Events.Clock.AcceptedTimeUpdated.Hook(func(time time.Time) { + Component.LogDebugf("AcceptedTimeUpdated: Slot %d @ %s", deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(time), time) + }) - deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockScheduled: %s", block.ID()) - }) + engine.Events.Clock.ConfirmedTimeUpdated.Hook(func(time time.Time) { + Component.LogDebugf("ConfirmedTimeUpdated: Slot %d @ %s", deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(time), time) + }) - deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, err error) { - Component.LogDebugf("BlockDropped: %s; reason: %s", block.ID(), err) - }) + engine.Events.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + Component.LogInfof("SlotCommitted: %s - %d", details.Commitment.ID(), details.Commitment.Index()) + }) - deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockSkipped: %s", block.ID()) - }) + engine.Events.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { + Component.LogInfof("SlotFinalized: %d", index) + }) - deps.Protocol.Events.ChainManager.RequestCommitment.Hook(func(id iotago.CommitmentID) { - Component.LogDebugf("RequestCommitment: %s", id) - }) + engine.Events.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockScheduled: %s", block.ID()) + }) - deps.Protocol.Events.Network.SlotCommitmentRequestReceived.Hook(func(commitmentID iotago.CommitmentID, id network.PeerID) { - Component.LogDebugf("SlotCommitmentRequestReceived: %s", commitmentID) - }) + engine.Events.Scheduler.BlockDropped.Hook(func(block *blocks.Block, err error) { + Component.LogDebugf("BlockDropped: %s; reason: %s", block.ID(), err) + }) - deps.Protocol.Events.Network.SlotCommitmentReceived.Hook(func(commitment *model.Commitment, id network.PeerID) { - Component.LogDebugf("SlotCommitmentReceived: %s", commitment.ID()) - }) + engine.Events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockSkipped: %s", block.ID()) + }) - deps.Protocol.Events.Engine.SybilProtection.CommitteeSelected.Hook(func(committee *account.Accounts, epoch iotago.EpochIndex) { - Component.LogInfof("CommitteeSelected: Epoch %d - %s (reused: %t)", epoch, committee.IDs(), committee.IsReused()) - }) + engine.Events.SybilProtection.CommitteeSelected.Hook(func(committee *account.Accounts, epoch iotago.EpochIndex) { + Component.LogInfof("CommitteeSelected: Epoch %d - %s (reused: %t)", epoch, committee.IDs(), committee.IsReused()) + }) - deps.Protocol.Events.Engine.SybilProtection.RewardsCommitted.Hook(func(epoch iotago.EpochIndex) { - Component.LogInfof("RewardsCommitted: Epoch %d", epoch) - }) + engine.Events.SybilProtection.CommitteeSelected.Hook(func(committee *account.Accounts, epoch iotago.EpochIndex) { + Component.LogInfof("CommitteeSelected: Epoch %d - %s (reused: %t)", epoch, committee.IDs(), committee.IsReused()) + }) - deps.Protocol.Events.Engine.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { - Component.LogWarnf("Booker BlockInvalid: Block %s - %s", block.ID(), err.Error()) - }) + engine.Events.SybilProtection.RewardsCommitted.Hook(func(epoch iotago.EpochIndex) { + Component.LogInfof("RewardsCommitted: Epoch %d", epoch) + }) - deps.Protocol.Events.Engine.SeatManager.OnlineCommitteeSeatAdded.Hook(func(seatIndex account.SeatIndex, account iotago.AccountID) { - Component.LogWarnf("OnlineCommitteeSeatAdded: %s - %d", account.ToHex(), seatIndex) - }) + engine.Events.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { + Component.LogWarnf("Booker BlockInvalid: Block %s - %s", block.ID(), err.Error()) + }) - deps.Protocol.Events.Engine.SeatManager.OnlineCommitteeSeatRemoved.Hook(func(seatIndex account.SeatIndex) { - Component.LogWarnf("OnlineCommitteeSeatRemoved: seatIndex: %d", seatIndex) - }) + engine.Events.SeatManager.OnlineCommitteeSeatAdded.Hook(func(seatIndex account.SeatIndex, account iotago.AccountID) { + Component.LogWarnf("OnlineCommitteeSeatAdded: %s - %d", account.ToHex(), seatIndex) + }) + + engine.Events.SeatManager.OnlineCommitteeSeatRemoved.Hook(func(seatIndex account.SeatIndex) { + Component.LogWarnf("OnlineCommitteeSeatRemoved: seatIndex: %d", seatIndex) + }) - // TODO: create a transaction invalid event in the booker instead of hooking to a specific engine instance - deps.Protocol.MainEngineInstance().Ledger.MemPool().OnTransactionAttached(func(transaction mempool.TransactionMetadata) { - transaction.OnInvalid(func(err error) { - Component.LogWarnf("TransactionInvalid: transaction %s - %s", transaction.ID(), err.Error()) + engine.Ledger.MemPool().OnTransactionAttached(func(transaction mempool.TransactionMetadata) { + transaction.OnInvalid(func(err error) { + Component.LogWarnf("TransactionInvalid: transaction %s - %s", transaction.ID(), err.Error()) + }) }) }) diff --git a/components/restapi/core/accounts.go b/components/restapi/core/accounts.go index ed6eb153d..654f7e166 100644 --- a/components/restapi/core/accounts.go +++ b/components/restapi/core/accounts.go @@ -28,27 +28,27 @@ func congestionForAccountID(c echo.Context) (*apimodels.CongestionResponse, erro return nil, err } - slotIndex := deps.Protocol.SyncManager.LatestCommitment().Index() + slotIndex := deps.Protocol.MainEngine().LatestCommitment().Index() - acc, exists, err := deps.Protocol.MainEngineInstance().Ledger.Account(accountID, slotIndex) + acc, exists, err := deps.Protocol.MainEngine().Ledger.Account(accountID, slotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to get account: %s form the Ledger", accountID.ToHex()) } if !exists { return nil, ierrors.Errorf("account not found: %s", accountID.ToHex()) } - rmcSlot, err := safemath.SafeSub(slotIndex, deps.Protocol.APIForSlot(slotIndex).ProtocolParameters().MaxCommittableAge()) + rmcSlot, err := safemath.SafeSub(slotIndex, deps.Protocol.MainEngine().APIForSlot(slotIndex).ProtocolParameters().MaxCommittableAge()) if err != nil { rmcSlot = 0 } - rmc, err := deps.Protocol.CandidateEngineInstance().Ledger.RMCManager().RMC(rmcSlot) + rmc, err := deps.Protocol.MainEngine().Ledger.RMCManager().RMC(rmcSlot) if err != nil { return nil, ierrors.Wrapf(err, "failed to get RMC for slot: %d", rmcSlot) } return &apimodels.CongestionResponse{ SlotIndex: slotIndex, - Ready: deps.Protocol.MainEngineInstance().Scheduler.IsBlockIssuerReady(accountID), + Ready: deps.Protocol.MainEngine().Scheduler.IsBlockIssuerReady(accountID), ReferenceManaCost: rmc, BlockIssuanceCredits: acc.Credits.Value, }, nil @@ -66,7 +66,7 @@ func validators(c echo.Context) (*apimodels.ValidatorsResponse, error) { pageSize = restapi.ParamsRestAPI.MaxPageSize } } - latestCommittedSlot := deps.Protocol.SyncManager.LatestCommitment().Index() + latestCommittedSlot := deps.Protocol.MainEngine().LatestCommitment().Index() // no cursor provided will be the first request requestedSlotIndex := latestCommittedSlot var cursorIndex uint32 @@ -82,16 +82,16 @@ func validators(c echo.Context) (*apimodels.ValidatorsResponse, error) { return nil, ierrors.Errorf("request is too old, request started at %d, latest committed slot index is %d", requestedSlotIndex, latestCommittedSlot) } - nextEpoch := deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 + nextEpoch := deps.Protocol.MainEngine().APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 slotRange := uint32(requestedSlotIndex / RequestsMemoryCacheGranularity) - registeredValidators, exists := deps.Protocol.MainEngineInstance().Retainer.RegisteredValidatorsCache(slotRange) + registeredValidators, exists := deps.Protocol.MainEngine().Retainer.RegisteredValidatorsCache(slotRange) if !exists { - registeredValidators, err = deps.Protocol.MainEngineInstance().SybilProtection.OrderedRegisteredCandidateValidatorsList(nextEpoch) + registeredValidators, err = deps.Protocol.MainEngine().SybilProtection.OrderedRegisteredCandidateValidatorsList(nextEpoch) if err != nil { return nil, ierrors.Wrapf(err, "failed to get ordered registered validators list for epoch %d", nextEpoch) } - deps.Protocol.MainEngineInstance().Retainer.RetainRegisteredValidatorsCache(slotRange, registeredValidators) + deps.Protocol.MainEngine().Retainer.RetainRegisteredValidatorsCache(slotRange, registeredValidators) } page := registeredValidators[cursorIndex : cursorIndex+pageSize] @@ -114,17 +114,17 @@ func validatorByAccountID(c echo.Context) (*apimodels.ValidatorResponse, error) if err != nil { return nil, ierrors.Wrapf(err, "failed to parse the %s parameter", restapipkg.ParameterAccountID) } - latestCommittedSlot := deps.Protocol.SyncManager.LatestCommitment().Index() + latestCommittedSlot := deps.Protocol.MainEngine().LatestCommitment().Index() - accountData, exists, err := deps.Protocol.MainEngineInstance().Ledger.Account(accountID, latestCommittedSlot) + accountData, exists, err := deps.Protocol.MainEngine().Ledger.Account(accountID, latestCommittedSlot) if err != nil { return nil, ierrors.Wrapf(err, "failed to get account: %s form the Ledger", accountID.ToHex()) } if !exists { return nil, ierrors.Errorf("account not found: %s for latest committedSlot %d", accountID.ToHex(), latestCommittedSlot) } - nextEpoch := deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 - active := deps.Protocol.MainEngineInstance().SybilProtection.IsCandidateActive(accountID, nextEpoch) + nextEpoch := deps.Protocol.MainEngine().APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 + active := deps.Protocol.MainEngine().SybilProtection.IsCandidateActive(accountID, nextEpoch) return &apimodels.ValidatorResponse{ AccountID: accountID, @@ -143,7 +143,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { return nil, ierrors.Wrapf(err, "failed to parse the %s parameter", restapipkg.ParameterOutputID) } - utxoOutput, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) + utxoOutput, err := deps.Protocol.MainEngine().Ledger.Output(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output %s from ledger", outputID) } @@ -163,7 +163,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { stakingFeature := feature.(*iotago.StakingFeature) // check if the account is a validator - reward, actualStart, actualEnd, err = deps.Protocol.MainEngineInstance().SybilProtection.ValidatorReward( + reward, actualStart, actualEnd, err = deps.Protocol.MainEngine().SybilProtection.ValidatorReward( accountOutput.AccountID, stakingFeature.StakedAmount, stakingFeature.StartEpoch, @@ -173,7 +173,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { case iotago.OutputDelegation: //nolint:forcetypeassert delegationOutput := utxoOutput.Output().(*iotago.DelegationOutput) - reward, actualStart, actualEnd, err = deps.Protocol.MainEngineInstance().SybilProtection.DelegatorReward( + reward, actualStart, actualEnd, err = deps.Protocol.MainEngine().SybilProtection.DelegatorReward( delegationOutput.ValidatorID, delegationOutput.DelegatedAmount, delegationOutput.StartEpoch, @@ -192,7 +192,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { } func selectedCommittee(c echo.Context) *apimodels.CommitteeResponse { - timeProvider := deps.Protocol.CurrentAPI().TimeProvider() + timeProvider := deps.Protocol.MainEngine().CurrentAPI().TimeProvider() var slotIndex iotago.SlotIndex @@ -205,7 +205,7 @@ func selectedCommittee(c echo.Context) *apimodels.CommitteeResponse { slotIndex = timeProvider.EpochEnd(epochIndex) } - seatedAccounts := deps.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(slotIndex) + seatedAccounts := deps.Protocol.MainEngine().SybilProtection.SeatManager().Committee(slotIndex) committee := make([]*apimodels.CommitteeMemberResponse, 0, seatedAccounts.Accounts().Size()) seatedAccounts.Accounts().ForEach(func(accountID iotago.AccountID, seat *account.Pool) bool { committee = append(committee, &apimodels.CommitteeMemberResponse{ diff --git a/components/restapi/core/blocks.go b/components/restapi/core/blocks.go index 458a061dd..a4e102ad9 100644 --- a/components/restapi/core/blocks.go +++ b/components/restapi/core/blocks.go @@ -20,7 +20,7 @@ func blockByID(c echo.Context) (*model.Block, error) { return nil, ierrors.Wrapf(err, "failed to parse block ID: %s", c.Param(restapi.ParameterBlockID)) } - block, exists := deps.Protocol.MainEngineInstance().Block(blockID) + block, exists := deps.Protocol.MainEngine().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.ToHex()) } @@ -29,7 +29,7 @@ func blockByID(c echo.Context) (*model.Block, error) { } func blockMetadataByBlockID(blockID iotago.BlockID) (*apimodels.BlockMetadataResponse, error) { - blockMetadata, err := deps.Protocol.MainEngineInstance().Retainer.BlockMetadata(blockID) + blockMetadata, err := deps.Protocol.MainEngine().Retainer.BlockMetadata(blockID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get block metadata: %s", blockID.ToHex()) } @@ -47,8 +47,8 @@ func blockMetadataByID(c echo.Context) (*apimodels.BlockMetadataResponse, error) } func blockIssuance(_ echo.Context) (*apimodels.IssuanceBlockHeaderResponse, error) { - references := deps.Protocol.MainEngineInstance().TipSelection.SelectTips(iotago.BlockMaxParents) - slotCommitment := deps.Protocol.SyncManager.LatestCommitment() + references := deps.Protocol.MainEngine().TipSelection.SelectTips(iotago.BlockMaxParents) + slotCommitment := deps.Protocol.MainEngine().LatestCommitment() if len(references[iotago.StrongParentType]) == 0 { return nil, ierrors.Wrap(echo.ErrServiceUnavailable, "get references failed") @@ -58,7 +58,7 @@ func blockIssuance(_ echo.Context) (*apimodels.IssuanceBlockHeaderResponse, erro StrongParents: references[iotago.StrongParentType], WeakParents: references[iotago.WeakParentType], ShallowLikeParents: references[iotago.ShallowLikeParentType], - LatestFinalizedSlot: deps.Protocol.SyncManager.LatestFinalizedSlot(), + LatestFinalizedSlot: deps.Protocol.MainEngine().SlotGadget.LatestFinalizedSlot(), Commitment: slotCommitment.Commitment(), } @@ -86,7 +86,7 @@ func sendBlock(c echo.Context) (*apimodels.BlockCreatedResponse, error) { switch mimeType { case echo.MIMEApplicationJSON: // Do not validate here, the parents might need to be set - if err := deps.Protocol.CurrentAPI().JSONDecode(bytes, iotaBlock); err != nil { + if err := deps.Protocol.MainEngine().CurrentAPI().JSONDecode(bytes, iotaBlock); err != nil { return nil, ierrors.Wrapf(httpserver.ErrInvalidParameter, "invalid block, error: %w", err) } @@ -96,7 +96,7 @@ func sendBlock(c echo.Context) (*apimodels.BlockCreatedResponse, error) { return nil, ierrors.Wrapf(httpserver.ErrInvalidParameter, "invalid block, error: %w", err) } - apiForVersion, err := deps.Protocol.APIForVersion(version) + apiForVersion, err := deps.Protocol.MainEngine().APIForVersion(version) if err != nil { return nil, ierrors.Wrapf(httpserver.ErrInvalidParameter, "invalid block, error: %w", err) } diff --git a/components/restapi/core/commitment.go b/components/restapi/core/commitment.go index 10d9abb90..c20031974 100644 --- a/components/restapi/core/commitment.go +++ b/components/restapi/core/commitment.go @@ -20,7 +20,7 @@ func indexByCommitmentID(c echo.Context) (iotago.SlotIndex, error) { } func getCommitmentDetails(index iotago.SlotIndex) (*iotago.Commitment, error) { - commitment, err := deps.Protocol.MainEngineInstance().Storage.Permanent.Commitments().Load(index) + commitment, err := deps.Protocol.MainEngine().Storage.Permanent.Commitments().Load(index) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment: %d", index) } @@ -29,7 +29,7 @@ func getCommitmentDetails(index iotago.SlotIndex) (*iotago.Commitment, error) { } func getUTXOChanges(index iotago.SlotIndex) (*apimodels.UTXOChangesResponse, error) { - diffs, err := deps.Protocol.MainEngineInstance().Ledger.SlotDiffs(index) + diffs, err := deps.Protocol.MainEngine().Ledger.SlotDiffs(index) if err != nil { return nil, ierrors.Wrapf(err, "failed to get slot diffs: %d", index) } diff --git a/components/restapi/core/component.go b/components/restapi/core/component.go index af81ec6f8..582874ada 100644 --- a/components/restapi/core/component.go +++ b/components/restapi/core/component.go @@ -351,7 +351,7 @@ func AddFeature(feature string) { func checkNodeSynced() echo.MiddlewareFunc { return func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { - if !deps.Protocol.SyncManager.IsNodeSynced() { + if !deps.Protocol.MainEngine().IsSynced() { return ierrors.Wrap(echo.ErrServiceUnavailable, "node is not synced") } @@ -382,7 +382,7 @@ func responseByHeader(c echo.Context, obj any) error { switch mimeType { case httpserver.MIMEApplicationVendorIOTASerializerV2: // TODO: that should take the API that belongs to the object - b, err := deps.Protocol.CurrentAPI().Encode(obj) + b, err := deps.Protocol.MainEngine().CurrentAPI().Encode(obj) if err != nil { return err } @@ -392,7 +392,7 @@ func responseByHeader(c echo.Context, obj any) error { // default to echo.MIMEApplicationJSON default: // TODO: that should take the API that belongs to the object - j, err := deps.Protocol.CurrentAPI().JSONEncode(obj) + j, err := deps.Protocol.MainEngine().CurrentAPI().JSONEncode(obj) if err != nil { return err } diff --git a/components/restapi/core/node.go b/components/restapi/core/node.go index d1bb107af..020164c2b 100644 --- a/components/restapi/core/node.go +++ b/components/restapi/core/node.go @@ -6,7 +6,7 @@ import ( func protocolParameters() []*apimodels.InfoResProtocolParameters { protoParams := make([]*apimodels.InfoResProtocolParameters, 0) - provider := deps.Protocol.MainEngineInstance().Storage.Settings().APIProvider() + provider := deps.Protocol.MainEngine().Storage.Settings().APIProvider() for _, version := range provider.ProtocolEpochVersions() { protocolParams := provider.ProtocolParameters(version.Version) if protocolParams == nil { @@ -23,7 +23,7 @@ func protocolParameters() []*apimodels.InfoResProtocolParameters { } func info() *apimodels.InfoResponse { - clSnapshot := deps.Protocol.MainEngineInstance().Clock.Snapshot() + clSnapshot := deps.Protocol.MainEngine().Clock.Snapshot() syncStatus := deps.Protocol.SyncManager.SyncStatus() metrics := deps.MetricsTracker.NodeMetrics() diff --git a/components/restapi/core/transaction.go b/components/restapi/core/transaction.go index 5c3fdbe4a..f3cc6c419 100644 --- a/components/restapi/core/transaction.go +++ b/components/restapi/core/transaction.go @@ -25,7 +25,7 @@ func blockIDFromTransactionID(transactionID iotago.TransactionID) (iotago.BlockI outputID := iotago.OutputID{} copy(outputID[:], transactionID[:]) - output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngine().Ledger.Output(outputID) if err != nil { return iotago.EmptyBlockID(), ierrors.Wrapf(err, "failed to get output: %s", outputID.String()) } @@ -39,7 +39,7 @@ func blockByTransactionID(c echo.Context) (*model.Block, error) { return nil, ierrors.Wrapf(err, "failed to get block ID by transaction ID") } - block, exists := deps.Protocol.MainEngineInstance().Block(blockID) + block, exists := deps.Protocol.MainEngine().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.String()) } diff --git a/components/restapi/core/utxo.go b/components/restapi/core/utxo.go index 268945b0c..85909e73b 100644 --- a/components/restapi/core/utxo.go +++ b/components/restapi/core/utxo.go @@ -16,7 +16,7 @@ func getOutput(c echo.Context) (*utxoledger.Output, error) { return nil, ierrors.Wrapf(err, "failed to parse output ID param: %s", c.Param(restapipkg.ParameterOutputID)) } - output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngine().Ledger.Output(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output: %s from the Ledger", outputID.String()) } @@ -30,7 +30,7 @@ func getOutputMetadata(c echo.Context) (*apimodels.OutputMetadataResponse, error return nil, ierrors.Wrapf(err, "failed to parse output ID param: %s", c.Param(restapipkg.ParameterOutputID)) } - output, spent, err := deps.Protocol.MainEngineInstance().Ledger.OutputOrSpent(outputID) + output, spent, err := deps.Protocol.MainEngine().Ledger.OutputOrSpent(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output: %s from the Ledger", outputID.String()) } @@ -55,7 +55,7 @@ func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMeta includedSlotIndex := output.SlotBooked() if includedSlotIndex <= latestCommitment.Index() { - includedCommitment, err := deps.Protocol.MainEngineInstance().Storage.Permanent.Commitments().Load(includedSlotIndex) + includedCommitment, err := deps.Protocol.MainEngine().Storage.Permanent.Commitments().Load(includedSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", includedSlotIndex) } @@ -79,7 +79,7 @@ func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadat includedSlotIndex := spent.Output().SlotBooked() if includedSlotIndex <= latestCommitment.Index() { - includedCommitment, err := deps.Protocol.MainEngineInstance().Storage.Permanent.Commitments().Load(includedSlotIndex) + includedCommitment, err := deps.Protocol.MainEngine().Storage.Permanent.Commitments().Load(includedSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", includedSlotIndex) } @@ -88,7 +88,7 @@ func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadat spentSlotIndex := spent.SlotIndexSpent() if spentSlotIndex <= latestCommitment.Index() { - spentCommitment, err := deps.Protocol.MainEngineInstance().Storage.Permanent.Commitments().Load(spentSlotIndex) + spentCommitment, err := deps.Protocol.MainEngine().Storage.Permanent.Commitments().Load(spentSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", spentSlotIndex) } diff --git a/components/restapi/routes.go b/components/restapi/routes.go index 41e65eaea..ced81c8e3 100644 --- a/components/restapi/routes.go +++ b/components/restapi/routes.go @@ -21,7 +21,7 @@ type RoutesResponse struct { func setupRoutes() { deps.Echo.GET(nodeAPIHealthRoute, func(c echo.Context) error { - if deps.Protocol.SyncManager.IsNodeSynced() { + if deps.Protocol.MainEngine().IsBootstrapped() { return c.NoContent(http.StatusOK) } diff --git a/components/validator/component.go b/components/validator/component.go index 9d1f15392..0c8ac3f44 100644 --- a/components/validator/component.go +++ b/components/validator/component.go @@ -56,7 +56,7 @@ func run() error { checkValidatorStatus(ctx) - deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { checkValidatorStatus(ctx) }, event.WithWorkerPool(Component.WorkerPool)) @@ -69,14 +69,14 @@ func run() error { } func checkValidatorStatus(ctx context.Context) { - account, exists, err := deps.Protocol.MainEngineInstance().Ledger.Account(validatorAccount.ID(), deps.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index()) + account, exists, err := deps.Protocol.MainEngine().Ledger.Account(validatorAccount.ID(), deps.Protocol.MainEngine().Storage.Settings().LatestCommitment().Index()) if err != nil { Component.LogErrorf("error when retrieving BlockIssuer account %s: %w", validatorAccount.ID(), err) return } - if !exists || account.StakeEndEpoch <= deps.Protocol.CurrentAPI().TimeProvider().EpochFromSlot(deps.Protocol.CurrentAPI().TimeProvider().SlotFromTime(time.Now())) { + if !exists || account.StakeEndEpoch <= deps.Protocol.MainEngine().CurrentAPI().TimeProvider().EpochFromSlot(deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(time.Now())) { if prevValue := isValidator.Swap(false); prevValue { // If the account stops being a validator, don't issue any blocks. Component.LogInfof("BlockIssuer account %s stopped being a validator", validatorAccount.ID()) diff --git a/components/validator/issuer.go b/components/validator/issuer.go index 4d009b1d8..03baf1a1d 100644 --- a/components/validator/issuer.go +++ b/components/validator/issuer.go @@ -9,7 +9,7 @@ import ( func issueValidatorBlock(ctx context.Context) { // Get the main engine instance in case it changes mid-execution. - engineInstance := deps.Protocol.MainEngineInstance() + engineInstance := deps.Protocol.MainEngine() // Get the latest commitment from the engine before to avoid race conditions if something is committed after we fix block issuing time. latestCommitment := engineInstance.Storage.Settings().LatestCommitment() @@ -28,7 +28,7 @@ func issueValidatorBlock(ctx context.Context) { return } - protocolParametersHash, err := deps.Protocol.CurrentAPI().ProtocolParameters().Hash() + protocolParametersHash, err := deps.Protocol.MainEngine().CurrentAPI().ProtocolParameters().Hash() if err != nil { Component.LogWarnf("failed to get protocol parameters hash: %s", err.Error()) @@ -42,7 +42,7 @@ func issueValidatorBlock(ctx context.Context) { blockfactory.WithSlotCommitment(latestCommitment.Commitment()), ), blockfactory.WithProtocolParametersHash(protocolParametersHash), - blockfactory.WithHighestSupportedVersion(deps.Protocol.LatestAPI().Version()), + blockfactory.WithHighestSupportedVersion(deps.Protocol.MainEngine().LatestAPI().Version()), ) if err != nil { Component.LogWarnf("error creating validator block: %s", err.Error()) @@ -50,7 +50,7 @@ func issueValidatorBlock(ctx context.Context) { return } - if !engineInstance.SybilProtection.SeatManager().Committee(deps.Protocol.CurrentAPI().TimeProvider().SlotFromTime(blockIssuingTime)).HasAccount(validatorAccount.ID()) { + if !engineInstance.SybilProtection.SeatManager().Committee(deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(blockIssuingTime)).HasAccount(validatorAccount.ID()) { // update nextBroadcast value here, so that this updated value is used in the `defer` // callback to schedule issuing of the next block at a different interval than for committee members nextBroadcast = blockIssuingTime.Add(ParamsValidator.CandidateBroadcastInterval) diff --git a/pkg/blockfactory/blockissuer.go b/pkg/blockfactory/blockissuer.go index 1f43029aa..ea2efb86c 100644 --- a/pkg/blockfactory/blockissuer.go +++ b/pkg/blockfactory/blockissuer.go @@ -82,12 +82,12 @@ func (i *BlockIssuer) CreateValidationBlock(ctx context.Context, issuerAccount A if blockParams.HighestSupportedVersion == nil { // We use the latest supported version and not the current one. - version := i.protocol.LatestAPI().Version() + version := i.protocol.MainEngine().LatestAPI().Version() blockParams.HighestSupportedVersion = &version } if blockParams.ProtocolParametersHash == nil { - protocolParametersHash, err := i.protocol.CurrentAPI().ProtocolParameters().Hash() + protocolParametersHash, err := i.protocol.MainEngine().CurrentAPI().ProtocolParameters().Hash() if err != nil { return nil, ierrors.Wrap(err, "error getting protocol parameters hash") } @@ -142,10 +142,10 @@ func (i *BlockIssuer) CreateValidationBlock(ctx context.Context, issuerAccount A func (i *BlockIssuer) retrieveAPI(blockParams *BlockHeaderParams) (iotago.API, error) { if blockParams.ProtocolVersion != nil { - return i.protocol.APIForVersion(*blockParams.ProtocolVersion) + return i.protocol.MainEngine().APIForVersion(*blockParams.ProtocolVersion) } - return i.protocol.CurrentAPI(), nil + return i.protocol.MainEngine().CurrentAPI(), nil } // CreateBlock creates a new block with the options. @@ -194,7 +194,7 @@ func (i *BlockIssuer) CreateBlock(ctx context.Context, issuerAccount Account, op if err != nil { rmcSlot = 0 } - rmc, err := i.protocol.MainEngineInstance().Ledger.RMCManager().RMC(rmcSlot) + rmc, err := i.protocol.MainEngine().Ledger.RMCManager().RMC(rmcSlot) if err != nil { return nil, ierrors.Wrapf(err, "error loading commitment of slot %d from storage to get RMC", rmcSlot) } @@ -241,7 +241,7 @@ func (i *BlockIssuer) IssueBlockAndAwaitEvent(ctx context.Context, block *model. } }, event.WithWorkerPool(i.workerPool)).Unhook() - defer i.protocol.Events.Engine.Filter.BlockPreFiltered.Hook(func(event *filter.BlockPreFilteredEvent) { + defer i.protocol.MainEngineEvents.Filter.BlockPreFiltered.Hook(func(event *filter.BlockPreFilteredEvent) { if block.ID() != event.Block.ID() { return } @@ -271,7 +271,7 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco // if anything changes, need to make a new signature var resign bool - apiForVesion, err := i.protocol.APIForVersion(iotaBlock.ProtocolVersion) + apiForVesion, err := i.protocol.MainEngine().APIForVersion(iotaBlock.ProtocolVersion) if err != nil { return iotago.EmptyBlockID(), ierrors.Wrapf(ErrBlockAttacherInvalidBlock, "protocolVersion invalid: %d", iotaBlock.ProtocolVersion) } @@ -284,8 +284,8 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco } if iotaBlock.SlotCommitmentID == iotago.EmptyCommitmentID { - iotaBlock.SlotCommitmentID = i.protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID() - iotaBlock.LatestFinalizedSlot = i.protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot() + iotaBlock.SlotCommitmentID = i.protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment().MustID() + iotaBlock.LatestFinalizedSlot = i.protocol.MainEngine().Storage.Settings().LatestFinalizedSlot() resign = true } @@ -356,10 +356,10 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco return iotago.EmptyBlockID(), ierrors.Wrap(err, "error serializing block to model block") } - if !i.optsRateSetterEnabled || i.protocol.MainEngineInstance().Scheduler.IsBlockIssuerReady(modelBlock.ProtocolBlock().IssuerID) { + if !i.optsRateSetterEnabled || i.protocol.MainEngine().Scheduler.IsBlockIssuerReady(modelBlock.ProtocolBlock().IssuerID) { i.events.BlockConstructed.Trigger(modelBlock) - if err = i.IssueBlockAndAwaitEvent(ctx, modelBlock, i.protocol.Events.Engine.BlockDAG.BlockAttached); err != nil { + if err = i.IssueBlockAndAwaitEvent(ctx, modelBlock, i.protocol.MainEngineEvents.BlockDAG.BlockAttached); err != nil { return iotago.EmptyBlockID(), ierrors.Wrap(err, "error issuing model block") } } @@ -375,14 +375,14 @@ func (i *BlockIssuer) setDefaultBlockParams(blockParams *BlockHeaderParams, issu if blockParams.SlotCommitment == nil { var err error - blockParams.SlotCommitment, err = i.getCommitment(i.protocol.CurrentAPI().TimeProvider().SlotFromTime(*blockParams.IssuingTime)) + blockParams.SlotCommitment, err = i.getCommitment(i.protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(*blockParams.IssuingTime)) if err != nil { return ierrors.Wrap(err, "error getting commitment") } } if blockParams.LatestFinalizedSlot == nil { - latestFinalizedSlot := i.protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot() + latestFinalizedSlot := i.protocol.MainEngine().Storage.Settings().LatestFinalizedSlot() blockParams.LatestFinalizedSlot = &latestFinalizedSlot } @@ -400,8 +400,8 @@ func (i *BlockIssuer) setDefaultBlockParams(blockParams *BlockHeaderParams, issu } func (i *BlockIssuer) getCommitment(blockSlot iotago.SlotIndex) (*iotago.Commitment, error) { - protoParams := i.protocol.CurrentAPI().ProtocolParameters() - commitment := i.protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment() + protoParams := i.protocol.MainEngine().CurrentAPI().ProtocolParameters() + commitment := i.protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment() if blockSlot > commitment.Index+protoParams.MaxCommittableAge() { return nil, ierrors.Errorf("can't issue block: block slot %d is too far in the future, latest commitment is %d", blockSlot, commitment.Index) @@ -413,7 +413,7 @@ func (i *BlockIssuer) getCommitment(blockSlot iotago.SlotIndex) (*iotago.Commitm } commitmentSlot := commitment.Index - protoParams.MinCommittableAge() - loadedCommitment, err := i.protocol.MainEngineInstance().Storage.Commitments().Load(commitmentSlot) + loadedCommitment, err := i.protocol.MainEngine().Storage.Commitments().Load(commitmentSlot) if err != nil { return nil, ierrors.Wrapf(err, "error loading valid commitment of slot %d according to minCommittableAge from storage", commitmentSlot) } @@ -435,7 +435,7 @@ func (i *BlockIssuer) getReferences(ctx context.Context, p iotago.Payload, stron func (i *BlockIssuer) validateReferences(issuingTime time.Time, slotCommitmentIndex iotago.SlotIndex, references model.ParentReferences) error { for _, parent := range lo.Flatten(lo.Map(lo.Values(references), func(ds iotago.BlockIDs) []iotago.BlockID { return ds })) { - b, exists := i.protocol.MainEngineInstance().BlockFromCache(parent) + b, exists := i.protocol.MainEngine().BlockFromCache(parent) if !exists { return ierrors.Errorf("cannot issue block if the parents are not known: %s", parent) } @@ -470,7 +470,7 @@ func (i *BlockIssuer) getReferencesWithRetry(ctx context.Context, _ iotago.Paylo defer timeutil.CleanupTicker(interval) for { - references = i.protocol.MainEngineInstance().TipSelection.SelectTips(parentsCount) + references = i.protocol.MainEngine().TipSelection.SelectTips(parentsCount) if len(references[iotago.StrongParentType]) > 0 { return references, nil } diff --git a/pkg/protocol/attestations_requester.go b/pkg/protocol/attestations_requester.go index db27d23b6..7431156ea 100644 --- a/pkg/protocol/attestations_requester.go +++ b/pkg/protocol/attestations_requester.go @@ -12,12 +12,12 @@ import ( ) type AttestationsRequester struct { - chainManager *ChainManager + chainManager *Chains requester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] } -func NewAttestationsRequester(chainManager *ChainManager) *AttestationsRequester { +func NewAttestationsRequester(chainManager *Chains) *AttestationsRequester { a := &AttestationsRequester{ chainManager: chainManager, requester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), @@ -57,7 +57,7 @@ func (a *AttestationsRequester) ProcessAttestationsResponse(commitmentModel *mod return } - chain := commitment.Chain().Get() + chain := commitment.Chain() if chain == nil { // TODO: log warning that we received attestations for an unsolid commitment (we did not request that - maybe punish sender) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index f59281632..315c57dec 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -45,7 +45,7 @@ type Chain struct { requestAttestations reactive.Variable[bool] // engine is the engine that is used to process blocks of this chain. - engine *engineVariable + engine *chainEngine // evicted is an event that gets triggered when the chain gets evicted. evicted reactive.Event @@ -63,7 +63,7 @@ func NewChain(root *Commitment, optStartingEngine ...*engine.Engine) *Chain { evicted: reactive.NewEvent(), } - c.engine = newEngineVariable(root, optStartingEngine...) + c.engine = newChainEngine(root, optStartingEngine...) // track weights of the chain c.claimedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestCommitment) @@ -120,9 +120,13 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exis return nil, false } -// LatestCommitment returns a reactive variable that always contains the latest Commitment object in this +func (c *Chain) LatestCommitment() *Commitment { + return c.latestCommitment.Get() +} + +// LatestCommitmentR returns a reactive variable that always contains the latest Commitment object in this // collection. -func (c *Chain) LatestCommitment() reactive.Variable[*Commitment] { +func (c *Chain) LatestCommitmentR() reactive.Variable[*Commitment] { return c.latestCommitment } @@ -219,3 +223,33 @@ func (c *Chain) unregisterCommitment(commitment *Commitment) { c.latestAttestedCommitment.Compute(resetToParent) c.latestVerifiedCommitment.Compute(resetToParent) } + +type chainEngine struct { + reactive.Variable[*engine.Engine] + + parentEngine reactive.Variable[*engine.Engine] + + spawnedEngine reactive.Variable[*engine.Engine] + + instantiate reactive.Variable[bool] +} + +func newChainEngine(commitment *Commitment, optInitEngine ...*engine.Engine) *chainEngine { + e := &chainEngine{ + parentEngine: reactive.NewVariable[*engine.Engine](), + instantiate: reactive.NewVariable[bool](), + spawnedEngine: reactive.NewVariable[*engine.Engine]().Init(lo.First(optInitEngine)), + } + + commitment.parent.OnUpdate(func(_, parent *Commitment) { e.parentEngine.InheritFrom(parent.Engine()) }) + + e.Variable = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { + if spawnedEngine != nil { + return spawnedEngine + } + + return parentEngine + }, e.spawnedEngine, e.parentEngine) + + return e +} diff --git a/pkg/protocol/chain_switching.go b/pkg/protocol/chain_switching.go index 6bbb5f38a..e4db010ea 100644 --- a/pkg/protocol/chain_switching.go +++ b/pkg/protocol/chain_switching.go @@ -10,7 +10,7 @@ type ChainSwitching struct { heaviestVerifiedCandidate reactive.Variable[*Chain] } -func NewChainSwitching(chainManager *ChainManager) *ChainSwitching { +func NewChainSwitching(chainManager *Chains) *ChainSwitching { c := &ChainSwitching{ heaviestClaimedCandidate: reactive.NewVariable[*Chain](), heaviestAttestedCandidate: reactive.NewVariable[*Chain](), diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chains.go similarity index 71% rename from pkg/protocol/chain_manager.go rename to pkg/protocol/chains.go index 1cb64ada1..0b1d72bee 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chains.go @@ -12,7 +12,7 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -type ChainManager struct { +type Chains struct { mainChain reactive.Variable[*Chain] commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] @@ -21,7 +21,7 @@ type ChainManager struct { chainCreated *event.Event1[*Chain] - commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + CommitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] *ChainSwitching @@ -30,8 +30,8 @@ type ChainManager struct { reactive.EvictionState[iotago.SlotIndex] } -func NewChainManager(startingEngine *engine.Engine) *ChainManager { - p := &ChainManager{ +func NewChains(startingEngine *engine.Engine) *Chains { + p := &Chains{ EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), mainChain: reactive.NewVariable[*Chain]().Init( NewChain( @@ -42,7 +42,7 @@ func NewChainManager(startingEngine *engine.Engine) *ChainManager { commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), commitmentCreated: event.New1[*Commitment](), chainCreated: event.New1[*Chain](), - commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + CommitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), } // embed reactive orchestrators @@ -52,11 +52,15 @@ func NewChainManager(startingEngine *engine.Engine) *ChainManager { return p } -func (c *ChainManager) MainChain() reactive.Variable[*Chain] { +func (c *Chains) MainChain() *Chain { + return c.mainChain.Get() +} + +func (c *Chains) MainChainR() reactive.Variable[*Chain] { return c.mainChain } -func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment) { +func (c *Chains) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment) { if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *Commitment) { commitmentMetadata = resolvedMetadata }); commitmentRequest != nil { @@ -66,15 +70,19 @@ func (c *ChainManager) ProcessCommitment(commitment *model.Commitment) (commitme return commitmentMetadata } -func (c *ChainManager) OnCommitmentCreated(callback func(commitment *Commitment)) (unsubscribe func()) { +func (c *Chains) OnCommitmentRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return c.CommitmentRequester.Events.TickerStarted.Hook(callback).Unhook +} + +func (c *Chains) OnCommitmentCreated(callback func(commitment *Commitment)) (unsubscribe func()) { return c.commitmentCreated.Hook(callback).Unhook } -func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { +func (c *Chains) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { return c.chainCreated.Hook(callback).Unhook } -func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { +func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.setParent) slotEvictedEvent.OnTrigger(func() { @@ -90,7 +98,7 @@ func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent }) } -func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, index iotago.SlotIndex, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { +func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, index iotago.SlotIndex, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { slotEvicted := c.EvictionEvent(index) if slotEvicted.WasTriggered() { rootCommitment := c.mainChain.Get().Root() @@ -109,10 +117,10 @@ func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, index commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) if requestCreated { if requestFromPeers { - c.commitmentRequester.StartTicker(commitmentID) + c.CommitmentRequester.StartTicker(commitmentID) commitmentRequest.OnComplete(func() { - c.commitmentRequester.StopTicker(commitmentID) + c.CommitmentRequester.StopTicker(commitmentID) }) } diff --git a/pkg/protocol/chain_manager_test.go b/pkg/protocol/chains_test.go similarity index 93% rename from pkg/protocol/chain_manager_test.go rename to pkg/protocol/chains_test.go index e1f30ccd0..bb197a7d3 100644 --- a/pkg/protocol/chain_manager_test.go +++ b/pkg/protocol/chains_test.go @@ -15,7 +15,7 @@ import ( func TestChainManager(t *testing.T) { testAPI := tpkg.TestAPI rootCommitment := model.NewEmptyCommitment(testAPI) - chainManager := NewChainManager(rootCommitment) + chainManager := NewChains(rootCommitment) chainManager.ChainSwitching.heaviestAttestedCandidate.OnUpdate(func(oldValue, newValue *Chain) { fmt.Println("CandidateChain", oldValue, newValue) @@ -69,8 +69,8 @@ func TestChainManager(t *testing.T) { require.True(t, commitment3Metadata.InSyncRange().Get()) require.False(t, commitment3Metadata.RequestBlocks().Get()) require.True(t, commitment3Metadata.Solid().WasTriggered()) - require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().Get().LatestCommitment().Get().Index()) - require.Equal(t, uint64(3), commitment3Metadata.Chain().Get().ClaimedWeight().Get()) + require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().LatestCommitment().Index()) + require.Equal(t, uint64(3), commitment3Metadata.Chain().ClaimedWeight().Get()) commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index c1f68ea87..d3e00a551 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -12,14 +12,15 @@ type Commitment struct { parent reactive.Variable[*Commitment] successor reactive.Variable[*Commitment] + children reactive.Set[*Commitment] spawnedChain reactive.Variable[*Chain] chain reactive.Variable[*Chain] solid reactive.Event attested reactive.Event verified reactive.Event - inSyncRange *inSyncRange - requestBlocks *requestBlocks - requestAttestations *requestAttestations + inSyncRange *commitmentInSyncRange + requestBlocks *commitmentRequestBlocks + requestAttestations *commitmentRequestAttestations evicted reactive.Event } @@ -28,6 +29,7 @@ func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment Commitment: commitment, parent: reactive.NewVariable[*Commitment](), successor: reactive.NewVariable[*Commitment](), + children: reactive.NewSet[*Commitment](), spawnedChain: reactive.NewVariable[*Chain](), chain: reactive.NewVariable[*Chain](), solid: reactive.NewEvent(), @@ -36,9 +38,9 @@ func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment evicted: reactive.NewEvent(), } - c.inSyncRange = newInSyncRange(c, lo.First(optIsRoot)) - c.requestBlocks = newRequestBlocks(c, lo.First(optIsRoot)) - c.requestAttestations = newRequestAttestations(c) + c.inSyncRange = newCommitmentInSyncRange(c, lo.First(optIsRoot)) + c.requestBlocks = newCommitmentRequestBlocks(c, lo.First(optIsRoot)) + c.requestAttestations = newCommitmentRequestAttestations(c) c.parent.OnUpdate(func(_, parent *Commitment) { c.solid.InheritFrom(parent.solid) }) @@ -65,11 +67,19 @@ func (c *Commitment) Successor() reactive.Variable[*Commitment] { return c.successor } +func (c *Commitment) Children() reactive.Set[*Commitment] { + return c.children +} + func (c *Commitment) SpawnedChain() reactive.Variable[*Chain] { return c.spawnedChain } -func (c *Commitment) Chain() reactive.Variable[*Chain] { +func (c *Commitment) Chain() *Chain { + return c.chain.Get() +} + +func (c *Commitment) ChainR() reactive.Variable[*Chain] { return c.chain } @@ -114,13 +124,15 @@ func (c *Commitment) setParent(parent *Commitment) { } func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { - c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { - return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) - }) + if c.children.Add(newChild) { + c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { + return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) + }) - unsubscribe := c.successor.OnUpdate(onSuccessorUpdated) + unsubscribe := c.successor.OnUpdate(onSuccessorUpdated) - c.evicted.OnTrigger(unsubscribe) + c.evicted.OnTrigger(unsubscribe) + } } func (c *Commitment) chainUpdater(parent *Commitment) func(*Commitment, *Commitment) { @@ -163,3 +175,133 @@ func (c *Commitment) max(other *Commitment) *Commitment { return c } + +type commitmentInSyncRange struct { + reactive.Variable[bool] + + aboveLatestVerifiedCommitment *commitmentAboveLatestVerifiedCommitment + isBelowSyncThreshold reactive.Event +} + +func newCommitmentInSyncRange(commitment *Commitment, isRoot bool) *commitmentInSyncRange { + i := &commitmentInSyncRange{ + aboveLatestVerifiedCommitment: newCommitmentAboveLatestVerifiedCommitment(commitment), + isBelowSyncThreshold: reactive.NewEvent(), + } + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { + return commitment.inSyncRange.isBelowSyncThreshold + }, commitment, (*Chain).SyncThreshold) + }) + + if isRoot { + i.isBelowSyncThreshold.Set(true) + } + + i.Variable = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { + return belowSyncThreshold && aboveLatestVerifiedCommitment + }, i.isBelowSyncThreshold, newCommitmentAboveLatestVerifiedCommitment(commitment)) + + return i +} + +type commitmentAboveLatestVerifiedCommitment struct { + reactive.Variable[bool] + + parentVerified reactive.Event + + parentAboveLatestVerifiedCommitment reactive.Variable[bool] + + directlyAboveLatestVerifiedCommitment reactive.Variable[bool] +} + +func newCommitmentAboveLatestVerifiedCommitment(commitment *Commitment) *commitmentAboveLatestVerifiedCommitment { + a := &commitmentAboveLatestVerifiedCommitment{ + parentVerified: reactive.NewEvent(), + parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), + } + + a.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { + return parentVerified && !verified + }, a.parentVerified, commitment.verified) + + a.Variable = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { + return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment + }, a.directlyAboveLatestVerifiedCommitment, a.parentAboveLatestVerifiedCommitment) + + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { + a.parentVerified.InheritFrom(parent.verified) + a.parentAboveLatestVerifiedCommitment.InheritFrom(parent.inSyncRange.aboveLatestVerifiedCommitment) + }) + + return a +} + +type commitmentRequestAttestations struct { + reactive.Variable[bool] + + parentAttested reactive.Event + + isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] +} + +func newCommitmentRequestAttestations(commitment *Commitment) *commitmentRequestAttestations { + c := &commitmentRequestAttestations{ + Variable: reactive.NewVariable[bool](), + parentAttested: reactive.NewEvent(), + } + + c.isDirectlyAboveLatestAttestedCommitment = reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { + return parentAttested && !attested + }, c.parentAttested, commitment.attested) + + commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { c.parentAttested.InheritFrom(parent.attested) }) + + var attestationRequestedByChain reactive.DerivedVariable[bool] + + commitment.chain.OnUpdate(func(_, newChain *Chain) { + // cleanup the old chain specific derived variable if it exists + if attestationRequestedByChain != nil { + attestationRequestedByChain.Unsubscribe() + } + + // create a chain specific derived variable + attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { + return requestAttestations && isDirectlyAboveLatestAttestedCommitment + }, newChain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) + + // expose the chain specific derived variable to the commitment property + c.InheritFrom(attestationRequestedByChain) + }) + + return c +} + +type commitmentRequestBlocks struct { + reactive.Variable[bool] + + isBelowWarpSyncThreshold reactive.Event +} + +func newCommitmentRequestBlocks(commitment *Commitment, isRoot bool) *commitmentRequestBlocks { + r := &commitmentRequestBlocks{ + isBelowWarpSyncThreshold: reactive.NewEvent(), + } + + if isRoot { + r.isBelowWarpSyncThreshold.Set(true) + } + + r.Variable = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { + return inSyncWindow && belowWarpSyncThreshold + }, commitment.inSyncRange, r.isBelowWarpSyncThreshold) + + commitment.parent.OnUpdate(func(_, parent *Commitment) { + triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { + return commitment.requestBlocks.isBelowWarpSyncThreshold + }, commitment, (*Chain).WarpSyncThreshold) + }) + + return r +} diff --git a/pkg/protocol/engine/consensus/blockgadget/gadget.go b/pkg/protocol/engine/consensus/blockgadget/gadget.go index 2fe562c37..733e9cf70 100644 --- a/pkg/protocol/engine/consensus/blockgadget/gadget.go +++ b/pkg/protocol/engine/consensus/blockgadget/gadget.go @@ -1,12 +1,22 @@ package blockgadget import ( + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" + iotago "github.com/iotaledger/iota.go/v4" ) type Gadget interface { module.Interface + LastAcceptedBlockIndex() iotago.SlotIndex + + LastAcceptedBlockIndexR() reactive.Variable[iotago.SlotIndex] + + LastConfirmedBlockIndex() iotago.SlotIndex + + LastConfirmedBlockIndexR() reactive.Variable[iotago.SlotIndex] + TrackWitnessWeight(votingBlock *blocks.Block) } diff --git a/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go b/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go index 6a54a6a2c..cb6c3cce6 100644 --- a/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go +++ b/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go @@ -4,6 +4,7 @@ import ( "fmt" "github.com/iotaledger/hive.go/ds" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/walker" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" @@ -24,6 +25,9 @@ type Gadget struct { seatManager seatmanager.SeatManager blockCache *blocks.Blocks + lastAcceptedBlockIndex reactive.Variable[iotago.SlotIndex] + lastConfirmedBlockIndex reactive.Variable[iotago.SlotIndex] + optsAcceptanceThreshold float64 optsConfirmationThreshold float64 optsConfirmationRatificationThreshold iotago.SlotIndex @@ -50,18 +54,55 @@ func New(blockCache *blocks.Blocks, seatManager seatmanager.SeatManager, opts .. seatManager: seatManager, blockCache: blockCache, + lastAcceptedBlockIndex: reactive.NewVariable[iotago.SlotIndex](), + lastConfirmedBlockIndex: reactive.NewVariable[iotago.SlotIndex](), + optsAcceptanceThreshold: 0.67, optsConfirmationThreshold: 0.67, optsConfirmationRatificationThreshold: 2, - }, opts, - (*Gadget).TriggerConstructed, - ) + }, opts, func(g *Gadget) { + g.events.BlockAccepted.Hook(func(block *blocks.Block) { + g.lastAcceptedBlockIndex.Compute(func(lastAcceptedBlockIndex iotago.SlotIndex) iotago.SlotIndex { + if block.ID().Index() < lastAcceptedBlockIndex { + return lastAcceptedBlockIndex + } + + return block.ID().Index() + }) + }) + + g.events.BlockConfirmed.Hook(func(block *blocks.Block) { + g.lastConfirmedBlockIndex.Compute(func(lastConfirmedBlockIndex iotago.SlotIndex) iotago.SlotIndex { + if block.ID().Index() < lastConfirmedBlockIndex { + return lastConfirmedBlockIndex + } + + return block.ID().Index() + }) + }) + }, (*Gadget).TriggerConstructed) } func (g *Gadget) Events() *blockgadget.Events { return g.events } +func (g *Gadget) LastAcceptedBlockIndex() iotago.SlotIndex { + return g.lastAcceptedBlockIndex.Get() +} + +func (g *Gadget) LastAcceptedBlockIndexR() reactive.Variable[iotago.SlotIndex] { + return g.lastAcceptedBlockIndex +} + +func (g *Gadget) LastConfirmedBlockIndex() iotago.SlotIndex { + return g.lastConfirmedBlockIndex.Get() +} + +func (g *Gadget) LastConfirmedBlockIndexR() reactive.Variable[iotago.SlotIndex] { + return g.lastConfirmedBlockIndex +} + func (g *Gadget) Shutdown() { g.TriggerStopped() } diff --git a/pkg/protocol/engine/consensus/slotgadget/slotgadget.go b/pkg/protocol/engine/consensus/slotgadget/slotgadget.go index 3d6b6eb56..128788ace 100644 --- a/pkg/protocol/engine/consensus/slotgadget/slotgadget.go +++ b/pkg/protocol/engine/consensus/slotgadget/slotgadget.go @@ -1,9 +1,15 @@ package slotgadget import ( + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/runtime/module" + iotago "github.com/iotaledger/iota.go/v4" ) type Gadget interface { + LatestFinalizedSlot() iotago.SlotIndex + + LatestFinalizedSlotR() reactive.Variable[iotago.SlotIndex] + module.Interface } diff --git a/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go b/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go index 9f5c25a45..4e5b227ff 100644 --- a/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go +++ b/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go @@ -1,6 +1,7 @@ package totalweightslotgadget import ( + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" @@ -27,7 +28,7 @@ type Gadget struct { slotTrackers *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *slottracker.SlotTracker] seatManager seatmanager.SeatManager - lastFinalizedSlot iotago.SlotIndex + lastFinalizedSlot reactive.Variable[iotago.SlotIndex] storeLastFinalizedSlotFunc func(index iotago.SlotIndex) mutex syncutils.RWMutex @@ -38,6 +39,14 @@ type Gadget struct { module.Module } +func (g *Gadget) LatestFinalizedSlot() iotago.SlotIndex { + return g.lastFinalizedSlot.Get() +} + +func (g *Gadget) LatestFinalizedSlotR() reactive.Variable[iotago.SlotIndex] { + return g.lastFinalizedSlot +} + func NewProvider(opts ...options.Option[Gadget]) module.Provider[*engine.Engine, slotgadget.Gadget] { return module.Provide(func(e *engine.Engine) slotgadget.Gadget { return options.Apply(&Gadget{ @@ -69,7 +78,7 @@ func NewProvider(opts ...options.Option[Gadget]) module.Provider[*engine.Engine, func() { g.mutex.Lock() defer g.mutex.Unlock() - g.lastFinalizedSlot = e.Storage.Permanent.Settings().LatestFinalizedSlot() + g.lastFinalizedSlot.Set(e.Storage.Permanent.Settings().LatestFinalizedSlot()) }() g.TriggerInitialized() @@ -86,7 +95,7 @@ func (g *Gadget) Shutdown() { } func (g *Gadget) setLastFinalizedSlot(i iotago.SlotIndex) { - g.lastFinalizedSlot = i + g.lastFinalizedSlot.Set(i) g.storeLastFinalizedSlotFunc(i) } @@ -99,7 +108,7 @@ func (g *Gadget) trackVotes(block *blocks.Block) { return slottracker.NewSlotTracker() }) - prevLatestSlot, latestSlot, updated := tracker.TrackVotes(block.SlotCommitmentID().Index(), block.ProtocolBlock().IssuerID, g.lastFinalizedSlot) + prevLatestSlot, latestSlot, updated := tracker.TrackVotes(block.SlotCommitmentID().Index(), block.ProtocolBlock().IssuerID, g.lastFinalizedSlot.Get()) if !updated { return nil } @@ -117,7 +126,7 @@ func (g *Gadget) trackVotes(block *blocks.Block) { func (g *Gadget) refreshSlotFinalization(tracker *slottracker.SlotTracker, previousLatestSlotIndex iotago.SlotIndex, newLatestSlotIndex iotago.SlotIndex) (finalizedSlots []iotago.SlotIndex) { committeeTotalSeats := g.seatManager.SeatCount() - for i := lo.Max(g.lastFinalizedSlot, previousLatestSlotIndex) + 1; i <= newLatestSlotIndex; i++ { + for i := lo.Max(g.lastFinalizedSlot.Get(), previousLatestSlotIndex) + 1; i <= newLatestSlotIndex; i++ { attestorsTotalSeats := len(tracker.Voters(i)) if !votes.IsThresholdReached(attestorsTotalSeats, committeeTotalSeats, g.optsSlotFinalizationThreshold) { diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index 82b31b51a..13606b06d 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -273,6 +273,10 @@ func (e *Engine) Block(id iotago.BlockID) (*model.Block, bool) { return modelBlock, modelBlock != nil } +func (e *Engine) LatestCommitment() *model.Commitment { + return e.Storage.Settings().LatestCommitment() +} + func (e *Engine) IsBootstrapped() (isBootstrapped bool) { e.isBootstrappedMutex.Lock() defer e.isBootstrappedMutex.Unlock() diff --git a/pkg/protocol/engine_manager.go b/pkg/protocol/engine_manager.go deleted file mode 100644 index 57d22bdf0..000000000 --- a/pkg/protocol/engine_manager.go +++ /dev/null @@ -1,99 +0,0 @@ -package protocol - -import ( - "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/hive.go/runtime/workerpool" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" - "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" - "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" - "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" - "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" - "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" - "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" - "github.com/iotaledger/iota-core/pkg/retainer" - "github.com/iotaledger/iota-core/pkg/storage" -) - -type EngineManager struct { - protocol *Protocol - - *enginemanager.EngineManager -} - -func NewEngineManager( - protocol *Protocol, - workers *workerpool.Group, - errorHandler func(error), - dir string, - dbVersion byte, - storageOptions []options.Option[storage.Storage], - engineOptions []options.Option[engine.Engine], - filterProvider module.Provider[*engine.Engine, filter.Filter], - commitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter], - blockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG], - bookerProvider module.Provider[*engine.Engine, booker.Booker], - clockProvider module.Provider[*engine.Engine, clock.Clock], - blockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget], - slotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget], - sybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection], - notarizationProvider module.Provider[*engine.Engine, notarization.Notarization], - attestationProvider module.Provider[*engine.Engine, attestation.Attestations], - ledgerProvider module.Provider[*engine.Engine, ledger.Ledger], - schedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler], - tipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager], - tipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection], - retainerProvider module.Provider[*engine.Engine, retainer.Retainer], - upgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator], -) *EngineManager { - e := &EngineManager{ - EngineManager: enginemanager.New( - workers, - errorHandler, - dir, - dbVersion, - storageOptions, - engineOptions, - filterProvider, - commitmentFilterProvider, - blockDAGProvider, - bookerProvider, - clockProvider, - blockGadgetProvider, - slotGadgetProvider, - sybilProtectionProvider, - notarizationProvider, - attestationProvider, - ledgerProvider, - schedulerProvider, - tipManagerProvider, - tipSelectionProvider, - retainerProvider, - upgradeOrchestratorProvider, - ), - - protocol: protocol, - } - - protocol.chainCreated.Hook(func(chain *Chain) { - chain.engine.instantiate.OnUpdate(func(_, instantiate bool) { - - }) - }) - - return e -} - -func (e *EngineManager) MainInstance() *engine.Engine { - return nil -} diff --git a/pkg/protocol/engine_variable.go b/pkg/protocol/engine_variable.go deleted file mode 100644 index c8f88d320..000000000 --- a/pkg/protocol/engine_variable.go +++ /dev/null @@ -1,44 +0,0 @@ -package protocol - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/protocol/engine" -) - -type engineVariable struct { - reactive.Variable[*engine.Engine] - - parentEngine reactive.Variable[*engine.Engine] - - spawnedEngine reactive.Variable[*engine.Engine] - - // instantiated is a flag that indicates whether this chain shall be instantiated. - instantiate reactive.Variable[bool] -} - -func newEngineVariable(commitment *Commitment, optStartingEngine ...*engine.Engine) *engineVariable { - e := &engineVariable{ - parentEngine: reactive.NewVariable[*engine.Engine](), - instantiate: reactive.NewVariable[bool](), - spawnedEngine: reactive.NewVariable[*engine.Engine](), - } - - e.Variable = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { - if spawnedEngine != nil { - return spawnedEngine - } - - return parentEngine - }, e.spawnedEngine, e.parentEngine) - - if startingEngine := lo.First(optStartingEngine); startingEngine != nil { - e.spawnedEngine.Set(startingEngine) - } else { - commitment.parent.OnUpdate(func(_, parent *Commitment) { - e.parentEngine.InheritFrom(parent.Engine()) - }) - } - - return e -} diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go new file mode 100644 index 000000000..66c87fec8 --- /dev/null +++ b/pkg/protocol/engines.go @@ -0,0 +1,65 @@ +package protocol + +import ( + "fmt" + + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" +) + +type Engines struct { + MainEngineEvents *engine.Events + + protocol *Protocol + + *enginemanager.EngineManager +} + +func NewEngines( + protocol *Protocol, +) *Engines { + e := &Engines{ + MainEngineEvents: engine.NewEvents(), + EngineManager: enginemanager.New( + protocol.Workers, + func(err error) { + fmt.Println(err) + }, + protocol.Options.BaseDirectory, + 3, + protocol.Options.StorageOptions, + protocol.Options.EngineOptions, + protocol.Options.FilterProvider, + protocol.Options.CommitmentFilterProvider, + protocol.Options.BlockDAGProvider, + protocol.Options.BookerProvider, + protocol.Options.ClockProvider, + protocol.Options.BlockGadgetProvider, + protocol.Options.SlotGadgetProvider, + protocol.Options.SybilProtectionProvider, + protocol.Options.NotarizationProvider, + protocol.Options.AttestationProvider, + protocol.Options.LedgerProvider, + protocol.Options.SchedulerProvider, + protocol.Options.TipManagerProvider, + protocol.Options.TipSelectionProvider, + protocol.Options.RetainerProvider, + protocol.Options.UpgradeOrchestratorProvider, + ), + + protocol: protocol, + } + + protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { e.MainEngineEvents.LinkTo(engine.Events) }) + + return e +} + +func (e *Engines) MainEngine() *engine.Engine { + return nil +} + +func (e *Engines) MainEngineR() reactive.Variable[*engine.Engine] { + return nil +} diff --git a/pkg/protocol/in_sync_range.go b/pkg/protocol/in_sync_range.go deleted file mode 100644 index 099b768e3..000000000 --- a/pkg/protocol/in_sync_range.go +++ /dev/null @@ -1,65 +0,0 @@ -package protocol - -import "github.com/iotaledger/hive.go/ds/reactive" - -type inSyncRange struct { - reactive.Variable[bool] - - aboveLatestVerifiedCommitment *aboveLatestVerifiedCommitmentVariable - isBelowSyncThreshold reactive.Event -} - -func newInSyncRange(commitment *Commitment, isRoot bool) *inSyncRange { - i := &inSyncRange{ - aboveLatestVerifiedCommitment: newAboveLatestVerifiedCommitmentVariable(commitment), - isBelowSyncThreshold: reactive.NewEvent(), - } - - commitment.parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.inSyncRange.isBelowSyncThreshold - }, commitment, (*Chain).SyncThreshold) - }) - - if isRoot { - i.isBelowSyncThreshold.Set(true) - } - - i.Variable = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { - return belowSyncThreshold && aboveLatestVerifiedCommitment - }, i.isBelowSyncThreshold, newAboveLatestVerifiedCommitmentVariable(commitment)) - - return i -} - -type aboveLatestVerifiedCommitmentVariable struct { - reactive.Variable[bool] - - parentVerified reactive.Event - - parentAboveLatestVerifiedCommitment reactive.Variable[bool] - - directlyAboveLatestVerifiedCommitment reactive.Variable[bool] -} - -func newAboveLatestVerifiedCommitmentVariable(commitment *Commitment) *aboveLatestVerifiedCommitmentVariable { - a := &aboveLatestVerifiedCommitmentVariable{ - parentVerified: reactive.NewEvent(), - parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - } - - a.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { - return parentVerified && !verified - }, a.parentVerified, commitment.verified) - - a.Variable = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { - return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment - }, a.directlyAboveLatestVerifiedCommitment, a.parentAboveLatestVerifiedCommitment) - - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { - a.parentVerified.InheritFrom(parent.verified) - a.parentAboveLatestVerifiedCommitment.InheritFrom(parent.inSyncRange.aboveLatestVerifiedCommitment) - }) - - return a -} diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go new file mode 100644 index 000000000..f79da681d --- /dev/null +++ b/pkg/protocol/network.go @@ -0,0 +1,49 @@ +package protocol + +import ( + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/network" + "github.com/iotaledger/iota-core/pkg/network/protocols/core" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/merklehasher" +) + +type Network struct { + events *core.Events +} + +func (n *Network) OnBlockReceived(callback func(block *model.Block, src network.PeerID)) (unsubscribe func()) { + return n.events.BlockReceived.Hook(callback).Unhook +} + +func (n *Network) OnBlockRequestReceived(callback func(blockID iotago.BlockID, src network.PeerID)) (unsubscribe func()) { + return n.events.BlockRequestReceived.Hook(callback).Unhook +} + +func (n *Network) OnSlotCommitmentReceived(callback func(commitment *model.Commitment, src network.PeerID)) (unsubscribe func()) { + return n.events.SlotCommitmentReceived.Hook(callback).Unhook +} + +func (n *Network) OnSlotCommitmentRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { + return n.events.SlotCommitmentRequestReceived.Hook(callback).Unhook +} + +func (n *Network) AttestationsReceived(callback func(*model.Commitment, []*iotago.Attestation, *merklehasher.Proof[iotago.Identifier], network.PeerID)) (unsubscribe func()) { + return n.events.AttestationsReceived.Hook(callback).Unhook +} + +func (n *Network) AttestationsRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { + return n.events.AttestationsRequestReceived.Hook(callback).Unhook +} + +func (n *Network) WarpSyncRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { + return n.events.WarpSyncRequestReceived.Hook(callback).Unhook +} + +func (n *Network) WarpSyncResponseReceived(callback func(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], src network.PeerID)) (unsubscribe func()) { + return n.events.WarpSyncResponseReceived.Hook(callback).Unhook +} + +func (n *Network) OnError(callback func(err error, src network.PeerID)) (unsubscribe func()) { + return n.events.Error.Hook(callback).Unhook +} diff --git a/pkg/protocol/options.go b/pkg/protocol/options.go new file mode 100644 index 000000000..d7d942175 --- /dev/null +++ b/pkg/protocol/options.go @@ -0,0 +1,222 @@ +package protocol + +import ( + "github.com/iotaledger/hive.go/runtime/module" + "github.com/iotaledger/hive.go/runtime/options" + "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" + "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation/slotattestation" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag/inmemoryblockdag" + "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" + "github.com/iotaledger/iota-core/pkg/protocol/engine/booker/inmemorybooker" + "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" + "github.com/iotaledger/iota-core/pkg/protocol/engine/clock/blocktime" + "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter/accountsfilter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" + "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler/drr" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget" + "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/filter/blockfilter" + "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" + ledger1 "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger/ledger" + "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" + "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization/slotnotarization" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" + tipmanagerv1 "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager/v1" + "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" + tipselectionv1 "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection/v1" + "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" + "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade/signalingupgradeorchestrator" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" + "github.com/iotaledger/iota-core/pkg/protocol/syncmanager" + "github.com/iotaledger/iota-core/pkg/protocol/syncmanager/trivialsyncmanager" + "github.com/iotaledger/iota-core/pkg/retainer" + retainer1 "github.com/iotaledger/iota-core/pkg/retainer/retainer" + "github.com/iotaledger/iota-core/pkg/storage" +) + +type Options struct { + BaseDirectory string + SnapshotPath string + ChainSwitchingThreshold int + + EngineOptions []options.Option[engine.Engine] + ChainManagerOptions []options.Option[chainmanager.Manager] + StorageOptions []options.Option[storage.Storage] + + FilterProvider module.Provider[*engine.Engine, filter.Filter] + CommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] + BlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] + TipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] + TipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] + BookerProvider module.Provider[*engine.Engine, booker.Booker] + ClockProvider module.Provider[*engine.Engine, clock.Clock] + BlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] + SlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] + SybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] + NotarizationProvider module.Provider[*engine.Engine, notarization.Notarization] + AttestationProvider module.Provider[*engine.Engine, attestation.Attestations] + SyncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager] + LedgerProvider module.Provider[*engine.Engine, ledger.Ledger] + RetainerProvider module.Provider[*engine.Engine, retainer.Retainer] + SchedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] + UpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] +} + +func NewOptions() *Options { + return &Options{ + BaseDirectory: "", + ChainSwitchingThreshold: 3, + + FilterProvider: blockfilter.NewProvider(), + CommitmentFilterProvider: accountsfilter.NewProvider(), + BlockDAGProvider: inmemoryblockdag.NewProvider(), + TipManagerProvider: tipmanagerv1.NewProvider(), + TipSelectionProvider: tipselectionv1.NewProvider(), + BookerProvider: inmemorybooker.NewProvider(), + ClockProvider: blocktime.NewProvider(), + BlockGadgetProvider: thresholdblockgadget.NewProvider(), + SlotGadgetProvider: totalweightslotgadget.NewProvider(), + SybilProtectionProvider: sybilprotectionv1.NewProvider(), + NotarizationProvider: slotnotarization.NewProvider(), + AttestationProvider: slotattestation.NewProvider(), + SyncManagerProvider: trivialsyncmanager.NewProvider(), + LedgerProvider: ledger1.NewProvider(), + RetainerProvider: retainer1.NewProvider(), + SchedulerProvider: drr.NewProvider(), + UpgradeOrchestratorProvider: signalingupgradeorchestrator.NewProvider(), + } +} + +func WithBaseDirectory(baseDirectory string) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.BaseDirectory = baseDirectory + } +} + +func WithSnapshotPath(snapshot string) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.SnapshotPath = snapshot + } +} + +func WithChainSwitchingThreshold(threshold int) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.ChainSwitchingThreshold = threshold + } +} + +func WithFilterProvider(optsFilterProvider module.Provider[*engine.Engine, filter.Filter]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.FilterProvider = optsFilterProvider + } +} + +func WithCommitmentFilterProvider(optsCommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.CommitmentFilterProvider = optsCommitmentFilterProvider + } +} + +func WithBlockDAGProvider(optsBlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.BlockDAGProvider = optsBlockDAGProvider + } +} + +func WithTipManagerProvider(optsTipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.TipManagerProvider = optsTipManagerProvider + } +} + +func WithTipSelectionProvider(optsTipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.TipSelectionProvider = optsTipSelectionProvider + } +} + +func WithBookerProvider(optsBookerProvider module.Provider[*engine.Engine, booker.Booker]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.BookerProvider = optsBookerProvider + } +} + +func WithClockProvider(optsClockProvider module.Provider[*engine.Engine, clock.Clock]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.ClockProvider = optsClockProvider + } +} + +func WithSybilProtectionProvider(optsSybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.SybilProtectionProvider = optsSybilProtectionProvider + } +} + +func WithBlockGadgetProvider(optsBlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.BlockGadgetProvider = optsBlockGadgetProvider + } +} + +func WithSlotGadgetProvider(optsSlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.SlotGadgetProvider = optsSlotGadgetProvider + } +} + +func WithEpochGadgetProvider(optsEpochGadgetProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.SybilProtectionProvider = optsEpochGadgetProvider + } +} + +func WithNotarizationProvider(optsNotarizationProvider module.Provider[*engine.Engine, notarization.Notarization]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.NotarizationProvider = optsNotarizationProvider + } +} + +func WithAttestationProvider(optsAttestationProvider module.Provider[*engine.Engine, attestation.Attestations]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.AttestationProvider = optsAttestationProvider + } +} + +func WithLedgerProvider(optsLedgerProvider module.Provider[*engine.Engine, ledger.Ledger]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.LedgerProvider = optsLedgerProvider + } +} + +func WithUpgradeOrchestratorProvider(optsUpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.UpgradeOrchestratorProvider = optsUpgradeOrchestratorProvider + } +} + +func WithEngineOptions(opts ...options.Option[engine.Engine]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.EngineOptions = append(p.Options.EngineOptions, opts...) + } +} + +func WithChainManagerOptions(opts ...options.Option[chainmanager.Manager]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.ChainManagerOptions = append(p.Options.ChainManagerOptions, opts...) + } +} + +func WithStorageOptions(opts ...options.Option[storage.Storage]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.StorageOptions = append(p.Options.StorageOptions, opts...) + } +} diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 3b1038fe9..eaaec6182 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -1,95 +1,48 @@ package protocol import ( - "fmt" + "context" - "github.com/iotaledger/hive.go/runtime/module" + "github.com/iotaledger/hive.go/crypto/identity" + "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" - "github.com/iotaledger/iota-core/pkg/protocol" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" - "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" - "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" - "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" - "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" - "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" - "github.com/iotaledger/iota-core/pkg/protocol/syncmanager" - "github.com/iotaledger/iota-core/pkg/retainer" - "github.com/iotaledger/iota-core/pkg/storage" ) type Protocol struct { - optsBaseDirectory string - optsSnapshotPath string + Workers *workerpool.Group - optsEngineOptions []options.Option[engine.Engine] - optsChainManagerOptions []options.Option[chainmanager.Manager] - optsStorageOptions []options.Option[storage.Storage] + *Engines + *Chains + *Network - optsFilterProvider module.Provider[*engine.Engine, filter.Filter] - optsCommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] - optsBlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] - optsTipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] - optsTipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] - optsBookerProvider module.Provider[*engine.Engine, booker.Booker] - optsClockProvider module.Provider[*engine.Engine, clock.Clock] - optsBlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] - optsSlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] - optsSybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] - optsNotarizationProvider module.Provider[*engine.Engine, notarization.Notarization] - optsAttestationProvider module.Provider[*engine.Engine, attestation.Attestations] - optsSyncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager] - optsLedgerProvider module.Provider[*engine.Engine, ledger.Ledger] - optsRetainerProvider module.Provider[*engine.Engine, retainer.Retainer] - optsSchedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] - optsUpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] + errorEvent *event.Event1[error] - *EngineManager - *ChainManager + Options *Options } -func NewProtocol(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { - return options.Apply(&Protocol{}, opts, func(p *Protocol) { - p.EngineManager = NewEngineManager( - p, - workers.CreateGroup("EngineManager"), - func(err error) { - fmt.Println(err) - }, - p.optsBaseDirectory, - protocol.DatabaseVersion, - p.optsStorageOptions, - p.optsEngineOptions, - p.optsFilterProvider, - p.optsCommitmentFilterProvider, - p.optsBlockDAGProvider, - p.optsBookerProvider, - p.optsClockProvider, - p.optsBlockGadgetProvider, - p.optsSlotGadgetProvider, - p.optsSybilProtectionProvider, - p.optsNotarizationProvider, - p.optsAttestationProvider, - p.optsLedgerProvider, - p.optsSchedulerProvider, - p.optsTipManagerProvider, - p.optsTipSelectionProvider, - p.optsRetainerProvider, - p.optsUpgradeOrchestratorProvider, - ) - - p.ChainManager = NewChainManager(p.EngineManager.MainInstance()) +func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { + return options.Apply(&Protocol{ + Workers: workers, + Options: NewOptions(), + }, opts, func(p *Protocol) { + p.Engines = NewEngines(p) + p.Chains = NewChains(p.MainEngine()) }) } + +func (p *Protocol) Run(ctx context.Context) error { + return nil +} + +func (p *Protocol) OnError(callback func(error)) (unsubscribe func()) { + return p.errorEvent.Hook(callback).Unhook +} + +func (p *Protocol) IssueBlock(block *model.Block) error { + p.MainEngine().ProcessBlockFromPeer(block, identity.ID{}) + + return nil +} diff --git a/pkg/protocol/protocol_parameters.go b/pkg/protocol/protocol_parameters.go deleted file mode 100644 index ff80ddc9d..000000000 --- a/pkg/protocol/protocol_parameters.go +++ /dev/null @@ -1,46 +0,0 @@ -package protocol - -import ( - "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" - "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" - "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" - "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" - "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" - "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" - "github.com/iotaledger/iota-core/pkg/retainer" - "github.com/iotaledger/iota-core/pkg/storage" -) - -type ProtocolParameters struct { - storageOptions []options.Option[storage.Storage] - engineOptions []options.Option[engine.Engine] - - filterProvider module.Provider[*engine.Engine, filter.Filter] - commitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] - blockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] - bookerProvider module.Provider[*engine.Engine, booker.Booker] - clockProvider module.Provider[*engine.Engine, clock.Clock] - blockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] - slotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] - sybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] - notarizationProvider module.Provider[*engine.Engine, notarization.Notarization] - attestationProvider module.Provider[*engine.Engine, attestation.Attestations] - ledgerProvider module.Provider[*engine.Engine, ledger.Ledger] - schedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] - tipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] - tipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] - retainerProvider module.Provider[*engine.Engine, retainer.Retainer] - upgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] -} diff --git a/pkg/protocol/request_attestations.go b/pkg/protocol/request_attestations.go deleted file mode 100644 index 98d7df677..000000000 --- a/pkg/protocol/request_attestations.go +++ /dev/null @@ -1,43 +0,0 @@ -package protocol - -import "github.com/iotaledger/hive.go/ds/reactive" - -type requestAttestations struct { - reactive.Variable[bool] - - parentAttested reactive.Event - - isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] -} - -func newRequestAttestations(commitment *Commitment) *requestAttestations { - c := &requestAttestations{ - Variable: reactive.NewVariable[bool](), - parentAttested: reactive.NewEvent(), - } - - c.isDirectlyAboveLatestAttestedCommitment = reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { - return parentAttested && !attested - }, c.parentAttested, commitment.attested) - - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { c.parentAttested.InheritFrom(parent.attested) }) - - var attestationRequestedByChain reactive.DerivedVariable[bool] - - commitment.chain.OnUpdate(func(_, newChain *Chain) { - // cleanup the old chain specific derived variable if it exists - if attestationRequestedByChain != nil { - attestationRequestedByChain.Unsubscribe() - } - - // create a chain specific derived variable - attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { - return requestAttestations && isDirectlyAboveLatestAttestedCommitment - }, newChain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) - - // expose the chain specific derived variable to the commitment property - c.InheritFrom(attestationRequestedByChain) - }) - - return c -} diff --git a/pkg/protocol/request_blocks.go b/pkg/protocol/request_blocks.go deleted file mode 100644 index 676772bf5..000000000 --- a/pkg/protocol/request_blocks.go +++ /dev/null @@ -1,31 +0,0 @@ -package protocol - -import "github.com/iotaledger/hive.go/ds/reactive" - -type requestBlocks struct { - reactive.Variable[bool] - - isBelowWarpSyncThreshold reactive.Event -} - -func newRequestBlocks(commitment *Commitment, isRoot bool) *requestBlocks { - r := &requestBlocks{ - isBelowWarpSyncThreshold: reactive.NewEvent(), - } - - if isRoot { - r.isBelowWarpSyncThreshold.Set(true) - } - - r.Variable = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { - return inSyncWindow && belowWarpSyncThreshold - }, commitment.inSyncRange, r.isBelowWarpSyncThreshold) - - commitment.parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.requestBlocks.isBelowWarpSyncThreshold - }, commitment, (*Chain).WarpSyncThreshold) - }) - - return r -} diff --git a/pkg/storage/permanent/settings.go b/pkg/storage/permanent/settings.go index def431988..97ad4ee9d 100644 --- a/pkg/storage/permanent/settings.go +++ b/pkg/storage/permanent/settings.go @@ -518,7 +518,7 @@ func (s *Settings) String() string { builder := stringify.NewStructBuilder("Settings") builder.AddField(stringify.NewStructField("IsSnapshotImported", lo.PanicOnErr(s.store.Has([]byte{snapshotImportedKey})))) - builder.AddField(stringify.NewStructField("LatestCommitment", s.latestCommitment())) + builder.AddField(stringify.NewStructField("LatestCommitmentR", s.latestCommitment())) builder.AddField(stringify.NewStructField("LatestFinalizedSlot", s.latestFinalizedSlot())) if err := s.store.Iterate([]byte{protocolParametersKey}, func(key kvstore.Key, value kvstore.Value) bool { params, _, err := iotago.ProtocolParametersFromBytes(value) diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index 5ed7c0afb..6eeb84a14 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -10,19 +10,18 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { for _, node := range nodes { t.Eventually(func() error { - rootCommitment := node.Protocol.ChainManager.RootCommitment() - chain := node.Protocol.ChainManager.Chain(rootCommitment.ID()) + chain := node.Protocol.MainChain() if chain == nil { return ierrors.Errorf("AssertChainManagerIsSolid: %s: chain is nil", node.Name) } latestChainCommitment := chain.LatestCommitment() - latestCommitment := node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment() + latestCommitment := node.Protocol.MainEngine().Storage.Settings().LatestCommitment() if latestCommitment.ID() != latestChainCommitment.ID() { return ierrors.Errorf("AssertChainManagerIsSolid: %s: latest commitment is not equal, expected %d, got %d", node.Name, latestCommitment.ID(), latestChainCommitment.ID()) } - if !latestChainCommitment.SolidEvent().WasTriggered() { + if !latestChainCommitment.Solid().WasTriggered() { return ierrors.Errorf("AssertChainManagerIsSolid: %s: is not solid", node.Name) } diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 0e004c5f6..715d9f27b 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -11,8 +11,8 @@ func (t *TestSuite) AssertSnapshotImported(imported bool, nodes ...*mock.Node) { for _, node := range nodes { t.Eventually(func() error { - if imported != node.Protocol.MainEngineInstance().Storage.Settings().IsSnapshotImported() { - return ierrors.Errorf("AssertSnapshotImported: %s: expected %v, got %v", node.Name, imported, node.Protocol.MainEngineInstance().Storage.Settings().IsSnapshotImported()) + if imported != node.Protocol.MainEngine().Storage.Settings().IsSnapshotImported() { + return ierrors.Errorf("AssertSnapshotImported: %s: expected %v, got %v", node.Name, imported, node.Protocol.MainEngine().Storage.Settings().IsSnapshotImported()) } return nil @@ -25,8 +25,8 @@ func (t *TestSuite) AssertProtocolParameters(parameters iotago.ProtocolParameter for _, node := range nodes { t.Eventually(func() error { - if !parameters.Equals(node.Protocol.CurrentAPI().ProtocolParameters()) { - return ierrors.Errorf("AssertProtocolParameters: %s: expected %s, got %s", node.Name, parameters, node.Protocol.CurrentAPI().ProtocolParameters()) + if !parameters.Equals(node.Protocol.MainEngine().CurrentAPI().ProtocolParameters()) { + return ierrors.Errorf("AssertProtocolParameters: %s: expected %s, got %s", node.Name, parameters, node.Protocol.MainEngine().CurrentAPI().ProtocolParameters()) } return nil @@ -39,8 +39,8 @@ func (t *TestSuite) AssertLatestCommitment(commitment *iotago.Commitment, nodes for _, node := range nodes { t.Eventually(func() error { - if !commitment.Equals(node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment()) { - return ierrors.Errorf("AssertLatestCommitment: %s: expected %s, got %s", node.Name, commitment, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment()) + if !commitment.Equals(node.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment()) { + return ierrors.Errorf("AssertLatestCommitment: %s: expected %s, got %s", node.Name, commitment, node.Protocol.MainEngine().Storage.Settings().LatestCommitment()) } return nil @@ -53,11 +53,11 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes for _, node := range nodes { t.Eventually(func() error { - if node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().ID().Index() < slot { - return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment with at least %v not found in settings.LatestCommitment()", node.Name, slot) + if node.Protocol.MainEngine().Storage.Settings().LatestCommitment().ID().Index() < slot { + return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment with at least %v not found in settings.LatestCommitmentR()", node.Name, slot) } - cm, err := node.Protocol.MainEngineInstance().Storage.Commitments().Load(slot) + cm, err := node.Protocol.MainEngine().Storage.Commitments().Load(slot) if err != nil { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: expected %v, got error %v", node.Name, slot, err) } @@ -67,7 +67,7 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes } // Make sure the commitment is also available in the ChainManager. - if node.Protocol.ChainManager.RootCommitment().Chain().LatestCommitment().ID().Index() < slot { + if node.Protocol.Chains.MainChain().LatestCommitment().ID().Index() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found in ChainManager", node.Name, slot) } @@ -81,8 +81,8 @@ func (t *TestSuite) AssertLatestCommitmentSlotIndex(slot iotago.SlotIndex, nodes for _, node := range nodes { t.Eventually(func() error { - if slot != node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index() { - return ierrors.Errorf("AssertLatestCommitmentSlotIndex: %s: expected %v, got %v", node.Name, slot, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index()) + if slot != node.Protocol.MainEngine().Storage.Settings().LatestCommitment().Index() { + return ierrors.Errorf("AssertLatestCommitmentSlotIndex: %s: expected %v, got %v", node.Name, slot, node.Protocol.MainEngine().Storage.Settings().LatestCommitment().Index()) } return nil @@ -95,8 +95,8 @@ func (t *TestSuite) AssertLatestCommitmentCumulativeWeight(cw uint64, nodes ...* for _, node := range nodes { t.Eventually(func() error { - if cw != node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().CumulativeWeight() { - return ierrors.Errorf("AssertLatestCommitmentCumulativeWeight: %s: expected %v, got %v", node.Name, cw, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().CumulativeWeight()) + if cw != node.Protocol.MainEngine().Storage.Settings().LatestCommitment().CumulativeWeight() { + return ierrors.Errorf("AssertLatestCommitmentCumulativeWeight: %s: expected %v, got %v", node.Name, cw, node.Protocol.MainEngine().Storage.Settings().LatestCommitment().CumulativeWeight()) } return nil @@ -109,8 +109,8 @@ func (t *TestSuite) AssertLatestFinalizedSlot(slot iotago.SlotIndex, nodes ...*m for _, node := range nodes { t.Eventually(func() error { - if slot != node.Protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot() { - return ierrors.Errorf("AssertLatestFinalizedSlot: %s: expected %d, got %d from settings", node.Name, slot, node.Protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot()) + if slot != node.Protocol.MainEngine().Storage.Settings().LatestFinalizedSlot() { + return ierrors.Errorf("AssertLatestFinalizedSlot: %s: expected %d, got %d from settings", node.Name, slot, node.Protocol.MainEngine().Storage.Settings().LatestFinalizedSlot()) } return nil @@ -123,9 +123,8 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - actualChainID := node.Protocol.MainEngineInstance().ChainID() - if expectedChainID != node.Protocol.MainEngineInstance().ChainID() { - return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Index(), actualChainID, actualChainID.Index()) + if expectedChainID != node.Protocol.MainChain().Root().ID() { + return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Index(), node.Protocol.MainChain().Root().ID(), node.Protocol.MainChain().Root().ID().Index()) } return nil From b77989a7c810480e04e293b7715a2d379503a8d3 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 10:23:14 +0200 Subject: [PATCH 083/356] Refactor: removed unnecessary specification of subcomponents of protocol --- components/dashboard_metrics/component.go | 8 ++++---- components/debugapi/blocks.go | 2 +- components/debugapi/component.go | 4 ++-- components/metrics/metrics_accounts.go | 2 +- components/metrics/metrics_commitments.go | 4 ++-- components/metrics/metrics_conflicts.go | 4 ++-- components/metrics/metrics_scheduler.go | 4 ++-- 7 files changed, 14 insertions(+), 14 deletions(-) diff --git a/components/dashboard_metrics/component.go b/components/dashboard_metrics/component.go index 6b97d4bcf..239103b34 100644 --- a/components/dashboard_metrics/component.go +++ b/components/dashboard_metrics/component.go @@ -109,19 +109,19 @@ func configureComponentCountersEvents() { incComponentCounter(Received) }) - deps.Protocol.Engines.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(_ *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(_ *blocks.Block) { incComponentCounter(Attached) }) - deps.Protocol.Engines.MainEngineEvents.BlockDAG.BlockSolid.Hook(func(b *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockDAG.BlockSolid.Hook(func(b *blocks.Block) { incComponentCounter(Solidified) }) - deps.Protocol.Engines.MainEngineEvents.Booker.BlockBooked.Hook(func(b *blocks.Block) { + deps.Protocol.MainEngineEvents.Booker.BlockBooked.Hook(func(b *blocks.Block) { incComponentCounter(Booked) }) - deps.Protocol.Engines.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(b *blocks.Block) { + deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(b *blocks.Block) { incComponentCounter(Scheduled) }) } diff --git a/components/debugapi/blocks.go b/components/debugapi/blocks.go index b2deee030..f689d008a 100644 --- a/components/debugapi/blocks.go +++ b/components/debugapi/blocks.go @@ -10,7 +10,7 @@ import ( ) func getSlotBlockIDs(index iotago.SlotIndex) (*BlockChangesResponse, error) { - blocksForSlot := deps.Protocol.Engines.MainEngine().Storage.Blocks(index) + blocksForSlot := deps.Protocol.MainEngine().Storage.Blocks(index) if blocksForSlot == nil { return nil, ierrors.Errorf("cannot find block storage bucket for slot %d", index) } diff --git a/components/debugapi/component.go b/components/debugapi/component.go index 85f9d892f..c4032aaf6 100644 --- a/components/debugapi/component.go +++ b/components/debugapi/component.go @@ -85,13 +85,13 @@ func configure() error { routeGroup := deps.RestRouteManager.AddRoute("debug/v2") - deps.Protocol.Engines.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { blocksPerSlot.Set(block.ID().Index(), append(lo.Return1(blocksPerSlot.GetOrCreate(block.ID().Index(), func() []*blocks.Block { return make([]*blocks.Block, 0) })), block)) }) - deps.Protocol.Engines.MainEngineEvents.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { + deps.Protocol.MainEngineEvents.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { if index < iotago.SlotIndex(ParamsDebugAPI.PruningThreshold) { return } diff --git a/components/metrics/metrics_accounts.go b/components/metrics/metrics_accounts.go index 0bd308c3e..86043d06a 100644 --- a/components/metrics/metrics_accounts.go +++ b/components/metrics/metrics_accounts.go @@ -25,7 +25,7 @@ var AccountMetrics = collector.NewCollection(accountNamespace, collector.WithInitFunc(func() { deps.Protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { engine.Events.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - accountData, exists, _ := engine.Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.Engines.MainEngine().LatestCommitment().Index()) + accountData, exists, _ := engine.Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.MainEngine().LatestCommitment().Index()) if exists { deps.Collector.Update(accountNamespace, credits, float64(accountData.Credits.Value), accountData.ID.String()) } diff --git a/components/metrics/metrics_commitments.go b/components/metrics/metrics_commitments.go index a94edcf7c..fd22753a0 100644 --- a/components/metrics/metrics_commitments.go +++ b/components/metrics/metrics_commitments.go @@ -29,7 +29,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithLabels("commitment"), collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { - deps.Protocol.Engines.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { deps.Collector.Update(commitmentsNamespace, latestCommitment, float64(details.Commitment.ID().Index()), details.Commitment.ID().String()) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -38,7 +38,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Last commitment finalized by the node."), collector.WithInitFunc(func() { - deps.Protocol.Engines.MainEngineEvents.SlotGadget.SlotFinalized.Hook(func(slot iotago.SlotIndex) { + deps.Protocol.MainEngineEvents.SlotGadget.SlotFinalized.Hook(func(slot iotago.SlotIndex) { deps.Collector.Update(commitmentsNamespace, finalizedCommitment, float64(slot)) }, event.WithWorkerPool(Component.WorkerPool)) }), diff --git a/components/metrics/metrics_conflicts.go b/components/metrics/metrics_conflicts.go index 58833507c..cc907708a 100644 --- a/components/metrics/metrics_conflicts.go +++ b/components/metrics/metrics_conflicts.go @@ -37,7 +37,7 @@ var ConflictMetrics = collector.NewCollection(conflictNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of resolved (accepted) conflicts"), collector.WithInitFunc(func() { - deps.Protocol.Engines.MainEngineEvents.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { + deps.Protocol.MainEngineEvents.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { deps.Collector.Increment(conflictNamespace, resolvedConflictCount) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -46,7 +46,7 @@ var ConflictMetrics = collector.NewCollection(conflictNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of created conflicts"), collector.WithInitFunc(func() { - deps.Protocol.Engines.MainEngineEvents.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { + deps.Protocol.MainEngineEvents.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { deps.Collector.Increment(conflictNamespace, allConflictCounts) }, event.WithWorkerPool(Component.WorkerPool)) }), diff --git a/components/metrics/metrics_scheduler.go b/components/metrics/metrics_scheduler.go index 12d74673e..acb4a580c 100644 --- a/components/metrics/metrics_scheduler.go +++ b/components/metrics/metrics_scheduler.go @@ -42,7 +42,7 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Engines.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { + deps.Protocol.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) @@ -65,7 +65,7 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.Engines.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { + deps.Protocol.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) From f57418505801ded9bc005bf28ff1d62bfb67cad3 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 10:24:43 +0200 Subject: [PATCH 084/356] Refactor: removed Chains specifier --- components/debugapi/commitment.go | 4 ++-- components/protocol/component.go | 2 +- pkg/testsuite/storage_settings.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/debugapi/commitment.go b/components/debugapi/commitment.go index a61bfc0c0..e24f3678a 100644 --- a/components/debugapi/commitment.go +++ b/components/debugapi/commitment.go @@ -13,7 +13,7 @@ import ( ) func chainManagerAllChainsDot() (string, error) { - rootCommitment := deps.Protocol.Chains.MainChain().Root() + rootCommitment := deps.Protocol.MainChain().Root() g := graphviz.New() defer g.Close() @@ -32,7 +32,7 @@ func chainManagerAllChainsDot() (string, error) { } func chainManagerAllChainsRendered() ([]byte, error) { - rootCommitment := deps.Protocol.Chains.MainChain().Root() + rootCommitment := deps.Protocol.MainChain().Root() g := graphviz.New() defer g.Close() diff --git a/components/protocol/component.go b/components/protocol/component.go index 858f21e25..e5a7a0cd4 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -138,7 +138,7 @@ func configure() error { Component.LogDebugf("BlockReceived: %s", block.ID()) }) - deps.Protocol.Chains.OnCommitmentRequested(func(id iotago.CommitmentID) { + deps.Protocol.OnCommitmentRequested(func(id iotago.CommitmentID) { Component.LogDebugf("RequestCommitment: %s", id) }) diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 715d9f27b..f0e9c780a 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -67,7 +67,7 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes } // Make sure the commitment is also available in the ChainManager. - if node.Protocol.Chains.MainChain().LatestCommitment().ID().Index() < slot { + if node.Protocol.MainChain().LatestCommitment().ID().Index() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found in ChainManager", node.Name, slot) } From 518e2a7526a2989d3fae2cac030ce6d869b517df Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 10:28:16 +0200 Subject: [PATCH 085/356] Refactor: changed iteration --- components/debugapi/commitment.go | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/components/debugapi/commitment.go b/components/debugapi/commitment.go index e24f3678a..24eaba55a 100644 --- a/components/debugapi/commitment.go +++ b/components/debugapi/commitment.go @@ -69,10 +69,10 @@ func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *protocol.Commi return nil, parentErr } - for _, childCommitment := range parentCommitment.Children().ToSlice() { + if err = parentCommitment.Children().ForEach(func(childCommitment *protocol.Commitment) error { child, childErr := createNode(graph, childCommitment) if childErr != nil { - return nil, childErr + return childErr } if childCommitment.Chain() == deps.Protocol.MainChain() { @@ -80,11 +80,14 @@ func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *protocol.Commi } if _, edgeErr := graph.CreateEdge(fmt.Sprintf("%s -> %s", parentCommitment.ID().String()[:8], childCommitment.ID().String()[:8]), parent, child); edgeErr != nil { - return nil, ierrors.Wrapf(edgeErr, "could not create edge %s -> %s", parentCommitment.ID().String()[:8], childCommitment.ID().String()[:8]) + return ierrors.Wrapf(edgeErr, "could not create edge %s -> %s", parentCommitment.ID().String()[:8], childCommitment.ID().String()[:8]) } commitmentWalker.Push(childCommitment) + return nil + }); err != nil { + return nil, err } } From 841a843b2d9bd35de3faf5dee4413469b8f9fb91 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 10:34:14 +0200 Subject: [PATCH 086/356] Refactor: reverted changes --- components/metrics/metrics_accounts.go | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/components/metrics/metrics_accounts.go b/components/metrics/metrics_accounts.go index 86043d06a..b00322c25 100644 --- a/components/metrics/metrics_accounts.go +++ b/components/metrics/metrics_accounts.go @@ -5,7 +5,6 @@ import ( "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/components/metrics/collector" - "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" ) @@ -23,15 +22,12 @@ var AccountMetrics = collector.NewCollection(accountNamespace, collector.WithLabels("account"), collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { - deps.Protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { - engine.Events.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - accountData, exists, _ := engine.Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.MainEngine().LatestCommitment().Index()) - if exists { - deps.Collector.Update(accountNamespace, credits, float64(accountData.Credits.Value), accountData.ID.String()) - } - }, event.WithWorkerPool(Component.WorkerPool)) - }) - + deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { + accountData, exists, _ := deps.Protocol.MainEngine().Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.MainEngine().LatestCommitment().Index()) + if exists { + deps.Collector.Update(accountNamespace, credits, float64(accountData.Credits.Value), accountData.ID.String()) + } + }, event.WithWorkerPool(Component.WorkerPool)) }), )), collector.WithMetric(collector.NewMetric(activeSeats, From ff4d210eba74fe62176d509f28fba657e5caaf56 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 10:47:07 +0200 Subject: [PATCH 087/356] Fix: fixed fork metrics --- components/metrics/metrics_commitments.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/components/metrics/metrics_commitments.go b/components/metrics/metrics_commitments.go index fd22753a0..8ac1f8e02 100644 --- a/components/metrics/metrics_commitments.go +++ b/components/metrics/metrics_commitments.go @@ -47,10 +47,10 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of forks seen by the node."), collector.WithInitFunc(func() { - deps.Protocol.OnChainCreated(func(_ *protocol.Chain) { - Component.WorkerPool.Submit(func() { - deps.Collector.Increment(commitmentsNamespace, forksCount) - }) + deps.Protocol.HeaviestVerifiedCandidate().OnUpdate(func(oldValue, newValue *protocol.Chain) { + if oldValue == nil { + Component.WorkerPool.Submit(func() { deps.Collector.Increment(commitmentsNamespace, forksCount) }) + } }) }), )), From 87aa017c2944e274a788554d5e1770543353f891 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 10:48:28 +0200 Subject: [PATCH 088/356] Refactor: fixed condition --- components/metrics/metrics_commitments.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/components/metrics/metrics_commitments.go b/components/metrics/metrics_commitments.go index 8ac1f8e02..bebfd6fe4 100644 --- a/components/metrics/metrics_commitments.go +++ b/components/metrics/metrics_commitments.go @@ -47,8 +47,8 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of forks seen by the node."), collector.WithInitFunc(func() { - deps.Protocol.HeaviestVerifiedCandidate().OnUpdate(func(oldValue, newValue *protocol.Chain) { - if oldValue == nil { + deps.Protocol.HeaviestVerifiedCandidate().OnUpdate(func(oldChain, _ *protocol.Chain) { + if oldChain != nil { Component.WorkerPool.Submit(func() { deps.Collector.Increment(commitmentsNamespace, forksCount) }) } }) From 7aeb4c6250c2313941e8eba6e93ce94b15e9eeef Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 11:02:13 +0200 Subject: [PATCH 089/356] Refactor: reverted changes --- components/metricstracker/component.go | 32 ++++++++++---------------- 1 file changed, 12 insertions(+), 20 deletions(-) diff --git a/components/metricstracker/component.go b/components/metricstracker/component.go index 95de489af..c730c9ec6 100644 --- a/components/metricstracker/component.go +++ b/components/metricstracker/component.go @@ -10,7 +10,6 @@ import ( "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/daemon" "github.com/iotaledger/iota-core/pkg/protocol" - "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" ) @@ -63,29 +62,22 @@ func run() error { if err := Component.Daemon().BackgroundWorker("Metrics Tracker", func(ctx context.Context) { Component.LogInfo("Starting Metrics Tracker ... done") - var unhookFromPreviousEngine func() - - deps.Protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { - if unhookFromPreviousEngine != nil { - unhookFromPreviousEngine() - } - - unhookFromPreviousEngine = lo.Batch( - engine.Events.BlockDAG.BlockAttached.Hook(func(b *blocks.Block) { - deps.MetricsTracker.metrics.Blocks.Inc() - }, event.WithWorkerPool(Component.WorkerPool)).Unhook, - engine.Events.Notarization.SlotCommitted.Hook(func(_ *notarization.SlotCommittedDetails) { - deps.MetricsTracker.measure() - }, event.WithWorkerPool(Component.WorkerPool)).Unhook, - engine.Events.BlockGadget.BlockConfirmed.Hook(func(b *blocks.Block) { - deps.MetricsTracker.metrics.ConfirmedBlocks.Inc() - }, event.WithWorkerPool(Component.WorkerPool)).Unhook, - ) - }) + unhook := lo.Batch( + deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(b *blocks.Block) { + deps.MetricsTracker.metrics.Blocks.Inc() + }, event.WithWorkerPool(Component.WorkerPool)).Unhook, + deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(_ *notarization.SlotCommittedDetails) { + deps.MetricsTracker.measure() + }, event.WithWorkerPool(Component.WorkerPool)).Unhook, + deps.Protocol.MainEngineEvents.BlockGadget.BlockConfirmed.Hook(func(b *blocks.Block) { + deps.MetricsTracker.metrics.ConfirmedBlocks.Inc() + }, event.WithWorkerPool(Component.WorkerPool)).Unhook, + ) <-ctx.Done() Component.LogInfo("Stopping Metrics Tracker ...") + unhook() Component.LogInfo("Stopping Metrics Tracker ... done") }, daemon.PriorityDashboardMetrics); err != nil { Component.LogPanicf("failed to start worker: %s", err) From 982badfea8c3b309ec145043973f60d6f8f9baed Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 11:24:19 +0200 Subject: [PATCH 090/356] Refactor: reverted changes --- components/protocol/component.go | 194 +++++++++++++++---------------- pkg/protocol/protocol.go | 7 +- 2 files changed, 97 insertions(+), 104 deletions(-) diff --git a/components/protocol/component.go b/components/protocol/component.go index e5a7a0cd4..006931f25 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -17,7 +17,6 @@ import ( "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/network/p2p" "github.com/iotaledger/iota-core/pkg/protocol" - "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation/slotattestation" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" @@ -130,143 +129,134 @@ func configure() error { Component.LogErrorf("Error in Protocol: %s", err) }) - deps.Protocol.Network.OnError(func(err error, id network.PeerID) { - Component.LogErrorf("NetworkError: %s Source: %s", err.Error(), id) - }) - - deps.Protocol.Network.OnBlockReceived(func(block *model.Block, source network.PeerID) { + deps.Protocol.OnBlockReceived(func(block *model.Block, source network.PeerID) { Component.LogDebugf("BlockReceived: %s", block.ID()) }) - deps.Protocol.OnCommitmentRequested(func(id iotago.CommitmentID) { - Component.LogDebugf("RequestCommitment: %s", id) + deps.Protocol.MainEngineEvents.BlockProcessed.Hook(func(blockID iotago.BlockID) { + Component.LogDebugf("BlockProcessed: %s", blockID) }) - deps.Protocol.OnSlotCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, id network.PeerID) { - Component.LogDebugf("SlotCommitmentRequestReceived: %s", commitmentID) + deps.Protocol.MainEngineEvents.AcceptedBlockProcessed.Hook(func(block *blocks.Block) { + Component.LogDebugf("AcceptedBlockProcessed: %s", block.ID()) }) - deps.Protocol.OnSlotCommitmentReceived(func(commitment *model.Commitment, id network.PeerID) { - Component.LogDebugf("SlotCommitmentReceived: %s", commitment.ID()) + deps.Protocol.MainEngineEvents.Filter.BlockPreFiltered.Hook(func(event *filter.BlockPreFilteredEvent) { + Component.LogDebugf("BlockPreFiltered: %s - %s", event.Block.ID(), event.Reason.Error()) }) - deps.Protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { - engine.Events.BlockProcessed.Hook(func(blockID iotago.BlockID) { - Component.LogDebugf("BlockProcessed: %s", blockID) - }) - - engine.Events.AcceptedBlockProcessed.Hook(func(block *blocks.Block) { - Component.LogDebugf("AcceptedBlockProcessed: %s", block.ID()) - }) + deps.Protocol.MainEngineEvents.Filter.BlockPreAllowed.Hook(func(blk *model.Block) { + Component.LogDebugf("BlockPreAllowed: %s - %s", blk.ID()) + }) - engine.Events.Filter.BlockPreFiltered.Hook(func(event *filter.BlockPreFilteredEvent) { - Component.LogDebugf("BlockPreFiltered: %s - %s", event.Block.ID(), event.Reason.Error()) - }) + deps.Protocol.MainEngineEvents.CommitmentFilter.BlockAllowed.Hook(func(block *blocks.Block) { + Component.LogDebugf("CommitmentFilter.BlockAllowed: %s\n", block.ID()) + }) - engine.Events.Filter.BlockPreAllowed.Hook(func(blk *model.Block) { - Component.LogDebugf("BlockPreAllowed: %s - %s", blk.ID()) - }) + deps.Protocol.MainEngineEvents.CommitmentFilter.BlockFiltered.Hook(func(event *commitmentfilter.BlockFilteredEvent) { + Component.LogWarnf("CommitmentFilter.BlockFiltered: %s - %s\n", event.Block.ID(), event.Reason.Error()) + }) - engine.Events.CommitmentFilter.BlockAllowed.Hook(func(block *blocks.Block) { - Component.LogDebugf("CommitmentFilter.BlockAllowed: %s\n", block.ID()) - }) + deps.Protocol.MainEngineEvents.TipManager.BlockAdded.Hook(func(tip tipmanager.TipMetadata) { + Component.LogDebugf("BlockAdded to tip pool: %s; is strong: %v; is weak: %v", tip.ID(), tip.IsStrongTip(), tip.IsWeakTip()) + }) - engine.Events.CommitmentFilter.BlockFiltered.Hook(func(event *commitmentfilter.BlockFilteredEvent) { - Component.LogWarnf("CommitmentFilter.BlockFiltered: %s - %s\n", event.Block.ID(), event.Reason.Error()) - }) + deps.Protocol.MainEngineEvents.BlockDAG.BlockSolid.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockSolid: %s", block.ID()) + }) - engine.Events.TipManager.BlockAdded.Hook(func(tip tipmanager.TipMetadata) { - Component.LogDebugf("BlockAdded to tip pool: %s; is strong: %v; is weak: %v", tip.ID(), tip.IsStrongTip(), tip.IsWeakTip()) - }) + deps.Protocol.MainEngineEvents.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { + Component.LogDebugf("BlockInvalid in blockDAG: %s, error: %v", block.ID(), err.Error()) + }) - engine.Events.BlockDAG.BlockSolid.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockSolid: %s", block.ID()) - }) + deps.Protocol.MainEngineEvents.Booker.BlockBooked.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockBooked: %s", block.ID()) + }) - engine.Events.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { - Component.LogDebugf("BlockInvalid in blockDAG: %s, error: %v", block.ID(), err.Error()) - }) + deps.Protocol.MainEngineEvents.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { + Component.LogDebugf("BlockInvalid in booker: %s, error: %v", block.ID(), err.Error()) + }) - engine.Events.Booker.BlockBooked.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockBooked: %s", block.ID()) - }) + deps.Protocol.MainEngineEvents.BlockGadget.BlockPreAccepted.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockPreAccepted: %s", block.ID()) + }) - engine.Events.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { - Component.LogDebugf("BlockInvalid in booker: %s, error: %v", block.ID(), err.Error()) - }) + deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockAccepted: %s", block.ID()) + }) - engine.Events.BlockGadget.BlockPreAccepted.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockPreAccepted: %s", block.ID()) - }) + deps.Protocol.MainEngineEvents.BlockGadget.BlockPreConfirmed.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockPreConfirmed: %s", block.ID()) + }) - engine.Events.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockAccepted: %s", block.ID()) - }) + deps.Protocol.MainEngineEvents.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockConfirmed: %s", block.ID()) + }) - engine.Events.BlockGadget.BlockPreConfirmed.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockPreConfirmed: %s", block.ID()) - }) + deps.Protocol.MainEngineEvents.Clock.AcceptedTimeUpdated.Hook(func(time time.Time) { + Component.LogDebugf("AcceptedTimeUpdated: Slot %d @ %s", deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(time), time) + }) - engine.Events.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockConfirmed: %s", block.ID()) - }) + deps.Protocol.MainEngineEvents.Clock.ConfirmedTimeUpdated.Hook(func(time time.Time) { + Component.LogDebugf("ConfirmedTimeUpdated: Slot %d @ %s", deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(time), time) + }) - engine.Events.Clock.AcceptedTimeUpdated.Hook(func(time time.Time) { - Component.LogDebugf("AcceptedTimeUpdated: Slot %d @ %s", deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(time), time) - }) + deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + Component.LogInfof("SlotCommitted: %s - %d", details.Commitment.ID(), details.Commitment.Index()) + }) - engine.Events.Clock.ConfirmedTimeUpdated.Hook(func(time time.Time) { - Component.LogDebugf("ConfirmedTimeUpdated: Slot %d @ %s", deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(time), time) - }) + deps.Protocol.MainEngineEvents.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { + Component.LogInfof("SlotFinalized: %d", index) + }) - engine.Events.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { - Component.LogInfof("SlotCommitted: %s - %d", details.Commitment.ID(), details.Commitment.Index()) - }) + deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockScheduled: %s", block.ID()) + }) - engine.Events.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { - Component.LogInfof("SlotFinalized: %d", index) - }) + deps.Protocol.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, err error) { + Component.LogDebugf("BlockDropped: %s; reason: %s", block.ID(), err) + }) - engine.Events.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockScheduled: %s", block.ID()) - }) + deps.Protocol.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { + Component.LogDebugf("BlockSkipped: %s", block.ID()) + }) - engine.Events.Scheduler.BlockDropped.Hook(func(block *blocks.Block, err error) { - Component.LogDebugf("BlockDropped: %s; reason: %s", block.ID(), err) - }) + deps.Protocol.OnCommitmentRequested(func(id iotago.CommitmentID) { + Component.LogDebugf("RequestCommitment: %s", id) + }) - engine.Events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { - Component.LogDebugf("BlockSkipped: %s", block.ID()) - }) + deps.Protocol.OnSlotCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, id network.PeerID) { + Component.LogDebugf("SlotCommitmentRequestReceived: %s", commitmentID) + }) - engine.Events.SybilProtection.CommitteeSelected.Hook(func(committee *account.Accounts, epoch iotago.EpochIndex) { - Component.LogInfof("CommitteeSelected: Epoch %d - %s (reused: %t)", epoch, committee.IDs(), committee.IsReused()) - }) + deps.Protocol.OnSlotCommitmentReceived(func(commitment *model.Commitment, id network.PeerID) { + Component.LogDebugf("SlotCommitmentReceived: %s", commitment.ID()) + }) - engine.Events.SybilProtection.CommitteeSelected.Hook(func(committee *account.Accounts, epoch iotago.EpochIndex) { - Component.LogInfof("CommitteeSelected: Epoch %d - %s (reused: %t)", epoch, committee.IDs(), committee.IsReused()) - }) + deps.Protocol.MainEngineEvents.SybilProtection.CommitteeSelected.Hook(func(committee *account.Accounts, epoch iotago.EpochIndex) { + Component.LogInfof("CommitteeSelected: Epoch %d - %s (reused: %t)", epoch, committee.IDs(), committee.IsReused()) + }) - engine.Events.SybilProtection.RewardsCommitted.Hook(func(epoch iotago.EpochIndex) { - Component.LogInfof("RewardsCommitted: Epoch %d", epoch) - }) + deps.Protocol.MainEngineEvents.SybilProtection.RewardsCommitted.Hook(func(epoch iotago.EpochIndex) { + Component.LogInfof("RewardsCommitted: Epoch %d", epoch) + }) - engine.Events.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { - Component.LogWarnf("Booker BlockInvalid: Block %s - %s", block.ID(), err.Error()) - }) + deps.Protocol.MainEngineEvents.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { + Component.LogWarnf("Booker BlockInvalid: Block %s - %s", block.ID(), err.Error()) + }) - engine.Events.SeatManager.OnlineCommitteeSeatAdded.Hook(func(seatIndex account.SeatIndex, account iotago.AccountID) { - Component.LogWarnf("OnlineCommitteeSeatAdded: %s - %d", account.ToHex(), seatIndex) - }) + deps.Protocol.MainEngineEvents.SeatManager.OnlineCommitteeSeatAdded.Hook(func(seatIndex account.SeatIndex, account iotago.AccountID) { + Component.LogWarnf("OnlineCommitteeSeatAdded: %s - %d", account.ToHex(), seatIndex) + }) - engine.Events.SeatManager.OnlineCommitteeSeatRemoved.Hook(func(seatIndex account.SeatIndex) { - Component.LogWarnf("OnlineCommitteeSeatRemoved: seatIndex: %d", seatIndex) - }) + deps.Protocol.MainEngineEvents.SeatManager.OnlineCommitteeSeatRemoved.Hook(func(seatIndex account.SeatIndex) { + Component.LogWarnf("OnlineCommitteeSeatRemoved: seatIndex: %d", seatIndex) + }) - engine.Ledger.MemPool().OnTransactionAttached(func(transaction mempool.TransactionMetadata) { - transaction.OnInvalid(func(err error) { - Component.LogWarnf("TransactionInvalid: transaction %s - %s", transaction.ID(), err.Error()) - }) + // TODO: create a transaction invalid event in the booker instead of hooking to a specific engine instance + deps.Protocol.MainEngine().Ledger.MemPool().OnTransactionAttached(func(transaction mempool.TransactionMetadata) { + transaction.OnInvalid(func(err error) { + Component.LogWarnf("TransactionInvalid: transaction %s - %s", transaction.ID(), err.Error()) }) }) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index eaaec6182..d60d9eba3 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -4,6 +4,7 @@ import ( "context" "github.com/iotaledger/hive.go/crypto/identity" + "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" @@ -18,7 +19,7 @@ type Protocol struct { *Chains *Network - errorEvent *event.Event1[error] + error *event.Event1[error] Options *Options } @@ -30,6 +31,8 @@ func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options }, opts, func(p *Protocol) { p.Engines = NewEngines(p) p.Chains = NewChains(p.MainEngine()) + + p.Network.OnError(func(err error, src network.PeerID) { p.error.Trigger(ierrors.Wrapf(err, "Network error from %s", src)) }) }) } @@ -38,7 +41,7 @@ func (p *Protocol) Run(ctx context.Context) error { } func (p *Protocol) OnError(callback func(error)) (unsubscribe func()) { - return p.errorEvent.Hook(callback).Unhook + return p.error.Hook(callback).Unhook } func (p *Protocol) IssueBlock(block *model.Block) error { From f8df1485632cfc5135867f392f1063bfef36625e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 11:30:13 +0200 Subject: [PATCH 091/356] Fix: fixed use of wrong method --- components/restapi/routes.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/restapi/routes.go b/components/restapi/routes.go index ced81c8e3..6ac603d3d 100644 --- a/components/restapi/routes.go +++ b/components/restapi/routes.go @@ -21,7 +21,7 @@ type RoutesResponse struct { func setupRoutes() { deps.Echo.GET(nodeAPIHealthRoute, func(c echo.Context) error { - if deps.Protocol.MainEngine().IsBootstrapped() { + if deps.Protocol.MainEngine().IsSynced() { return c.NoContent(http.StatusOK) } From 371151f8be08761841eafc47291b8673b72effe5 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 11:52:55 +0200 Subject: [PATCH 092/356] Feat: cleaned up changes --- .../totalweightslotgadget/gadget.go | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go b/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go index 4e5b227ff..097b2b708 100644 --- a/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go +++ b/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go @@ -39,14 +39,6 @@ type Gadget struct { module.Module } -func (g *Gadget) LatestFinalizedSlot() iotago.SlotIndex { - return g.lastFinalizedSlot.Get() -} - -func (g *Gadget) LatestFinalizedSlotR() reactive.Variable[iotago.SlotIndex] { - return g.lastFinalizedSlot -} - func NewProvider(opts ...options.Option[Gadget]) module.Provider[*engine.Engine, slotgadget.Gadget] { return module.Provide(func(e *engine.Engine) slotgadget.Gadget { return options.Apply(&Gadget{ @@ -89,6 +81,14 @@ func NewProvider(opts ...options.Option[Gadget]) module.Provider[*engine.Engine, }) } +func (g *Gadget) LatestFinalizedSlot() iotago.SlotIndex { + return g.lastFinalizedSlot.Get() +} + +func (g *Gadget) LatestFinalizedSlotR() reactive.Variable[iotago.SlotIndex] { + return g.lastFinalizedSlot +} + func (g *Gadget) Shutdown() { g.TriggerStopped() g.workers.Shutdown() @@ -108,7 +108,7 @@ func (g *Gadget) trackVotes(block *blocks.Block) { return slottracker.NewSlotTracker() }) - prevLatestSlot, latestSlot, updated := tracker.TrackVotes(block.SlotCommitmentID().Index(), block.ProtocolBlock().IssuerID, g.lastFinalizedSlot.Get()) + prevLatestSlot, latestSlot, updated := tracker.TrackVotes(block.SlotCommitmentID().Index(), block.ProtocolBlock().IssuerID, g.LatestFinalizedSlot()) if !updated { return nil } @@ -126,7 +126,7 @@ func (g *Gadget) trackVotes(block *blocks.Block) { func (g *Gadget) refreshSlotFinalization(tracker *slottracker.SlotTracker, previousLatestSlotIndex iotago.SlotIndex, newLatestSlotIndex iotago.SlotIndex) (finalizedSlots []iotago.SlotIndex) { committeeTotalSeats := g.seatManager.SeatCount() - for i := lo.Max(g.lastFinalizedSlot.Get(), previousLatestSlotIndex) + 1; i <= newLatestSlotIndex; i++ { + for i := lo.Max(g.LatestFinalizedSlot(), previousLatestSlotIndex) + 1; i <= newLatestSlotIndex; i++ { attestorsTotalSeats := len(tracker.Voters(i)) if !votes.IsThresholdReached(attestorsTotalSeats, committeeTotalSeats, g.optsSlotFinalizationThreshold) { From cbdada531903d3b84ed123bb9749ba8b07ddad2a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Sep 2023 11:56:05 +0200 Subject: [PATCH 093/356] Refactor: reverted accidental changes --- pkg/storage/permanent/settings.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/storage/permanent/settings.go b/pkg/storage/permanent/settings.go index 97ad4ee9d..def431988 100644 --- a/pkg/storage/permanent/settings.go +++ b/pkg/storage/permanent/settings.go @@ -518,7 +518,7 @@ func (s *Settings) String() string { builder := stringify.NewStructBuilder("Settings") builder.AddField(stringify.NewStructField("IsSnapshotImported", lo.PanicOnErr(s.store.Has([]byte{snapshotImportedKey})))) - builder.AddField(stringify.NewStructField("LatestCommitmentR", s.latestCommitment())) + builder.AddField(stringify.NewStructField("LatestCommitment", s.latestCommitment())) builder.AddField(stringify.NewStructField("LatestFinalizedSlot", s.latestFinalizedSlot())) if err := s.store.Iterate([]byte{protocolParametersKey}, func(key kvstore.Key, value kvstore.Value) bool { params, _, err := iotago.ProtocolParametersFromBytes(value) From 72719c39b0afa70102a1c2ccc23c55e748c17c7a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 5 Sep 2023 10:49:03 +0200 Subject: [PATCH 094/356] Feat: WIP WIP WIP --- components/inx/server_node.go | 13 ++- components/restapi/core/node.go | 2 +- components/restapi/core/utxo.go | 4 +- pkg/blockfactory/blockissuer.go | 2 +- pkg/protocol/api_provider.go | 35 ++++++ pkg/protocol/attestations_requester.go | 92 ++++++++++++---- pkg/protocol/chain.go | 10 +- pkg/protocol/chain_switching.go | 8 -- pkg/protocol/chains.go | 52 ++++++--- pkg/protocol/chains_test.go | 2 +- pkg/protocol/commitment.go | 2 +- pkg/protocol/constants.go | 3 + pkg/protocol/dispatcher.go | 19 ++++ .../totalweightslotgadget/gadget.go | 1 + pkg/protocol/engines.go | 75 ++++++++----- pkg/protocol/network.go | 103 +++++++++++++++--- pkg/protocol/options.go | 44 ++++---- pkg/protocol/protocol.go | 62 ++++++++--- pkg/protocol/status.go | 81 ++++++++++++++ pkg/tests/accounts_test.go | 12 +- pkg/tests/confirmation_state_test.go | 22 ++-- pkg/tests/protocol_engine_switching_test.go | 20 ++-- pkg/tests/protocol_startup_test.go | 8 +- pkg/tests/upgrade_signaling_test.go | 2 +- pkg/testsuite/accounts.go | 6 +- pkg/testsuite/attestations.go | 2 +- pkg/testsuite/blocks.go | 8 +- pkg/testsuite/conflicts.go | 2 +- pkg/testsuite/eviction.go | 6 +- pkg/testsuite/mock/node.go | 69 ++++++------ pkg/testsuite/storage_accountdiffs.go | 2 +- pkg/testsuite/storage_blocks.go | 4 +- pkg/testsuite/storage_commitments.go | 4 +- pkg/testsuite/storage_prunable.go | 2 +- pkg/testsuite/storage_rootblocks.go | 2 +- pkg/testsuite/sybilprotection.go | 4 +- pkg/testsuite/testsuite_issue_blocks.go | 6 +- pkg/testsuite/tips.go | 2 +- pkg/testsuite/transactions.go | 8 +- pkg/testsuite/transactions_framework.go | 4 +- pkg/testsuite/upgrades.go | 6 +- 41 files changed, 563 insertions(+), 248 deletions(-) create mode 100644 pkg/protocol/api_provider.go create mode 100644 pkg/protocol/dispatcher.go create mode 100644 pkg/protocol/status.go diff --git a/components/inx/server_node.go b/components/inx/server_node.go index 2a4e78812..645b2aa6f 100644 --- a/components/inx/server_node.go +++ b/components/inx/server_node.go @@ -4,13 +4,12 @@ import ( "context" "time" - "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/workerpool" inx "github.com/iotaledger/inx/go" - "github.com/iotaledger/iota-core/pkg/protocol/syncmanager" + "github.com/iotaledger/iota-core/pkg/protocol" ) -func inxNodeStatus(status *syncmanager.SyncStatus) *inx.NodeStatus { +func inxNodeStatus(status protocol.Status) *inx.NodeStatus { return &inx.NodeStatus{ IsHealthy: status.NodeSynced, LastAcceptedBlockSlot: uint64(status.LastAcceptedBlockSlot), @@ -22,7 +21,7 @@ func inxNodeStatus(status *syncmanager.SyncStatus) *inx.NodeStatus { } func (s *Server) ReadNodeStatus(context.Context, *inx.NoParams) (*inx.NodeStatus, error) { - return inxNodeStatus(deps.Protocol.SyncManager.SyncStatus()), nil + return inxNodeStatus(deps.Protocol.Status()), nil } func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_ListenToNodeStatusServer) error { @@ -43,7 +42,7 @@ func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_List coolDownDuration := time.Duration(req.GetCooldownInMilliseconds()) * time.Millisecond wp := workerpool.New("ListenToNodeStatus", workerCount) - onUpdate := func(status *syncmanager.SyncStatus) { + onUpdate := func(status protocol.Status) { if lastUpdateTimer != nil { lastUpdateTimer.Stop() lastUpdateTimer = nil @@ -67,7 +66,9 @@ func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_List } wp.Start() - unhook := deps.Protocol.Events.SyncManager.UpdatedStatus.Hook(onUpdate, event.WithWorkerPool(wp)).Unhook + unhook := deps.Protocol.StatusR().OnUpdate(func(oldValue, newValue protocol.Status) { + wp.Submit(func() { onUpdate(newValue) }) + }) <-ctx.Done() unhook() diff --git a/components/restapi/core/node.go b/components/restapi/core/node.go index 020164c2b..fd543e674 100644 --- a/components/restapi/core/node.go +++ b/components/restapi/core/node.go @@ -24,7 +24,7 @@ func protocolParameters() []*apimodels.InfoResProtocolParameters { func info() *apimodels.InfoResponse { clSnapshot := deps.Protocol.MainEngine().Clock.Snapshot() - syncStatus := deps.Protocol.SyncManager.SyncStatus() + syncStatus := deps.Protocol.Status() metrics := deps.MetricsTracker.NodeMetrics() return &apimodels.InfoResponse{ diff --git a/components/restapi/core/utxo.go b/components/restapi/core/utxo.go index 85909e73b..ef8203df3 100644 --- a/components/restapi/core/utxo.go +++ b/components/restapi/core/utxo.go @@ -43,7 +43,7 @@ func getOutputMetadata(c echo.Context) (*apimodels.OutputMetadataResponse, error } func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMetadataResponse, error) { - latestCommitment := deps.Protocol.SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.Status().LatestCommitment resp := &apimodels.OutputMetadataResponse{ BlockID: output.BlockID(), @@ -66,7 +66,7 @@ func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMeta } func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadataResponse, error) { - latestCommitment := deps.Protocol.SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.Status().LatestCommitment resp := &apimodels.OutputMetadataResponse{ BlockID: spent.BlockID(), diff --git a/pkg/blockfactory/blockissuer.go b/pkg/blockfactory/blockissuer.go index ea2efb86c..5fc5cf715 100644 --- a/pkg/blockfactory/blockissuer.go +++ b/pkg/blockfactory/blockissuer.go @@ -49,7 +49,7 @@ type BlockIssuer struct { func New(p *protocol.Protocol, opts ...options.Option[BlockIssuer]) *BlockIssuer { return options.Apply(&BlockIssuer{ events: NewEvents(), - workerPool: p.Workers.CreatePool("BlockIssuer"), + workerPool: p.Workers().CreatePool("BlockIssuer"), protocol: p, optsIncompleteBlockAccepted: false, optsRateSetterEnabled: false, diff --git a/pkg/protocol/api_provider.go b/pkg/protocol/api_provider.go new file mode 100644 index 000000000..465f20234 --- /dev/null +++ b/pkg/protocol/api_provider.go @@ -0,0 +1,35 @@ +package protocol + +import iotago "github.com/iotaledger/iota.go/v4" + +type APIProvider struct { + protocol *Protocol +} + +func NewAPIProvider(protocol *Protocol) *APIProvider { + return &APIProvider{ + protocol: protocol, + } +} + +// APIForVersion returns the API for the given version. +func (a *APIProvider) APIForVersion(version iotago.Version) (api iotago.API, err error) { + return a.protocol.MainEngine().APIForVersion(version) +} + +// APIForSlot returns the API for the given slot. +func (a *APIProvider) APIForSlot(slot iotago.SlotIndex) iotago.API { + return a.protocol.MainEngine().APIForSlot(slot) +} + +func (a *APIProvider) APIForEpoch(epoch iotago.EpochIndex) iotago.API { + return a.protocol.MainEngine().APIForEpoch(epoch) +} + +func (a *APIProvider) CurrentAPI() iotago.API { + return a.protocol.MainEngine().CurrentAPI() +} + +func (a *APIProvider) LatestAPI() iotago.API { + return a.protocol.MainEngine().LatestAPI() +} diff --git a/pkg/protocol/attestations_requester.go b/pkg/protocol/attestations_requester.go index 7431156ea..70a5c81e1 100644 --- a/pkg/protocol/attestations_requester.go +++ b/pkg/protocol/attestations_requester.go @@ -5,44 +5,50 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/kvstore" + "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" + "github.com/iotaledger/iota-core/pkg/storage/prunable" iotago "github.com/iotaledger/iota.go/v4" "github.com/iotaledger/iota.go/v4/merklehasher" ) type AttestationsRequester struct { - chainManager *Chains + protocol *Protocol requester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] } -func NewAttestationsRequester(chainManager *Chains) *AttestationsRequester { +func NewAttestationsRequester(protocol *Protocol) *AttestationsRequester { a := &AttestationsRequester{ - chainManager: chainManager, + protocol: protocol, requester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), } - chainManager.chainCreated.Hook(func(chain *Chain) { - chain.RequestAttestations().OnUpdate(func(_, requestAttestations bool) { - if requestAttestations { - a.commitmentVerifiers.GetOrCreate(chain.Root().ID(), func() *CommitmentVerifier { - return NewCommitmentVerifier(chain.Engine().Get(), chain.Root().Parent().Get().CommitmentModel()) - }) - } else { - a.commitmentVerifiers.Delete(chain.Root().ID()) - } + protocol.HookConstructed(func() { + protocol.OnChainCreated(func(chain *Chain) { + chain.RequestAttestations().OnUpdate(func(_, requestAttestations bool) { + if requestAttestations { + a.commitmentVerifiers.GetOrCreate(chain.Root().ID(), func() *CommitmentVerifier { + return NewCommitmentVerifier(chain.EngineR().Get(), chain.Root().Parent().Get().CommitmentModel()) + }) + } else { + a.commitmentVerifiers.Delete(chain.Root().ID()) + } + }) }) - }) - chainManager.commitmentCreated.Hook(func(commitment *Commitment) { - commitment.requestAttestations.OnUpdate(func(_, requestAttestations bool) { - if requestAttestations { - a.requester.StartTicker(commitment.ID()) - } else { - a.requester.StopTicker(commitment.ID()) - } + protocol.OnCommitmentCreated(func(commitment *Commitment) { + commitment.requestAttestations.OnUpdate(func(_, requestAttestations bool) { + if requestAttestations { + a.requester.StartTicker(commitment.ID()) + } else { + a.requester.StopTicker(commitment.ID()) + } + }) }) }) @@ -50,7 +56,7 @@ func NewAttestationsRequester(chainManager *Chains) *AttestationsRequester { } func (a *AttestationsRequester) ProcessAttestationsResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source network.PeerID) { - commitment := a.chainManager.ProcessCommitment(commitmentModel) + commitment := a.protocol.ProcessCommitment(commitmentModel) if commitment == nil { // TODO: log warning that we received attestations for a commitment that we don't know (maybe punish sender) @@ -82,3 +88,47 @@ func (a *AttestationsRequester) ProcessAttestationsResponse(commitmentModel *mod commitment.attested.Set(true) fmt.Println(blockIDs, actualCumulativeWeight, source) } + +func (a *AttestationsRequester) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src network.PeerID) { + mainEngine := a.protocol.MainEngine() + + if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { + return + } + + commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Index()) + if err != nil { + a.protocol.TriggerError(ierrors.Wrapf(err, "failed to load commitment %s", commitmentID)) + return + } + + if commitment.ID() != commitmentID { + return + } + + attestations, err := mainEngine.Attestations.Get(commitmentID.Index()) + if err != nil { + a.protocol.TriggerError(ierrors.Wrapf(err, "failed to load attestations for commitment %s", commitmentID)) + + return + } + + rootsStorage := mainEngine.Storage.Roots(commitmentID.Index()) + if rootsStorage == nil { + a.protocol.TriggerError(ierrors.Errorf("failed to load roots for commitment %s", commitmentID)) + + return + } + + rootsBytes, err := rootsStorage.Get(kvstore.Key{prunable.RootsKey}) + if err != nil { + a.protocol.TriggerError(ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID)) + + return + } + + var roots iotago.Roots + lo.PanicOnErr(a.protocol.APIForSlot(commitmentID.Index()).Decode(rootsBytes, &roots)) + + a.protocol.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) +} diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 315c57dec..c9079f63d 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -113,7 +113,7 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exis return nil, false } - currentChain = parent.chain.Get() + currentChain = parent.Chain() } } @@ -178,8 +178,12 @@ func (c *Chain) RequestAttestations() reactive.Variable[bool] { return c.requestAttestations } -// Engine returns a reactive variable that contains the engine that is used to process blocks of this chain. -func (c *Chain) Engine() reactive.Variable[*engine.Engine] { +func (c *Chain) Engine() *engine.Engine { + return c.engine.Get() +} + +// EngineR returns a reactive variable that contains the engine that is used to process blocks of this chain. +func (c *Chain) EngineR() reactive.Variable[*engine.Engine] { return c.engine } diff --git a/pkg/protocol/chain_switching.go b/pkg/protocol/chain_switching.go index e4db010ea..3b521eff8 100644 --- a/pkg/protocol/chain_switching.go +++ b/pkg/protocol/chain_switching.go @@ -33,14 +33,6 @@ func NewChainSwitching(chainManager *Chains) *ChainSwitching { newCandidate.engine.instantiate.Set(true) }) - c.heaviestVerifiedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - prevCandidate.evicted.Trigger() - } - - // TODO: MAKE MAIN CHAIN - }) - selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 0b1d72bee..44c6809ab 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -8,7 +8,7 @@ import ( "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/core/promise" "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/network" iotago "github.com/iotaledger/iota.go/v4" ) @@ -30,14 +30,11 @@ type Chains struct { reactive.EvictionState[iotago.SlotIndex] } -func NewChains(startingEngine *engine.Engine) *Chains { - p := &Chains{ +func newChains(protocol *Protocol) *Chains { + c := &Chains{ EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), mainChain: reactive.NewVariable[*Chain]().Init( - NewChain( - NewCommitment(startingEngine.Storage.Settings().LatestCommitment(), true), - startingEngine, - ), + NewChain(NewCommitment(protocol.MainEngine().LatestCommitment(), true), protocol.MainEngine()), ), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), commitmentCreated: event.New1[*Commitment](), @@ -46,18 +43,10 @@ func NewChains(startingEngine *engine.Engine) *Chains { } // embed reactive orchestrators - p.ChainSwitching = NewChainSwitching(p) - p.AttestationsRequester = NewAttestationsRequester(p) + c.ChainSwitching = NewChainSwitching(c) + c.AttestationsRequester = NewAttestationsRequester(protocol) - return p -} - -func (c *Chains) MainChain() *Chain { - return c.mainChain.Get() -} - -func (c *Chains) MainChainR() reactive.Variable[*Chain] { - return c.mainChain + return c } func (c *Chains) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment) { @@ -70,6 +59,19 @@ func (c *Chains) ProcessCommitment(commitment *model.Commitment) (commitmentMeta return commitmentMetadata } +func (c *Chains) Commitment(commitmentID iotago.CommitmentID) (commitment *Commitment, exists bool) { + commitmentRequest, exists := c.commitments.Get(commitmentID) + if !exists || !commitmentRequest.WasCompleted() { + return nil, false + } + + commitmentRequest.OnSuccess(func(result *Commitment) { + commitment = result + }) + + return commitment, true +} + func (c *Chains) OnCommitmentRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { return c.CommitmentRequester.Events.TickerStarted.Hook(callback).Unhook } @@ -82,6 +84,20 @@ func (c *Chains) OnChainCreated(callback func(chain *Chain)) (unsubscribe func() return c.chainCreated.Hook(callback).Unhook } +func (c *Chains) MainChain() *Chain { + return c.mainChain.Get() +} + +func (c *Chains) MainChainR() reactive.Variable[*Chain] { + return c.mainChain +} + +func (c *Chains) ProcessSlotCommitmentRequest(commitmentID iotago.CommitmentID, src network.PeerID) { + if commitment, exists := c.protocol.Commitment(commitmentID); !exists { + c.protocol.SendSlotCommitment(commitment.CommitmentModel(), src) + } +} + func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.setParent) diff --git a/pkg/protocol/chains_test.go b/pkg/protocol/chains_test.go index bb197a7d3..e4fed1f7b 100644 --- a/pkg/protocol/chains_test.go +++ b/pkg/protocol/chains_test.go @@ -15,7 +15,7 @@ import ( func TestChainManager(t *testing.T) { testAPI := tpkg.TestAPI rootCommitment := model.NewEmptyCommitment(testAPI) - chainManager := NewChains(rootCommitment) + chainManager := newChains(rootCommitment) chainManager.ChainSwitching.heaviestAttestedCandidate.OnUpdate(func(oldValue, newValue *Chain) { fmt.Println("CandidateChain", oldValue, newValue) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index d3e00a551..0d18b1545 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -108,7 +108,7 @@ func (c *Commitment) RequestAttestations() reactive.Variable[bool] { } func (c *Commitment) Engine() reactive.Variable[*engine.Engine] { - return c.chain.Get().Engine() + return c.chain.Get().EngineR() } func (c *Commitment) Evicted() reactive.Event { diff --git a/pkg/protocol/constants.go b/pkg/protocol/constants.go index 67ba2708c..cfad15914 100644 --- a/pkg/protocol/constants.go +++ b/pkg/protocol/constants.go @@ -1,6 +1,9 @@ package protocol const ( + // DatabaseVersion defines the current version of the database. + DatabaseVersion byte = 1 + // SyncWindow defines the maximum amount of slots that a node requests on top of its latest verified commitment. SyncWindow = 20 diff --git a/pkg/protocol/dispatcher.go b/pkg/protocol/dispatcher.go new file mode 100644 index 000000000..466d39cde --- /dev/null +++ b/pkg/protocol/dispatcher.go @@ -0,0 +1,19 @@ +package protocol + +import ( + "fmt" + + "github.com/iotaledger/hive.go/crypto/identity" + "github.com/iotaledger/iota-core/pkg/model" +) + +type Dispatcher struct { + protocol *Protocol +} + +func (p *Dispatcher) IssueBlock(block *model.Block) error { + fmt.Println("IssueBlock", block) + p.protocol.MainEngine().ProcessBlockFromPeer(block, identity.ID{}) + + return nil +} diff --git a/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go b/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go index 097b2b708..9c09ff7ad 100644 --- a/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go +++ b/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go @@ -44,6 +44,7 @@ func NewProvider(opts ...options.Option[Gadget]) module.Provider[*engine.Engine, return options.Apply(&Gadget{ events: slotgadget.NewEvents(), optsSlotFinalizationThreshold: 0.67, + lastFinalizedSlot: reactive.NewVariable[iotago.SlotIndex](), errorHandler: e.ErrorHandler("slotgadget"), }, opts, func(g *Gadget) { diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 66c87fec8..f0a6011eb 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -11,55 +11,74 @@ import ( type Engines struct { MainEngineEvents *engine.Events - protocol *Protocol + mainEngine reactive.Variable[*engine.Engine] + candidateEngine reactive.Variable[*engine.Engine] *enginemanager.EngineManager } -func NewEngines( - protocol *Protocol, -) *Engines { +func newEngines(protocol *Protocol) *Engines { e := &Engines{ MainEngineEvents: engine.NewEvents(), EngineManager: enginemanager.New( - protocol.Workers, + protocol.Workers(), func(err error) { fmt.Println(err) }, - protocol.Options.BaseDirectory, + protocol.options.BaseDirectory, 3, - protocol.Options.StorageOptions, - protocol.Options.EngineOptions, - protocol.Options.FilterProvider, - protocol.Options.CommitmentFilterProvider, - protocol.Options.BlockDAGProvider, - protocol.Options.BookerProvider, - protocol.Options.ClockProvider, - protocol.Options.BlockGadgetProvider, - protocol.Options.SlotGadgetProvider, - protocol.Options.SybilProtectionProvider, - protocol.Options.NotarizationProvider, - protocol.Options.AttestationProvider, - protocol.Options.LedgerProvider, - protocol.Options.SchedulerProvider, - protocol.Options.TipManagerProvider, - protocol.Options.TipSelectionProvider, - protocol.Options.RetainerProvider, - protocol.Options.UpgradeOrchestratorProvider, + protocol.options.StorageOptions, + protocol.options.EngineOptions, + protocol.options.FilterProvider, + protocol.options.CommitmentFilterProvider, + protocol.options.BlockDAGProvider, + protocol.options.BookerProvider, + protocol.options.ClockProvider, + protocol.options.BlockGadgetProvider, + protocol.options.SlotGadgetProvider, + protocol.options.SybilProtectionProvider, + protocol.options.NotarizationProvider, + protocol.options.AttestationProvider, + protocol.options.LedgerProvider, + protocol.options.SchedulerProvider, + protocol.options.TipManagerProvider, + protocol.options.TipSelectionProvider, + protocol.options.RetainerProvider, + protocol.options.UpgradeOrchestratorProvider, ), + mainEngine: reactive.NewVariable[*engine.Engine](), + candidateEngine: reactive.NewVariable[*engine.Engine](), + } - protocol: protocol, + if mainEngine, err := e.EngineManager.LoadActiveEngine(protocol.options.SnapshotPath); err != nil { + panic(fmt.Sprintf("could not load active engine: %s", err)) + } else { + e.mainEngine.Set(mainEngine) } - protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { e.MainEngineEvents.LinkTo(engine.Events) }) + protocol.HookConstructed(func() { + protocol.HeaviestVerifiedCandidate().OnUpdate(func(_, newChain *Chain) { + e.mainEngine.Set(newChain.Engine()) + }) + + e.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { e.MainEngineEvents.LinkTo(engine.Events) }) + }) return e } func (e *Engines) MainEngine() *engine.Engine { - return nil + return e.mainEngine.Get() } func (e *Engines) MainEngineR() reactive.Variable[*engine.Engine] { - return nil + return e.mainEngine +} + +func (e *Engines) CandidateEngine() *engine.Engine { + return e.candidateEngine.Get() +} + +func (e *Engines) CandidateEngineR() reactive.Variable[*engine.Engine] { + return e.candidateEngine } diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index f79da681d..d692cd290 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -1,6 +1,8 @@ package protocol import ( + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/network/protocols/core" @@ -9,41 +11,114 @@ import ( ) type Network struct { - events *core.Events + protocol *Protocol + + *core.Protocol + + module.Module +} + +func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { + n := &Network{ + protocol: protocol, + Protocol: core.NewProtocol(endpoint, protocol.Workers().CreatePool("NetworkProtocol"), protocol), + } + + protocol.HookConstructed(func() { + n.OnError(func(err error, src network.PeerID) { + protocol.TriggerError(ierrors.Wrapf(err, "Network error from %s", src)) + }) + }) + + protocol.HookInitialized(func() { + n.startNetwork() + + n.TriggerInitialized() + }) + + protocol.HookShutdown(func() { + n.TriggerShutdown() + + n.Shutdown() + + n.TriggerStopped() + }) + + n.TriggerConstructed() + + return n +} + +func (n *Network) startNetwork() { + n.OnBlockReceived(func(block *model.Block, src network.PeerID) { + panic("implement me") + }) + + n.OnBlockRequestReceived(func(blockID iotago.BlockID, src network.PeerID) { + if block, exists := n.protocol.MainEngine().Block(blockID); !exists { + n.SendBlock(block, src) + } + }) + + n.OnSlotCommitmentReceived(func(commitment *model.Commitment, src network.PeerID) { + panic("implement me") + }) + + n.OnSlotCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, src network.PeerID) { + n.protocol.ProcessSlotCommitmentRequest(commitmentID, src) + }) + + n.OnAttestationsReceived(func(commitment *model.Commitment, attestations []*iotago.Attestation, m *merklehasher.Proof[iotago.Identifier], id network.PeerID) { + n.protocol.ProcessAttestationsResponse(commitment, attestations, m, id) + }) + + n.OnAttestationsRequestReceived(func(commitmentID iotago.CommitmentID, src network.PeerID) { + n.protocol.ProcessAttestationsRequest(commitmentID, src) + }) + + n.OnWarpSyncResponseReceived(func(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], src network.PeerID) { + panic("implement me") + }) + + n.OnWarpSyncRequestReceived(func(commitmentID iotago.CommitmentID, src network.PeerID) { + panic("implement me") + }) + + // TODO: WIRE UP NETWORK EVENTS } func (n *Network) OnBlockReceived(callback func(block *model.Block, src network.PeerID)) (unsubscribe func()) { - return n.events.BlockReceived.Hook(callback).Unhook + return n.Events.BlockReceived.Hook(callback).Unhook } func (n *Network) OnBlockRequestReceived(callback func(blockID iotago.BlockID, src network.PeerID)) (unsubscribe func()) { - return n.events.BlockRequestReceived.Hook(callback).Unhook + return n.Events.BlockRequestReceived.Hook(callback).Unhook } func (n *Network) OnSlotCommitmentReceived(callback func(commitment *model.Commitment, src network.PeerID)) (unsubscribe func()) { - return n.events.SlotCommitmentReceived.Hook(callback).Unhook + return n.Events.SlotCommitmentReceived.Hook(callback).Unhook } func (n *Network) OnSlotCommitmentRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { - return n.events.SlotCommitmentRequestReceived.Hook(callback).Unhook + return n.Events.SlotCommitmentRequestReceived.Hook(callback).Unhook } -func (n *Network) AttestationsReceived(callback func(*model.Commitment, []*iotago.Attestation, *merklehasher.Proof[iotago.Identifier], network.PeerID)) (unsubscribe func()) { - return n.events.AttestationsReceived.Hook(callback).Unhook +func (n *Network) OnAttestationsReceived(callback func(*model.Commitment, []*iotago.Attestation, *merklehasher.Proof[iotago.Identifier], network.PeerID)) (unsubscribe func()) { + return n.Events.AttestationsReceived.Hook(callback).Unhook } -func (n *Network) AttestationsRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { - return n.events.AttestationsRequestReceived.Hook(callback).Unhook +func (n *Network) OnAttestationsRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { + return n.Events.AttestationsRequestReceived.Hook(callback).Unhook } -func (n *Network) WarpSyncRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { - return n.events.WarpSyncRequestReceived.Hook(callback).Unhook +func (n *Network) OnWarpSyncResponseReceived(callback func(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], src network.PeerID)) (unsubscribe func()) { + return n.Events.WarpSyncResponseReceived.Hook(callback).Unhook } -func (n *Network) WarpSyncResponseReceived(callback func(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], src network.PeerID)) (unsubscribe func()) { - return n.events.WarpSyncResponseReceived.Hook(callback).Unhook +func (n *Network) OnWarpSyncRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { + return n.Events.WarpSyncRequestReceived.Hook(callback).Unhook } func (n *Network) OnError(callback func(err error, src network.PeerID)) (unsubscribe func()) { - return n.events.Error.Hook(callback).Unhook + return n.Events.Error.Hook(callback).Unhook } diff --git a/pkg/protocol/options.go b/pkg/protocol/options.go index d7d942175..0f7da7739 100644 --- a/pkg/protocol/options.go +++ b/pkg/protocol/options.go @@ -70,7 +70,7 @@ type Options struct { UpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] } -func NewOptions() *Options { +func newOptions() *Options { return &Options{ BaseDirectory: "", ChainSwitchingThreshold: 3, @@ -97,126 +97,126 @@ func NewOptions() *Options { func WithBaseDirectory(baseDirectory string) options.Option[Protocol] { return func(p *Protocol) { - p.Options.BaseDirectory = baseDirectory + p.options.BaseDirectory = baseDirectory } } func WithSnapshotPath(snapshot string) options.Option[Protocol] { return func(p *Protocol) { - p.Options.SnapshotPath = snapshot + p.options.SnapshotPath = snapshot } } func WithChainSwitchingThreshold(threshold int) options.Option[Protocol] { return func(p *Protocol) { - p.Options.ChainSwitchingThreshold = threshold + p.options.ChainSwitchingThreshold = threshold } } func WithFilterProvider(optsFilterProvider module.Provider[*engine.Engine, filter.Filter]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.FilterProvider = optsFilterProvider + p.options.FilterProvider = optsFilterProvider } } func WithCommitmentFilterProvider(optsCommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.CommitmentFilterProvider = optsCommitmentFilterProvider + p.options.CommitmentFilterProvider = optsCommitmentFilterProvider } } func WithBlockDAGProvider(optsBlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.BlockDAGProvider = optsBlockDAGProvider + p.options.BlockDAGProvider = optsBlockDAGProvider } } func WithTipManagerProvider(optsTipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.TipManagerProvider = optsTipManagerProvider + p.options.TipManagerProvider = optsTipManagerProvider } } func WithTipSelectionProvider(optsTipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.TipSelectionProvider = optsTipSelectionProvider + p.options.TipSelectionProvider = optsTipSelectionProvider } } func WithBookerProvider(optsBookerProvider module.Provider[*engine.Engine, booker.Booker]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.BookerProvider = optsBookerProvider + p.options.BookerProvider = optsBookerProvider } } func WithClockProvider(optsClockProvider module.Provider[*engine.Engine, clock.Clock]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.ClockProvider = optsClockProvider + p.options.ClockProvider = optsClockProvider } } func WithSybilProtectionProvider(optsSybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.SybilProtectionProvider = optsSybilProtectionProvider + p.options.SybilProtectionProvider = optsSybilProtectionProvider } } func WithBlockGadgetProvider(optsBlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.BlockGadgetProvider = optsBlockGadgetProvider + p.options.BlockGadgetProvider = optsBlockGadgetProvider } } func WithSlotGadgetProvider(optsSlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.SlotGadgetProvider = optsSlotGadgetProvider + p.options.SlotGadgetProvider = optsSlotGadgetProvider } } func WithEpochGadgetProvider(optsEpochGadgetProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.SybilProtectionProvider = optsEpochGadgetProvider + p.options.SybilProtectionProvider = optsEpochGadgetProvider } } func WithNotarizationProvider(optsNotarizationProvider module.Provider[*engine.Engine, notarization.Notarization]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.NotarizationProvider = optsNotarizationProvider + p.options.NotarizationProvider = optsNotarizationProvider } } func WithAttestationProvider(optsAttestationProvider module.Provider[*engine.Engine, attestation.Attestations]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.AttestationProvider = optsAttestationProvider + p.options.AttestationProvider = optsAttestationProvider } } func WithLedgerProvider(optsLedgerProvider module.Provider[*engine.Engine, ledger.Ledger]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.LedgerProvider = optsLedgerProvider + p.options.LedgerProvider = optsLedgerProvider } } func WithUpgradeOrchestratorProvider(optsUpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.UpgradeOrchestratorProvider = optsUpgradeOrchestratorProvider + p.options.UpgradeOrchestratorProvider = optsUpgradeOrchestratorProvider } } func WithEngineOptions(opts ...options.Option[engine.Engine]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.EngineOptions = append(p.Options.EngineOptions, opts...) + p.options.EngineOptions = append(p.options.EngineOptions, opts...) } } func WithChainManagerOptions(opts ...options.Option[chainmanager.Manager]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.ChainManagerOptions = append(p.Options.ChainManagerOptions, opts...) + p.options.ChainManagerOptions = append(p.options.ChainManagerOptions, opts...) } } func WithStorageOptions(opts ...options.Option[storage.Storage]) options.Option[Protocol] { return func(p *Protocol) { - p.Options.StorageOptions = append(p.Options.StorageOptions, opts...) + p.options.StorageOptions = append(p.options.StorageOptions, opts...) } } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index d60d9eba3..b92faeba6 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -2,50 +2,76 @@ package protocol import ( "context" + "fmt" - "github.com/iotaledger/hive.go/crypto/identity" - "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/runtime/event" + "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" - "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" ) type Protocol struct { - Workers *workerpool.Group - *Engines *Chains *Network + *Dispatcher + *APIProvider - error *event.Event1[error] + workers *workerpool.Group + options *Options + error *event.Event1[error] + status reactive.Variable[Status] - Options *Options + module.Module } func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { return options.Apply(&Protocol{ - Workers: workers, - Options: NewOptions(), + workers: workers, + options: newOptions(), + error: event.New1[error](), }, opts, func(p *Protocol) { - p.Engines = NewEngines(p) - p.Chains = NewChains(p.MainEngine()) - - p.Network.OnError(func(err error, src network.PeerID) { p.error.Trigger(ierrors.Wrapf(err, "Network error from %s", src)) }) - }) + p.Network = newNetwork(p, dispatcher) + p.Engines = newEngines(p) + p.Chains = newChains(p) + p.status = newStatusVariable(p) + }, (*Protocol).TriggerConstructed) } func (p *Protocol) Run(ctx context.Context) error { + defer p.TriggerStopped() + + p.TriggerInitialized() + + fmt.Println("RUN STARTED") + + <-ctx.Done() + + fmt.Println("RUN FINISHED") + + p.TriggerShutdown() + return nil } +func (p *Protocol) Workers() *workerpool.Group { + return p.workers +} + +func (p *Protocol) Status() Status { + return p.status.Get() +} + +func (p *Protocol) StatusR() reactive.Variable[Status] { + return p.status +} + func (p *Protocol) OnError(callback func(error)) (unsubscribe func()) { return p.error.Hook(callback).Unhook } -func (p *Protocol) IssueBlock(block *model.Block) error { - p.MainEngine().ProcessBlockFromPeer(block, identity.ID{}) - - return nil +func (p *Protocol) TriggerError(err error) { + p.error.Trigger(err) } diff --git a/pkg/protocol/status.go b/pkg/protocol/status.go new file mode 100644 index 000000000..17abea18d --- /dev/null +++ b/pkg/protocol/status.go @@ -0,0 +1,81 @@ +package protocol + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" + iotago "github.com/iotaledger/iota.go/v4" +) + +type Status struct { + NodeSynced bool + LastAcceptedBlockSlot iotago.SlotIndex + LastConfirmedBlockSlot iotago.SlotIndex + LatestFinalizedSlot iotago.SlotIndex + LatestPrunedSlot iotago.SlotIndex + LatestCommitment *model.Commitment +} + +func newStatusVariable(p *Protocol) reactive.Variable[Status] { + s := reactive.NewVariable[Status]() + + var unsubscribeFromPreviousEngine func() + + p.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { + if unsubscribeFromPreviousEngine != nil { + unsubscribeFromPreviousEngine() + } + + s.Set(Status{ + NodeSynced: engine.IsSynced(), + LastAcceptedBlockSlot: engine.BlockGadget.LastAcceptedBlockIndex(), + LastConfirmedBlockSlot: engine.BlockGadget.LastConfirmedBlockIndex(), + LatestFinalizedSlot: engine.Storage.Settings().LatestFinalizedSlot(), + LatestPrunedSlot: lo.Return1(engine.Storage.Prunable.LastPrunedSlot()), + LatestCommitment: engine.Storage.Settings().LatestCommitment(), + }) + + unsubscribeFromPreviousEngine = lo.Batch( + // TODO: Update NodeSynced when the node is bootstrapped + + engine.Events.BlockGadget.BlockAccepted.Hook(func(acceptedBlock *blocks.Block) { + s.Compute(func(status Status) Status { + status.LastAcceptedBlockSlot = acceptedBlock.ID().Index() + return status + }) + }).Unhook, + + engine.Events.BlockGadget.BlockConfirmed.Hook(func(confirmedBlock *blocks.Block) { + s.Compute(func(status Status) Status { + status.LastConfirmedBlockSlot = confirmedBlock.ID().Index() + return status + }) + }).Unhook, + + engine.Events.SlotGadget.SlotFinalized.Hook(func(latestFinalizedSlot iotago.SlotIndex) { + s.Compute(func(status Status) Status { + status.LatestFinalizedSlot = latestFinalizedSlot + return status + }) + }).Unhook, + + engine.Events.StoragePruned.Hook(func(latestPrunedSlot iotago.SlotIndex) { + s.Compute(func(status Status) Status { + status.LatestPrunedSlot = latestPrunedSlot + return status + }) + }).Unhook, + + engine.Events.Notarization.LatestCommitmentUpdated.Hook(func(latestCommitment *model.Commitment) { + s.Compute(func(status Status) Status { + status.LatestCommitment = latestCommitment + return status + }) + }).Unhook, + ) + }) + + return s +} diff --git a/pkg/tests/accounts_test.go b/pkg/tests/accounts_test.go index 6ce082864..f18d960e9 100644 --- a/pkg/tests/accounts_test.go +++ b/pkg/tests/accounts_test.go @@ -63,7 +63,7 @@ func Test_TransitionAccount(t *testing.T) { newGenesisOutputKey := utils.RandPubKey() newAccountBlockIssuerKey := utils.RandPubKey() - latestCommitmentID := node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID() + latestCommitmentID := node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment().MustID() accountInput, accountOutputs, accountWallets := ts.TransactionFramework.TransitionAccount( "Genesis:1", @@ -121,7 +121,7 @@ func Test_TransitionAccount(t *testing.T) { // commit until the expiry slot of the transitioned genesis account plus one latestParent = ts.CommitUntilSlot(accountOutputs[0].FeatureSet().BlockIssuer().ExpirySlot+1, activeNodes, latestParent) // set the expiry slof of the transitioned genesis account to the latest committed + MaxCommittableAge - newAccountExpirySlot := node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index() + ts.API.ProtocolParameters().MaxCommittableAge() + newAccountExpirySlot := node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Index() + ts.API.ProtocolParameters().MaxCommittableAge() inputForNewAccount, newAccountOutputs, newAccountWallets := ts.TransactionFramework.CreateAccountFromInput("TX1:1", testsuite.WithAccountConditions(iotago.AccountOutputUnlockConditions{ &iotago.StateControllerAddressUnlockCondition{Address: ts.TransactionFramework.DefaultAddress()}, @@ -149,7 +149,7 @@ func Test_TransitionAccount(t *testing.T) { AccountID: genesisAccountOutput.AccountID, }, &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForNewAccount), @@ -158,7 +158,7 @@ func Test_TransitionAccount(t *testing.T) { testsuite.WithCreationSlot(slotIndexBlock2), )) - block2 := ts.IssueBlockAtSlotWithOptions("block2", slotIndexBlock2, node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node1, tx2, blockfactory.WithStrongParents(latestParent.ID())) + block2 := ts.IssueBlockAtSlotWithOptions("block2", slotIndexBlock2, node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment(), node1, tx2, blockfactory.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(slotIndexBlock2, activeNodes, block2) @@ -221,7 +221,7 @@ func Test_TransitionAccount(t *testing.T) { tx3 := lo.PanicOnErr(ts.TransactionFramework.CreateTransactionWithOptions("TX3", newDelegationWallets, testsuite.WithContextInputs(iotago.TxEssenceContextInputs{ &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForNewDelegation), @@ -229,7 +229,7 @@ func Test_TransitionAccount(t *testing.T) { testsuite.WithCreationSlot(slotIndexBlock3), )) - block3 := ts.IssueBlockAtSlotWithOptions("block3", slotIndexBlock3, node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node1, tx3, blockfactory.WithStrongParents(latestParent.ID())) + block3 := ts.IssueBlockAtSlotWithOptions("block3", slotIndexBlock3, node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment(), node1, tx3, blockfactory.WithStrongParents(latestParent.ID())) _ = ts.CommitUntilSlot(slotIndexBlock3, activeNodes, block3) diff --git a/pkg/tests/confirmation_state_test.go b/pkg/tests/confirmation_state_test.go index 742d8d138..a8c15da2f 100644 --- a/pkg/tests/confirmation_state_test.go +++ b/pkg/tests/confirmation_state_test.go @@ -95,7 +95,7 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithChainID(iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()).MustID()), testsuite.WithStorageCommitments([]*iotago.Commitment{iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version())}), testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID))), + testsuite.WithSybilProtectionOnlineCommittee(lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID))), testsuite.WithEvictedSlot(0), testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), @@ -132,7 +132,7 @@ func TestConfirmationFlags(t *testing.T) { // Issue in the next slot so that slot 2 becomes committed. - slot1Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngineInstance().Storage.Commitments().Load(1)).Commitment() + slot1Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine().Storage.Commitments().Load(1)).Commitment() slot2CommittableIndex := slot1CommittableIndex + 1 alias2A0 := fmt.Sprintf("A.%d.0", slot2CommittableIndex) alias2A1 := fmt.Sprintf("A.%d.1", slot2CommittableIndex) @@ -152,15 +152,15 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(2), testsuite.WithSybilProtectionCommittee(slot2CommittableIndex, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), ), testsuite.WithEvictedSlot(2), ) // Confirm aliasA0 by pre-confirming a block a 3rd validator in the next slot. - slot2Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngineInstance().Storage.Commitments().Load(2)).Commitment() + slot2Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine().Storage.Commitments().Load(2)).Commitment() slot3CommittableIndex := slot2CommittableIndex + 1 alias3C0 := fmt.Sprintf("C.%d.0", slot3CommittableIndex) @@ -192,9 +192,9 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(2), testsuite.WithSybilProtectionCommittee(slot3CommittableIndex, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.AccountID)), ), testsuite.WithEvictedSlot(2), ) @@ -247,9 +247,9 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(3), testsuite.WithSybilProtectionCommittee(slot4CommittableIndex, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.AccountID)), ), testsuite.WithEvictedSlot(3), ) diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index a302c0449..d89f221dd 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -106,20 +106,20 @@ func TestProtocol_EngineSwitching(t *testing.T) { node7.AccountID, } expectedP1OnlineCommittee := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node4.AccountID)), + lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), + lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), + lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), + lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), + lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node4.AccountID)), } expectedP2OnlineCommittee := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node6.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node7.AccountID)), + lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node6.AccountID)), + lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node7.AccountID)), } expectedOnlineCommittee := append(expectedP1OnlineCommittee, expectedP2OnlineCommittee...) for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") + node.Protocol.MainEngine().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") } // Verify that nodes have the expected states. @@ -182,7 +182,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { // Set online committee for each partition. for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.MainEngine().SybilProtection.SeatManager().(*mock2.ManualPOA) if node.Partition == "P1" { manualPOA.SetOnline("node0", "node1", "node2", "node3", "node4") manualPOA.SetOffline("node6", "node7") @@ -304,7 +304,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { } for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.MainEngine().SybilProtection.SeatManager().(*mock2.ManualPOA) manualPOA.SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") } diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index 36f25b7b5..6c25efb3e 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -64,8 +64,8 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { } expectedOnlineCommittee := []account.SeatIndex{ - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), } // Verify that nodes have the expected states. @@ -220,7 +220,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngineInstance().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.MainEngine().WriteSnapshot(snapshotPath)) nodeD := ts.AddNode("nodeD") nodeD.CopyIdentityFromNode(ts.Node("nodeC-restarted")) // we just want to be able to issue some stuff and don't care about the account for now. @@ -239,7 +239,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { ts.AssertStorageRootBlocks(expectedStorageRootBlocksFrom9, ts.Nodes("nodeD")...) } - slot7Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngineInstance().Storage.Commitments().Load(7)) + slot7Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine().Storage.Commitments().Load(7)) ts.AssertNodeState(ts.Nodes("nodeC-restarted", "nodeD"), testsuite.WithSnapshotImported(true), diff --git a/pkg/tests/upgrade_signaling_test.go b/pkg/tests/upgrade_signaling_test.go index d976132fd..3df8e3da4 100644 --- a/pkg/tests/upgrade_signaling_test.go +++ b/pkg/tests/upgrade_signaling_test.go @@ -120,7 +120,7 @@ func Test_Upgrade_Signaling(t *testing.T) { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngineInstance().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.MainEngine().WriteSnapshot(snapshotPath)) { nodeG := ts.AddNode("nodeG") diff --git a/pkg/testsuite/accounts.go b/pkg/testsuite/accounts.go index f666422bc..26ef012dd 100644 --- a/pkg/testsuite/accounts.go +++ b/pkg/testsuite/accounts.go @@ -13,12 +13,12 @@ import ( func (t *TestSuite) AssertAccountData(accountData *accounts.AccountData, nodes ...*mock.Node) { t.Eventually(func() error { for _, node := range nodes { - actualAccountData, exists, err := node.Protocol.MainEngineInstance().Ledger.Account(accountData.ID, node.Protocol.SyncManager.LatestCommitment().Index()) + actualAccountData, exists, err := node.Protocol.MainEngine().Ledger.Account(accountData.ID, node.Protocol.Status().LatestCommitment.Index()) if err != nil { return ierrors.Wrap(err, "AssertAccountData: failed to load account data") } if !exists { - return ierrors.Errorf("AssertAccountData: %s: account %s does not exist with latest committed slot %d", node.Name, accountData.ID, node.Protocol.SyncManager.LatestCommitment().Index()) + return ierrors.Errorf("AssertAccountData: %s: account %s does not exist with latest committed slot %d", node.Name, accountData.ID, node.Protocol.Status().LatestCommitment.Index()) } if accountData.ID != actualAccountData.ID { @@ -54,7 +54,7 @@ func (t *TestSuite) AssertAccountDiff(accountID iotago.AccountID, index iotago.S t.Eventually(func() error { for _, node := range nodes { - accountsDiffStorage := node.Protocol.MainEngineInstance().Storage.AccountDiffs(index) + accountsDiffStorage := node.Protocol.MainEngine().Storage.AccountDiffs(index) if has, err := accountsDiffStorage.Has(accountID); err != nil { return ierrors.Wrapf(err, "AssertAccountDiff: %s: failed to load accounts diff for slot %d", node.Name, index) diff --git a/pkg/testsuite/attestations.go b/pkg/testsuite/attestations.go index ebbde4fb9..ee4b612df 100644 --- a/pkg/testsuite/attestations.go +++ b/pkg/testsuite/attestations.go @@ -23,7 +23,7 @@ func (t *TestSuite) AssertAttestationsForSlot(slotIndex iotago.SlotIndex, blocks for _, node := range nodes { t.Eventually(func() error { - attestationTree, err := node.Protocol.MainEngineInstance().Attestations.GetMap(slotIndex) + attestationTree, err := node.Protocol.MainEngine().Attestations.GetMap(slotIndex) if err != nil { return ierrors.Wrapf(err, "AssertAttestationsForSlot: %s: error loading attestation tree for slot %d", node.Name, slotIndex) } diff --git a/pkg/testsuite/blocks.go b/pkg/testsuite/blocks.go index 225df6b1e..72a4e8e8c 100644 --- a/pkg/testsuite/blocks.go +++ b/pkg/testsuite/blocks.go @@ -16,7 +16,7 @@ func (t *TestSuite) AssertBlock(block *blocks.Block, node *mock.Node) *model.Blo var loadedBlock *model.Block t.Eventually(func() error { var exists bool - loadedBlock, exists = node.Protocol.MainEngineInstance().Block(block.ID()) + loadedBlock, exists = node.Protocol.MainEngine().Block(block.ID()) if !exists { return ierrors.Errorf("AssertBlock: %s: block %s does not exist", node.Name, block.ID()) } @@ -47,7 +47,7 @@ func (t *TestSuite) AssertBlocksExist(blocks []*blocks.Block, expectedExist bool t.AssertBlock(block, node) } else { t.Eventually(func() error { - if lo.Return2(node.Protocol.MainEngineInstance().Block(block.ID())) { + if lo.Return2(node.Protocol.MainEngine().Block(block.ID())) { return ierrors.Errorf("AssertBlocksExist: %s: block %s exists but should not", node.Name, block) } @@ -64,7 +64,7 @@ func (t *TestSuite) assertBlocksInCacheWithFunc(expectedBlocks []*blocks.Block, for _, node := range nodes { for _, block := range expectedBlocks { t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngineInstance().BlockFromCache(block.ID()) + blockFromCache, exists := node.Protocol.MainEngine().BlockFromCache(block.ID()) if !exists { return ierrors.Errorf("assertBlocksInCacheWithFunc[%s]: %s: block %s does not exist", propertyName, node.Name, block.ID()) } @@ -113,7 +113,7 @@ func (t *TestSuite) AssertBlocksInCacheConflicts(blockConflicts map[*blocks.Bloc for _, node := range nodes { for block, conflictAliases := range blockConflicts { t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngineInstance().BlockFromCache(block.ID()) + blockFromCache, exists := node.Protocol.MainEngine().BlockFromCache(block.ID()) if !exists { return ierrors.Errorf("AssertBlocksInCacheConflicts: %s: block %s does not exist", node.Name, block.ID()) } diff --git a/pkg/testsuite/conflicts.go b/pkg/testsuite/conflicts.go index 7c7047da0..e78af4aa4 100644 --- a/pkg/testsuite/conflicts.go +++ b/pkg/testsuite/conflicts.go @@ -13,7 +13,7 @@ func (t *TestSuite) AssertConflictsInCacheAcceptanceState(expectedConflictAliase for _, node := range nodes { for _, conflictAlias := range expectedConflictAliases { t.Eventually(func() error { - acceptanceState := node.Protocol.MainEngineInstance().Ledger.ConflictDAG().AcceptanceState(ds.NewSet(t.TransactionFramework.TransactionID(conflictAlias))) + acceptanceState := node.Protocol.MainEngine().Ledger.ConflictDAG().AcceptanceState(ds.NewSet(t.TransactionFramework.TransactionID(conflictAlias))) if acceptanceState != expectedState { return ierrors.Errorf("assertTransactionsInCacheWithFunc: %s: conflict %s is %s, but expected %s", node.Name, conflictAlias, acceptanceState, expectedState) diff --git a/pkg/testsuite/eviction.go b/pkg/testsuite/eviction.go index 07ad2418a..f332802ef 100644 --- a/pkg/testsuite/eviction.go +++ b/pkg/testsuite/eviction.go @@ -20,7 +20,7 @@ func (t *TestSuite) AssertActiveRootBlocks(expectedBlocks []*blocks.Block, nodes for _, node := range nodes { t.Eventually(func() error { - activeRootBlocks := node.Protocol.MainEngineInstance().EvictionState.ActiveRootBlocks() + activeRootBlocks := node.Protocol.MainEngine().EvictionState.ActiveRootBlocks() if !cmp.Equal(expectedRootBlocks, activeRootBlocks) { return ierrors.Errorf("AssertActiveRootBlocks: %s: expected %v, got %v", node.Name, expectedRootBlocks, activeRootBlocks) @@ -36,8 +36,8 @@ func (t *TestSuite) AssertEvictedSlot(expectedIndex iotago.SlotIndex, nodes ...* for _, node := range nodes { t.Eventually(func() error { - if expectedIndex != lo.Return1(node.Protocol.MainEngineInstance().EvictionState.LastEvictedSlot()) { - return ierrors.Errorf("AssertEvictedSlot: %s: expected %d, got %d", node.Name, expectedIndex, lo.Return1(node.Protocol.MainEngineInstance().EvictionState.LastEvictedSlot())) + if expectedIndex != lo.Return1(node.Protocol.MainEngine().EvictionState.LastEvictedSlot()) { + return ierrors.Errorf("AssertEvictedSlot: %s: expected %d, got %d", node.Name, expectedIndex, lo.Return1(node.Protocol.MainEngine().EvictionState.LastEvictedSlot())) } return nil diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index a7ad39f10..6bea58dd5 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -24,7 +24,6 @@ import ( "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/protocol" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" @@ -130,83 +129,77 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto } func (n *Node) hookEvents() { - events := n.Protocol.Events - - events.ChainManager.ForkDetected.Hook(func(fork *chainmanager.Fork) { n.forkDetectedCount.Add(1) }) + n.Protocol.HeaviestClaimedCandidate().OnUpdate(func(_, newChain *protocol.Chain) { + n.forkDetectedCount.Add(1) + }) - events.CandidateEngineActivated.Hook(func(e *engine.Engine) { n.candidateEngineActivatedCount.Add(1) }) + n.Protocol.HeaviestAttestedCandidate().OnUpdate(func(_, newChain *protocol.Chain) { + n.candidateEngineActivatedCount.Add(1) + }) - events.MainEngineSwitched.Hook(func(e *engine.Engine) { n.mainEngineSwitchedCount.Add(1) }) + n.Protocol.HeaviestVerifiedCandidate().OnUpdate(func(_, newChain *protocol.Chain) { + n.mainEngineSwitchedCount.Add(1) + }) } func (n *Node) hookLogging(failOnBlockFiltered bool) { - events := n.Protocol.Events - - n.attachEngineLogs(failOnBlockFiltered, n.Protocol.MainEngineInstance()) + n.attachEngineLogs(failOnBlockFiltered, n.Protocol.MainEngine()) - events.Network.BlockReceived.Hook(func(block *model.Block, source identity.ID) { + n.Protocol.OnBlockReceived(func(block *model.Block, source identity.ID) { fmt.Printf("%s > Network.BlockReceived: from %s %s - %d\n", n.Name, source, block.ID(), block.ID().Index()) }) - events.Network.BlockRequestReceived.Hook(func(blockID iotago.BlockID, source identity.ID) { + n.Protocol.OnBlockRequestReceived(func(blockID iotago.BlockID, source identity.ID) { fmt.Printf("%s > Network.BlockRequestReceived: from %s %s\n", n.Name, source, blockID) }) - events.Network.SlotCommitmentReceived.Hook(func(commitment *model.Commitment, source identity.ID) { + n.Protocol.OnSlotCommitmentReceived(func(commitment *model.Commitment, source identity.ID) { fmt.Printf("%s > Network.SlotCommitmentReceived: from %s %s\n", n.Name, source, commitment.ID()) }) - events.Network.SlotCommitmentRequestReceived.Hook(func(commitmentID iotago.CommitmentID, source identity.ID) { + n.Protocol.OnSlotCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, source identity.ID) { fmt.Printf("%s > Network.SlotCommitmentRequestReceived: from %s %s\n", n.Name, source, commitmentID) }) - events.Network.AttestationsReceived.Hook(func(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source network.PeerID) { + n.Protocol.OnAttestationsReceived(func(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source network.PeerID) { fmt.Printf("%s > Network.AttestationsReceived: from %s %s number of attestations: %d with merkleProof: %s - %s\n", n.Name, source, commitment.ID(), len(attestations), lo.PanicOnErr(json.Marshal(merkleProof)), lo.Map(attestations, func(a *iotago.Attestation) iotago.BlockID { - return lo.PanicOnErr(a.BlockID(lo.PanicOnErr(n.Protocol.APIForVersion(a.ProtocolVersion)))) + return lo.PanicOnErr(a.BlockID(lo.PanicOnErr(n.Protocol.MainEngine().APIForVersion(a.ProtocolVersion)))) })) }) - events.Network.AttestationsRequestReceived.Hook(func(id iotago.CommitmentID, source network.PeerID) { + n.Protocol.OnAttestationsRequestReceived(func(id iotago.CommitmentID, source network.PeerID) { fmt.Printf("%s > Network.AttestationsRequestReceived: from %s %s\n", n.Name, source, id) }) - events.ChainManager.RequestCommitment.Hook(func(commitmentID iotago.CommitmentID) { + n.Protocol.OnCommitmentRequested(func(commitmentID iotago.CommitmentID) { fmt.Printf("%s > ChainManager.RequestCommitment: %s\n", n.Name, commitmentID) }) - events.ChainManager.CommitmentBelowRoot.Hook(func(commitmentID iotago.CommitmentID) { - fmt.Printf("%s > ChainManager.CommitmentBelowRoot: %s\n", n.Name, commitmentID) + n.Protocol.HeaviestAttestedCandidate().OnUpdate(func(_, newChain *protocol.Chain) { + fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, newChain.Root().ID()) }) - events.ChainManager.ForkDetected.Hook(func(fork *chainmanager.Fork) { - fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, fork) - }) - - events.Engine.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { + n.Protocol.MainEngineEvents.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { fmt.Printf("%s > TipManager.BlockAdded: %s in pool %d\n", n.Name, tipMetadata.ID(), tipMetadata.TipPool().Get()) }) - events.CandidateEngineActivated.Hook(func(e *engine.Engine) { - fmt.Printf("%s > CandidateEngineActivated: %s, ChainID:%s Index:%s\n", n.Name, e.Name(), e.ChainID(), e.ChainID().Index()) - - n.attachEngineLogs(failOnBlockFiltered, e) - }) + n.Protocol.CandidateEngineR().OnUpdate(func(_, engine *engine.Engine) { + fmt.Printf("%s > CandidateEngineActivated: %s, ChainID:%s Index:%s\n", n.Name, engine.Name(), engine.ChainID(), engine.ChainID().Index()) - events.MainEngineSwitched.Hook(func(e *engine.Engine) { - fmt.Printf("%s > MainEngineSwitched: %s, ChainID:%s Index:%s\n", n.Name, e.Name(), e.ChainID(), e.ChainID().Index()) + n.attachEngineLogs(failOnBlockFiltered, engine) }) - events.Network.Error.Hook(func(err error, id identity.ID) { - fmt.Printf("%s > Network.Error: from %s %s\n", n.Name, id, err) + n.Protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { + fmt.Printf("%s > MainEngineSwitched: %s, ChainID:%s Index:%s\n", n.Name, engine.Name(), engine.ChainID(), engine.ChainID().Index()) }) - events.Error.Hook(func(err error) { + n.Protocol.OnError(func(err error) { fmt.Printf("%s > Protocol.Error: %s\n", n.Name, err.Error()) }) } func (n *Node) attachEngineLogs(failOnBlockFiltered bool, instance *engine.Engine) { - engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.MainEngineInstance() != instance, "Candidate", "Main"), instance.Name()[:8]) + engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.MainEngine() != instance, "Candidate", "Main"), instance.Name()[:8]) events := instance.Events events.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { @@ -447,7 +440,7 @@ func (n *Node) CopyIdentityFromNode(otherNode *Node) { func (n *Node) ProtocolParametersHash() iotago.Identifier { if n.protocolParametersHash == iotago.EmptyIdentifier { - return lo.PanicOnErr(n.Protocol.CurrentAPI().ProtocolParameters().Hash()) + return lo.PanicOnErr(n.Protocol.MainEngine().CurrentAPI().ProtocolParameters().Hash()) } return n.protocolParametersHash @@ -459,7 +452,7 @@ func (n *Node) SetProtocolParametersHash(hash iotago.Identifier) { func (n *Node) HighestSupportedVersion() iotago.Version { if n.highestSupportedVersion == 0 { - return n.Protocol.LatestAPI().Version() + return n.Protocol.MainEngine().LatestAPI().Version() } return n.highestSupportedVersion @@ -508,7 +501,7 @@ func (n *Node) IssueValidationBlock(ctx context.Context, alias string, opts ...o } func (n *Node) IssueActivity(ctx context.Context, wg *sync.WaitGroup, startSlot iotago.SlotIndex) { - issuingTime := n.Protocol.APIForSlot(startSlot).TimeProvider().SlotStartTime(startSlot) + issuingTime := n.Protocol.MainEngine().APIForSlot(startSlot).TimeProvider().SlotStartTime(startSlot) start := time.Now() wg.Add(1) diff --git a/pkg/testsuite/storage_accountdiffs.go b/pkg/testsuite/storage_accountdiffs.go index f55d5cd08..7e0ea5430 100644 --- a/pkg/testsuite/storage_accountdiffs.go +++ b/pkg/testsuite/storage_accountdiffs.go @@ -15,7 +15,7 @@ func (t *TestSuite) AssertStorageAccountDiffs(slotIndex iotago.SlotIndex, accoun for _, node := range nodes { for accountID, diffChange := range accountDiffs { t.Eventually(func() error { - storedDiffChange, _, err := node.Protocol.MainEngineInstance().Storage.AccountDiffs(slotIndex).Load(accountID) + storedDiffChange, _, err := node.Protocol.MainEngine().Storage.AccountDiffs(slotIndex).Load(accountID) if err != nil { return ierrors.Wrapf(err, "AssertStorageAccountDiffs: %s: error loading account diff: %s", node.Name, accountID) } diff --git a/pkg/testsuite/storage_blocks.go b/pkg/testsuite/storage_blocks.go index 56e2dd91d..dee512a18 100644 --- a/pkg/testsuite/storage_blocks.go +++ b/pkg/testsuite/storage_blocks.go @@ -10,7 +10,7 @@ import ( func (t *TestSuite) AssertStorageBlock(block *model.Block, node *mock.Node) { t.Eventually(func() error { - storage := node.Protocol.MainEngineInstance().Storage.Blocks(block.ID().Index()) + storage := node.Protocol.MainEngine().Storage.Blocks(block.ID().Index()) if storage == nil { return ierrors.Errorf("AssertStorageBlock: %s: storage for %s is nil", node.Name, block.ID().Index()) } @@ -37,7 +37,7 @@ func (t *TestSuite) AssertStorageBlockExist(block *model.Block, expectedExist bo t.AssertStorageBlock(block, node) } else { t.Eventually(func() error { - storage := node.Protocol.MainEngineInstance().Storage.Blocks(block.ID().Index()) + storage := node.Protocol.MainEngine().Storage.Blocks(block.ID().Index()) if storage == nil { return nil } diff --git a/pkg/testsuite/storage_commitments.go b/pkg/testsuite/storage_commitments.go index 066f06fe7..443482047 100644 --- a/pkg/testsuite/storage_commitments.go +++ b/pkg/testsuite/storage_commitments.go @@ -15,7 +15,7 @@ func (t *TestSuite) AssertStorageCommitments(commitments []*iotago.Commitment, n for _, node := range nodes { for _, commitment := range commitments { t.Eventually(func() error { - storedCommitment, err := node.Protocol.MainEngineInstance().Storage.Commitments().Load(commitment.Index) + storedCommitment, err := node.Protocol.MainEngine().Storage.Commitments().Load(commitment.Index) if err != nil { return ierrors.Wrapf(err, "AssertStorageCommitments: %s: error loading commitment: %s", node.Name, commitment.MustID()) } @@ -37,7 +37,7 @@ func (t *TestSuite) AssertEqualStoredCommitmentAtIndex(index iotago.SlotIndex, n var commitment *model.Commitment var commitmentNode *mock.Node for _, node := range nodes { - storedCommitment, err := node.Protocol.MainEngineInstance().Storage.Commitments().Load(index) + storedCommitment, err := node.Protocol.MainEngine().Storage.Commitments().Load(index) if err != nil { return ierrors.Wrapf(err, "AssertEqualStoredCommitmentAtIndex: %s: error loading commitment for slot: %d", node.Name, index) } diff --git a/pkg/testsuite/storage_prunable.go b/pkg/testsuite/storage_prunable.go index f3df2842d..78943dc3c 100644 --- a/pkg/testsuite/storage_prunable.go +++ b/pkg/testsuite/storage_prunable.go @@ -11,7 +11,7 @@ func (t *TestSuite) AssertPrunedSlot(expectedIndex iotago.SlotIndex, expectedHas for _, node := range nodes { t.Eventually(func() error { - if prunedIndex, hasPruned := node.Protocol.MainEngineInstance().Storage.LastPrunedSlot(); expectedIndex != prunedIndex { + if prunedIndex, hasPruned := node.Protocol.MainEngine().Storage.LastPrunedSlot(); expectedIndex != prunedIndex { return ierrors.Errorf("AssertPrunedSlot: %s: expected %d, got %d", node.Name, expectedIndex, prunedIndex) } else if expectedHasPruned != hasPruned { return ierrors.Errorf("AssertPrunedSlot: %s: expected to pruned %t, got %t", node.Name, expectedHasPruned, hasPruned) diff --git a/pkg/testsuite/storage_rootblocks.go b/pkg/testsuite/storage_rootblocks.go index 4d30b206e..22db10847 100644 --- a/pkg/testsuite/storage_rootblocks.go +++ b/pkg/testsuite/storage_rootblocks.go @@ -12,7 +12,7 @@ func (t *TestSuite) AssertStorageRootBlocks(blocks []*blocks.Block, nodes ...*mo for _, node := range nodes { for _, block := range blocks { t.Eventually(func() error { - storage := node.Protocol.MainEngineInstance().Storage.RootBlocks(block.ID().Index()) + storage := node.Protocol.MainEngine().Storage.RootBlocks(block.ID().Index()) if storage == nil { return ierrors.Errorf("AssertStorageRootBlocks: %s: storage for %s is nil", node.Name, block.ID().Index()) } diff --git a/pkg/testsuite/sybilprotection.go b/pkg/testsuite/sybilprotection.go index a9490fc11..87422e0c2 100644 --- a/pkg/testsuite/sybilprotection.go +++ b/pkg/testsuite/sybilprotection.go @@ -14,7 +14,7 @@ func (t *TestSuite) AssertSybilProtectionCommittee(slotIndex iotago.SlotIndex, e for _, node := range nodes { t.Eventually(func() error { - accounts := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(slotIndex).Accounts().IDs() + accounts := node.Protocol.MainEngine().SybilProtection.SeatManager().Committee(slotIndex).Accounts().IDs() if !assert.ElementsMatch(t.fakeTesting, expectedAccounts, accounts) { return ierrors.Errorf("AssertSybilProtectionCommittee: %s: expected %s, got %s", node.Name, expectedAccounts, accounts) } @@ -33,7 +33,7 @@ func (t *TestSuite) AssertSybilProtectionOnlineCommittee(expectedSeats []account for _, node := range nodes { t.Eventually(func() error { - seats := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().OnlineCommittee().ToSlice() + seats := node.Protocol.MainEngine().SybilProtection.SeatManager().OnlineCommittee().ToSlice() if !assert.ElementsMatch(t.fakeTesting, expectedSeats, seats) { return ierrors.Errorf("AssertSybilProtectionOnlineCommittee: %s: expected %v, got %v", node.Name, expectedSeats, seats) } diff --git a/pkg/testsuite/testsuite_issue_blocks.go b/pkg/testsuite/testsuite_issue_blocks.go index 60b4cdd19..2f4d5bbc2 100644 --- a/pkg/testsuite/testsuite_issue_blocks.go +++ b/pkg/testsuite/testsuite_issue_blocks.go @@ -275,7 +275,7 @@ func (t *TestSuite) CommitUntilSlot(slot iotago.SlotIndex, activeNodes []*mock.N // first issue a chain of blocks with step size minCA up until slot + minCA + 1 // then issue one more block to accept the last in the chain which will trigger commitment of the second last in the chain - latestCommittedSlot := activeNodes[0].Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index() + latestCommittedSlot := activeNodes[0].Protocol.MainEngine().Storage.Settings().LatestCommitment().Index() if latestCommittedSlot >= slot { return parent } @@ -286,12 +286,12 @@ func (t *TestSuite) CommitUntilSlot(slot iotago.SlotIndex, activeNodes []*mock.N // preacceptance of nextBlockSlot for _, node := range activeNodes { blockAlias := fmt.Sprintf("chain-%s-%d-%s", parent.ID().Alias(), chainIndex, node.Name) - tip = t.IssueBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) + tip = t.IssueBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) } // acceptance of nextBlockSlot for _, node := range activeNodes { blockAlias := fmt.Sprintf("chain-%s-%d-%s", parent.ID().Alias(), chainIndex+1, node.Name) - tip = t.IssueBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) + tip = t.IssueBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) } if nextBlockSlot == slot+t.optsMinCommittableAge { break diff --git a/pkg/testsuite/tips.go b/pkg/testsuite/tips.go index 9abd91a96..b155002f9 100644 --- a/pkg/testsuite/tips.go +++ b/pkg/testsuite/tips.go @@ -17,7 +17,7 @@ func (t *TestSuite) AssertStrongTips(expectedBlocks []*blocks.Block, nodes ...*m for _, node := range nodes { t.Eventually(func() error { - storedTipsBlocks := node.Protocol.MainEngineInstance().TipManager.StrongTips() + storedTipsBlocks := node.Protocol.MainEngine().TipManager.StrongTips() storedTipsBlockIDs := lo.Map(storedTipsBlocks, tipmanager.TipMetadata.ID) if !assert.ElementsMatch(t.fakeTesting, expectedBlockIDs, storedTipsBlockIDs) { diff --git a/pkg/testsuite/transactions.go b/pkg/testsuite/transactions.go index fa4aad9de..1a00e65c8 100644 --- a/pkg/testsuite/transactions.go +++ b/pkg/testsuite/transactions.go @@ -19,7 +19,7 @@ func (t *TestSuite) AssertTransaction(transaction *iotago.Transaction, node *moc t.Eventually(func() error { var exists bool - loadedTransaction, exists = node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID) + loadedTransaction, exists = node.Protocol.MainEngine().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("AssertTransaction: %s: transaction %s does not exist", node.Name, transactionID) } @@ -51,7 +51,7 @@ func (t *TestSuite) AssertTransactionsExist(transactions []*iotago.Transaction, t.AssertTransaction(transaction, node) } else { t.Eventually(func() error { - if lo.Return2(node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID)) { + if lo.Return2(node.Protocol.MainEngine().Ledger.TransactionMetadata(transactionID)) { return ierrors.Errorf("AssertTransactionsExist: %s: transaction %s exists but should not", node.Name, transactionID) } @@ -74,7 +74,7 @@ func (t *TestSuite) assertTransactionsInCacheWithFunc(expectedTransactions []*io require.NoError(t.Testing, err) t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID) + blockFromCache, exists := node.Protocol.MainEngine().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("assertTransactionsInCacheWithFunc: %s: transaction %s does not exist", node.Name, transactionID) } @@ -122,7 +122,7 @@ func (t *TestSuite) AssertTransactionInCacheConflicts(transactionConflicts map[* require.NoError(t.Testing, err) t.Eventually(func() error { - transactionFromCache, exists := node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID) + transactionFromCache, exists := node.Protocol.MainEngine().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("AssertTransactionInCacheConflicts: %s: block %s does not exist", node.Name, transactionID) } diff --git a/pkg/testsuite/transactions_framework.go b/pkg/testsuite/transactions_framework.go index 83d48a144..87b058d8e 100644 --- a/pkg/testsuite/transactions_framework.go +++ b/pkg/testsuite/transactions_framework.go @@ -28,7 +28,7 @@ type TransactionFramework struct { func NewTransactionFramework(protocol *protocol.Protocol, genesisSeed []byte, accounts ...snapshotcreator.AccountDetails) *TransactionFramework { // The genesis output is on index 0 of the genesis TX - genesisOutput, err := protocol.MainEngineInstance().Ledger.Output(iotago.OutputIDFromTransactionIDAndIndex(snapshotcreator.GenesisTransactionID, 0)) + genesisOutput, err := protocol.MainEngine().Ledger.Output(iotago.OutputIDFromTransactionIDAndIndex(snapshotcreator.GenesisTransactionID, 0)) if err != nil { panic(err) } @@ -44,7 +44,7 @@ func NewTransactionFramework(protocol *protocol.Protocol, genesisSeed []byte, ac // Genesis TX outputID := iotago.OutputIDFromTransactionIDAndIndex(snapshotcreator.GenesisTransactionID, uint16(idx+1)) - if tf.states[fmt.Sprintf("Genesis:%d", idx+1)], err = protocol.MainEngineInstance().Ledger.Output(outputID); err != nil { + if tf.states[fmt.Sprintf("Genesis:%d", idx+1)], err = protocol.MainEngine().Ledger.Output(outputID); err != nil { panic(err) } } diff --git a/pkg/testsuite/upgrades.go b/pkg/testsuite/upgrades.go index 00fdfb424..cea60efbe 100644 --- a/pkg/testsuite/upgrades.go +++ b/pkg/testsuite/upgrades.go @@ -14,7 +14,7 @@ func (t *TestSuite) AssertEpochVersions(epochVersions map[iotago.Version]iotago. t.Eventually(func() error { for version, expectedEpoch := range epochVersions { - epochForVersion, exists := node.Protocol.MainEngineInstance().Storage.Settings().APIProvider().EpochForVersion(version) + epochForVersion, exists := node.Protocol.MainEngine().Storage.Settings().APIProvider().EpochForVersion(version) if !exists { return ierrors.Errorf("AssertEpochVersions: %s: version %d not found", node.Name, version) } @@ -36,7 +36,7 @@ func (t *TestSuite) AssertVersionAndProtocolParameters(versionsAndProtocolParame t.Eventually(func() error { for version, expectedProtocolParameters := range versionsAndProtocolParameters { - protocolParameters := node.Protocol.MainEngineInstance().Storage.Settings().APIProvider().ProtocolParameters(version) + protocolParameters := node.Protocol.MainEngine().Storage.Settings().APIProvider().ProtocolParameters(version) if expectedProtocolParameters == nil { if protocolParameters != nil { @@ -67,7 +67,7 @@ func (t *TestSuite) AssertVersionAndProtocolParametersHashes(versionsAndProtocol t.Eventually(func() error { for version, expectedProtocolParametersHash := range versionsAndProtocolParametersHashes { - protocolParametersHash := node.Protocol.MainEngineInstance().Storage.Settings().APIProvider().ProtocolParametersHash(version) + protocolParametersHash := node.Protocol.MainEngine().Storage.Settings().APIProvider().ProtocolParametersHash(version) if expectedProtocolParametersHash == iotago.EmptyIdentifier { if protocolParametersHash != iotago.EmptyIdentifier { From 9787f60dd4b3aaa551d3b507a3e2c38d6dd33cbc Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 5 Sep 2023 13:22:04 +0200 Subject: [PATCH 095/356] Feat: WIP WIP WIP --- pkg/protocol/api_provider.go | 2 +- pkg/protocol/dispatcher.go | 6 ++++++ pkg/protocol/protocol.go | 18 ++++++++++-------- 3 files changed, 17 insertions(+), 9 deletions(-) diff --git a/pkg/protocol/api_provider.go b/pkg/protocol/api_provider.go index 465f20234..a68402b4b 100644 --- a/pkg/protocol/api_provider.go +++ b/pkg/protocol/api_provider.go @@ -6,7 +6,7 @@ type APIProvider struct { protocol *Protocol } -func NewAPIProvider(protocol *Protocol) *APIProvider { +func newAPIProvider(protocol *Protocol) *APIProvider { return &APIProvider{ protocol: protocol, } diff --git a/pkg/protocol/dispatcher.go b/pkg/protocol/dispatcher.go index 466d39cde..2d03bddf3 100644 --- a/pkg/protocol/dispatcher.go +++ b/pkg/protocol/dispatcher.go @@ -11,6 +11,12 @@ type Dispatcher struct { protocol *Protocol } +func newDispatcher(protocol *Protocol) *Dispatcher { + return &Dispatcher{ + protocol: protocol, + } +} + func (p *Dispatcher) IssueBlock(block *model.Block) error { fmt.Println("IssueBlock", block) p.protocol.MainEngine().ProcessBlockFromPeer(block, identity.ID{}) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index b92faeba6..5c23b70fb 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -13,30 +13,32 @@ import ( ) type Protocol struct { + workers *workerpool.Group + status reactive.Variable[Status] + error *event.Event1[error] + options *Options + + *Network *Engines *Chains - *Network *Dispatcher *APIProvider - workers *workerpool.Group - options *Options - error *event.Event1[error] - status reactive.Variable[Status] - module.Module } func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { return options.Apply(&Protocol{ workers: workers, - options: newOptions(), error: event.New1[error](), + options: newOptions(), }, opts, func(p *Protocol) { + p.status = newStatusVariable(p) p.Network = newNetwork(p, dispatcher) p.Engines = newEngines(p) p.Chains = newChains(p) - p.status = newStatusVariable(p) + p.Dispatcher = newDispatcher(p) + p.APIProvider = newAPIProvider(p) }, (*Protocol).TriggerConstructed) } From bb7d166662eeef5b7ffe4423217ba3bc277559bb Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 02:05:10 +0200 Subject: [PATCH 096/356] Refactor: big refactor --- components/protocol/component.go | 2 +- pkg/core/promise/promise.go | 16 ++ pkg/network/protocols/core/protocol.go | 36 ++++ pkg/protocol/api_provider.go | 35 ---- pkg/protocol/attestations_requester.go | 134 ------------- pkg/protocol/chain.go | 9 +- pkg/protocol/chains.go | 103 +++++----- pkg/protocol/chains_test.go | 84 -------- pkg/protocol/dispatcher.go | 25 --- pkg/protocol/errors.go | 8 + pkg/protocol/gossip.go | 266 +++++++++++++++++++++++++ pkg/protocol/network.go | 92 ++++----- pkg/protocol/protocol.go | 36 +++- pkg/protocol/status.go | 94 ++++----- pkg/testsuite/mock/node.go | 2 +- 15 files changed, 507 insertions(+), 435 deletions(-) delete mode 100644 pkg/protocol/api_provider.go delete mode 100644 pkg/protocol/attestations_requester.go delete mode 100644 pkg/protocol/chains_test.go delete mode 100644 pkg/protocol/dispatcher.go create mode 100644 pkg/protocol/errors.go create mode 100644 pkg/protocol/gossip.go diff --git a/components/protocol/component.go b/components/protocol/component.go index 006931f25..62bb1d764 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -221,7 +221,7 @@ func configure() error { Component.LogDebugf("BlockSkipped: %s", block.ID()) }) - deps.Protocol.OnCommitmentRequested(func(id iotago.CommitmentID) { + deps.Protocol.OnCommitmentRequestStarted(func(id iotago.CommitmentID) { Component.LogDebugf("RequestCommitment: %s", id) }) diff --git a/pkg/core/promise/promise.go b/pkg/core/promise/promise.go index 8e2ccb514..c24c2e7f7 100644 --- a/pkg/core/promise/promise.go +++ b/pkg/core/promise/promise.go @@ -196,6 +196,22 @@ func (p *Promise[T]) WasResolved() bool { return p.complete && p.err == nil } +// Result returns the result of the promise (or the zero value if the promise was not resolved). +func (p *Promise[T]) Result() T { + p.mutex.RLock() + defer p.mutex.RUnlock() + + return p.result +} + +// Err returns the error of the promise (or nil if the promise was not rejected). +func (p *Promise[T]) Err() error { + p.mutex.RLock() + defer p.mutex.RUnlock() + + return p.err +} + // WasRejected returns true if the promise was rejected. func (p *Promise[T]) WasRejected() bool { p.mutex.RLock() diff --git a/pkg/network/protocols/core/protocol.go b/pkg/network/protocols/core/protocol.go index 87b91ded9..c33ec5285 100644 --- a/pkg/network/protocols/core/protocol.go +++ b/pkg/network/protocols/core/protocol.go @@ -102,6 +102,42 @@ func (p *Protocol) RequestAttestations(id iotago.CommitmentID, to ...network.Pee }}}, protocolID, to...) } +func (p *Protocol) OnBlockReceived(callback func(block *model.Block, src network.PeerID)) (unsubscribe func()) { + return p.Events.BlockReceived.Hook(callback).Unhook +} + +func (p *Protocol) OnBlockRequestReceived(callback func(blockID iotago.BlockID, src network.PeerID)) (unsubscribe func()) { + return p.Events.BlockRequestReceived.Hook(callback).Unhook +} + +func (p *Protocol) OnSlotCommitmentReceived(callback func(commitment *model.Commitment, src network.PeerID)) (unsubscribe func()) { + return p.Events.SlotCommitmentReceived.Hook(callback).Unhook +} + +func (p *Protocol) OnSlotCommitmentRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { + return p.Events.SlotCommitmentRequestReceived.Hook(callback).Unhook +} + +func (p *Protocol) OnAttestationsReceived(callback func(*model.Commitment, []*iotago.Attestation, *merklehasher.Proof[iotago.Identifier], network.PeerID)) (unsubscribe func()) { + return p.Events.AttestationsReceived.Hook(callback).Unhook +} + +func (p *Protocol) OnAttestationsRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { + return p.Events.AttestationsRequestReceived.Hook(callback).Unhook +} + +func (p *Protocol) OnWarpSyncResponseReceived(callback func(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], src network.PeerID)) (unsubscribe func()) { + return p.Events.WarpSyncResponseReceived.Hook(callback).Unhook +} + +func (p *Protocol) OnWarpSyncRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { + return p.Events.WarpSyncRequestReceived.Hook(callback).Unhook +} + +func (p *Protocol) OnError(callback func(err error, src network.PeerID)) (unsubscribe func()) { + return p.Events.Error.Hook(callback).Unhook +} + func (p *Protocol) Shutdown() { p.network.UnregisterProtocol(protocolID) diff --git a/pkg/protocol/api_provider.go b/pkg/protocol/api_provider.go deleted file mode 100644 index a68402b4b..000000000 --- a/pkg/protocol/api_provider.go +++ /dev/null @@ -1,35 +0,0 @@ -package protocol - -import iotago "github.com/iotaledger/iota.go/v4" - -type APIProvider struct { - protocol *Protocol -} - -func newAPIProvider(protocol *Protocol) *APIProvider { - return &APIProvider{ - protocol: protocol, - } -} - -// APIForVersion returns the API for the given version. -func (a *APIProvider) APIForVersion(version iotago.Version) (api iotago.API, err error) { - return a.protocol.MainEngine().APIForVersion(version) -} - -// APIForSlot returns the API for the given slot. -func (a *APIProvider) APIForSlot(slot iotago.SlotIndex) iotago.API { - return a.protocol.MainEngine().APIForSlot(slot) -} - -func (a *APIProvider) APIForEpoch(epoch iotago.EpochIndex) iotago.API { - return a.protocol.MainEngine().APIForEpoch(epoch) -} - -func (a *APIProvider) CurrentAPI() iotago.API { - return a.protocol.MainEngine().CurrentAPI() -} - -func (a *APIProvider) LatestAPI() iotago.API { - return a.protocol.MainEngine().LatestAPI() -} diff --git a/pkg/protocol/attestations_requester.go b/pkg/protocol/attestations_requester.go deleted file mode 100644 index 70a5c81e1..000000000 --- a/pkg/protocol/attestations_requester.go +++ /dev/null @@ -1,134 +0,0 @@ -package protocol - -import ( - "fmt" - - "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/kvstore" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/network" - "github.com/iotaledger/iota-core/pkg/storage/prunable" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/merklehasher" -) - -type AttestationsRequester struct { - protocol *Protocol - requester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] -} - -func NewAttestationsRequester(protocol *Protocol) *AttestationsRequester { - a := &AttestationsRequester{ - protocol: protocol, - requester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), - } - - protocol.HookConstructed(func() { - protocol.OnChainCreated(func(chain *Chain) { - chain.RequestAttestations().OnUpdate(func(_, requestAttestations bool) { - if requestAttestations { - a.commitmentVerifiers.GetOrCreate(chain.Root().ID(), func() *CommitmentVerifier { - return NewCommitmentVerifier(chain.EngineR().Get(), chain.Root().Parent().Get().CommitmentModel()) - }) - } else { - a.commitmentVerifiers.Delete(chain.Root().ID()) - } - }) - }) - - protocol.OnCommitmentCreated(func(commitment *Commitment) { - commitment.requestAttestations.OnUpdate(func(_, requestAttestations bool) { - if requestAttestations { - a.requester.StartTicker(commitment.ID()) - } else { - a.requester.StopTicker(commitment.ID()) - } - }) - }) - }) - - return a -} - -func (a *AttestationsRequester) ProcessAttestationsResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source network.PeerID) { - commitment := a.protocol.ProcessCommitment(commitmentModel) - if commitment == nil { - // TODO: log warning that we received attestations for a commitment that we don't know (maybe punish sender) - - return - } - - chain := commitment.Chain() - if chain == nil { - // TODO: log warning that we received attestations for an unsolid commitment (we did not request that - maybe punish sender) - - return - } - - commitmentVerifier, exists := a.commitmentVerifiers.Get(chain.Root().ID()) - if !exists { - // TODO: log debug that we received attestations for a commitment that we did not request - - return - } - - blockIDs, actualCumulativeWeight, err := commitmentVerifier.verifyCommitment(commitmentModel, attestations, merkleProof) - if err != nil { - // TODO: do something with the error - - return - } - - // TODO: publish blockIDs, actualCumulativeWeight to target commitment - commitment.attested.Set(true) - fmt.Println(blockIDs, actualCumulativeWeight, source) -} - -func (a *AttestationsRequester) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src network.PeerID) { - mainEngine := a.protocol.MainEngine() - - if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { - return - } - - commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Index()) - if err != nil { - a.protocol.TriggerError(ierrors.Wrapf(err, "failed to load commitment %s", commitmentID)) - return - } - - if commitment.ID() != commitmentID { - return - } - - attestations, err := mainEngine.Attestations.Get(commitmentID.Index()) - if err != nil { - a.protocol.TriggerError(ierrors.Wrapf(err, "failed to load attestations for commitment %s", commitmentID)) - - return - } - - rootsStorage := mainEngine.Storage.Roots(commitmentID.Index()) - if rootsStorage == nil { - a.protocol.TriggerError(ierrors.Errorf("failed to load roots for commitment %s", commitmentID)) - - return - } - - rootsBytes, err := rootsStorage.Get(kvstore.Key{prunable.RootsKey}) - if err != nil { - a.protocol.TriggerError(ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID)) - - return - } - - var roots iotago.Roots - lo.PanicOnErr(a.protocol.APIForSlot(commitmentID.Index()).Decode(rootsBytes, &roots)) - - a.protocol.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) -} diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index c9079f63d..c138d3916 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -120,12 +120,12 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exis return nil, false } +// LatestCommitment returns the latest Commitment object in this chain. func (c *Chain) LatestCommitment() *Commitment { return c.latestCommitment.Get() } -// LatestCommitmentR returns a reactive variable that always contains the latest Commitment object in this -// collection. +// LatestCommitmentR returns a reactive variable that always contains the latest Commitment object in this chain. func (c *Chain) LatestCommitmentR() reactive.Variable[*Commitment] { return c.latestCommitment } @@ -187,6 +187,11 @@ func (c *Chain) EngineR() reactive.Variable[*engine.Engine] { return c.engine } +// InSyncRange returns true if the given index is in the sync range of this chain. +func (c *Chain) InSyncRange(index iotago.SlotIndex) bool { + return index > c.latestVerifiedCommitment.Get().Index() && index < c.syncThreshold.Get() +} + // Evicted returns a reactive event that gets triggered when the chain is evicted. func (c *Chain) Evicted() reactive.Event { return c.evicted diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 44c6809ab..1b6a6e255 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -1,18 +1,20 @@ package protocol import ( - "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/core/promise" "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/network" + "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" ) type Chains struct { + protocol *Protocol + mainChain reactive.Variable[*Chain] commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] @@ -21,59 +23,61 @@ type Chains struct { chainCreated *event.Event1[*Chain] - CommitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - *ChainSwitching - *AttestationsRequester - reactive.EvictionState[iotago.SlotIndex] } func newChains(protocol *Protocol) *Chains { c := &Chains{ - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - mainChain: reactive.NewVariable[*Chain]().Init( - NewChain(NewCommitment(protocol.MainEngine().LatestCommitment(), true), protocol.MainEngine()), - ), - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), - commitmentCreated: event.New1[*Commitment](), - chainCreated: event.New1[*Chain](), - CommitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + protocol: protocol, + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), + mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(protocol.MainEngine().LatestCommitment(), true), protocol.MainEngine())), + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + commitmentCreated: event.New1[*Commitment](), + chainCreated: event.New1[*Chain](), } // embed reactive orchestrators c.ChainSwitching = NewChainSwitching(c) - c.AttestationsRequester = NewAttestationsRequester(protocol) + + c.publishLatestEngineCommitment(protocol.MainEngine()) + + protocol.OnEngineCreated(c.publishLatestEngineCommitment) return c } -func (c *Chains) ProcessCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment) { - if commitmentRequest := c.requestCommitment(commitment.ID(), commitment.Index(), false, func(resolvedMetadata *Commitment) { - commitmentMetadata = resolvedMetadata - }); commitmentRequest != nil { - commitmentRequest.Resolve(NewCommitment(commitment)) +func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment, err error) { + request, requestErr := c.requestCommitment(commitment.ID(), false) + if requestErr != nil { + return nil, ierrors.Wrapf(requestErr, "failed to request commitment %s", commitment.ID()) } - return commitmentMetadata + request.Resolve(NewCommitment(commitment)).OnSuccess(func(resolvedMetadata *Commitment) { + commitmentMetadata = resolvedMetadata + }) + + return commitmentMetadata, nil } -func (c *Chains) Commitment(commitmentID iotago.CommitmentID) (commitment *Commitment, exists bool) { +func (c *Chains) Commitment(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { commitmentRequest, exists := c.commitments.Get(commitmentID) - if !exists || !commitmentRequest.WasCompleted() { - return nil, false + if !exists && lo.First(requestMissing) { + if commitmentRequest, err = c.requestCommitment(commitmentID, true); err != nil { + return nil, ierrors.Wrapf(err, "failed to request commitment %s", commitmentID) + } } - commitmentRequest.OnSuccess(func(result *Commitment) { - commitment = result - }) + if commitmentRequest == nil || !commitmentRequest.WasCompleted() { + return nil, ErrorCommitmentNotFound + } - return commitment, true -} + if commitmentRequest.WasRejected() { + return nil, commitmentRequest.Err() + } -func (c *Chains) OnCommitmentRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return c.CommitmentRequester.Events.TickerStarted.Hook(callback).Unhook + return commitmentRequest.Result(), nil } func (c *Chains) OnCommitmentCreated(callback func(commitment *Commitment)) (unsubscribe func()) { @@ -92,14 +96,8 @@ func (c *Chains) MainChainR() reactive.Variable[*Chain] { return c.mainChain } -func (c *Chains) ProcessSlotCommitmentRequest(commitmentID iotago.CommitmentID, src network.PeerID) { - if commitment, exists := c.protocol.Commitment(commitmentID); !exists { - c.protocol.SendSlotCommitment(commitment.CommitmentModel(), src) - } -} - func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { - c.requestCommitment(commitment.PrevID(), commitment.Index()-1, true, commitment.setParent) + c.requestCommitment(commitment.PrevID(), true, commitment.setParent) slotEvictedEvent.OnTrigger(func() { commitment.evicted.Trigger() @@ -114,29 +112,29 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti }) } -func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, index iotago.SlotIndex, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { - slotEvicted := c.EvictionEvent(index) +func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment], err error) { + slotEvicted := c.EvictionEvent(commitmentID.Index()) if slotEvicted.WasTriggered() { rootCommitment := c.mainChain.Get().Root() if rootCommitment == nil || commitmentID != rootCommitment.ID() { - return nil + return nil, ErrorSlotEvicted } for _, successCallback := range optSuccessCallbacks { successCallback(rootCommitment) } - return promise.New[*Commitment]().Resolve(rootCommitment) + return promise.New[*Commitment]().Resolve(rootCommitment), nil } commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) if requestCreated { if requestFromPeers { - c.CommitmentRequester.StartTicker(commitmentID) + c.protocol.commitmentRequester.StartTicker(commitmentID) commitmentRequest.OnComplete(func() { - c.CommitmentRequester.StopTicker(commitmentID) + c.protocol.commitmentRequester.StopTicker(commitmentID) }) } @@ -151,5 +149,20 @@ func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, index iotag commitmentRequest.OnSuccess(successCallback) } - return commitmentRequest + return commitmentRequest, nil +} + +func (c *Chains) publishLatestEngineCommitment(engine *engine.Engine) { + unsubscribe := engine.Events.Notarization.LatestCommitmentUpdated.Hook(func(modelCommitment *model.Commitment) { + commitment, err := c.PublishCommitment(modelCommitment) + if err != nil { + c.protocol.TriggerError(ierrors.Wrapf(err, "failed to add commitment %s", modelCommitment.ID())) + } + + // TODO: WHAT TO DO IF OUR VERIFIED COMMITMENT IS IN A FORK + + commitment.Verified().Trigger() + }).Unhook + + engine.HookShutdown(unsubscribe) } diff --git a/pkg/protocol/chains_test.go b/pkg/protocol/chains_test.go deleted file mode 100644 index e4fed1f7b..000000000 --- a/pkg/protocol/chains_test.go +++ /dev/null @@ -1,84 +0,0 @@ -package protocol - -import ( - "fmt" - "testing" - - "github.com/stretchr/testify/require" - - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/model" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/tpkg" -) - -func TestChainManager(t *testing.T) { - testAPI := tpkg.TestAPI - rootCommitment := model.NewEmptyCommitment(testAPI) - chainManager := newChains(rootCommitment) - - chainManager.ChainSwitching.heaviestAttestedCandidate.OnUpdate(func(oldValue, newValue *Chain) { - fmt.Println("CandidateChain", oldValue, newValue) - }) - - commitment1 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), - rootCommitment.Index()+1, - rootCommitment.ID(), - rootCommitment.RootsID(), - 1, - 1, - ), testAPI)) - - commitment2 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), - commitment1.Index()+1, - commitment1.ID(), - commitment1.RootsID(), - 2, - 2, - ), testAPI)) - - commitment3 := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), - commitment2.Index()+1, - commitment2.ID(), - commitment2.RootsID(), - 3, - 2, - ), testAPI)) - - commitment3a := lo.PanicOnErr(model.CommitmentFromCommitment(iotago.NewCommitment(testAPI.Version(), - commitment2.Index()+1, - commitment2.ID(), - commitment2.RootsID(), - 40, - 2, - ), testAPI)) - - commitment1Metadata := chainManager.ProcessCommitment(commitment1) - require.True(t, commitment1Metadata.Solid().WasTriggered()) - - commitment3Metadata := chainManager.ProcessCommitment(commitment3) - require.True(t, commitment1Metadata.Solid().WasTriggered()) - require.False(t, commitment3Metadata.Solid().WasTriggered()) - - commitment2Metadata := chainManager.ProcessCommitment(commitment2) - require.True(t, commitment1Metadata.Solid().WasTriggered()) - require.True(t, commitment2Metadata.Solid().WasTriggered()) - require.True(t, commitment3Metadata.Solid().WasTriggered()) - - commitment2Metadata.Verified().Trigger() - require.True(t, commitment3Metadata.InSyncRange().Get()) - require.False(t, commitment3Metadata.RequestBlocks().Get()) - require.True(t, commitment3Metadata.Solid().WasTriggered()) - require.Equal(t, iotago.SlotIndex(3), commitment3Metadata.Chain().LatestCommitment().Index()) - require.Equal(t, uint64(3), commitment3Metadata.Chain().ClaimedWeight().Get()) - - commitment3aMetadata := chainManager.ProcessCommitment(commitment3a) - - fmt.Println(commitment3aMetadata.RequestAttestations().Get()) - fmt.Println("TRIGGER ATTESTATION") - commitment3Metadata.Parent().Get().Attested().Trigger() - fmt.Println(commitment3aMetadata.RequestAttestations().Get()) - - fmt.Println(commitment3aMetadata.Attested().Trigger()) - fmt.Println(commitment3aMetadata.RequestAttestations().Get()) -} diff --git a/pkg/protocol/dispatcher.go b/pkg/protocol/dispatcher.go deleted file mode 100644 index 2d03bddf3..000000000 --- a/pkg/protocol/dispatcher.go +++ /dev/null @@ -1,25 +0,0 @@ -package protocol - -import ( - "fmt" - - "github.com/iotaledger/hive.go/crypto/identity" - "github.com/iotaledger/iota-core/pkg/model" -) - -type Dispatcher struct { - protocol *Protocol -} - -func newDispatcher(protocol *Protocol) *Dispatcher { - return &Dispatcher{ - protocol: protocol, - } -} - -func (p *Dispatcher) IssueBlock(block *model.Block) error { - fmt.Println("IssueBlock", block) - p.protocol.MainEngine().ProcessBlockFromPeer(block, identity.ID{}) - - return nil -} diff --git a/pkg/protocol/errors.go b/pkg/protocol/errors.go new file mode 100644 index 000000000..99402ae07 --- /dev/null +++ b/pkg/protocol/errors.go @@ -0,0 +1,8 @@ +package protocol + +import "github.com/iotaledger/hive.go/ierrors" + +var ( + ErrorCommitmentNotFound = ierrors.New("commitment not found") + ErrorSlotEvicted = ierrors.New("slot evicted") +) diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go new file mode 100644 index 000000000..14d872855 --- /dev/null +++ b/pkg/protocol/gossip.go @@ -0,0 +1,266 @@ +package protocol + +import ( + "fmt" + + "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/crypto/identity" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/kvstore" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/runtime/event" + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/network" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" + "github.com/iotaledger/iota-core/pkg/storage/prunable" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/merklehasher" +) + +type Gossip struct { + protocol *Protocol + gossip *event.Event1[*model.Block] + attestationsRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + blockRequestStarted *event.Event2[iotago.BlockID, *engine.Engine] + blockRequestStopped *event.Event2[iotago.BlockID, *engine.Engine] + blockRequested *event.Event2[iotago.BlockID, *engine.Engine] + commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] +} + +func NewGossip(protocol *Protocol) *Gossip { + g := &Gossip{ + protocol: protocol, + gossip: event.New1[*model.Block](), + attestationsRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + blockRequestStarted: event.New2[iotago.BlockID, *engine.Engine](), + blockRequestStopped: event.New2[iotago.BlockID, *engine.Engine](), + blockRequested: event.New2[iotago.BlockID, *engine.Engine](), + commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), + } + + g.startAttestationsRequester() + g.startBlockRequester() + + for _, gossipEvent := range []*event.Event1[*blocks.Block]{ + protocol.MainEngineEvents.Scheduler.BlockScheduled, + protocol.MainEngineEvents.Scheduler.BlockSkipped, + } { + gossipEvent.Hook(func(block *blocks.Block) { g.gossip.Trigger(block.ModelBlock()) }) + } + + return g +} + +func (r *Gossip) IssueBlock(block *model.Block) error { + r.protocol.MainEngine().ProcessBlockFromPeer(block, identity.ID{}) + + return nil +} + +func (r *Gossip) ProcessBlock(block *model.Block, src identity.ID) error { + commitmentRequest, err := r.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) + if err != nil { + return ierrors.Wrapf(err, "failed to process block %s from peer %s", block.ID(), src) + } else if commitmentRequest.WasRejected() { + return ierrors.Wrapf(commitmentRequest.Err(), "failed to process block %s from peer %s", block.ID(), src) + } else if !commitmentRequest.WasCompleted() { + fmt.Println("WARNING3", block.ProtocolBlock().SlotCommitmentID) + // TODO: QUEUE TO UNSOLID COMMITMENT BLOCKS + } else { + commitment := commitmentRequest.Result() + + if chain := commitment.Chain(); chain != nil && chain.InSyncRange(block.ID().Index()) { + if engine := commitment.Engine().Get(); engine != nil { + engine.ProcessBlockFromPeer(block, src) + } + } + } + + return nil +} + +func (r *Gossip) ProcessBlockRequest(blockID iotago.BlockID, src network.PeerID) error { + block, exists := r.protocol.MainEngine().Block(blockID) + if !exists { + // TODO: CREATE SENTINAL ERRORS + return ierrors.Errorf("requested block %s not found", blockID) + } + + r.protocol.SendBlock(block, src) + + return nil +} + +func (r *Gossip) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src network.PeerID) error { + if commitment, err := r.protocol.Commitment(commitmentID); err == nil { + r.protocol.SendSlotCommitment(commitment.CommitmentModel(), src) + } else if !ierrors.Is(err, ErrorCommitmentNotFound) { + return ierrors.Wrapf(err, "failed to process slot commitment request for commitment %s from peer %s", commitmentID, src) + } + + return nil +} + +func (r *Gossip) ProcessAttestationsResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source network.PeerID) (err error) { + commitment, err := r.protocol.PublishCommitment(commitmentModel) + if err != nil { + return ierrors.Wrapf(err, "failed to publish commitment %s when processing attestations", commitmentModel.ID()) + } + + chain := commitment.Chain() + if chain == nil { + return ierrors.Errorf("failed to find chain for commitment %s when processing attestations", commitmentModel.ID()) + } + + commitmentVerifier, exists := r.commitmentVerifiers.Get(chain.Root().ID()) + if !exists { + return ierrors.Errorf("failed to find commitment verifier for commitment %s when processing attestations", commitmentModel.ID()) + } + + blockIDs, actualCumulativeWeight, err := commitmentVerifier.verifyCommitment(commitmentModel, attestations, merkleProof) + if err != nil { + return ierrors.Errorf("failed to verify commitment %s when processing attestations", commitmentModel.ID()) + } + + // TODO: publish blockIDs, actualCumulativeWeight to target commitment + commitment.Attested().Set(true) + + fmt.Println("ATTESTATIONS", blockIDs, actualCumulativeWeight, source) + + return nil +} + +func (r *Gossip) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src network.PeerID) error { + mainEngine := r.protocol.MainEngine() + + if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { + return ierrors.Errorf("main engine has produced the requested commitment %s, yet", commitmentID) + } + + commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Index()) + if err != nil { + return ierrors.Wrapf(err, "failed to load commitment %s", commitmentID) + } + + if commitment.ID() != commitmentID { + return ierrors.Errorf("requested commitment is not from the main chain %s", commitmentID) + } + + attestations, err := mainEngine.Attestations.Get(commitmentID.Index()) + if err != nil { + return ierrors.Wrapf(err, "failed to load attestations for commitment %s", commitmentID) + } + + rootsStorage := mainEngine.Storage.Roots(commitmentID.Index()) + if rootsStorage == nil { + return ierrors.Errorf("failed to load roots for commitment %s", commitmentID) + } + + rootsBytes, err := rootsStorage.Get(kvstore.Key{prunable.RootsKey}) + if err != nil { + return ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID) + } + + var roots iotago.Roots + if _, err = r.protocol.APIForSlot(commitmentID.Index()).Decode(rootsBytes, &roots); err != nil { + return ierrors.Wrapf(err, "failed to decode roots for commitment %s", commitmentID) + } + + r.protocol.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) + + return nil +} + +func (r *Gossip) OnSendBlock(callback func(block *model.Block)) (unsubscribe func()) { + return r.gossip.Hook(callback).Unhook +} + +func (r *Gossip) OnBlockRequested(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { + return r.blockRequested.Hook(callback).Unhook +} + +func (r *Gossip) OnBlockRequestStarted(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { + return r.blockRequestStarted.Hook(callback).Unhook +} + +func (r *Gossip) OnBlockRequestStopped(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { + return r.blockRequestStopped.Hook(callback).Unhook +} + +func (r *Gossip) OnCommitmentRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return r.commitmentRequester.Events.TickerStarted.Hook(callback).Unhook +} + +func (r *Gossip) OnCommitmentRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return r.commitmentRequester.Events.TickerStopped.Hook(callback).Unhook +} + +func (r *Gossip) OnCommitmentRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return r.commitmentRequester.Events.Tick.Hook(callback).Unhook +} + +func (r *Gossip) OnAttestationsRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return r.attestationsRequester.Events.TickerStarted.Hook(callback).Unhook +} + +func (r *Gossip) OnAttestationsRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return r.attestationsRequester.Events.TickerStopped.Hook(callback).Unhook +} + +func (r *Gossip) OnAttestationsRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return r.attestationsRequester.Events.Tick.Hook(callback).Unhook +} + +func (r *Gossip) startAttestationsRequester() { + r.protocol.HookConstructed(func() { + r.protocol.OnChainCreated(func(chain *Chain) { + chain.RequestAttestations().OnUpdate(func(_, requestAttestations bool) { + if requestAttestations { + r.commitmentVerifiers.GetOrCreate(chain.Root().ID(), func() *CommitmentVerifier { + return NewCommitmentVerifier(chain.EngineR().Get(), chain.Root().Parent().Get().CommitmentModel()) + }) + } else { + r.commitmentVerifiers.Delete(chain.Root().ID()) + } + }) + }) + + r.protocol.OnCommitmentCreated(func(commitment *Commitment) { + commitment.requestAttestations.OnUpdate(func(_, requestAttestations bool) { + if requestAttestations { + r.attestationsRequester.StartTicker(commitment.ID()) + } else { + r.attestationsRequester.StopTicker(commitment.ID()) + } + }) + }) + }) +} + +func (r *Gossip) startBlockRequester() { + startBlockRequester := func(engine *engine.Engine) { + unsubscribe := lo.Batch( + engine.Events.BlockRequester.Tick.Hook(func(id iotago.BlockID) { + r.blockRequested.Trigger(id, engine) + }).Unhook, + + engine.Events.BlockRequester.TickerStarted.Hook(func(id iotago.BlockID) { + r.blockRequestStarted.Trigger(id, engine) + }).Unhook, + + engine.Events.BlockRequester.TickerStopped.Hook(func(id iotago.BlockID) { + r.blockRequestStopped.Trigger(id, engine) + }).Unhook, + ) + + engine.HookShutdown(unsubscribe) + } + + startBlockRequester(r.protocol.MainEngine()) + + r.protocol.OnEngineCreated(startBlockRequester) +} diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index d692cd290..fb9f98fd1 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -6,13 +6,12 @@ import ( "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/network/protocols/core" + "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" "github.com/iotaledger/iota.go/v4/merklehasher" ) type Network struct { - protocol *Protocol - *core.Protocol module.Module @@ -20,60 +19,62 @@ type Network struct { func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { n := &Network{ - protocol: protocol, Protocol: core.NewProtocol(endpoint, protocol.Workers().CreatePool("NetworkProtocol"), protocol), } - protocol.HookConstructed(func() { + protocol.HookInitialized(func() { n.OnError(func(err error, src network.PeerID) { protocol.TriggerError(ierrors.Wrapf(err, "Network error from %s", src)) }) - }) - protocol.HookInitialized(func() { - n.startNetwork() + n.dispatchInboundMessages(protocol) + n.dispatchOutboundMessages(protocol) n.TriggerInitialized() }) - protocol.HookShutdown(func() { - n.TriggerShutdown() - - n.Shutdown() - - n.TriggerStopped() - }) + protocol.HookShutdown(n.Shutdown) n.TriggerConstructed() return n } -func (n *Network) startNetwork() { +func (n *Network) dispatchInboundMessages(protocol *Protocol) { n.OnBlockReceived(func(block *model.Block, src network.PeerID) { - panic("implement me") + if err := protocol.ProcessBlock(block, src); err != nil { + protocol.TriggerError(ierrors.Wrapf(err, "failed to process block %s from peer %s", block.ID(), src)) + } }) n.OnBlockRequestReceived(func(blockID iotago.BlockID, src network.PeerID) { - if block, exists := n.protocol.MainEngine().Block(blockID); !exists { - n.SendBlock(block, src) + if err := protocol.ProcessBlockRequest(blockID, src); err != nil { + protocol.TriggerError(ierrors.Wrapf(err, "failed to process block %s from peer %s", blockID, src)) } }) n.OnSlotCommitmentReceived(func(commitment *model.Commitment, src network.PeerID) { - panic("implement me") + if _, err := protocol.PublishCommitment(commitment); err != nil { + protocol.TriggerError(ierrors.Wrapf(err, "failed to process slot commitment %s from peer %s", commitment.ID(), src)) + } }) n.OnSlotCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, src network.PeerID) { - n.protocol.ProcessSlotCommitmentRequest(commitmentID, src) + if err := protocol.ProcessCommitmentRequest(commitmentID, src); err != nil { + protocol.TriggerError(ierrors.Wrapf(err, "failed to process slot commitment request %s from peer %s", commitmentID, src)) + } }) n.OnAttestationsReceived(func(commitment *model.Commitment, attestations []*iotago.Attestation, m *merklehasher.Proof[iotago.Identifier], id network.PeerID) { - n.protocol.ProcessAttestationsResponse(commitment, attestations, m, id) + if err := protocol.ProcessAttestationsResponse(commitment, attestations, m, id); err != nil { + protocol.TriggerError(ierrors.Wrapf(err, "failed to process attestations response for commitment %s from peer %s", commitment.ID(), id)) + } }) n.OnAttestationsRequestReceived(func(commitmentID iotago.CommitmentID, src network.PeerID) { - n.protocol.ProcessAttestationsRequest(commitmentID, src) + if err := protocol.ProcessAttestationsRequest(commitmentID, src); err != nil { + protocol.TriggerError(ierrors.Wrapf(err, "failed to process attestations request for commitment %s from peer %s", commitmentID, src)) + } }) n.OnWarpSyncResponseReceived(func(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], src network.PeerID) { @@ -83,42 +84,29 @@ func (n *Network) startNetwork() { n.OnWarpSyncRequestReceived(func(commitmentID iotago.CommitmentID, src network.PeerID) { panic("implement me") }) - - // TODO: WIRE UP NETWORK EVENTS } -func (n *Network) OnBlockReceived(callback func(block *model.Block, src network.PeerID)) (unsubscribe func()) { - return n.Events.BlockReceived.Hook(callback).Unhook -} - -func (n *Network) OnBlockRequestReceived(callback func(blockID iotago.BlockID, src network.PeerID)) (unsubscribe func()) { - return n.Events.BlockRequestReceived.Hook(callback).Unhook -} - -func (n *Network) OnSlotCommitmentReceived(callback func(commitment *model.Commitment, src network.PeerID)) (unsubscribe func()) { - return n.Events.SlotCommitmentReceived.Hook(callback).Unhook -} - -func (n *Network) OnSlotCommitmentRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { - return n.Events.SlotCommitmentRequestReceived.Hook(callback).Unhook -} +func (n *Network) dispatchOutboundMessages(protocol *Protocol) { + protocol.OnSendBlock(func(block *model.Block) { + n.SendBlock(block) + }) -func (n *Network) OnAttestationsReceived(callback func(*model.Commitment, []*iotago.Attestation, *merklehasher.Proof[iotago.Identifier], network.PeerID)) (unsubscribe func()) { - return n.Events.AttestationsReceived.Hook(callback).Unhook -} + protocol.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { + n.RequestBlock(blockID) + }) -func (n *Network) OnAttestationsRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { - return n.Events.AttestationsRequestReceived.Hook(callback).Unhook -} + protocol.OnCommitmentRequested(func(id iotago.CommitmentID) { + n.RequestSlotCommitment(id) + }) -func (n *Network) OnWarpSyncResponseReceived(callback func(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], src network.PeerID)) (unsubscribe func()) { - return n.Events.WarpSyncResponseReceived.Hook(callback).Unhook -} + protocol.OnAttestationsRequested(func(commitmentID iotago.CommitmentID) { + n.RequestAttestations(commitmentID) + }) -func (n *Network) OnWarpSyncRequestReceived(callback func(commitmentID iotago.CommitmentID, src network.PeerID)) (unsubscribe func()) { - return n.Events.WarpSyncRequestReceived.Hook(callback).Unhook } -func (n *Network) OnError(callback func(err error, src network.PeerID)) (unsubscribe func()) { - return n.Events.Error.Hook(callback).Unhook +func (n *Network) Shutdown() { + n.TriggerShutdown() + n.Protocol.Shutdown() + n.TriggerStopped() } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 5c23b70fb..91e77f79d 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -2,7 +2,6 @@ package protocol import ( "context" - "fmt" "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/runtime/event" @@ -10,6 +9,7 @@ import ( "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/network" + iotago "github.com/iotaledger/iota.go/v4" ) type Protocol struct { @@ -21,8 +21,7 @@ type Protocol struct { *Network *Engines *Chains - *Dispatcher - *APIProvider + *Gossip module.Module } @@ -37,8 +36,7 @@ func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options p.Network = newNetwork(p, dispatcher) p.Engines = newEngines(p) p.Chains = newChains(p) - p.Dispatcher = newDispatcher(p) - p.APIProvider = newAPIProvider(p) + p.Gossip = NewGossip(p) }, (*Protocol).TriggerConstructed) } @@ -47,21 +45,39 @@ func (p *Protocol) Run(ctx context.Context) error { p.TriggerInitialized() - fmt.Println("RUN STARTED") - <-ctx.Done() - fmt.Println("RUN FINISHED") - p.TriggerShutdown() - return nil + return ctx.Err() } func (p *Protocol) Workers() *workerpool.Group { return p.workers } +// APIForVersion returns the API for the given version. +func (a *Protocol) APIForVersion(version iotago.Version) (api iotago.API, err error) { + return a.MainEngine().APIForVersion(version) +} + +// APIForSlot returns the API for the given slot. +func (a *Protocol) APIForSlot(slot iotago.SlotIndex) iotago.API { + return a.MainEngine().APIForSlot(slot) +} + +func (a *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { + return a.MainEngine().APIForEpoch(epoch) +} + +func (a *Protocol) CurrentAPI() iotago.API { + return a.MainEngine().CurrentAPI() +} + +func (a *Protocol) LatestAPI() iotago.API { + return a.MainEngine().LatestAPI() +} + func (p *Protocol) Status() Status { return p.status.Get() } diff --git a/pkg/protocol/status.go b/pkg/protocol/status.go index 17abea18d..7f9f58325 100644 --- a/pkg/protocol/status.go +++ b/pkg/protocol/status.go @@ -21,60 +21,62 @@ type Status struct { func newStatusVariable(p *Protocol) reactive.Variable[Status] { s := reactive.NewVariable[Status]() - var unsubscribeFromPreviousEngine func() + p.HookConstructed(func() { + var unsubscribeFromPreviousEngine func() - p.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { - if unsubscribeFromPreviousEngine != nil { - unsubscribeFromPreviousEngine() - } + p.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { + if unsubscribeFromPreviousEngine != nil { + unsubscribeFromPreviousEngine() + } - s.Set(Status{ - NodeSynced: engine.IsSynced(), - LastAcceptedBlockSlot: engine.BlockGadget.LastAcceptedBlockIndex(), - LastConfirmedBlockSlot: engine.BlockGadget.LastConfirmedBlockIndex(), - LatestFinalizedSlot: engine.Storage.Settings().LatestFinalizedSlot(), - LatestPrunedSlot: lo.Return1(engine.Storage.Prunable.LastPrunedSlot()), - LatestCommitment: engine.Storage.Settings().LatestCommitment(), - }) + s.Set(Status{ + NodeSynced: engine.IsSynced(), + LastAcceptedBlockSlot: engine.BlockGadget.LastAcceptedBlockIndex(), + LastConfirmedBlockSlot: engine.BlockGadget.LastConfirmedBlockIndex(), + LatestFinalizedSlot: engine.Storage.Settings().LatestFinalizedSlot(), + LatestPrunedSlot: lo.Return1(engine.Storage.Prunable.LastPrunedSlot()), + LatestCommitment: engine.Storage.Settings().LatestCommitment(), + }) - unsubscribeFromPreviousEngine = lo.Batch( - // TODO: Update NodeSynced when the node is bootstrapped + unsubscribeFromPreviousEngine = lo.Batch( + // TODO: Update NodeSynced when the node is bootstrapped - engine.Events.BlockGadget.BlockAccepted.Hook(func(acceptedBlock *blocks.Block) { - s.Compute(func(status Status) Status { - status.LastAcceptedBlockSlot = acceptedBlock.ID().Index() - return status - }) - }).Unhook, + engine.Events.BlockGadget.BlockAccepted.Hook(func(acceptedBlock *blocks.Block) { + s.Compute(func(status Status) Status { + status.LastAcceptedBlockSlot = acceptedBlock.ID().Index() + return status + }) + }).Unhook, - engine.Events.BlockGadget.BlockConfirmed.Hook(func(confirmedBlock *blocks.Block) { - s.Compute(func(status Status) Status { - status.LastConfirmedBlockSlot = confirmedBlock.ID().Index() - return status - }) - }).Unhook, + engine.Events.BlockGadget.BlockConfirmed.Hook(func(confirmedBlock *blocks.Block) { + s.Compute(func(status Status) Status { + status.LastConfirmedBlockSlot = confirmedBlock.ID().Index() + return status + }) + }).Unhook, - engine.Events.SlotGadget.SlotFinalized.Hook(func(latestFinalizedSlot iotago.SlotIndex) { - s.Compute(func(status Status) Status { - status.LatestFinalizedSlot = latestFinalizedSlot - return status - }) - }).Unhook, + engine.Events.SlotGadget.SlotFinalized.Hook(func(latestFinalizedSlot iotago.SlotIndex) { + s.Compute(func(status Status) Status { + status.LatestFinalizedSlot = latestFinalizedSlot + return status + }) + }).Unhook, - engine.Events.StoragePruned.Hook(func(latestPrunedSlot iotago.SlotIndex) { - s.Compute(func(status Status) Status { - status.LatestPrunedSlot = latestPrunedSlot - return status - }) - }).Unhook, + engine.Events.StoragePruned.Hook(func(latestPrunedSlot iotago.SlotIndex) { + s.Compute(func(status Status) Status { + status.LatestPrunedSlot = latestPrunedSlot + return status + }) + }).Unhook, - engine.Events.Notarization.LatestCommitmentUpdated.Hook(func(latestCommitment *model.Commitment) { - s.Compute(func(status Status) Status { - status.LatestCommitment = latestCommitment - return status - }) - }).Unhook, - ) + engine.Events.Notarization.LatestCommitmentUpdated.Hook(func(latestCommitment *model.Commitment) { + s.Compute(func(status Status) Status { + status.LatestCommitment = latestCommitment + return status + }) + }).Unhook, + ) + }) }) return s diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 6bea58dd5..31d98c8ee 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -171,7 +171,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { fmt.Printf("%s > Network.AttestationsRequestReceived: from %s %s\n", n.Name, source, id) }) - n.Protocol.OnCommitmentRequested(func(commitmentID iotago.CommitmentID) { + n.Protocol.OnCommitmentRequestStarted(func(commitmentID iotago.CommitmentID) { fmt.Printf("%s > ChainManager.RequestCommitment: %s\n", n.Name, commitmentID) }) From c11d6f601eb21892b0037265714b2db6451aa30e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 02:19:27 +0200 Subject: [PATCH 097/356] Refactor: more cleanup --- pkg/protocol/chain.go | 3 +- pkg/protocol/chain_switching.go | 72 ----------------------------- pkg/protocol/chains.go | 82 ++++++++++++++++++++++++++++----- 3 files changed, 71 insertions(+), 86 deletions(-) delete mode 100644 pkg/protocol/chain_switching.go diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index c138d3916..ff658afd7 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -41,7 +41,7 @@ type Chain struct { // that we are about to commit ourselves). warpSyncThreshold reactive.Variable[iotago.SlotIndex] - // requestAttestations is a flag that indicates whether this chain shall request attestations. + // requestAttestations is a flag that indicates whether this chain wants to request attestations. requestAttestations reactive.Variable[bool] // engine is the engine that is used to process blocks of this chain. @@ -86,7 +86,6 @@ func NewChain(root *Commitment, optStartingEngine ...*engine.Engine) *Chain { return latestVerifiedCommitment.Index() + SyncWindow + 1 }, c.latestVerifiedCommitment) - // associate the commitment with its chain root.chain.Set(c) return c diff --git a/pkg/protocol/chain_switching.go b/pkg/protocol/chain_switching.go deleted file mode 100644 index 3b521eff8..000000000 --- a/pkg/protocol/chain_switching.go +++ /dev/null @@ -1,72 +0,0 @@ -package protocol - -import "github.com/iotaledger/hive.go/ds/reactive" - -type ChainSwitching struct { - heaviestClaimedCandidate reactive.Variable[*Chain] - - heaviestAttestedCandidate reactive.Variable[*Chain] - - heaviestVerifiedCandidate reactive.Variable[*Chain] -} - -func NewChainSwitching(chainManager *Chains) *ChainSwitching { - c := &ChainSwitching{ - heaviestClaimedCandidate: reactive.NewVariable[*Chain](), - heaviestAttestedCandidate: reactive.NewVariable[*Chain](), - heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), - } - - c.heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - prevCandidate.requestAttestations.Set(false) - } - - newCandidate.requestAttestations.Set(true) - }) - - c.heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - prevCandidate.engine.instantiate.Set(false) - } - - newCandidate.engine.instantiate.Set(true) - }) - - selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { - chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= chainManager.mainChain.Get().verifiedWeight.Get() { - return - } - - candidate.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { - return newCandidate - } - - return currentCandidate - }) - }) - } - - chainManager.OnChainCreated(func(chain *Chain) { - // TODO: ON SOLID - selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) - selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) - selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*Chain).VerifiedWeight) - }) - - return c -} - -func (c *ChainSwitching) HeaviestClaimedCandidate() reactive.Variable[*Chain] { - return c.heaviestClaimedCandidate -} - -func (c *ChainSwitching) HeaviestAttestedCandidate() reactive.Variable[*Chain] { - return c.heaviestAttestedCandidate -} - -func (c *ChainSwitching) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { - return c.heaviestVerifiedCandidate -} diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 1b6a6e255..9b771fdf1 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -17,34 +17,39 @@ type Chains struct { mainChain reactive.Variable[*Chain] + heaviestClaimedCandidate reactive.Variable[*Chain] + + heaviestAttestedCandidate reactive.Variable[*Chain] + + heaviestVerifiedCandidate reactive.Variable[*Chain] + commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] commitmentCreated *event.Event1[*Commitment] chainCreated *event.Event1[*Chain] - *ChainSwitching - reactive.EvictionState[iotago.SlotIndex] } func newChains(protocol *Protocol) *Chains { c := &Chains{ - protocol: protocol, - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(protocol.MainEngine().LatestCommitment(), true), protocol.MainEngine())), - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), - commitmentCreated: event.New1[*Commitment](), - chainCreated: event.New1[*Chain](), + protocol: protocol, + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), + mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(protocol.MainEngine().LatestCommitment(), true), protocol.MainEngine())), + heaviestClaimedCandidate: reactive.NewVariable[*Chain](), + heaviestAttestedCandidate: reactive.NewVariable[*Chain](), + heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + commitmentCreated: event.New1[*Commitment](), + chainCreated: event.New1[*Chain](), } - // embed reactive orchestrators - c.ChainSwitching = NewChainSwitching(c) - c.publishLatestEngineCommitment(protocol.MainEngine()) - protocol.OnEngineCreated(c.publishLatestEngineCommitment) + c.enableChainSwitching() + return c } @@ -96,6 +101,18 @@ func (c *Chains) MainChainR() reactive.Variable[*Chain] { return c.mainChain } +func (c *Chains) HeaviestClaimedCandidate() reactive.Variable[*Chain] { + return c.heaviestClaimedCandidate +} + +func (c *Chains) HeaviestAttestedCandidate() reactive.Variable[*Chain] { + return c.heaviestAttestedCandidate +} + +func (c *Chains) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { + return c.heaviestVerifiedCandidate +} + func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { c.requestCommitment(commitment.PrevID(), true, commitment.setParent) @@ -166,3 +183,44 @@ func (c *Chains) publishLatestEngineCommitment(engine *engine.Engine) { engine.HookShutdown(unsubscribe) } + +func (c *Chains) enableChainSwitching() { + c.heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + prevCandidate.requestAttestations.Set(false) + } + + newCandidate.requestAttestations.Set(true) + }) + + c.heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + prevCandidate.engine.instantiate.Set(false) + } + + newCandidate.engine.instantiate.Set(true) + }) + + selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { + chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { + if newChainWeight <= c.mainChain.Get().verifiedWeight.Get() { + return + } + + candidate.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { + return newCandidate + } + + return currentCandidate + }) + }) + } + + c.OnChainCreated(func(chain *Chain) { + // TODO: ON SOLID + selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) + selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) + selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*Chain).VerifiedWeight) + }) +} From db9ec5a9ae0cacaa0fd8af4cf85510678317abe7 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 03:53:15 +0200 Subject: [PATCH 098/356] Fix: fixed more merge conflicts --- components/dashboard/component.go | 4 +- components/debugapi/component.go | 2 +- components/inx/server_node.go | 13 ++-- components/inx/server_utxo.go | 4 +- components/metrics/metrics_accounts.go | 2 +- components/metrics/metrics_info.go | 2 +- components/metricstracker/component.go | 2 +- components/restapi/core/accounts.go | 6 +- components/restapi/core/blocks.go | 4 +- components/restapi/core/component.go | 2 +- components/restapi/core/node.go | 2 +- components/restapi/core/utxo.go | 4 +- components/restapi/routes.go | 2 +- pkg/blockfactory/blockissuer.go | 2 +- pkg/protocol/chains.go | 2 +- pkg/protocol/engine/engine.go | 1 - pkg/protocol/engines.go | 1 + pkg/protocol/gossip.go | 15 ++--- pkg/protocol/network.go | 2 +- pkg/protocol/protocol.go | 31 ++++------ pkg/protocol/status.go | 83 -------------------------- 21 files changed, 42 insertions(+), 144 deletions(-) delete mode 100644 pkg/protocol/status.go diff --git a/components/dashboard/component.go b/components/dashboard/component.go index b52103be2..f7a75e848 100644 --- a/components/dashboard/component.go +++ b/components/dashboard/component.go @@ -151,11 +151,11 @@ func currentNodeStatus() *nodestatus { } // get TangleTime cl := deps.Protocol.MainEngine().Clock - syncStatus := deps.Protocol.MainEngine().SyncStatus() + syncStatus := deps.Protocol.MainEngine().SyncManager.SyncStatus() status.TangleTime = tangleTime{ Synced: syncStatus.NodeSynced, - Bootstrapped: syncStatus.IsBootstrapped, + Bootstrapped: deps.Protocol.MainEngine().SyncManager.IsBootstrapped(), AcceptedBlockSlot: int64(syncStatus.LastAcceptedBlockSlot), ConfirmedBlockSlot: int64(syncStatus.LastConfirmedBlockSlot), CommittedSlot: int64(syncStatus.LatestCommitment.Index()), diff --git a/components/debugapi/component.go b/components/debugapi/component.go index 6e32ee691..cf068e9cf 100644 --- a/components/debugapi/component.go +++ b/components/debugapi/component.go @@ -180,7 +180,7 @@ func configure() error { return err } - j, err := deps.Protocol.MainEngine().CurrentAPI().JSONEncode(resp) + j, err := deps.Protocol.CurrentAPI().JSONEncode(resp) if err != nil { return err } diff --git a/components/inx/server_node.go b/components/inx/server_node.go index 372ccc6b7..1800530d1 100644 --- a/components/inx/server_node.go +++ b/components/inx/server_node.go @@ -4,12 +4,13 @@ import ( "context" "time" + "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/workerpool" inx "github.com/iotaledger/inx/go" - "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/syncmanager" ) -func inxNodeStatus(status engine.SyncStatus) *inx.NodeStatus { +func inxNodeStatus(status *syncmanager.SyncStatus) *inx.NodeStatus { return &inx.NodeStatus{ IsHealthy: status.NodeSynced, LastAcceptedBlockSlot: uint64(status.LastAcceptedBlockSlot), @@ -21,7 +22,7 @@ func inxNodeStatus(status engine.SyncStatus) *inx.NodeStatus { } func (s *Server) ReadNodeStatus(context.Context, *inx.NoParams) (*inx.NodeStatus, error) { - return inxNodeStatus(deps.Protocol.MainEngine().SyncStatus()), nil + return inxNodeStatus(deps.Protocol.MainEngine().SyncManager.SyncStatus()), nil } func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_ListenToNodeStatusServer) error { @@ -42,7 +43,7 @@ func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_List coolDownDuration := time.Duration(req.GetCooldownInMilliseconds()) * time.Millisecond wp := workerpool.New("ListenToNodeStatus", workerCount) - onUpdate := func(status protocol.Status) { + onUpdate := func(status *syncmanager.SyncStatus) { if lastUpdateTimer != nil { lastUpdateTimer.Stop() lastUpdateTimer = nil @@ -66,9 +67,7 @@ func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_List } wp.Start() - unhook := deps.Protocol.StatusR().OnUpdate(func(oldValue, newValue protocol.Status) { - wp.Submit(func() { onUpdate(newValue) }) - }) + unhook := deps.Protocol.MainEngineEvents.SyncManager.UpdatedStatus.Hook(onUpdate, event.WithWorkerPool(wp)).Unhook <-ctx.Done() unhook() diff --git a/components/inx/server_utxo.go b/components/inx/server_utxo.go index e2ffa37af..a1e50bd60 100644 --- a/components/inx/server_utxo.go +++ b/components/inx/server_utxo.go @@ -227,7 +227,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li return 0, nil } - latestCommitment := deps.Protocol.MainEngine().SyncStatus().LatestCommitment + latestCommitment := deps.Protocol.MainEngine().SyncManager.LatestCommitment() if startIndex > latestCommitment.Index() { // no need to send previous milestone diffs @@ -235,7 +235,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li } // Stream all available milestone diffs first - pruningIndex := deps.Protocol.MainEngine().SyncStatus().LatestFinalizedSlot + pruningIndex := deps.Protocol.MainEngine().SyncManager.LatestFinalizedSlot() if startIndex <= pruningIndex { return 0, status.Errorf(codes.InvalidArgument, "given startMilestoneIndex %d is older than the current pruningIndex %d", startIndex, pruningIndex) } diff --git a/components/metrics/metrics_accounts.go b/components/metrics/metrics_accounts.go index f3c559792..f6fdf203f 100644 --- a/components/metrics/metrics_accounts.go +++ b/components/metrics/metrics_accounts.go @@ -23,7 +23,7 @@ var AccountMetrics = collector.NewCollection(accountNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - accountData, exists, _ := deps.Protocol.MainEngine().Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.MainEngine().SyncStatus().LatestCommitment.Index()) + accountData, exists, _ := deps.Protocol.MainEngine().Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.MainEngine().SyncManager.LatestCommitment().Index()) if exists { deps.Collector.Update(accountNamespace, credits, float64(accountData.Credits.Value), accountData.ID.String()) } diff --git a/components/metrics/metrics_info.go b/components/metrics/metrics_info.go index 8d9939540..bc6841173 100644 --- a/components/metrics/metrics_info.go +++ b/components/metrics/metrics_info.go @@ -36,7 +36,7 @@ var InfoMetrics = collector.NewCollection(infoNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Node sync status based on ATT."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - if deps.Protocol.MainEngine().SyncStatus().IsNodeSynced { + if deps.Protocol.MainEngine().SyncManager.IsNodeSynced() { return 1, nil } diff --git a/components/metricstracker/component.go b/components/metricstracker/component.go index 9098e9ae4..22bd7883f 100644 --- a/components/metricstracker/component.go +++ b/components/metricstracker/component.go @@ -46,7 +46,7 @@ func provide(c *dig.Container) error { } if err := c.Provide(func(deps metricsTrackerDeps) *MetricsTracker { - m := New(deps.Protocol.MainEngine().SyncStatus().IsBootstrapped) + m := New(deps.Protocol.MainEngine().SyncManager.IsBootstrapped) return m }); err != nil { diff --git a/components/restapi/core/accounts.go b/components/restapi/core/accounts.go index ab59453aa..3f589cc90 100644 --- a/components/restapi/core/accounts.go +++ b/components/restapi/core/accounts.go @@ -29,7 +29,7 @@ func congestionForAccountID(c echo.Context) (*apimodels.CongestionResponse, erro return nil, err } - slotIndex := deps.Protocol.MainEngine().SyncStatus().LatestCommitment.Index() + slotIndex := deps.Protocol.MainEngine().SyncManager.LatestCommitment().Index() acc, exists, err := deps.Protocol.MainEngine().Ledger.Account(accountID, slotIndex) if err != nil { @@ -67,7 +67,7 @@ func validators(c echo.Context) (*apimodels.ValidatorsResponse, error) { pageSize = restapi.ParamsRestAPI.MaxPageSize } } - latestCommittedSlot := deps.Protocol.MainEngine().SyncStatus().LatestCommitment.Index() + latestCommittedSlot := deps.Protocol.MainEngine().SyncManager.LatestCommitment().Index() // no cursor provided will be the first request requestedSlotIndex := latestCommittedSlot var cursorIndex uint32 @@ -115,7 +115,7 @@ func validatorByAccountID(c echo.Context) (*apimodels.ValidatorResponse, error) if err != nil { return nil, ierrors.Wrapf(err, "failed to parse the %s parameter", restapipkg.ParameterAccountID) } - latestCommittedSlot := deps.Protocol.MainEngine().SyncStatus().LatestCommitment.Index() + latestCommittedSlot := deps.Protocol.MainEngine().SyncManager.LatestCommitment().Index() accountData, exists, err := deps.Protocol.MainEngine().Ledger.Account(accountID, latestCommittedSlot) if err != nil { diff --git a/components/restapi/core/blocks.go b/components/restapi/core/blocks.go index fde47b5fb..4bf045b80 100644 --- a/components/restapi/core/blocks.go +++ b/components/restapi/core/blocks.go @@ -48,7 +48,7 @@ func blockMetadataByID(c echo.Context) (*apimodels.BlockMetadataResponse, error) func blockIssuance(_ echo.Context) (*apimodels.IssuanceBlockHeaderResponse, error) { references := deps.Protocol.MainEngine().TipSelection.SelectTips(iotago.BlockMaxParents) - slotCommitment := deps.Protocol.MainEngine().SyncStatus().LatestCommitment + slotCommitment := deps.Protocol.MainEngine().SyncManager.LatestCommitment() if len(references[iotago.StrongParentType]) == 0 { return nil, ierrors.Wrap(echo.ErrServiceUnavailable, "get references failed") @@ -58,7 +58,7 @@ func blockIssuance(_ echo.Context) (*apimodels.IssuanceBlockHeaderResponse, erro StrongParents: references[iotago.StrongParentType], WeakParents: references[iotago.WeakParentType], ShallowLikeParents: references[iotago.ShallowLikeParentType], - LatestFinalizedSlot: deps.Protocol.MainEngine().SyncStatus().LatestFinalizedSlot, + LatestFinalizedSlot: deps.Protocol.MainEngine().SyncManager.LatestFinalizedSlot(), Commitment: slotCommitment.Commitment(), } diff --git a/components/restapi/core/component.go b/components/restapi/core/component.go index e2aa0c131..315d22513 100644 --- a/components/restapi/core/component.go +++ b/components/restapi/core/component.go @@ -351,7 +351,7 @@ func AddFeature(feature string) { func checkNodeSynced() echo.MiddlewareFunc { return func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { - if !deps.Protocol.MainEngine().SyncStatus().IsNodeSynced { + if !deps.Protocol.MainEngine().SyncManager.IsNodeSynced() { return ierrors.Wrap(echo.ErrServiceUnavailable, "node is not synced") } diff --git a/components/restapi/core/node.go b/components/restapi/core/node.go index 7a875634d..1117a871b 100644 --- a/components/restapi/core/node.go +++ b/components/restapi/core/node.go @@ -24,7 +24,7 @@ func protocolParameters() []*apimodels.InfoResProtocolParameters { func info() *apimodels.InfoResponse { clSnapshot := deps.Protocol.MainEngine().Clock.Snapshot() - syncStatus := deps.Protocol.MainEngine().SyncStatus() + syncStatus := deps.Protocol.MainEngine().SyncManager.SyncStatus() metrics := deps.MetricsTracker.NodeMetrics() return &apimodels.InfoResponse{ diff --git a/components/restapi/core/utxo.go b/components/restapi/core/utxo.go index b32ea4989..83339c1f2 100644 --- a/components/restapi/core/utxo.go +++ b/components/restapi/core/utxo.go @@ -43,7 +43,7 @@ func getOutputMetadata(c echo.Context) (*apimodels.OutputMetadataResponse, error } func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMetadataResponse, error) { - latestCommitment := deps.Protocol.MainEngine().SyncStatus().LatestCommitment + latestCommitment := deps.Protocol.MainEngine().SyncManager.LatestCommitment() resp := &apimodels.OutputMetadataResponse{ BlockID: output.BlockID(), @@ -66,7 +66,7 @@ func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMeta } func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadataResponse, error) { - latestCommitment := deps.Protocol.MainEngine().SyncStatus().LatestCommitment + latestCommitment := deps.Protocol.MainEngine().SyncManager.LatestCommitment() resp := &apimodels.OutputMetadataResponse{ BlockID: spent.BlockID(), diff --git a/components/restapi/routes.go b/components/restapi/routes.go index 0c98674c1..2ca5fdb82 100644 --- a/components/restapi/routes.go +++ b/components/restapi/routes.go @@ -21,7 +21,7 @@ type RoutesResponse struct { func setupRoutes() { deps.Echo.GET(nodeAPIHealthRoute, func(c echo.Context) error { - if deps.Protocol.MainEngine().SyncStatus().IsNodeSynced { + if deps.Protocol.MainEngine().SyncManager.IsNodeSynced() { return c.NoContent(http.StatusOK) } diff --git a/pkg/blockfactory/blockissuer.go b/pkg/blockfactory/blockissuer.go index 49e6e46e2..72f69f94e 100644 --- a/pkg/blockfactory/blockissuer.go +++ b/pkg/blockfactory/blockissuer.go @@ -335,7 +335,7 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco if err != nil { rmcSlot = 0 } - rmc, err := i.protocol.MainEngineInstance().Ledger.RMCManager().RMC(rmcSlot) + rmc, err := i.protocol.MainEngine().Ledger.RMCManager().RMC(rmcSlot) if err != nil { return iotago.EmptyBlockID(), ierrors.Wrapf(err, "error loading commitment of slot %d from storage to get RMC", rmcSlot) } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 55e6491bb..b37bc77ae 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -36,7 +36,7 @@ func newChains(protocol *Protocol) *Chains { c := &Chains{ protocol: protocol, EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(protocol.MainEngine().SyncStatus().LatestCommitment, true), protocol.MainEngine())), + mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(protocol.MainEngine().SyncManager.LatestCommitment(), true), protocol.MainEngine())), heaviestClaimedCandidate: reactive.NewVariable[*Chain](), heaviestAttestedCandidate: reactive.NewVariable[*Chain](), heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index c68b60526..5d455298c 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -155,7 +155,6 @@ func New( e.TipSelection = tipSelectionProvider(e) e.Retainer = retainerProvider(e) e.UpgradeOrchestrator = upgradeOrchestratorProvider(e) - e.SyncManager = syncManagerProvider(e) }, (*Engine).setupBlockStorage, (*Engine).setupEvictionState, diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index f0a6011eb..202aaad14 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -45,6 +45,7 @@ func newEngines(protocol *Protocol) *Engines { protocol.options.TipSelectionProvider, protocol.options.RetainerProvider, protocol.options.UpgradeOrchestratorProvider, + nil, ), mainEngine: reactive.NewVariable[*engine.Engine](), candidateEngine: reactive.NewVariable[*engine.Engine](), diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go index 45b7472e6..92ad84754 100644 --- a/pkg/protocol/gossip.go +++ b/pkg/protocol/gossip.go @@ -8,13 +8,11 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/kvstore" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" - "github.com/iotaledger/iota-core/pkg/storage/prunable" iotago "github.com/iotaledger/iota.go/v4" "github.com/iotaledger/iota.go/v4/merklehasher" ) @@ -155,19 +153,14 @@ func (r *Gossip) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, sr return ierrors.Wrapf(err, "failed to load attestations for commitment %s", commitmentID) } - rootsStorage := mainEngine.Storage.Roots(commitmentID.Index()) - if rootsStorage == nil { - return ierrors.Errorf("failed to load roots for commitment %s", commitmentID) - } - - rootsBytes, err := rootsStorage.Get(kvstore.Key{prunable.RootsKey}) + rootsStorage, err := mainEngine.Storage.Roots(commitmentID.Index()) if err != nil { return ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID) } - var roots iotago.Roots - if _, err = r.protocol.APIForSlot(commitmentID.Index()).Decode(rootsBytes, &roots); err != nil { - return ierrors.Wrapf(err, "failed to decode roots for commitment %s", commitmentID) + roots, err := rootsStorage.Load(commitmentID) + if err != nil { + return ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID) } r.protocol.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index 5b697224c..450fa87af 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -21,7 +21,7 @@ type Network struct { func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { n := &Network{ - Protocol: core.NewProtocol(endpoint, protocol.Workers().CreatePool("NetworkProtocol"), protocol), + Protocol: core.NewProtocol(endpoint, protocol.Workers().CreatePool("NetworkProtocol"), protocol.MainEngine()), } protocol.HookInitialized(func() { diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 91e77f79d..d5b245d1e 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -3,7 +3,6 @@ package protocol import ( "context" - "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" @@ -14,7 +13,6 @@ import ( type Protocol struct { workers *workerpool.Group - status reactive.Variable[Status] error *event.Event1[error] options *Options @@ -32,7 +30,6 @@ func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options error: event.New1[error](), options: newOptions(), }, opts, func(p *Protocol) { - p.status = newStatusVariable(p) p.Network = newNetwork(p, dispatcher) p.Engines = newEngines(p) p.Chains = newChains(p) @@ -57,33 +54,25 @@ func (p *Protocol) Workers() *workerpool.Group { } // APIForVersion returns the API for the given version. -func (a *Protocol) APIForVersion(version iotago.Version) (api iotago.API, err error) { - return a.MainEngine().APIForVersion(version) +func (p *Protocol) APIForVersion(version iotago.Version) (api iotago.API, err error) { + return p.MainEngine().APIForVersion(version) } // APIForSlot returns the API for the given slot. -func (a *Protocol) APIForSlot(slot iotago.SlotIndex) iotago.API { - return a.MainEngine().APIForSlot(slot) +func (p *Protocol) APIForSlot(slot iotago.SlotIndex) iotago.API { + return p.MainEngine().APIForSlot(slot) } -func (a *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { - return a.MainEngine().APIForEpoch(epoch) +func (p *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { + return p.MainEngine().APIForEpoch(epoch) } -func (a *Protocol) CurrentAPI() iotago.API { - return a.MainEngine().CurrentAPI() +func (p *Protocol) CurrentAPI() iotago.API { + return p.MainEngine().CurrentAPI() } -func (a *Protocol) LatestAPI() iotago.API { - return a.MainEngine().LatestAPI() -} - -func (p *Protocol) Status() Status { - return p.status.Get() -} - -func (p *Protocol) StatusR() reactive.Variable[Status] { - return p.status +func (p *Protocol) LatestAPI() iotago.API { + return p.MainEngine().LatestAPI() } func (p *Protocol) OnError(callback func(error)) (unsubscribe func()) { diff --git a/pkg/protocol/status.go b/pkg/protocol/status.go deleted file mode 100644 index 7f9f58325..000000000 --- a/pkg/protocol/status.go +++ /dev/null @@ -1,83 +0,0 @@ -package protocol - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" - iotago "github.com/iotaledger/iota.go/v4" -) - -type Status struct { - NodeSynced bool - LastAcceptedBlockSlot iotago.SlotIndex - LastConfirmedBlockSlot iotago.SlotIndex - LatestFinalizedSlot iotago.SlotIndex - LatestPrunedSlot iotago.SlotIndex - LatestCommitment *model.Commitment -} - -func newStatusVariable(p *Protocol) reactive.Variable[Status] { - s := reactive.NewVariable[Status]() - - p.HookConstructed(func() { - var unsubscribeFromPreviousEngine func() - - p.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { - if unsubscribeFromPreviousEngine != nil { - unsubscribeFromPreviousEngine() - } - - s.Set(Status{ - NodeSynced: engine.IsSynced(), - LastAcceptedBlockSlot: engine.BlockGadget.LastAcceptedBlockIndex(), - LastConfirmedBlockSlot: engine.BlockGadget.LastConfirmedBlockIndex(), - LatestFinalizedSlot: engine.Storage.Settings().LatestFinalizedSlot(), - LatestPrunedSlot: lo.Return1(engine.Storage.Prunable.LastPrunedSlot()), - LatestCommitment: engine.Storage.Settings().LatestCommitment(), - }) - - unsubscribeFromPreviousEngine = lo.Batch( - // TODO: Update NodeSynced when the node is bootstrapped - - engine.Events.BlockGadget.BlockAccepted.Hook(func(acceptedBlock *blocks.Block) { - s.Compute(func(status Status) Status { - status.LastAcceptedBlockSlot = acceptedBlock.ID().Index() - return status - }) - }).Unhook, - - engine.Events.BlockGadget.BlockConfirmed.Hook(func(confirmedBlock *blocks.Block) { - s.Compute(func(status Status) Status { - status.LastConfirmedBlockSlot = confirmedBlock.ID().Index() - return status - }) - }).Unhook, - - engine.Events.SlotGadget.SlotFinalized.Hook(func(latestFinalizedSlot iotago.SlotIndex) { - s.Compute(func(status Status) Status { - status.LatestFinalizedSlot = latestFinalizedSlot - return status - }) - }).Unhook, - - engine.Events.StoragePruned.Hook(func(latestPrunedSlot iotago.SlotIndex) { - s.Compute(func(status Status) Status { - status.LatestPrunedSlot = latestPrunedSlot - return status - }) - }).Unhook, - - engine.Events.Notarization.LatestCommitmentUpdated.Hook(func(latestCommitment *model.Commitment) { - s.Compute(func(status Status) Status { - status.LatestCommitment = latestCommitment - return status - }) - }).Unhook, - ) - }) - }) - - return s -} From f7b6a294df942625e8d192c65c0e4cb2c682dc60 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 03:57:26 +0200 Subject: [PATCH 099/356] Refactor: removed legacy code --- pkg/protocol/chainmanager/chain.go | 82 --- pkg/protocol/chainmanager/chaincommitment.go | 159 ------ pkg/protocol/chainmanager/events.go | 25 - pkg/protocol/chainmanager/manager.go | 502 ----------------- pkg/protocol/chainmanager/manager_test.go | 536 ------------------- pkg/protocol/chainmanager/testframework.go | 190 ------- pkg/protocol/chainmanager/types.go | 29 - pkg/protocol/options.go | 12 +- pkg/protocol_legacy/block_dispatcher.go | 351 ------------ pkg/protocol_legacy/candidate_engine.go | 8 - pkg/protocol_legacy/commitment_verifier.go | 175 ------ pkg/protocol_legacy/events.go | 32 -- pkg/protocol_legacy/options.go | 149 ------ pkg/protocol_legacy/protocol.go | 315 ----------- pkg/protocol_legacy/protocol_fork.go | 341 ------------ pkg/protocol_legacy/protocol_network.go | 56 -- pkg/protocol_legacy/versioning.go | 3 - 17 files changed, 2 insertions(+), 2963 deletions(-) delete mode 100644 pkg/protocol/chainmanager/chain.go delete mode 100644 pkg/protocol/chainmanager/chaincommitment.go delete mode 100644 pkg/protocol/chainmanager/events.go delete mode 100644 pkg/protocol/chainmanager/manager.go delete mode 100644 pkg/protocol/chainmanager/manager_test.go delete mode 100644 pkg/protocol/chainmanager/testframework.go delete mode 100644 pkg/protocol/chainmanager/types.go delete mode 100644 pkg/protocol_legacy/block_dispatcher.go delete mode 100644 pkg/protocol_legacy/candidate_engine.go delete mode 100644 pkg/protocol_legacy/commitment_verifier.go delete mode 100644 pkg/protocol_legacy/events.go delete mode 100644 pkg/protocol_legacy/options.go delete mode 100644 pkg/protocol_legacy/protocol.go delete mode 100644 pkg/protocol_legacy/protocol_fork.go delete mode 100644 pkg/protocol_legacy/protocol_network.go delete mode 100644 pkg/protocol_legacy/versioning.go diff --git a/pkg/protocol/chainmanager/chain.go b/pkg/protocol/chainmanager/chain.go deleted file mode 100644 index 309b5c38a..000000000 --- a/pkg/protocol/chainmanager/chain.go +++ /dev/null @@ -1,82 +0,0 @@ -package chainmanager - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/runtime/syncutils" - "github.com/iotaledger/hive.go/stringify" - iotago "github.com/iotaledger/iota.go/v4" -) - -type Chain struct { - ForkingPoint *ChainCommitment - - latestCommitmentIndex iotago.SlotIndex - commitmentsByIndex *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *ChainCommitment] - - syncutils.RWMutex -} - -func NewChain(forkingPoint *ChainCommitment) (fork *Chain) { - forkingPointIndex := forkingPoint.Commitment().Index() - - c := &Chain{ - ForkingPoint: forkingPoint, - latestCommitmentIndex: forkingPointIndex, - commitmentsByIndex: shrinkingmap.New[iotago.SlotIndex, *ChainCommitment](), - } - - c.commitmentsByIndex.Set(forkingPointIndex, forkingPoint) - - return c -} - -func (c *Chain) SolidEvent() reactive.Event { - return c.ForkingPoint.SolidEvent() -} - -func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *ChainCommitment) { - c.RLock() - defer c.RUnlock() - - return lo.Return1(c.commitmentsByIndex.Get(index)) -} - -func (c *Chain) Size() int { - c.RLock() - defer c.RUnlock() - - return c.commitmentsByIndex.Size() -} - -func (c *Chain) LatestCommitment() *ChainCommitment { - c.RLock() - defer c.RUnlock() - - return lo.Return1(c.commitmentsByIndex.Get(c.latestCommitmentIndex)) -} - -func (c *Chain) addCommitment(commitment *ChainCommitment) { - c.Lock() - defer c.Unlock() - - commitmentIndex := commitment.Commitment().Index() - if commitmentIndex > c.latestCommitmentIndex { - c.latestCommitmentIndex = commitmentIndex - } - - c.commitmentsByIndex.Set(commitmentIndex, commitment) -} - -func (c *Chain) String() string { - c.RLock() - defer c.RUnlock() - - builder := stringify.NewStructBuilder("Chain", - stringify.NewStructField("ForkingPoint", c.ForkingPoint.id), - stringify.NewStructField("LatestCommitmentIndex", c.latestCommitmentIndex), - ) - - return builder.String() -} diff --git a/pkg/protocol/chainmanager/chaincommitment.go b/pkg/protocol/chainmanager/chaincommitment.go deleted file mode 100644 index 5f5003961..000000000 --- a/pkg/protocol/chainmanager/chaincommitment.go +++ /dev/null @@ -1,159 +0,0 @@ -package chainmanager - -import ( - "fmt" - - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/runtime/syncutils" - "github.com/iotaledger/hive.go/stringify" - "github.com/iotaledger/iota-core/pkg/model" - iotago "github.com/iotaledger/iota.go/v4" -) - -type ChainCommitment struct { - id iotago.CommitmentID - commitment *model.Commitment - - solid reactive.Event - mainChildID iotago.CommitmentID - children *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *ChainCommitment] - chain *Chain - - mutex syncutils.RWMutex -} - -func NewChainCommitment(id iotago.CommitmentID) *ChainCommitment { - return &ChainCommitment{ - id: id, - solid: reactive.NewEvent(), - children: shrinkingmap.New[iotago.CommitmentID, *ChainCommitment](), - } -} - -func (c *ChainCommitment) ID() iotago.CommitmentID { - c.mutex.RLock() - defer c.mutex.RUnlock() - - return c.id -} - -func (c *ChainCommitment) Commitment() *model.Commitment { - c.mutex.RLock() - defer c.mutex.RUnlock() - - return c.commitment -} - -func (c *ChainCommitment) Children() []*ChainCommitment { - c.mutex.RLock() - defer c.mutex.RUnlock() - - return c.children.Values() -} - -func (c *ChainCommitment) Chain() (chain *Chain) { - c.mutex.RLock() - defer c.mutex.RUnlock() - - return c.chain -} - -func (c *ChainCommitment) SolidEvent() reactive.Event { - return c.solid -} - -func (c *ChainCommitment) PublishCommitment(commitment *model.Commitment) (published bool) { - c.mutex.Lock() - defer c.mutex.Unlock() - - if published = c.commitment == nil; published { - c.commitment = commitment - } - - return -} - -func (c *ChainCommitment) registerChild(child *ChainCommitment) (isSolid bool, chain *Chain, wasForked bool) { - c.mutex.Lock() - defer c.mutex.Unlock() - - if c.children.Size() == 0 { - c.mainChildID = child.ID() - } - - if c.children.Set(child.ID(), child); c.children.Size() > 1 { - return c.solid.Get(), NewChain(child), true - } - - return c.solid.Get(), c.chain, false -} - -func (c *ChainCommitment) deleteChild(child *ChainCommitment) { - c.mutex.Lock() - defer c.mutex.Unlock() - - c.children.Delete(child.ID()) -} - -func (c *ChainCommitment) mainChild() *ChainCommitment { - c.mutex.RLock() - defer c.mutex.RUnlock() - - return lo.Return1(c.children.Get(c.mainChildID)) -} - -func (c *ChainCommitment) setMainChild(commitment *ChainCommitment) error { - c.mutex.Lock() - defer c.mutex.Unlock() - - if !c.children.Has(commitment.ID()) { - return ierrors.Errorf("trying to set a main child %s before registering it as a child", commitment.ID()) - } - c.mainChildID = commitment.ID() - - return nil -} - -func (c *ChainCommitment) publishChain(chain *Chain) (wasPublished bool) { - c.mutex.Lock() - defer c.mutex.Unlock() - - if wasPublished = c.chain == nil; wasPublished { - c.chain = chain - } - - return -} - -func (c *ChainCommitment) replaceChain(chain *Chain) { - c.mutex.Lock() - defer c.mutex.Unlock() - - c.chain = chain -} - -func (c *ChainCommitment) String() string { - // Generate chainString before locking c.mutex to avoid potential deadlock due to locking ChainCommitment and - // Chain mutexes in different order across different goroutines. - chainString := c.Chain().String() - - c.mutex.RLock() - defer c.mutex.RUnlock() - - builder := stringify.NewStructBuilder("ChainCommitment", - stringify.NewStructField("ID", c.id), - stringify.NewStructField("Commitment", c.commitment.String()), - stringify.NewStructField("Solid", c.solid), - stringify.NewStructField("Chain", chainString), - stringify.NewStructField("MainChildID", c.mainChildID), - ) - - for index, child := range c.children.AsMap() { - builder.AddField(stringify.NewStructField(fmt.Sprintf("children%d", index), child.ID())) - } - - return builder.String() -} diff --git a/pkg/protocol/chainmanager/events.go b/pkg/protocol/chainmanager/events.go deleted file mode 100644 index 7b146504a..000000000 --- a/pkg/protocol/chainmanager/events.go +++ /dev/null @@ -1,25 +0,0 @@ -package chainmanager - -import ( - "github.com/iotaledger/hive.go/runtime/event" - iotago "github.com/iotaledger/iota.go/v4" -) - -type Events struct { - CommitmentPublished *event.Event1[*ChainCommitment] - CommitmentBelowRoot *event.Event1[iotago.CommitmentID] - ForkDetected *event.Event1[*Fork] - - RequestCommitment *event.Event1[iotago.CommitmentID] - - event.Group[Events, *Events] -} - -var NewEvents = event.CreateGroupConstructor(func() *Events { - return &Events{ - CommitmentPublished: event.New1[*ChainCommitment](), - CommitmentBelowRoot: event.New1[iotago.CommitmentID](), - ForkDetected: event.New1[*Fork](), - RequestCommitment: event.New1[iotago.CommitmentID](), - } -}) diff --git a/pkg/protocol/chainmanager/manager.go b/pkg/protocol/chainmanager/manager.go deleted file mode 100644 index c7916766a..000000000 --- a/pkg/protocol/chainmanager/manager.go +++ /dev/null @@ -1,502 +0,0 @@ -package chainmanager - -import ( - "fmt" - - "github.com/libp2p/go-libp2p/core/peer" - - "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/core/memstorage" - "github.com/iotaledger/hive.go/ds/walker" - "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/hive.go/runtime/syncutils" - "github.com/iotaledger/iota-core/pkg/model" - iotago "github.com/iotaledger/iota.go/v4" -) - -var ( - ErrCommitmentUnknown = ierrors.New("unknown commitment") - ErrCommitmentNotSolid = ierrors.New("commitment not solid") -) - -type Manager struct { - Events *Events - commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - - commitmentsByID *memstorage.IndexedStorage[iotago.SlotIndex, iotago.CommitmentID, *ChainCommitment] - rootCommitment *ChainCommitment - - forksByForkingPoint *memstorage.IndexedStorage[iotago.SlotIndex, iotago.CommitmentID, *Fork] - - evictionMutex syncutils.RWMutex - - optsCommitmentRequester []options.Option[eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID]] - - commitmentEntityMutex *syncutils.DAGMutex[iotago.CommitmentID] - lastEvictedSlot *model.EvictionIndex[iotago.SlotIndex] -} - -func NewManager(opts ...options.Option[Manager]) (manager *Manager) { - return options.Apply(&Manager{ - Events: NewEvents(), - - commitmentsByID: memstorage.NewIndexedStorage[iotago.SlotIndex, iotago.CommitmentID, *ChainCommitment](), - commitmentEntityMutex: syncutils.NewDAGMutex[iotago.CommitmentID](), - forksByForkingPoint: memstorage.NewIndexedStorage[iotago.SlotIndex, iotago.CommitmentID, *Fork](), - lastEvictedSlot: model.NewEvictionIndex[iotago.SlotIndex](), - }, opts, func(m *Manager) { - m.commitmentRequester = eventticker.New(m.optsCommitmentRequester...) - m.Events.CommitmentBelowRoot.Hook(m.commitmentRequester.StopTicker) - - m.Events.RequestCommitment.LinkTo(m.commitmentRequester.Events.Tick) - }) -} - -func (m *Manager) Initialize(c *model.Commitment) { - m.evictionMutex.Lock() - defer m.evictionMutex.Unlock() - - m.rootCommitment, _ = m.getOrCreateCommitment(c.ID()) - m.rootCommitment.PublishCommitment(c) - m.rootCommitment.SolidEvent().Trigger() - m.rootCommitment.publishChain(NewChain(m.rootCommitment)) -} - -func (m *Manager) Shutdown() { - m.commitmentRequester.Shutdown() -} - -func (m *Manager) ProcessCommitmentFromSource(commitment *model.Commitment, source peer.ID) (isSolid bool, chain *Chain) { - m.evictionMutex.RLock() - defer m.evictionMutex.RUnlock() - - _, isSolid, chainCommitment := m.processCommitment(commitment) - if chainCommitment == nil { - return false, nil - } - - m.detectForks(chainCommitment, source) - - return isSolid, chainCommitment.Chain() -} - -func (m *Manager) ProcessCandidateCommitment(commitment *model.Commitment) (isSolid bool, chain *Chain) { - m.evictionMutex.RLock() - defer m.evictionMutex.RUnlock() - - _, isSolid, chainCommitment := m.processCommitment(commitment) - if chainCommitment == nil { - return false, nil - } - - return isSolid, chainCommitment.Chain() -} - -func (m *Manager) ProcessCommitment(commitment *model.Commitment) (isSolid bool, chain *Chain) { - m.evictionMutex.RLock() - defer m.evictionMutex.RUnlock() - - wasForked, isSolid, chainCommitment := m.processCommitment(commitment) - - if chainCommitment == nil { - return false, nil - } - - if wasForked { - if err := m.switchMainChainToCommitment(chainCommitment); err != nil { - panic(err) - } - } - - return isSolid, chainCommitment.Chain() -} - -func (m *Manager) EvictUntil(index iotago.SlotIndex) { - m.evictionMutex.Lock() - defer m.evictionMutex.Unlock() - - for currentIndex := m.lastEvictedSlot.NextIndex(); currentIndex <= index; currentIndex++ { - m.evict(currentIndex) - m.lastEvictedSlot.MarkEvicted(currentIndex) - } - - m.commitmentRequester.EvictUntil(index) -} - -// RootCommitment returns the root commitment of the manager. -func (m *Manager) RootCommitment() (rootCommitment *ChainCommitment) { - m.evictionMutex.RLock() - defer m.evictionMutex.RUnlock() - - return m.rootCommitment -} - -// SetRootCommitment sets the root commitment of the manager. -func (m *Manager) SetRootCommitment(commitment *model.Commitment) { - m.evictionMutex.Lock() - defer m.evictionMutex.Unlock() - - storage := m.commitmentsByID.Get(commitment.Index()) - if storage == nil { - panic(fmt.Sprintf("we should always have commitment storage for confirmed index %s", commitment)) - } - - newRootCommitment, exists := storage.Get(commitment.ID()) - if !exists { - panic(fmt.Sprint("we should always have the latest commitment ID we confirmed with", commitment)) - } - - if commitment.Index() <= m.rootCommitment.Commitment().Index() && commitment.ID() != m.rootCommitment.Commitment().ID() { - panic(fmt.Sprintf("we should never set the root commitment to a commitment that is below the current root commitment %s - root: %s", commitment, m.rootCommitment.Commitment())) - } - - m.rootCommitment = newRootCommitment -} - -func (m *Manager) Chain(ec iotago.CommitmentID) (chain *Chain) { - m.evictionMutex.RLock() - defer m.evictionMutex.RUnlock() - - if commitment, exists := m.Commitment(ec); exists { - return commitment.Chain() - } - - return nil -} - -func (m *Manager) Commitment(id iotago.CommitmentID) (commitment *ChainCommitment, exists bool) { - storage := m.commitmentsByID.Get(id.Index()) - if storage == nil { - return nil, false - } - - return storage.Get(id) -} - -func (m *Manager) LoadCommitmentOrRequestMissing(id iotago.CommitmentID) *ChainCommitment { - m.evictionMutex.RLock() - defer m.evictionMutex.RUnlock() - - chainCommitment, created := m.getOrCreateCommitment(id) - if created { - m.commitmentRequester.StartTicker(id) - } - - return chainCommitment -} - -func (m *Manager) Commitments(id iotago.CommitmentID, amount int) (commitments []*ChainCommitment, err error) { - m.evictionMutex.RLock() - defer m.evictionMutex.RUnlock() - - commitments = make([]*ChainCommitment, amount) - - for i := 0; i < amount; i++ { - currentCommitment, _ := m.Commitment(id) - if currentCommitment == nil { - return nil, ierrors.Wrap(ErrCommitmentUnknown, "not all commitments in the given range are known") - } - - commitments[i] = currentCommitment - - id = currentCommitment.Commitment().PrevID() - } - - return -} - -// ForkByForkingPoint returns the fork generated by a peer for the given forking point. -func (m *Manager) ForkByForkingPoint(forkingPoint iotago.CommitmentID) (fork *Fork, exists bool) { - m.evictionMutex.RLock() - defer m.evictionMutex.RUnlock() - - return m.forkByForkingPoint(forkingPoint) -} - -func (m *Manager) forkByForkingPoint(forkingPoint iotago.CommitmentID) (fork *Fork, exists bool) { - if indexStore := m.forksByForkingPoint.Get(forkingPoint.Index()); indexStore != nil { - return indexStore.Get(forkingPoint) - } - - return nil, false -} - -func (m *Manager) SwitchMainChain(head iotago.CommitmentID) error { - m.evictionMutex.RLock() - defer m.evictionMutex.RUnlock() - - commitment, _ := m.Commitment(head) - if commitment == nil { - return ierrors.Wrapf(ErrCommitmentUnknown, "unknown commitment %s", head) - } - - return m.switchMainChainToCommitment(commitment) -} - -func (m *Manager) processCommitment(commitment *model.Commitment) (wasForked bool, isSolid bool, chainCommitment *ChainCommitment) { - // Lock access to the parent commitment. We need to lock this first as we are trying to update children later within this function. - // Failure to do so, leads to a deadlock, where a child is locked and tries to lock its parent, which is locked by the parent which tries to lock the child. - m.commitmentEntityMutex.Lock(commitment.PrevID()) - defer m.commitmentEntityMutex.Unlock(commitment.PrevID()) - - // Lock access to the chainCommitment so no children are added while we are propagating solidity - m.commitmentEntityMutex.Lock(commitment.ID()) - defer m.commitmentEntityMutex.Unlock(commitment.ID()) - - if isBelowRootCommitment, isRootCommitment := m.evaluateAgainstRootCommitment(commitment.Commitment()); isBelowRootCommitment || isRootCommitment { - if isRootCommitment { - chainCommitment = m.rootCommitment - } else { - m.Events.CommitmentBelowRoot.Trigger(commitment.ID()) - } - - return false, isRootCommitment, chainCommitment - } - - isNew, isSolid, wasForked, chainCommitment := m.registerCommitment(commitment) - if !isNew || chainCommitment.Chain() == nil { - return wasForked, isSolid, chainCommitment - } - - if mainChild := chainCommitment.mainChild(); mainChild != nil { - for childWalker := walker.New[*ChainCommitment]().Push(chainCommitment.mainChild()); childWalker.HasNext(); { - childWalker.PushAll(m.propagateChainToMainChild(childWalker.Next(), chainCommitment.Chain())...) - } - } - - if isSolid { - if children := chainCommitment.Children(); len(children) != 0 { - for childWalker := walker.New[*ChainCommitment]().PushAll(children...); childWalker.HasNext(); { - childWalker.PushAll(m.propagateSolidity(childWalker.Next())...) - } - } - } - - return wasForked, isSolid, chainCommitment -} - -func (m *Manager) evict(index iotago.SlotIndex) { - m.forksByForkingPoint.Evict(index) - m.commitmentsByID.Evict(index) -} - -func (m *Manager) getOrCreateCommitment(id iotago.CommitmentID) (commitment *ChainCommitment, created bool) { - return m.commitmentsByID.Get(id.Index(), true).GetOrCreate(id, func() *ChainCommitment { - return NewChainCommitment(id) - }) -} - -func (m *Manager) evaluateAgainstRootCommitment(commitment *iotago.Commitment) (isBelow, isRootCommitment bool) { - isBelow = commitment.Index <= m.rootCommitment.Commitment().Index() - isRootCommitment = commitment.Equals(m.rootCommitment.Commitment().Commitment()) - - return -} - -func (m *Manager) detectForks(commitment *ChainCommitment, source peer.ID) { - forkingPoint, err := m.forkingPointAgainstMainChain(commitment) - if err != nil { - return - } - - if forkingPoint == nil { - return - } - - // Note: we rely on the fact that the block filter will not let (not yet committable) commitments through. - - forkedChainLatestCommitment := forkingPoint.Chain().LatestCommitment().Commitment() - mainChainLatestCommitment := m.rootCommitment.Chain().LatestCommitment().Commitment() - - // Check whether the chain is claiming to be heavier than the current main chain. - if forkedChainLatestCommitment.CumulativeWeight() <= mainChainLatestCommitment.CumulativeWeight() { - return - } - - var doNotTrigger bool - fork := m.forksByForkingPoint.Get(forkingPoint.ID().Index(), true).Compute(forkingPoint.ID(), func(currentValue *Fork, exists bool) *Fork { - if exists { - if forkedChainLatestCommitment.Index() <= currentValue.ForkLatestCommitment.Index() { - // Do not trigger another event for the same forking point if the latest fork commitment did not change - doNotTrigger = true - return currentValue - } - - return &Fork{ - Source: currentValue.Source, - MainChain: currentValue.MainChain, - ForkedChain: currentValue.ForkedChain, - ForkingPoint: currentValue.ForkingPoint, - ForkLatestCommitment: forkedChainLatestCommitment, - } - } - - return &Fork{ - Source: source, - MainChain: m.rootCommitment.Chain(), - ForkedChain: forkingPoint.Chain(), - ForkingPoint: forkingPoint.Commitment(), - ForkLatestCommitment: forkedChainLatestCommitment, - } - }) - - if !doNotTrigger { - m.Events.ForkDetected.Trigger(fork) - } -} - -func (m *Manager) forkingPointAgainstMainChain(commitment *ChainCommitment) (*ChainCommitment, error) { - if !commitment.SolidEvent().WasTriggered() || commitment.Chain() == nil { - return nil, ierrors.Wrapf(ErrCommitmentNotSolid, "commitment %s is not solid", commitment) - } - - var forkingCommitment *ChainCommitment - // Walk all possible forks until we reach our main chain by jumping over each forking point - for chain := commitment.Chain(); chain != m.rootCommitment.Chain(); chain = commitment.Chain() { - forkingCommitment = chain.ForkingPoint - - if commitment, _ = m.Commitment(forkingCommitment.Commitment().PrevID()); commitment == nil { - return nil, ierrors.Wrapf(ErrCommitmentUnknown, "unknown parent of solid commitment %s", forkingCommitment.Commitment().ID()) - } - } - - return forkingCommitment, nil -} - -func (m *Manager) registerCommitment(commitment *model.Commitment) (isNew bool, isSolid bool, wasForked bool, chainCommitment *ChainCommitment) { - parentCommitment, commitmentCreated := m.getOrCreateCommitment(commitment.PrevID()) - if commitmentCreated { - m.commitmentRequester.StartTicker(parentCommitment.ID()) - } - - chainCommitment, created := m.getOrCreateCommitment(commitment.ID()) - - if !chainCommitment.PublishCommitment(commitment) { - return false, chainCommitment.SolidEvent().WasTriggered(), false, chainCommitment - } - - m.Events.CommitmentPublished.Trigger(chainCommitment) - - if !created { - m.commitmentRequester.StopTicker(chainCommitment.ID()) - } - - isSolid, _, wasForked = m.registerChild(parentCommitment, chainCommitment) - - return true, isSolid, wasForked, chainCommitment -} - -func (m *Manager) switchMainChainToCommitment(commitment *ChainCommitment) error { - forkingPoint, err := m.forkingPointAgainstMainChain(commitment) - if err != nil { - return err - } - - // commitment is already part of the main chain - if forkingPoint == nil { - return nil - } - - parentCommitment, _ := m.Commitment(forkingPoint.Commitment().PrevID()) - if parentCommitment == nil { - return ierrors.Wrapf(ErrCommitmentUnknown, "unknown parent of solid commitment %s", forkingPoint.ID()) - } - - // Separate the main chain by remove it from the parent - oldMainCommitment := parentCommitment.mainChild() - - // For each forking point coming out of the main chain we need to reorg the children - for fp := commitment.Chain().ForkingPoint; ; { - fpParent, _ := m.Commitment(fp.Commitment().PrevID()) - - mainChild := fpParent.mainChild() - newChildChain := NewChain(mainChild) - - if err := fpParent.setMainChild(fp); err != nil { - return err - } - - for childWalker := walker.New[*ChainCommitment]().Push(mainChild); childWalker.HasNext(); { - childWalker.PushAll(m.propagateReplaceChainToMainChild(childWalker.Next(), newChildChain)...) - } - - for childWalker := walker.New[*ChainCommitment]().Push(fp); childWalker.HasNext(); { - childWalker.PushAll(m.propagateReplaceChainToMainChild(childWalker.Next(), parentCommitment.Chain())...) - } - - if fp == forkingPoint { - break - } - - fp = fpParent.Chain().ForkingPoint - } - - // Separate the old main chain by removing it from the parent - parentCommitment.deleteChild(oldMainCommitment) - - return nil -} - -func (m *Manager) registerChild(parent *ChainCommitment, child *ChainCommitment) (isSolid bool, chain *Chain, wasForked bool) { - if isSolid, chain, wasForked = parent.registerChild(child); chain != nil { - chain.addCommitment(child) - child.publishChain(chain) - - if isSolid { - child.SolidEvent().Trigger() - } - } - - return -} - -func (m *Manager) propagateChainToMainChild(child *ChainCommitment, chain *Chain) (childrenToUpdate []*ChainCommitment) { - m.commitmentEntityMutex.Lock(child.ID()) - defer m.commitmentEntityMutex.Unlock(child.ID()) - - if !child.publishChain(chain) { - return - } - - chain.addCommitment(child) - - mainChild := child.mainChild() - if mainChild == nil { - return - } - - return []*ChainCommitment{mainChild} -} - -func (m *Manager) propagateReplaceChainToMainChild(child *ChainCommitment, chain *Chain) (childrenToUpdate []*ChainCommitment) { - m.commitmentEntityMutex.Lock(child.ID()) - defer m.commitmentEntityMutex.Unlock(child.ID()) - - child.replaceChain(chain) - chain.addCommitment(child) - - mainChild := child.mainChild() - if mainChild == nil { - return - } - - return []*ChainCommitment{mainChild} -} - -func (m *Manager) propagateSolidity(child *ChainCommitment) (childrenToUpdate []*ChainCommitment) { - m.commitmentEntityMutex.Lock(child.ID()) - defer m.commitmentEntityMutex.Unlock(child.ID()) - - if child.SolidEvent().Trigger() { - childrenToUpdate = child.Children() - } - - return -} - -func WithCommitmentRequesterOptions(opts ...options.Option[eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID]]) options.Option[Manager] { - return func(m *Manager) { - m.optsCommitmentRequester = append(m.optsCommitmentRequester, opts...) - } -} diff --git a/pkg/protocol/chainmanager/manager_test.go b/pkg/protocol/chainmanager/manager_test.go deleted file mode 100644 index ca47d5e31..000000000 --- a/pkg/protocol/chainmanager/manager_test.go +++ /dev/null @@ -1,536 +0,0 @@ -package chainmanager - -import ( - "fmt" - "testing" - "time" - - "github.com/stretchr/testify/require" - - "github.com/iotaledger/hive.go/ds/types" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/model" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/tpkg" -) - -func TestManager(t *testing.T) { - tf := NewTestFramework(t, tpkg.TestAPI) - tf.CreateCommitment("1", "Genesis", 10) - tf.CreateCommitment("2", "1", 20) - tf.CreateCommitment("3", "2", 30) - tf.CreateCommitment("4", "3", 40) - tf.CreateCommitment("5", "4", 50) - tf.CreateCommitment("4*", "3", 45) - tf.CreateCommitment("5*", "4*", 55) - tf.CreateCommitment("6*", "5*", 65) - tf.CreateCommitment("7*", "6*", 75) - tf.CreateCommitment("8*", "7*", 85) - tf.CreateCommitment("1-", "Genesis", 9) - tf.CreateCommitment("2-", "1-", 19) - - allForksDetected := make(chan struct{}, 1) - - detectedForksAtCommitments := []iotago.CommitmentID{ - tf.SlotCommitment("5*"), - tf.SlotCommitment("6*"), - tf.SlotCommitment("7*"), - tf.SlotCommitment("8*"), - } - - tf.Instance.Events.ForkDetected.Hook(func(fork *Fork) { - // The ForkDetected event should only be triggered once and only if the fork is deep enough - require.Equal(t, fork.ForkLatestCommitment.ID(), detectedForksAtCommitments[0]) - require.Equal(t, fork.ForkingPoint.ID(), tf.SlotCommitment("4*")) - - detectedForksAtCommitments = detectedForksAtCommitments[1:] - - if len(detectedForksAtCommitments) == 0 { - allForksDetected <- struct{}{} - close(allForksDetected) // closing channel here so that we are sure no second event with the same data is triggered - } - }) - - expectedChainMappings := map[string]string{ - "Genesis": "Genesis", - } - - { - isSolid, chain := tf.ProcessCommitment("1") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "Genesis") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "1": "Genesis", - })) - } - - { - isSolid, chain := tf.ProcessCommitment("1") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "Genesis") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{})) - } - - { - isSolid, chain := tf.ProcessCommitmentFromOtherSource("1-") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "1-") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "1-": "1-", - })) - } - - { - isSolid, chain := tf.ProcessCommitmentFromOtherSource("4") - require.False(t, isSolid) - tf.AssertChainIsAlias(chain, "") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "4": "", - })) - } - - // Generate a fork with higher CW than our main one - { - isSolid, chain := tf.ProcessCommitmentFromOtherSource("4*") - require.False(t, isSolid) - tf.AssertChainIsAlias(chain, "4*") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "4*": "4*", - })) - } - - { - isSolid, chain := tf.ProcessCommitmentFromOtherSource("3") - require.False(t, isSolid) - tf.AssertChainIsAlias(chain, "") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "3": "", - })) - } - - // Solidify our main chain - { - isSolid, chain := tf.ProcessCommitment("2") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "Genesis") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "2": "Genesis", - "3": "Genesis", - "4": "Genesis", - })) - } - - // Generate a fork with less CW than our main one - { - isSolid, chain := tf.ProcessCommitmentFromOtherSource("2-") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "1-") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "2-": "1-", - })) - } - - { - isSolid, chain := tf.ProcessCommitmentFromOtherSource("5*") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "4*") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "5*": "4*", - })) - } - - { - isSolid, chain := tf.ProcessCommitmentFromOtherSource("6*") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "4*") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "6*": "4*", - })) - } - - { - isSolid, chain := tf.ProcessCommitmentFromOtherSource("7*") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "4*") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "7*": "4*", - })) - } - - { - isSolid, chain := tf.ProcessCommitmentFromOtherSource("8*") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "4*") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "8*": "4*", - })) - } - - // Continue on the main chain - { - isSolid, chain := tf.ProcessCommitment("5") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "Genesis") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "5": "Genesis", - })) - } - - { - commitments, err := tf.Instance.Commitments(tf.SlotCommitment("8*"), 9) - require.NoError(t, err) - tf.AssertEqualChainCommitments(commitments, - "8*", - "7*", - "6*", - "5*", - "4*", - "3", - "2", - "1", - "Genesis", - ) - } - - { - commitments, err := tf.Instance.Commitments(tf.SlotCommitment("8*"), 10) - require.Error(t, err) - require.EqualValues(t, []*ChainCommitment(nil), commitments) - } - - { - require.Nil(t, tf.Instance.Chain(iotago.SlotIdentifierRepresentingData(1, []byte{255, 255}))) - } - - require.Eventually(t, func() bool { - select { - case <-allForksDetected: - return true - default: - return false - } - }, 1*time.Second, 10*time.Millisecond) -} - -func TestManagerForkDetectedAgain(t *testing.T) { - tf := NewTestFramework(t, tpkg.TestAPI) - tf.CreateCommitment("1", "Genesis", 10) - tf.CreateCommitment("2", "1", 20) - tf.CreateCommitment("3", "2", 30) - tf.CreateCommitment("4", "3", 40) - tf.CreateCommitment("5", "4", 80) - tf.CreateCommitment("4*", "3", 45) - tf.CreateCommitment("1-", "Genesis", 9) - tf.CreateCommitment("2-", "1-", 19) - tf.CreateCommitment("5*", "4*", 55) - tf.CreateCommitment("6*", "5*", 65) - tf.CreateCommitment("7*", "6*", 75) - tf.CreateCommitment("8*", "7*", 85) - tf.CreateCommitment("9*", "8*", 95) - - forkRedetected := make(chan struct{}, 1) - expectedForks := map[iotago.CommitmentID]types.Empty{ - tf.SlotCommitment("4*"): types.Void, - tf.SlotCommitment("5*"): types.Void, - tf.SlotCommitment("8*"): types.Void, - tf.SlotCommitment("9*"): types.Void, - } - tf.Instance.Events.ForkDetected.Hook(func(fork *Fork) { - if _, has := expectedForks[fork.ForkLatestCommitment.ID()]; !has { - t.Fatalf("unexpected fork at: %s", fork.ForkLatestCommitment.ID()) - } - t.Logf("fork detected at %s", fork.ForkingPoint.ID()) - delete(expectedForks, fork.ForkLatestCommitment.ID()) - - require.Equal(t, fork.ForkingPoint.ID(), tf.SlotCommitment("4*")) - if len(expectedForks) == 0 { - forkRedetected <- struct{}{} - } - }) - - { - tf.ProcessCommitment("1") - tf.ProcessCommitmentFromOtherSource("1-") - tf.ProcessCommitmentFromOtherSource("4") - tf.ProcessCommitmentFromOtherSource("4*") - tf.ProcessCommitmentFromOtherSource("3") - tf.ProcessCommitment("2") - tf.ProcessCommitmentFromOtherSource("5*") - tf.ProcessCommitmentFromOtherSource("5") - tf.ProcessCommitmentFromOtherSource("6*") // This does not re-trigger the fork due to lower CW than 5 - tf.ProcessCommitmentFromOtherSource("7*") // This does not re-trigger the fork due to lower CW than 5 - tf.ProcessCommitmentFromOtherSource("8*") - } - - { - commitments, err := tf.Instance.Commitments(tf.SlotCommitment("8*"), 9) - require.NoError(t, err) - tf.AssertEqualChainCommitments(commitments, - "8*", - "7*", - "6*", - "5*", - "4*", - "3", - "2", - "1", - "Genesis", - ) - } - - { - require.Nil(t, tf.Instance.Chain(iotago.SlotIdentifierRepresentingData(1, []byte{255, 255}))) - } - - // We now evict at 7 so that we forget about the fork we had before - { - tf.Instance.EvictUntil(8) - } - - // Processing the next commitment should trigger the event again - { - isSolid, chain := tf.ProcessCommitmentFromOtherSource("9*") - require.False(t, isSolid, "commitment should not be solid, as we evicted until epoch 7") - require.Nil(t, chain, "commitment chain should be nil, as we evicted until epoch 7") - } -} - -func TestManagerForkDetectedReorgChains(t *testing.T) { - tf := NewTestFramework(t, tpkg.TestAPI) - tf.CreateCommitment("1", "Genesis", 10) - tf.CreateCommitment("2", "1", 20) - tf.CreateCommitment("3", "2", 30) - tf.CreateCommitment("4", "3", 40) - tf.CreateCommitment("5", "4", 80) - tf.CreateCommitment("4*", "3", 45) - tf.CreateCommitment("5*", "4*", 55) - tf.CreateCommitment("6*", "5*", 65) - tf.CreateCommitment("7*", "6*", 75) - tf.CreateCommitment("8*", "7*", 85) - - forkRedetected := make(chan struct{}, 1) - expectedForks := map[iotago.CommitmentID]types.Empty{ - tf.SlotCommitment("4*"): types.Void, - tf.SlotCommitment("5*"): types.Void, - tf.SlotCommitment("6*"): types.Void, - tf.SlotCommitment("7*"): types.Void, - tf.SlotCommitment("8*"): types.Void, - } - tf.Instance.Events.ForkDetected.Hook(func(fork *Fork) { - if _, has := expectedForks[fork.ForkLatestCommitment.ID()]; !has { - t.Fatalf("unexpected fork at: %s", fork.ForkLatestCommitment.ID()) - } - t.Logf("fork detected at %s", fork.ForkingPoint.ID()) - delete(expectedForks, fork.ForkLatestCommitment.ID()) - - require.Equal(t, fork.ForkingPoint.ID(), tf.SlotCommitment("4*")) - if len(expectedForks) == 0 { - forkRedetected <- struct{}{} - } - }) - - { - tf.ProcessCommitment("1") - tf.ProcessCommitmentFromOtherSource("2") - tf.ProcessCommitmentFromOtherSource("3") - tf.ProcessCommitmentFromOtherSource("4") - tf.ProcessCommitmentFromOtherSource("5") - - tf.ProcessCommitmentFromOtherSource("5*") - tf.ProcessCommitmentFromOtherSource("6*") - tf.ProcessCommitmentFromOtherSource("7*") - tf.ProcessCommitmentFromOtherSource("8*") - tf.ProcessCommitment("4*") - } - - oldCommitments, err := tf.Instance.Commitments(tf.SlotCommitment("5"), 4) - require.NoError(t, err) - - require.Equalf(t, tf.ChainCommitment("4").ID(), oldCommitments[0].Chain().ForkingPoint.ID(), "expected %s; got %s", "4", oldCommitments[0].Chain().ForkingPoint.ID().String()) - - newMainCommitments, err := tf.Instance.Commitments(tf.SlotCommitment("8*"), 9) - require.NoError(t, err) - - require.Equalf(t, tf.ChainCommitment("Genesis").ID(), newMainCommitments[0].Chain().ForkingPoint.ID(), "expected %s; got %s", "Genesis", newMainCommitments[0].Chain().ForkingPoint.ID().String()) - - tf.AssertEqualChainCommitments(newMainCommitments, - "8*", - "7*", - "6*", - "5*", - "4*", - "3", - "2", - "1", - "Genesis", - ) - -} - -func TestEvaluateAgainstRootCommitment(t *testing.T) { - rootCommitment := iotago.NewCommitment(tpkg.TestAPI.Version(), 1, iotago.SlotIdentifierRepresentingData(1, []byte{9}), iotago.Identifier{}, 0, 0) - - modelRootCommitment, err := model.CommitmentFromCommitment(rootCommitment, tpkg.TestAPI) - require.NoError(t, err) - - m := &Manager{ - rootCommitment: NewChainCommitment(modelRootCommitment.ID()), - } - - m.rootCommitment.PublishCommitment(modelRootCommitment) - - isBelow, isRootCommitment := m.evaluateAgainstRootCommitment(iotago.NewCommitment(tpkg.TestAPI.Version(), 0, iotago.SlotIdentifierRepresentingData(0, []byte{}), iotago.Identifier{}, 0, 0)) - require.True(t, isBelow, "commitment with index 0 should be below root commitment") - require.False(t, isRootCommitment, "commitment with index 0 should not be the root commitment") - - isBelow, isRootCommitment = m.evaluateAgainstRootCommitment(rootCommitment) - require.True(t, isBelow, "commitment with index 1 should be below root commitment") - require.True(t, isRootCommitment, "commitment with index 1 should be the root commitment") - - isBelow, isRootCommitment = m.evaluateAgainstRootCommitment(iotago.NewCommitment(tpkg.TestAPI.Version(), 1, iotago.SlotIdentifierRepresentingData(1, []byte{1}), iotago.Identifier{}, 0, 0)) - require.True(t, isBelow, "commitment with index 1 should be below root commitment") - require.False(t, isRootCommitment, "commitment with index 1 should be the root commitment") - - isBelow, isRootCommitment = m.evaluateAgainstRootCommitment(iotago.NewCommitment(tpkg.TestAPI.Version(), 1, iotago.SlotIdentifierRepresentingData(1, []byte{9}), iotago.Identifier{}, 0, 0)) - require.True(t, isBelow, "commitment with index 1 should be below root commitment") - require.True(t, isRootCommitment, "commitment with index 1 should be the root commitment") - - isBelow, isRootCommitment = m.evaluateAgainstRootCommitment(iotago.NewCommitment(tpkg.TestAPI.Version(), 2, iotago.SlotIdentifierRepresentingData(2, []byte{}), iotago.Identifier{}, 0, 0)) - require.False(t, isBelow, "commitment with index 2 should not be below root commitment") - require.False(t, isRootCommitment, "commitment with index 2 should not be the root commitment") -} - -func TestProcessCommitment(t *testing.T) { - tf := NewTestFramework(t, tpkg.TestAPI) - tf.CreateCommitment("1", "Genesis", 10) - tf.CreateCommitment("2", "1", 20) - - expectedChainMappings := map[string]string{ - "Genesis": "Genesis", - } - - { - isSolid, chain := tf.ProcessCommitment("1") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "Genesis") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "1": "Genesis", - })) - } - { - isSolid, chain := tf.ProcessCommitment("2") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "Genesis") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "2": "Genesis", - })) - } - - fmt.Println("------- root commitment is now 2 -------") - tf.Instance.SetRootCommitment(tf.commitment("2")) - tf.Instance.EvictUntil(2 - 1) - - { - require.Equal(t, tf.commitment("2").ID(), tf.Instance.rootCommitment.ID()) - } - - // Should not be processed after 2 becomes rootCommitment - tf.CreateCommitment("1*", "Genesis", 15) - tf.CreateCommitment("2*", "1*", 25) - tf.CreateCommitment("3*", "2*", 35) - tf.CreateCommitment("4*", "3*", 45) - tf.CreateCommitment("2+", "1", 26) - { - { - isSolid, chain := tf.ProcessCommitment("1*") - require.False(t, isSolid) - require.Nil(t, chain) - tf.AssertForkDetectedCount(0) - tf.AssertCommitmentMissingCount(0) - tf.AssertMissingCommitmentReceivedCount(0) - tf.AssertCommitmentBelowRootCount(1) - } - { - isSolid, chain := tf.ProcessCommitment("2*") - require.False(t, isSolid) - require.Nil(t, chain) - tf.AssertForkDetectedCount(0) - tf.AssertCommitmentMissingCount(0) - tf.AssertMissingCommitmentReceivedCount(0) - tf.AssertCommitmentBelowRootCount(2) - } - { - isSolid, chain := tf.ProcessCommitment("3*") - require.False(t, isSolid) - require.Nil(t, chain) - tf.AssertForkDetectedCount(0) - tf.AssertCommitmentMissingCount(1) - tf.AssertMissingCommitmentReceivedCount(0) - tf.AssertCommitmentBelowRootCount(2) - } - { - isSolid, chain := tf.ProcessCommitment("2+") - require.False(t, isSolid) - require.Nil(t, chain) - tf.AssertForkDetectedCount(0) - tf.AssertCommitmentMissingCount(1) - tf.AssertMissingCommitmentReceivedCount(0) - tf.AssertCommitmentBelowRootCount(3) - } - } - - // Should be processed after 2 becomes rootCommitment - tf.CreateCommitment("3", "2", 30) - tf.CreateCommitment("4", "3", 40) - { - { - isSolid, chain := tf.ProcessCommitment("2") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "Genesis") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "Genesis": "evicted", - "1": "evicted", - "2": "Genesis", - })) - tf.AssertForkDetectedCount(0) - tf.AssertCommitmentMissingCount(1) - tf.AssertMissingCommitmentReceivedCount(0) - tf.AssertCommitmentBelowRootCount(3) - } - { - isSolid, chain := tf.ProcessCommitment("4") - require.False(t, isSolid) - require.Nil(t, chain, "Genesis") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "4": "", - })) - tf.AssertForkDetectedCount(0) - tf.AssertCommitmentMissingCount(2) - tf.AssertMissingCommitmentReceivedCount(0) - tf.AssertCommitmentBelowRootCount(3) - } - { - isSolid, chain := tf.ProcessCommitment("3") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "Genesis") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{ - "3": "Genesis", - "4": "Genesis", - })) - tf.AssertForkDetectedCount(0) - tf.AssertCommitmentMissingCount(2) - tf.AssertMissingCommitmentReceivedCount(1) - tf.AssertCommitmentBelowRootCount(3) - } - { - isSolid, chain := tf.ProcessCommitment("4") - require.True(t, isSolid) - tf.AssertChainIsAlias(chain, "Genesis") - tf.AssertChainState(lo.MergeMaps(expectedChainMappings, map[string]string{})) - tf.AssertForkDetectedCount(0) - tf.AssertCommitmentMissingCount(2) - tf.AssertMissingCommitmentReceivedCount(1) - tf.AssertCommitmentBelowRootCount(3) - } - } -} diff --git a/pkg/protocol/chainmanager/testframework.go b/pkg/protocol/chainmanager/testframework.go deleted file mode 100644 index 576a30f36..000000000 --- a/pkg/protocol/chainmanager/testframework.go +++ /dev/null @@ -1,190 +0,0 @@ -package chainmanager - -import ( - "sync/atomic" - "testing" - - "github.com/stretchr/testify/require" - "golang.org/x/crypto/blake2b" - - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/hive.go/runtime/syncutils" - "github.com/iotaledger/iota-core/pkg/model" - iotago "github.com/iotaledger/iota.go/v4" -) - -type TestFramework struct { - Instance *Manager - - test *testing.T - api iotago.API - commitmentsByAlias map[string]*model.Commitment - - forkDetected int32 - commitmentMissing int32 - missingCommitmentReceived int32 - commitmentBelowRoot int32 - - syncutils.RWMutex -} - -func NewTestFramework(test *testing.T, api iotago.API, opts ...options.Option[TestFramework]) (testFramework *TestFramework) { - snapshotCommitment := model.NewEmptyCommitment(api) - - return options.Apply(&TestFramework{ - Instance: NewManager(), - - test: test, - api: api, - commitmentsByAlias: map[string]*model.Commitment{ - "Genesis": snapshotCommitment, - }, - }, opts, func(t *TestFramework) { - t.Instance.Initialize(snapshotCommitment) - t.Instance.Events.ForkDetected.Hook(func(fork *Fork) { - t.test.Logf("ForkDetected: %s", fork) - atomic.AddInt32(&t.forkDetected, 1) - }) - t.Instance.commitmentRequester.Events.TickerStarted.Hook(func(id iotago.CommitmentID) { - t.test.Logf("CommitmentMissing: %s", id) - atomic.AddInt32(&t.commitmentMissing, 1) - }) - t.Instance.commitmentRequester.Events.TickerStopped.Hook(func(id iotago.CommitmentID) { - t.test.Logf("MissingCommitmentReceived: %s", id) - atomic.AddInt32(&t.missingCommitmentReceived, 1) - }) - t.Instance.Events.CommitmentBelowRoot.Hook(func(id iotago.CommitmentID) { - t.test.Logf("CommitmentBelowRoot: %s", id) - atomic.AddInt32(&t.commitmentBelowRoot, 1) - }) - }) -} - -func (t *TestFramework) CreateCommitment(alias string, prevAlias string, cumulativeWeight uint64) { - t.Lock() - defer t.Unlock() - - prevCommitmentID, previousIndex := t.previousCommitmentID(prevAlias) - randomECR := blake2b.Sum256([]byte(alias + prevAlias)) - - cm, err := model.CommitmentFromCommitment(iotago.NewCommitment(t.api.ProtocolParameters().Version(), previousIndex+1, prevCommitmentID, randomECR, cumulativeWeight, 0), t.api) - require.NoError(t.test, err) - t.commitmentsByAlias[alias] = cm - t.commitmentsByAlias[alias].ID().RegisterAlias(alias) -} - -func (t *TestFramework) ProcessCommitment(alias string) (isSolid bool, chain *Chain) { - return t.Instance.ProcessCommitment(t.commitment(alias)) -} - -func (t *TestFramework) ProcessCommitmentFromOtherSource(alias string) (isSolid bool, chain *Chain) { - return t.Instance.ProcessCommitmentFromSource(t.commitment(alias), "otherid") -} - -func (t *TestFramework) Chain(alias string) (chain *Chain) { - return t.Instance.Chain(t.SlotCommitment(alias)) -} - -func (t *TestFramework) commitment(alias string) *model.Commitment { - t.RLock() - defer t.RUnlock() - - commitment, exists := t.commitmentsByAlias[alias] - if !exists { - panic("the commitment does not exist") - } - - return commitment -} - -func (t *TestFramework) ChainCommitment(alias string) *ChainCommitment { - cm, exists := t.Instance.Commitment(t.SlotCommitment(alias)) - require.True(t.test, exists) - - return cm -} - -func (t *TestFramework) AssertForkDetectedCount(expected int) { - require.EqualValues(t.test, expected, t.forkDetected, "forkDetected count does not match") -} - -func (t *TestFramework) AssertCommitmentMissingCount(expected int) { - require.EqualValues(t.test, expected, t.commitmentMissing, "commitmentMissing count does not match") -} - -func (t *TestFramework) AssertMissingCommitmentReceivedCount(expected int) { - require.EqualValues(t.test, expected, t.missingCommitmentReceived, "missingCommitmentReceived count does not match") -} - -func (t *TestFramework) AssertCommitmentBelowRootCount(expected int) { - require.EqualValues(t.test, expected, t.commitmentBelowRoot, "commitmentBelowRoot count does not match") -} - -func (t *TestFramework) AssertEqualChainCommitments(commitments []*ChainCommitment, aliases ...string) { - var chainCommitments []*ChainCommitment - for _, alias := range aliases { - chainCommitments = append(chainCommitments, t.ChainCommitment(alias)) - } - - require.EqualValues(t.test, commitments, chainCommitments) -} - -func (t *TestFramework) SlotCommitment(alias string) iotago.CommitmentID { - return t.commitment(alias).ID() -} - -func (t *TestFramework) SlotIndex(alias string) iotago.SlotIndex { - return t.commitment(alias).Index() -} - -func (t *TestFramework) SlotCommitmentRoot(alias string) iotago.Identifier { - return t.commitment(alias).RootsID() -} - -func (t *TestFramework) PrevSlotCommitment(alias string) iotago.CommitmentID { - return t.commitment(alias).PrevID() -} - -func (t *TestFramework) AssertChainIsAlias(chain *Chain, alias string) { - if alias == "" { - require.Nil(t.test, chain) - return - } - - require.Equal(t.test, t.commitment(alias).ID(), chain.ForkingPoint.ID()) -} - -func (t *TestFramework) AssertChainState(chains map[string]string) { - commitmentsByChainAlias := make(map[string][]string) - - for commitmentAlias, chainAlias := range chains { - if chainAlias == "" { - require.Nil(t.test, t.Chain(commitmentAlias)) - continue - } - if chainAlias == "evicted" { - _, exists := t.Instance.Commitment(t.SlotCommitment(commitmentAlias)) - require.False(t.test, exists, "commitment %s should be evicted", commitmentAlias) - continue - } - commitmentsByChainAlias[chainAlias] = append(commitmentsByChainAlias[chainAlias], commitmentAlias) - - chain := t.Chain(commitmentAlias) - - require.NotNil(t.test, chain, "chain for commitment %s is nil", commitmentAlias) - require.Equal(t.test, t.SlotCommitment(chainAlias), chain.ForkingPoint.ID()) - } -} - -func (t *TestFramework) previousCommitmentID(alias string) (previousCommitmentID iotago.CommitmentID, previousIndex iotago.SlotIndex) { - if alias == "" { - return - } - - previousCommitment, exists := t.commitmentsByAlias[alias] - if !exists { - panic("the previous commitment does not exist") - } - - return previousCommitment.ID(), previousCommitment.Index() -} diff --git a/pkg/protocol/chainmanager/types.go b/pkg/protocol/chainmanager/types.go deleted file mode 100644 index cf7b93c5f..000000000 --- a/pkg/protocol/chainmanager/types.go +++ /dev/null @@ -1,29 +0,0 @@ -package chainmanager - -import ( - "github.com/libp2p/go-libp2p/core/peer" - - "github.com/iotaledger/hive.go/stringify" - "github.com/iotaledger/iota-core/pkg/model" - iotago "github.com/iotaledger/iota.go/v4" -) - -type ChainID = iotago.CommitmentID - -type Fork struct { - Source peer.ID - MainChain *Chain - ForkedChain *Chain - ForkingPoint *model.Commitment - ForkLatestCommitment *model.Commitment -} - -func (f *Fork) String() string { - return stringify.Struct("Fork", - stringify.NewStructField("Source", f.Source), - stringify.NewStructField("MainChain", f.MainChain.String()), - stringify.NewStructField("ForkedChain", f.ForkedChain.String()), - stringify.NewStructField("ForkingPoint", f.ForkingPoint), - stringify.NewStructField("ForkLatestCommitment", f.ForkLatestCommitment), - ) -} diff --git a/pkg/protocol/options.go b/pkg/protocol/options.go index b89f18876..db0f5ab65 100644 --- a/pkg/protocol/options.go +++ b/pkg/protocol/options.go @@ -3,7 +3,6 @@ package protocol import ( "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation/slotattestation" @@ -47,9 +46,8 @@ type Options struct { SnapshotPath string ChainSwitchingThreshold int - EngineOptions []options.Option[engine.Engine] - ChainManagerOptions []options.Option[chainmanager.Manager] - StorageOptions []options.Option[storage.Storage] + EngineOptions []options.Option[engine.Engine] + StorageOptions []options.Option[storage.Storage] FilterProvider module.Provider[*engine.Engine, filter.Filter] CommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] @@ -209,12 +207,6 @@ func WithEngineOptions(opts ...options.Option[engine.Engine]) options.Option[Pro } } -func WithChainManagerOptions(opts ...options.Option[chainmanager.Manager]) options.Option[Protocol] { - return func(p *Protocol) { - p.options.ChainManagerOptions = append(p.options.ChainManagerOptions, opts...) - } -} - func WithStorageOptions(opts ...options.Option[storage.Storage]) options.Option[Protocol] { return func(p *Protocol) { p.options.StorageOptions = append(p.options.StorageOptions, opts...) diff --git a/pkg/protocol_legacy/block_dispatcher.go b/pkg/protocol_legacy/block_dispatcher.go deleted file mode 100644 index 74362e6f7..000000000 --- a/pkg/protocol_legacy/block_dispatcher.go +++ /dev/null @@ -1,351 +0,0 @@ -package protocol - -import ( - "time" - - "github.com/libp2p/go-libp2p/core/peer" - - "github.com/iotaledger/hive.go/ads" - "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/ds" - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/ds/types" - "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/kvstore/mapdb" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/hive.go/runtime/workerpool" - "github.com/iotaledger/iota-core/pkg/core/buffer" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/merklehasher" -) - -// BlockDispatcher is a component that is responsible for dispatching blocks to the correct engine instance or -// triggering a warp sync. -type BlockDispatcher struct { - // protocol is the protocol instance that is using this BlockDispatcher instance. - protocol *Protocol - - // dispatchWorkers is the worker pool that is used to dispatch blocks to the correct engine instance. - dispatchWorkers *workerpool.WorkerPool - - // warpSyncWorkers is the worker pool that is used to process the WarpSync requests and responses. - warpSyncWorkers *workerpool.WorkerPool - - // unsolidCommitmentBlocks is a buffer that stores blocks that have an unsolid slot commitment. - unsolidCommitmentBlocks *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] - - // pendingWarpSyncRequests is the set of pending requests that are waiting to be processed. - pendingWarpSyncRequests *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - - // processedWarpSyncRequests is the set of processed requests. - processedWarpSyncRequests ds.Set[iotago.CommitmentID] - - // shutdownEvent is a reactive event that is triggered when the BlockDispatcher instance is stopped. - shutdownEvent reactive.Event - - // optWarpSyncWindowSize is the optional warp sync window size. - optWarpSyncWindowSize iotago.SlotIndex -} - -// NewBlockDispatcher creates a new BlockDispatcher instance. -func NewBlockDispatcher(protocol *Protocol, opts ...options.Option[BlockDispatcher]) *BlockDispatcher { - return options.Apply(&BlockDispatcher{ - protocol: protocol, - dispatchWorkers: protocol.Workers.CreatePool("BlockDispatcher.Dispatch"), - warpSyncWorkers: protocol.Workers.CreatePool("BlockDispatcher.WarpSync", 1), - unsolidCommitmentBlocks: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), - pendingWarpSyncRequests: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](WarpSyncRetryInterval)), - processedWarpSyncRequests: ds.NewSet[iotago.CommitmentID](), - shutdownEvent: reactive.NewEvent(), - }, opts, func(b *BlockDispatcher) { - protocol.HookConstructed(b.initEngineMonitoring) - protocol.HookInitialized(b.initNetworkConnection) - protocol.HookShutdown(b.shutdown) - }) -} - -// Dispatch dispatches the given block to the correct engine instance. -func (b *BlockDispatcher) Dispatch(block *model.Block, src peer.ID) error { - slotCommitment := b.protocol.ChainManager.LoadCommitmentOrRequestMissing(block.ProtocolBlock().SlotCommitmentID) - if !slotCommitment.SolidEvent().WasTriggered() { - if !b.unsolidCommitmentBlocks.Add(slotCommitment.ID(), types.NewTuple(block, src)) { - return ierrors.Errorf("failed to add block %s to unsolid commitment buffer", block.ID()) - } - - return ierrors.Errorf("failed to dispatch block %s: slot commitment %s is not solid", block.ID(), slotCommitment.ID()) - } - - matchingEngineFound := false - for _, engine := range []*engine.Engine{b.protocol.MainEngineInstance(), b.protocol.CandidateEngineInstance()} { - if engine != nil && (engine.ChainID() == slotCommitment.Chain().ForkingPoint.ID() || engine.BlockRequester.HasTicker(block.ID())) { - if b.inSyncWindow(engine, block) { - engine.ProcessBlockFromPeer(block, src) - } - - matchingEngineFound = true - } - } - - if !matchingEngineFound { - return ierrors.Errorf("failed to dispatch block %s: no matching engine found", block.ID()) - } - - return nil -} - -// initEngineMonitoring initializes the automatic monitoring of the engine instances. -func (b *BlockDispatcher) initEngineMonitoring() { - b.monitorLatestEngineCommitment(b.protocol.MainEngineInstance()) - - b.protocol.engineManager.OnEngineCreated(b.monitorLatestEngineCommitment) - - b.protocol.Events.ChainManager.CommitmentPublished.Hook(func(chainCommitment *chainmanager.ChainCommitment) { - // as soon as a commitment is solid, it's chain is known and it can be dispatched - chainCommitment.SolidEvent().OnTrigger(func() { - b.runTask(func() { - b.injectUnsolidCommitmentBlocks(chainCommitment.Commitment().ID()) - }, b.dispatchWorkers) - - b.runTask(func() { - b.warpSyncIfNecessary(b.targetEngine(chainCommitment), chainCommitment) - }, b.warpSyncWorkers) - }) - }) - - b.protocol.Events.Engine.Notarization.LatestCommitmentUpdated.Hook(func(commitment *model.Commitment) { - b.runTask(func() { - b.injectUnsolidCommitmentBlocks(commitment.ID()) - }, b.dispatchWorkers) - }) - - b.protocol.Events.Engine.SlotGadget.SlotFinalized.Hook(b.evict) -} - -// initNetworkConnection initializes the network connection of the BlockDispatcher instance. -func (b *BlockDispatcher) initNetworkConnection() { - b.protocol.Events.Engine.BlockRequester.Tick.Hook(func(blockID iotago.BlockID) { - b.runTask(func() { - b.protocol.networkProtocol.RequestBlock(blockID) - }, b.dispatchWorkers) - }) - - b.pendingWarpSyncRequests.Events.Tick.Hook(func(id iotago.CommitmentID) { - b.runTask(func() { - b.protocol.networkProtocol.SendWarpSyncRequest(id) - }, b.dispatchWorkers) - }) - - b.protocol.Events.Network.BlockReceived.Hook(func(block *model.Block, src peer.ID) { - b.runTask(func() { - b.protocol.HandleError(b.Dispatch(block, src)) - }, b.dispatchWorkers) - }) - - b.protocol.Events.Network.WarpSyncRequestReceived.Hook(func(commitmentID iotago.CommitmentID, src peer.ID) { - b.runTask(func() { - b.protocol.HandleError(b.processWarpSyncRequest(commitmentID, src)) - }, b.warpSyncWorkers) - }) - - b.protocol.Events.Network.WarpSyncResponseReceived.Hook(func(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, merkleProof *merklehasher.Proof[iotago.Identifier], src peer.ID) { - b.runTask(func() { - b.protocol.HandleError(b.processWarpSyncResponse(commitmentID, blockIDs, merkleProof, src)) - }, b.warpSyncWorkers) - }) -} - -// processWarpSyncRequest processes a WarpSync request. -func (b *BlockDispatcher) processWarpSyncRequest(commitmentID iotago.CommitmentID, src peer.ID) error { - // TODO: check if the peer is allowed to request the warp sync - - committedSlot, err := b.protocol.MainEngineInstance().CommittedSlot(commitmentID) - if err != nil { - return ierrors.Wrapf(err, "failed to get slot %d (not committed yet)", commitmentID.Index()) - } - - commitment, err := committedSlot.Commitment() - if err != nil { - return ierrors.Wrapf(err, "failed to get commitment from slot %d", commitmentID.Index()) - } else if commitment.ID() != commitmentID { - return ierrors.Wrapf(err, "commitment ID mismatch: %s != %s", commitment.ID(), commitmentID) - } - - blockIDs, err := committedSlot.BlockIDs() - if err != nil { - return ierrors.Wrapf(err, "failed to get block IDs from slot %d", commitmentID.Index()) - } - - roots, err := committedSlot.Roots() - if err != nil { - return ierrors.Wrapf(err, "failed to get roots from slot %d", commitmentID.Index()) - } - - b.protocol.networkProtocol.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), src) - - return nil -} - -// processWarpSyncResponse processes a WarpSync response. -func (b *BlockDispatcher) processWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, merkleProof *merklehasher.Proof[iotago.Identifier], _ peer.ID) error { - if b.processedWarpSyncRequests.Has(commitmentID) { - return nil - } - - chainCommitment, exists := b.protocol.ChainManager.Commitment(commitmentID) - if !exists { - return ierrors.Errorf("failed to get chain commitment for %s", commitmentID) - } - - targetEngine := b.targetEngine(chainCommitment) - if targetEngine == nil { - return ierrors.Errorf("failed to get target engine for %s", commitmentID) - } - - acceptedBlocks := ads.NewSet[iotago.BlockID](mapdb.NewMapDB(), iotago.BlockID.Bytes, iotago.SlotIdentifierFromBytes) - for _, blockID := range blockIDs { - _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error - } - - if !iotago.VerifyProof(merkleProof, iotago.Identifier(acceptedBlocks.Root()), chainCommitment.Commitment().RootsID()) { - return ierrors.Errorf("failed to verify merkle proof for %s", commitmentID) - } - - b.pendingWarpSyncRequests.StopTicker(commitmentID) - - b.processedWarpSyncRequests.Add(commitmentID) - - for _, blockID := range blockIDs { - targetEngine.BlockDAG.GetOrRequestBlock(blockID) - } - - return nil -} - -// inSyncWindow returns whether the given block is within the sync window of the given engine instance. -// -// We limit the amount of slots ahead of the latest commitment that we forward to the engine instance to prevent memory -// exhaustion while syncing. -func (b *BlockDispatcher) inSyncWindow(engine *engine.Engine, block *model.Block) bool { - if engine.BlockRequester.HasTicker(block.ID()) { - return true - } - - slotCommitmentID := block.ProtocolBlock().SlotCommitmentID - latestCommitmentIndex := engine.Storage.Settings().LatestCommitment().Index() - maxCommittableAge := engine.APIForSlot(slotCommitmentID.Index()).ProtocolParameters().MaxCommittableAge() - - return block.ID().Index() <= latestCommitmentIndex+maxCommittableAge -} - -// warpSyncIfNecessary triggers a warp sync if necessary. -func (b *BlockDispatcher) warpSyncIfNecessary(e *engine.Engine, chainCommitment *chainmanager.ChainCommitment) { - if e == nil { - return - } - - chain := chainCommitment.Chain() - latestCommitmentIndex := e.Storage.Settings().LatestCommitment().Index() - - if latestCommitmentIndex+1 >= chain.LatestCommitment().Commitment().Index() { - return - } - - maxCommittableAge := e.APIForSlot(chainCommitment.Commitment().Index()).ProtocolParameters().MaxCommittableAge() - warpSyncWindowSize := lo.Max(maxCommittableAge, b.optWarpSyncWindowSize) - - for slotToWarpSync := latestCommitmentIndex + 1; slotToWarpSync <= latestCommitmentIndex+warpSyncWindowSize; slotToWarpSync++ { - commitmentToSync := chain.Commitment(slotToWarpSync) - if commitmentToSync == nil { - break - } - - if !b.processedWarpSyncRequests.Has(commitmentToSync.ID()) { - b.pendingWarpSyncRequests.StartTicker(commitmentToSync.ID()) - } - } -} - -// injectUnsolidCommitmentBlocks injects the unsolid blocks for the given commitment ID into the correct engine -// instance. -func (b *BlockDispatcher) injectUnsolidCommitmentBlocks(id iotago.CommitmentID) { - for _, tuple := range b.unsolidCommitmentBlocks.GetValues(id) { - b.protocol.HandleError(b.Dispatch(tuple.A, tuple.B)) - } -} - -// targetEngine returns the engine instance that should be used for the given commitment. -func (b *BlockDispatcher) targetEngine(commitment *chainmanager.ChainCommitment) *engine.Engine { - if chain := commitment.Chain(); chain != nil { - chainID := chain.ForkingPoint.Commitment().ID() - - if engine := b.protocol.MainEngineInstance(); engine.ChainID() == chainID { - return engine - } - - if engine := b.protocol.CandidateEngineInstance(); engine != nil && engine.ChainID() == chainID { - return engine - } - } - - return nil -} - -// monitorLatestEngineCommitment monitors the latest commitment of the given engine instance and triggers a warp sync if -// necessary. -func (b *BlockDispatcher) monitorLatestEngineCommitment(engineInstance *engine.Engine) { - unsubscribe := engineInstance.Events.Notarization.LatestCommitmentUpdated.Hook(func(commitment *model.Commitment) { - if latestEngineCommitment, exists := b.protocol.ChainManager.Commitment(commitment.ID()); exists { - b.processedWarpSyncRequests.Delete(commitment.ID()) - - b.warpSyncIfNecessary(engineInstance, latestEngineCommitment) - } - }).Unhook - - engineInstance.HookStopped(unsubscribe) -} - -// evict evicts all elements from the unsolid commitment blocks buffer and the pending warp sync requests that are older -// than the given index. -func (b *BlockDispatcher) evict(index iotago.SlotIndex) { - b.pendingWarpSyncRequests.EvictUntil(index) - b.unsolidCommitmentBlocks.EvictUntil(index) -} - -// shutdown shuts down the BlockDispatcher instance. -func (b *BlockDispatcher) shutdown() { - b.shutdownEvent.Compute(func(isShutdown bool) bool { - if !isShutdown { - b.pendingWarpSyncRequests.Shutdown() - - b.dispatchWorkers.Shutdown(true).ShutdownComplete.Wait() - b.warpSyncWorkers.Shutdown(true).ShutdownComplete.Wait() - } - - return true - }) -} - -// runTask runs the given task on the given worker pool if the BlockDispatcher instance is not shutdown. -func (b *BlockDispatcher) runTask(task func(), pool *workerpool.WorkerPool) { - b.shutdownEvent.Compute(func(isShutdown bool) bool { - if !isShutdown { - pool.Submit(task) - } - - return isShutdown - }) -} - -// WithWarpSyncWindowSize is an option for the BlockDispatcher that allows to set the warp sync window size. -func WithWarpSyncWindowSize(size iotago.SlotIndex) options.Option[BlockDispatcher] { - return func(b *BlockDispatcher) { - b.optWarpSyncWindowSize = size - } -} - -// WarpSyncRetryInterval is the interval in which a warp sync request is retried. -const WarpSyncRetryInterval = 1 * time.Minute diff --git a/pkg/protocol_legacy/candidate_engine.go b/pkg/protocol_legacy/candidate_engine.go deleted file mode 100644 index a8606f34b..000000000 --- a/pkg/protocol_legacy/candidate_engine.go +++ /dev/null @@ -1,8 +0,0 @@ -package protocol - -import "github.com/iotaledger/iota-core/pkg/protocol/engine" - -type candidateEngine struct { - engine *engine.Engine - cleanupFunc func() -} diff --git a/pkg/protocol_legacy/commitment_verifier.go b/pkg/protocol_legacy/commitment_verifier.go deleted file mode 100644 index 704785cf1..000000000 --- a/pkg/protocol_legacy/commitment_verifier.go +++ /dev/null @@ -1,175 +0,0 @@ -package protocol - -import ( - "github.com/iotaledger/hive.go/ads" - "github.com/iotaledger/hive.go/ds" - "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/kvstore/mapdb" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/merklehasher" -) - -type CommitmentVerifier struct { - engine *engine.Engine - cumulativeWeight uint64 - validatorAccountsAtFork map[iotago.AccountID]*accounts.AccountData -} - -func NewCommitmentVerifier(mainEngine *engine.Engine, lastCommonCommitmentBeforeFork *model.Commitment) *CommitmentVerifier { - committeeAtForkingPoint := mainEngine.SybilProtection.SeatManager().Committee(lastCommonCommitmentBeforeFork.Index()).Accounts().IDs() - - return &CommitmentVerifier{ - engine: mainEngine, - cumulativeWeight: lastCommonCommitmentBeforeFork.CumulativeWeight(), - validatorAccountsAtFork: lo.PanicOnErr(mainEngine.Ledger.PastAccounts(committeeAtForkingPoint, lastCommonCommitmentBeforeFork.Index())), - // TODO: what happens if the committee rotated after the fork? - } -} - -func (c *CommitmentVerifier) verifyCommitment(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier]) (blockIDsFromAttestations iotago.BlockIDs, cumulativeWeight uint64, err error) { - // 1. Verify that the provided attestations are indeed the ones that were included in the commitment. - tree := ads.NewMap(mapdb.NewMapDB(), - iotago.Identifier.Bytes, - iotago.IdentifierFromBytes, - func(attestation *iotago.Attestation) ([]byte, error) { - apiForVersion, err := c.engine.APIForVersion(attestation.ProtocolVersion) - if err != nil { - return nil, ierrors.Wrapf(err, "failed to get API for version %d", attestation.ProtocolVersion) - } - - return apiForVersion.Encode(attestation) - }, - func(bytes []byte) (*iotago.Attestation, int, error) { - version, _, err := iotago.VersionFromBytes(bytes) - if err != nil { - return nil, 0, ierrors.Wrap(err, "failed to determine version") - } - - a := new(iotago.Attestation) - apiForVersion, err := c.engine.APIForVersion(version) - if err != nil { - return nil, 0, ierrors.Wrapf(err, "failed to get API for version %d", version) - } - n, err := apiForVersion.Decode(bytes, a) - - return a, n, err - }, - ) - - for _, att := range attestations { - if err := tree.Set(att.IssuerID, att); err != nil { - return nil, 0, ierrors.Wrapf(err, "failed to set attestation for issuerID %s", att.IssuerID) - } - } - if !iotago.VerifyProof(merkleProof, iotago.Identifier(tree.Root()), commitment.RootsID()) { - return nil, 0, ierrors.Errorf("invalid merkle proof for attestations for commitment %s", commitment.ID()) - } - - // 2. Verify attestations. - blockIDs, seatCount, err := c.verifyAttestations(attestations) - if err != nil { - return nil, 0, ierrors.Wrapf(err, "error validating attestations for commitment %s", commitment.ID()) - } - - // 3. Verify that calculated cumulative weight from attestations is lower or equal to cumulative weight of commitment. - // This is necessary due to public key changes of validators in the window of forking point and the current state of - // the other chain (as validators could have added/removed public keys that we don't know about yet). - // - // 1. The weight should be equal if all public keys are known and unchanged. - // - // 2. A public key is added to an account. - // We do not count a seat for the issuer for this slot and the computed CW will be lower than the CW in - // the commitment. This is fine, since this is a rare occasion and a heavier chain will become heavier anyway, eventually. - // It will simply take a bit longer to accumulate enough CW so that the chain-switch rule kicks in. - // Note: In an extreme scenario where all validators add and use a new public key, the chain will never become heavier. - // This can only be prevented by adding such key changes provably to the commitments so that these changes - // can be reconstructed and verified by nodes that do not have the latest ledger state. - // - // 3. A public key is removed from an account. - // We count the seat for the issuer for this slot even though we shouldn't have. According to the protocol, a valid - // chain with such a block can never exist because the block itself (here provided as an attestation) would be invalid. - // However, we do not know about this yet since we do not have the latest ledger state. - // In a rare and elaborate scenario, an attacker might have acquired such removed (private) keys and could - // fabricate attestations and thus a theoretically heavier chain (solely when looking on the chain backed by attestations) - // than it actually is. Nodes might consider to switch to this chain, even though it is invalid which will be discovered - // before the candidate chain/engine is activated (it will never get heavier than the current chain). - c.cumulativeWeight += seatCount - if c.cumulativeWeight > commitment.CumulativeWeight() { - return nil, 0, ierrors.Errorf("invalid cumulative weight for commitment %s: expected %d, got %d", commitment.ID(), commitment.CumulativeWeight(), c.cumulativeWeight) - } - - return blockIDs, c.cumulativeWeight, nil -} - -func (c *CommitmentVerifier) verifyAttestations(attestations []*iotago.Attestation) (iotago.BlockIDs, uint64, error) { - visitedIdentities := ds.NewSet[iotago.AccountID]() - var blockIDs iotago.BlockIDs - var seatCount uint64 - - for _, att := range attestations { - // 1. Make sure the public key used to sign is valid for the given issuerID. - // We ignore attestations that don't have a valid public key for the given issuerID. - // 1. The attestation might be fake. - // 2. The issuer might have added a new public key in the meantime, but we don't know about it yet - // since we only have the ledger state at the forking point. - accountData, exists := c.validatorAccountsAtFork[att.IssuerID] - - // We always need to have the accountData for a validator. - if !exists { - return nil, 0, ierrors.Errorf("accountData for issuerID %s does not exist", att.IssuerID) - } - - edSig, isEdSig := att.Signature.(*iotago.Ed25519Signature) - if !isEdSig { - return nil, 0, ierrors.Errorf("only ed2519 signatures supported, got %s", att.Signature.Type()) - } - - // We found the accountData, but we don't know the public key used to sign this block/attestation. Ignore. - if !accountData.PubKeys.Has(edSig.PublicKey) { - continue - } - - api, err := c.engine.APIForVersion(att.ProtocolVersion) - if err != nil { - return nil, 0, ierrors.Wrap(err, "error determining API for attestation") - } - - // 2. Verify the signature of the attestation. - if valid, err := att.VerifySignature(api); !valid { - if err != nil { - return nil, 0, ierrors.Wrap(err, "error validating attestation signature") - } - - return nil, 0, ierrors.New("invalid attestation signature") - } - - // 3. A valid set of attestations can't contain multiple attestations from the same issuerID. - if visitedIdentities.Has(att.IssuerID) { - return nil, 0, ierrors.Errorf("issuerID %s contained in multiple attestations", att.IssuerID) - } - - // TODO: this might differ if we have a Accounts with changing weights depending on the SlotIndex/epoch - attestationBlockID, err := att.BlockID(api) - if err != nil { - return nil, 0, ierrors.Wrap(err, "error calculating blockID from attestation") - } - if _, seatExists := c.engine.SybilProtection.SeatManager().Committee(attestationBlockID.Index()).GetSeat(att.IssuerID); seatExists { - seatCount++ - } - - visitedIdentities.Add(att.IssuerID) - - blockID, err := att.BlockID(api) - if err != nil { - return nil, 0, ierrors.Wrap(err, "error calculating blockID from attestation") - } - - blockIDs = append(blockIDs, blockID) - } - - return blockIDs, seatCount, nil -} diff --git a/pkg/protocol_legacy/events.go b/pkg/protocol_legacy/events.go deleted file mode 100644 index eb50194c1..000000000 --- a/pkg/protocol_legacy/events.go +++ /dev/null @@ -1,32 +0,0 @@ -package protocol - -import ( - "github.com/iotaledger/hive.go/runtime/event" - "github.com/iotaledger/iota-core/pkg/network/protocols/core" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine" -) - -type Events struct { - CandidateEngineActivated *event.Event1[*engine.Engine] - MainEngineSwitched *event.Event1[*engine.Engine] - Error *event.Event1[error] - - Network *core.Events - Engine *engine.Events - ChainManager *chainmanager.Events - - event.Group[Events, *Events] -} - -var NewEvents = event.CreateGroupConstructor(func() (newEvents *Events) { - return &Events{ - CandidateEngineActivated: event.New1[*engine.Engine](), - MainEngineSwitched: event.New1[*engine.Engine](), - Error: event.New1[error](), - - Network: core.NewEvents(), - Engine: engine.NewEvents(), - ChainManager: chainmanager.NewEvents(), - } -}) diff --git a/pkg/protocol_legacy/options.go b/pkg/protocol_legacy/options.go deleted file mode 100644 index 7d461242a..000000000 --- a/pkg/protocol_legacy/options.go +++ /dev/null @@ -1,149 +0,0 @@ -package protocol - -import ( - "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" - "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" - "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" - "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" - "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" - "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" - "github.com/iotaledger/iota-core/pkg/storage" -) - -func WithBaseDirectory(baseDirectory string) options.Option[Protocol] { - return func(p *Protocol) { - p.optsBaseDirectory = baseDirectory - } -} - -func WithSnapshotPath(snapshot string) options.Option[Protocol] { - return func(p *Protocol) { - p.optsSnapshotPath = snapshot - } -} - -func WithChainSwitchingThreshold(threshold int) options.Option[Protocol] { - return func(p *Protocol) { - p.optsChainSwitchingThreshold = threshold - } -} - -func WithFilterProvider(optsFilterProvider module.Provider[*engine.Engine, filter.Filter]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsFilterProvider = optsFilterProvider - } -} - -func WithCommitmentFilterProvider(optsCommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsCommitmentFilterProvider = optsCommitmentFilterProvider - } -} - -func WithBlockDAGProvider(optsBlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsBlockDAGProvider = optsBlockDAGProvider - } -} - -func WithTipManagerProvider(optsTipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsTipManagerProvider = optsTipManagerProvider - } -} - -func WithTipSelectionProvider(optsTipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsTipSelectionProvider = optsTipSelectionProvider - } -} - -func WithBookerProvider(optsBookerProvider module.Provider[*engine.Engine, booker.Booker]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsBookerProvider = optsBookerProvider - } -} - -func WithClockProvider(optsClockProvider module.Provider[*engine.Engine, clock.Clock]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsClockProvider = optsClockProvider - } -} - -func WithSybilProtectionProvider(optsSybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsSybilProtectionProvider = optsSybilProtectionProvider - } -} - -func WithBlockGadgetProvider(optsBlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsBlockGadgetProvider = optsBlockGadgetProvider - } -} - -func WithSlotGadgetProvider(optsSlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsSlotGadgetProvider = optsSlotGadgetProvider - } -} - -func WithEpochGadgetProvider(optsEpochGadgetProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsSybilProtectionProvider = optsEpochGadgetProvider - } -} - -func WithNotarizationProvider(optsNotarizationProvider module.Provider[*engine.Engine, notarization.Notarization]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsNotarizationProvider = optsNotarizationProvider - } -} - -func WithAttestationProvider(optsAttestationProvider module.Provider[*engine.Engine, attestation.Attestations]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsAttestationProvider = optsAttestationProvider - } -} - -func WithLedgerProvider(optsLedgerProvider module.Provider[*engine.Engine, ledger.Ledger]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsLedgerProvider = optsLedgerProvider - } -} - -func WithUpgradeOrchestratorProvider(optsUpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsUpgradeOrchestratorProvider = optsUpgradeOrchestratorProvider - } -} - -func WithEngineOptions(opts ...options.Option[engine.Engine]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsEngineOptions = append(p.optsEngineOptions, opts...) - } -} - -func WithChainManagerOptions(opts ...options.Option[chainmanager.Manager]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsChainManagerOptions = append(p.optsChainManagerOptions, opts...) - } -} - -func WithStorageOptions(opts ...options.Option[storage.Storage]) options.Option[Protocol] { - return func(p *Protocol) { - p.optsStorageOptions = append(p.optsStorageOptions, opts...) - } -} diff --git a/pkg/protocol_legacy/protocol.go b/pkg/protocol_legacy/protocol.go deleted file mode 100644 index 3dd88c2d6..000000000 --- a/pkg/protocol_legacy/protocol.go +++ /dev/null @@ -1,315 +0,0 @@ -package protocol - -import ( - "context" - "fmt" - - "github.com/iotaledger/hive.go/runtime/event" - "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/hive.go/runtime/syncutils" - "github.com/iotaledger/hive.go/runtime/workerpool" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/network" - "github.com/iotaledger/iota-core/pkg/network/protocols/core" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" - "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation/slotattestation" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag/inmemoryblockdag" - "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" - "github.com/iotaledger/iota-core/pkg/protocol/engine/booker/inmemorybooker" - "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" - "github.com/iotaledger/iota-core/pkg/protocol/engine/clock/blocktime" - "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter/accountsfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" - "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler/drr" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/filter/blockfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" - ledger1 "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger/ledger" - "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization/slotnotarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" - tipmanagerv1 "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager/v1" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" - tipselectionv1 "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection/v1" - "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" - "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade/signalingupgradeorchestrator" - "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" - "github.com/iotaledger/iota-core/pkg/protocol/syncmanager" - "github.com/iotaledger/iota-core/pkg/protocol/syncmanager/trivialsyncmanager" - "github.com/iotaledger/iota-core/pkg/retainer" - retainer1 "github.com/iotaledger/iota-core/pkg/retainer/retainer" - "github.com/iotaledger/iota-core/pkg/storage" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/api" -) - -type Protocol struct { - context context.Context - Events *Events - SyncManager syncmanager.SyncManager - BlockDispatcher *BlockDispatcher - engineManager *enginemanager.EngineManager - ChainManager *chainmanager.Manager - - Workers *workerpool.Group - networkDispatcher network.Endpoint - networkProtocol *core.Protocol - - activeEngineMutex syncutils.RWMutex - mainEngine *engine.Engine - candidateEngine *candidateEngine - - optsBaseDirectory string - optsSnapshotPath string - optsChainSwitchingThreshold int - - optsEngineOptions []options.Option[engine.Engine] - optsChainManagerOptions []options.Option[chainmanager.Manager] - optsStorageOptions []options.Option[storage.Storage] - - optsFilterProvider module.Provider[*engine.Engine, filter.Filter] - optsCommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] - optsBlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] - optsTipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] - optsTipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] - optsBookerProvider module.Provider[*engine.Engine, booker.Booker] - optsClockProvider module.Provider[*engine.Engine, clock.Clock] - optsBlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] - optsSlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] - optsSybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] - optsNotarizationProvider module.Provider[*engine.Engine, notarization.Notarization] - optsAttestationProvider module.Provider[*engine.Engine, attestation.Attestations] - optsSyncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager] - optsLedgerProvider module.Provider[*engine.Engine, ledger.Ledger] - optsRetainerProvider module.Provider[*engine.Engine, retainer.Retainer] - optsSchedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] - optsUpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] - - module.Module -} - -func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) (protocol *Protocol) { - return options.Apply(&Protocol{ - Events: NewEvents(), - Workers: workers, - networkDispatcher: dispatcher, - optsFilterProvider: blockfilter.NewProvider(), - optsCommitmentFilterProvider: accountsfilter.NewProvider(), - optsBlockDAGProvider: inmemoryblockdag.NewProvider(), - optsTipManagerProvider: tipmanagerv1.NewProvider(), - optsTipSelectionProvider: tipselectionv1.NewProvider(), - optsBookerProvider: inmemorybooker.NewProvider(), - optsClockProvider: blocktime.NewProvider(), - optsBlockGadgetProvider: thresholdblockgadget.NewProvider(), - optsSlotGadgetProvider: totalweightslotgadget.NewProvider(), - optsSybilProtectionProvider: sybilprotectionv1.NewProvider(), - optsNotarizationProvider: slotnotarization.NewProvider(), - optsAttestationProvider: slotattestation.NewProvider(), - optsSyncManagerProvider: trivialsyncmanager.NewProvider(), - optsLedgerProvider: ledger1.NewProvider(), - optsRetainerProvider: retainer1.NewProvider(), - optsSchedulerProvider: drr.NewProvider(), - optsUpgradeOrchestratorProvider: signalingupgradeorchestrator.NewProvider(), - - optsBaseDirectory: "", - optsChainSwitchingThreshold: 3, - }, opts, func(p *Protocol) { - p.BlockDispatcher = NewBlockDispatcher(p) - }, (*Protocol).initEngineManager, (*Protocol).initChainManager, (*Protocol).TriggerConstructed) -} - -// Run runs the protocol. -func (p *Protocol) Run(ctx context.Context) error { - var innerCtxCancel func() - - p.context, innerCtxCancel = context.WithCancel(ctx) - defer innerCtxCancel() - - p.linkToEngine(p.mainEngine) - - rootCommitment := p.mainEngine.EarliestRootCommitment(p.mainEngine.Storage.Settings().LatestFinalizedSlot()) - - // The root commitment is the earliest commitment we will ever need to know to solidify commitment chains, we can - // then initialize the chain manager with it, and identify our engine to be on such chain. - // Upon engine restart, such chain will be loaded with the latest finalized slot, and the chain manager, not needing - // persistent storage, will be able to continue from there. - p.mainEngine.SetChainID(rootCommitment.ID()) - p.ChainManager.Initialize(rootCommitment) - - // Fill the chain manager with all our known commitments so that the chain is solid - for i := rootCommitment.Index(); i <= p.mainEngine.Storage.Settings().LatestCommitment().Index(); i++ { - if cm, err := p.mainEngine.Storage.Commitments().Load(i); err == nil { - p.ChainManager.ProcessCommitment(cm) - } - } - - p.runNetworkProtocol() - - p.TriggerInitialized() - - <-p.context.Done() - - p.TriggerShutdown() - - p.shutdown() - - p.TriggerStopped() - - return p.context.Err() -} - -func (p *Protocol) linkToEngine(engineInstance *engine.Engine) { - if p.SyncManager != nil { - p.SyncManager.Shutdown() - p.SyncManager = nil - } - p.SyncManager = p.optsSyncManagerProvider(engineInstance) - - p.Events.Engine.LinkTo(engineInstance.Events) -} - -func (p *Protocol) shutdown() { - if p.networkProtocol != nil { - p.networkProtocol.Shutdown() - } - - p.ChainManager.Shutdown() - p.Workers.Shutdown() - - p.activeEngineMutex.RLock() - p.mainEngine.Shutdown() - if p.candidateEngine != nil { - p.candidateEngine.engine.Shutdown() - } - p.activeEngineMutex.RUnlock() - - p.SyncManager.Shutdown() -} - -func (p *Protocol) initEngineManager() { - p.engineManager = enginemanager.New( - p.Workers.CreateGroup("EngineManager"), - p.HandleError, - p.optsBaseDirectory, - DatabaseVersion, - p.optsStorageOptions, - p.optsEngineOptions, - p.optsFilterProvider, - p.optsCommitmentFilterProvider, - p.optsBlockDAGProvider, - p.optsBookerProvider, - p.optsClockProvider, - p.optsBlockGadgetProvider, - p.optsSlotGadgetProvider, - p.optsSybilProtectionProvider, - p.optsNotarizationProvider, - p.optsAttestationProvider, - p.optsLedgerProvider, - p.optsSchedulerProvider, - p.optsTipManagerProvider, - p.optsTipSelectionProvider, - p.optsRetainerProvider, - p.optsUpgradeOrchestratorProvider, - ) - - mainEngine, err := p.engineManager.LoadActiveEngine(p.optsSnapshotPath) - if err != nil { - panic(fmt.Sprintf("could not load active engine: %s", err)) - } - p.mainEngine = mainEngine -} - -func (p *Protocol) initChainManager() { - p.ChainManager = chainmanager.NewManager(p.optsChainManagerOptions...) - p.Events.ChainManager.LinkTo(p.ChainManager.Events) - - // This needs to be hooked so that the ChainManager always knows the commitments we issued. - // Else our own BlockIssuer might use a commitment that the ChainManager does not know yet. - p.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { - p.ChainManager.ProcessCommitment(details.Commitment) - }) - - p.Events.Engine.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { - rootCommitment := p.MainEngineInstance().EarliestRootCommitment(index) - - // It is essential that we set the rootCommitment before evicting the chainManager's state, this way - // we first specify the chain's cut-off point, and only then evict the state. It is also important to - // note that no multiple goroutines should be allowed to perform this operation at once, hence the - // hooking worker pool should always have a single worker or these two calls should be protected by a lock. - p.ChainManager.SetRootCommitment(rootCommitment) - - // We want to evict just below the height of our new root commitment (so that the slot of the root commitment - // stays in memory storage and with it the root commitment itself as well). - if rootCommitment.ID().Index() > 0 { - p.ChainManager.EvictUntil(rootCommitment.ID().Index() - 1) - } - }) - - wpForking := p.Workers.CreatePool("Protocol.Forking", 1) // Using just 1 worker to avoid contention - p.Events.ChainManager.ForkDetected.Hook(p.onForkDetected, event.WithWorkerPool(wpForking)) -} - -func (p *Protocol) IssueBlock(block *model.Block) error { - return p.BlockDispatcher.Dispatch(block, p.networkDispatcher.LocalPeerID()) -} - -func (p *Protocol) MainEngineInstance() *engine.Engine { - p.activeEngineMutex.RLock() - defer p.activeEngineMutex.RUnlock() - - return p.mainEngine -} - -func (p *Protocol) CandidateEngineInstance() *engine.Engine { - p.activeEngineMutex.RLock() - defer p.activeEngineMutex.RUnlock() - - if p.candidateEngine == nil { - return nil - } - - return p.candidateEngine.engine -} - -func (p *Protocol) Network() *core.Protocol { - return p.networkProtocol -} - -func (p *Protocol) LatestAPI() iotago.API { - return p.MainEngineInstance().LatestAPI() -} - -func (p *Protocol) CurrentAPI() iotago.API { - return p.MainEngineInstance().CurrentAPI() -} - -func (p *Protocol) APIForVersion(version iotago.Version) (iotago.API, error) { - return p.MainEngineInstance().APIForVersion(version) -} - -func (p *Protocol) APIForSlot(slot iotago.SlotIndex) iotago.API { - return p.MainEngineInstance().APIForSlot(slot) -} - -func (p *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { - return p.MainEngineInstance().APIForEpoch(epoch) -} - -func (p *Protocol) HandleError(err error) { - if err != nil { - p.Events.Error.Trigger(err) - } -} - -var _ api.Provider = &Protocol{} diff --git a/pkg/protocol_legacy/protocol_fork.go b/pkg/protocol_legacy/protocol_fork.go deleted file mode 100644 index 344e51fc1..000000000 --- a/pkg/protocol_legacy/protocol_fork.go +++ /dev/null @@ -1,341 +0,0 @@ -package protocol - -import ( - "context" - "fmt" - "time" - - "github.com/libp2p/go-libp2p/core/peer" - - "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/runtime/event" - "github.com/iotaledger/hive.go/runtime/timeutil" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/merklehasher" -) - -func (p *Protocol) processAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) { - mainEngine := p.MainEngineInstance() - - if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { - return - } - - commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Index()) - if err != nil { - p.HandleError(ierrors.Wrapf(err, "failed to load commitment %s", commitmentID)) - return - } - - if commitment.ID() != commitmentID { - return - } - - attestations, err := mainEngine.Attestations.Get(commitmentID.Index()) - if err != nil { - p.HandleError(ierrors.Wrapf(err, "failed to load attestations for commitment %s", commitmentID)) - return - } - - rootsStorage, err := mainEngine.Storage.Roots(commitmentID.Index()) - if err != nil { - p.HandleError(ierrors.Errorf("failed to get roots storage for commitment %s", commitmentID)) - return - } - roots, err := rootsStorage.Load(commitmentID) - if err != nil { - p.HandleError(ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID)) - return - } - - p.networkProtocol.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) -} - -func (p *Protocol) onForkDetected(fork *chainmanager.Fork) { - if candidateEngineInstance := p.CandidateEngineInstance(); candidateEngineInstance != nil && candidateEngineInstance.ChainID() == fork.ForkingPoint.ID() { - p.HandleError(ierrors.Errorf("we are already processing the fork at forkingPoint %s", fork.ForkingPoint.ID())) - return - } - - if p.MainEngineInstance().ChainID() == fork.ForkingPoint.ID() { - p.HandleError(ierrors.Errorf("we already switched our main engine to the fork at forkingPoint %s", fork.ForkingPoint.ID())) - return - } - - blockIDs, shouldSwitch, banSrc, err := p.processFork(fork) - if err != nil { - p.HandleError(ierrors.Wrapf(err, "failed to handle fork %s at forking point %s from source %s", fork.ForkedChain.LatestCommitment().ID(), fork.ForkingPoint.ID(), fork.Source)) - return - } - - if banSrc { - fmt.Println("TODO: ban source") - // TODO: ban/drop peer - } - - if !shouldSwitch { - return - } - - // When creating the candidate engine, there are 3 possible scenarios: - // 1. The candidate engine becomes synced and its chain is heavier than the main chain -> switch to it. - // 2. The candidate engine never becomes synced or its chain is not heavier than the main chain -> discard it after a timeout. - // 3. The candidate engine is not creating the same commitments as the chain we decided to switch to -> discard it immediately. - snapshotTargetIndex := fork.ForkingPoint.Index() - 1 - candidateEngineInstance, err := p.engineManager.ForkEngineAtSlot(snapshotTargetIndex) - if err != nil { - p.HandleError(ierrors.Wrap(err, "error creating new candidate engine")) - return - } - - // Set the chain to the correct forking point - candidateEngineInstance.SetChainID(fork.ForkingPoint.ID()) - - // Attach the engine block requests to the protocol and detach as soon as we switch to that engine - detachRequestBlocks := candidateEngineInstance.Events.BlockRequester.Tick.Hook(func(blockID iotago.BlockID) { - p.networkProtocol.RequestBlock(blockID) - }, event.WithWorkerPool(candidateEngineInstance.Workers.CreatePool("CandidateBlockRequester", 2))).Unhook - - var detachProcessCommitment, detachMainEngineSwitched func() - candidateEngineTimeoutTimer := time.NewTimer(10 * time.Minute) - - cleanupFunc := func() { - detachRequestBlocks() - detachProcessCommitment() - detachMainEngineSwitched() - - p.activeEngineMutex.Lock() - p.candidateEngine = nil - p.activeEngineMutex.Unlock() - - candidateEngineInstance.Shutdown() - if err := candidateEngineInstance.RemoveFromFilesystem(); err != nil { - p.HandleError(ierrors.Wrapf(err, "error cleaning up candidate engine %s from file system", candidateEngineInstance.Name())) - } - } - - // Attach slot commitments to the chain manager and detach as soon as we switch to that engine - detachProcessCommitment = candidateEngineInstance.Events.Notarization.LatestCommitmentUpdated.Hook(func(commitment *model.Commitment) { - // Check whether the commitment produced by syncing the candidate engine is actually part of the forked chain. - if fork.ForkedChain.LatestCommitment().ID().Index() >= commitment.Index() { - forkedChainCommitmentID := fork.ForkedChain.Commitment(commitment.Index()).ID() - if forkedChainCommitmentID != commitment.ID() { - p.HandleError(ierrors.Errorf("candidate engine %s produced a commitment %s that is not part of the forked chain %s", candidateEngineInstance.Name(), commitment.ID(), forkedChainCommitmentID)) - cleanupFunc() - - return - } - } - - p.ChainManager.ProcessCandidateCommitment(commitment) - - if candidateEngineInstance.SyncManager.IsBootstrapped() && - commitment.CumulativeWeight() > p.MainEngineInstance().Storage.Settings().LatestCommitment().CumulativeWeight() { - p.switchEngines() - } - }, event.WithWorkerPool(candidateEngineInstance.Workers.CreatePool("ProcessCandidateCommitment", 1))).Unhook - - // Clean up events when we switch to the candidate engine. - detachMainEngineSwitched = p.Events.MainEngineSwitched.Hook(func(_ *engine.Engine) { - candidateEngineTimeoutTimer.Stop() - detachRequestBlocks() - detachProcessCommitment() - }, event.WithMaxTriggerCount(1)).Unhook - - // Clean up candidate engine if we never switch to it. - go func() { - defer timeutil.CleanupTimer(candidateEngineTimeoutTimer) - - select { - case <-candidateEngineTimeoutTimer.C: - p.HandleError(ierrors.Errorf("timeout waiting for candidate engine %s to sync", candidateEngineInstance.Name())) - cleanupFunc() - case <-p.context.Done(): - // Nothing to do here. The candidate engine will be shutdown on protocol shutdown and cleaned up when starting the node again. - } - }() - - // Set the engine as the new candidate - p.activeEngineMutex.Lock() - oldCandidateEngine := p.candidateEngine - p.candidateEngine = &candidateEngine{ - engine: candidateEngineInstance, - cleanupFunc: cleanupFunc, - } - p.activeEngineMutex.Unlock() - - // Add all the blocks from the forking point attestations to the requester since those will not be passed to the engine by the protocol - candidateEngineInstance.BlockRequester.StartTickers(blockIDs) - - p.Events.CandidateEngineActivated.Trigger(candidateEngineInstance) - - if oldCandidateEngine != nil { - oldCandidateEngine.cleanupFunc() - } -} - -type commitmentVerificationResult struct { - commitment *model.Commitment - actualCumulativeWeight uint64 - blockIDs iotago.BlockIDs - err error -} - -func (p *Protocol) processFork(fork *chainmanager.Fork) (anchorBlockIDs iotago.BlockIDs, shouldSwitch, banSource bool, err error) { - // Flow: - // 1. request attestations starting from forking point + AttestationCommitmentOffset - // 2. request 1 by 1 - // 3. verify commitment and attestations: evaluate CW until this point - // 4. evaluate heuristic to determine if we should switch to the fork - ch := make(chan *commitmentVerificationResult) - defer close(ch) - - commitmentVerifier := NewCommitmentVerifier(p.MainEngineInstance(), fork.MainChain.Commitment(fork.ForkingPoint.Index()-1).Commitment()) - verifyCommitmentFunc := func(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], _ peer.ID) { - blockIDs, actualCumulativeWeight, err := commitmentVerifier.verifyCommitment(commitment, attestations, merkleProof) - - result := &commitmentVerificationResult{ - commitment: commitment, - actualCumulativeWeight: actualCumulativeWeight, - blockIDs: blockIDs, - err: err, - } - ch <- result - } - - wp := p.Workers.CreatePool("AttestationsVerifier", 1) - unhook := p.Events.Network.AttestationsReceived.Hook( - verifyCommitmentFunc, - event.WithWorkerPool(wp), - ).Unhook - defer unhook() - defer wp.Shutdown() - - ctx, cancel := context.WithTimeout(p.context, 2*time.Minute) - defer cancel() - - // Fork-choice rule: switch if p.optsChainSwitchingThreshold slots in a row are heavier than main chain. - forkChoiceRule := func(heavierCount int) (decided bool, shouldSwitch bool) { - switch heavierCount { - case p.optsChainSwitchingThreshold: - return true, true - case -p.optsChainSwitchingThreshold: - return true, false - default: - return false, false - } - } - - var heavierCount int - // We start from the forking point to have all starting blocks for each slot. Even though the chain weight will only - // start to diverge at forking point + AttestationCommitmentOffset. - start := fork.ForkingPoint.Index() - end := fork.ForkedChain.LatestCommitment().ID().Index() - for i := start; i <= end; i++ { - mainChainChainCommitment := fork.MainChain.Commitment(i) - if mainChainChainCommitment == nil { - // If the forked chain is longer than our main chain, we consider it to be heavier - heavierCount++ - - if decided, doSwitch := forkChoiceRule(heavierCount); decided { - return anchorBlockIDs, doSwitch, false, nil - } - - continue - } - mainChainCommitment := mainChainChainCommitment.Commitment() - - result, err := p.requestAttestation(ctx, fork.ForkedChain.Commitment(i).ID(), fork.Source, ch) - if err != nil { - return nil, false, true, ierrors.Wrapf(err, "failed to verify commitment %s", result.commitment.ID()) - } - - // Count how many consecutive slots are heavier/lighter than the main chain. - switch { - case result.actualCumulativeWeight > mainChainCommitment.CumulativeWeight(): - heavierCount++ - case result.actualCumulativeWeight < mainChainCommitment.CumulativeWeight(): - heavierCount-- - default: - heavierCount = 0 - } - - if decided, doSwitch := forkChoiceRule(heavierCount); decided { - return anchorBlockIDs, doSwitch, false, nil - } - } - - // If the condition is not met in either direction, we don't switch the chain. - return nil, false, false, nil -} - -func (p *Protocol) requestAttestation(ctx context.Context, requestedID iotago.CommitmentID, src peer.ID, resultChan chan *commitmentVerificationResult) (*commitmentVerificationResult, error) { - ticker := time.NewTicker(p.optsAttestationRequesterTryInterval) - defer ticker.Stop() - - for i := 0; i < p.optsAttestationRequesterMaxRetries; i++ { - p.networkProtocol.RequestAttestations(requestedID, src) - - select { - case <-ticker.C: - continue - case result := <-resultChan: - return result, result.err - case <-ctx.Done(): - return nil, ctx.Err() - } - } - - return nil, ierrors.Errorf("request attestation exceeds max retries from src: %s", src.String()) -} - -func (p *Protocol) switchEngines() { - var oldEngine *engine.Engine - success := func() bool { - p.activeEngineMutex.Lock() - defer p.activeEngineMutex.Unlock() - - if p.candidateEngine == nil { - return false - } - - candidateEngineInstance := p.candidateEngine.engine - // Try to re-org the chain manager - if err := p.ChainManager.SwitchMainChain(candidateEngineInstance.Storage.Settings().LatestCommitment().ID()); err != nil { - p.HandleError(ierrors.Wrap(err, "switching main chain failed")) - - return false - } - - if err := p.engineManager.SetActiveInstance(candidateEngineInstance); err != nil { - p.HandleError(ierrors.Wrap(err, "error switching engines")) - - return false - } - - p.linkToEngine(candidateEngineInstance) - - // Save a reference to the current main engine and storage so that we can shut it down and prune it after switching - oldEngine = p.mainEngine - oldEngine.Shutdown() - - p.mainEngine = candidateEngineInstance - p.candidateEngine = nil - - return true - }() - - if success { - p.Events.MainEngineSwitched.Trigger(p.MainEngineInstance()) - - // TODO: copy over old slots from the old engine to the new one - - // Cleanup filesystem - if err := oldEngine.RemoveFromFilesystem(); err != nil { - p.HandleError(ierrors.Wrap(err, "error removing storage directory after switching engines")) - } - } -} diff --git a/pkg/protocol_legacy/protocol_network.go b/pkg/protocol_legacy/protocol_network.go deleted file mode 100644 index 3b6ba842f..000000000 --- a/pkg/protocol_legacy/protocol_network.go +++ /dev/null @@ -1,56 +0,0 @@ -package protocol - -import ( - "github.com/libp2p/go-libp2p/core/peer" - - "github.com/iotaledger/hive.go/runtime/event" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/network/protocols/core" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" - iotago "github.com/iotaledger/iota.go/v4" -) - -func (p *Protocol) initNetworkProtocol() { - p.networkProtocol = core.NewProtocol(p.networkDispatcher, p.Workers.CreatePool("NetworkProtocol"), p) // Use max amount of workers for networking -} - -func (p *Protocol) runNetworkProtocol() { - p.Events.Network.LinkTo(p.networkProtocol.Events) - - wpBlocks := p.Workers.CreatePool("NetworkEvents.Blocks") // Use max amount of workers for sending, receiving and requesting blocks - - p.Events.Network.BlockRequestReceived.Hook(func(blockID iotago.BlockID, id peer.ID) { - if block, exists := p.MainEngineInstance().Block(blockID); exists { - p.networkProtocol.SendBlock(block, id) - } - }, event.WithWorkerPool(wpBlocks)) - - // Blocks are gossiped when they are scheduled or skipped. - p.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { - p.networkProtocol.SendBlock(block.ModelBlock()) - }, event.WithWorkerPool(wpBlocks)) - p.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { - p.networkProtocol.SendBlock(block.ModelBlock()) - }, event.WithWorkerPool(wpBlocks)) - - wpCommitments := p.Workers.CreatePool("NetworkEvents.SlotCommitments") - - p.Events.Network.SlotCommitmentRequestReceived.Hook(func(commitmentID iotago.CommitmentID, source peer.ID) { - // when we receive a commitment request, do not look it up in the ChainManager but in the storage, else we might answer with commitments we did not issue ourselves and for which we cannot provide attestations - if requestedCommitment, err := p.MainEngineInstance().Storage.Commitments().Load(commitmentID.Index()); err == nil && requestedCommitment.ID() == commitmentID { - p.networkProtocol.SendSlotCommitment(requestedCommitment, source) - } - }, event.WithWorkerPool(wpCommitments)) - - p.Events.Network.SlotCommitmentReceived.Hook(func(commitment *model.Commitment, source peer.ID) { - p.ChainManager.ProcessCommitmentFromSource(commitment, source) - }, event.WithWorkerPool(wpCommitments)) - - p.Events.ChainManager.RequestCommitment.Hook(func(commitmentID iotago.CommitmentID) { - p.networkProtocol.RequestSlotCommitment(commitmentID) - }, event.WithWorkerPool(wpCommitments)) - - wpAttestations := p.Workers.CreatePool("NetworkEvents.Attestations", 1) // Using just 1 worker to avoid contention - - p.Events.Network.AttestationsRequestReceived.Hook(p.processAttestationsRequest, event.WithWorkerPool(wpAttestations)) -} diff --git a/pkg/protocol_legacy/versioning.go b/pkg/protocol_legacy/versioning.go deleted file mode 100644 index eb2d355d2..000000000 --- a/pkg/protocol_legacy/versioning.go +++ /dev/null @@ -1,3 +0,0 @@ -package protocol - -const DatabaseVersion byte = 1 From 6cdacdd13b9a4a8091f19118aa14cf58fdf7139e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:19:32 +0200 Subject: [PATCH 100/356] Fix: fixed more issues --- components/restapi/management/pruning.go | 10 +++++----- pkg/protocol/chain.go | 6 +++++- pkg/protocol/engine/engine.go | 1 + pkg/protocol/engines.go | 2 +- pkg/protocol/network.go | 2 +- pkg/protocol/options.go | 6 ++++++ pkg/tests/accounts_test.go | 4 ++-- pkg/tests/protocol_engine_switching_test.go | 7 ------- pkg/tests/protocol_startup_test.go | 2 +- pkg/tests/upgrade_signaling_test.go | 9 +-------- pkg/testsuite/accounts.go | 4 ++-- pkg/testsuite/mock/node.go | 2 +- 12 files changed, 26 insertions(+), 29 deletions(-) diff --git a/components/restapi/management/pruning.go b/components/restapi/management/pruning.go index 2907feaad..15c9fa5f1 100644 --- a/components/restapi/management/pruning.go +++ b/components/restapi/management/pruning.go @@ -10,7 +10,7 @@ import ( ) func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { - if deps.Protocol.MainEngineInstance().Storage.IsPruning() { + if deps.Protocol.MainEngine().Storage.IsPruning() { return nil, ierrors.Wrapf(echo.ErrServiceUnavailable, "node is already pruning") } @@ -30,14 +30,14 @@ func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { var err error if request.Index != 0 { - err = deps.Protocol.MainEngineInstance().Storage.PruneByEpochIndex(request.Index) + err = deps.Protocol.MainEngine().Storage.PruneByEpochIndex(request.Index) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } } if request.Depth != 0 { - _, _, err := deps.Protocol.MainEngineInstance().Storage.PruneByDepth(request.Depth) + _, _, err := deps.Protocol.MainEngine().Storage.PruneByDepth(request.Depth) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } @@ -49,13 +49,13 @@ func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } - err = deps.Protocol.MainEngineInstance().Storage.PruneBySize(pruningTargetDatabaseSizeBytes) + err = deps.Protocol.MainEngine().Storage.PruneBySize(pruningTargetDatabaseSizeBytes) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } } - targetIndex, hasPruned := deps.Protocol.MainEngineInstance().Storage.LastPrunedEpoch() + targetIndex, hasPruned := deps.Protocol.MainEngine().Storage.LastPrunedEpoch() if hasPruned { targetIndex++ } diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index ff658afd7..337261852 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -188,7 +188,11 @@ func (c *Chain) EngineR() reactive.Variable[*engine.Engine] { // InSyncRange returns true if the given index is in the sync range of this chain. func (c *Chain) InSyncRange(index iotago.SlotIndex) bool { - return index > c.latestVerifiedCommitment.Get().Index() && index < c.syncThreshold.Get() + if latestVerifiedCommitment := c.latestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { + return index > c.latestVerifiedCommitment.Get().Index() && index < c.syncThreshold.Get() + } + + return false } // Evicted returns a reactive event that gets triggered when the chain is evicted. diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index 5d455298c..c68b60526 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -155,6 +155,7 @@ func New( e.TipSelection = tipSelectionProvider(e) e.Retainer = retainerProvider(e) e.UpgradeOrchestrator = upgradeOrchestratorProvider(e) + e.SyncManager = syncManagerProvider(e) }, (*Engine).setupBlockStorage, (*Engine).setupEvictionState, diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 202aaad14..b09b09f48 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -45,7 +45,7 @@ func newEngines(protocol *Protocol) *Engines { protocol.options.TipSelectionProvider, protocol.options.RetainerProvider, protocol.options.UpgradeOrchestratorProvider, - nil, + protocol.options.SyncManagerProvider, ), mainEngine: reactive.NewVariable[*engine.Engine](), candidateEngine: reactive.NewVariable[*engine.Engine](), diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index 450fa87af..5b697224c 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -21,7 +21,7 @@ type Network struct { func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { n := &Network{ - Protocol: core.NewProtocol(endpoint, protocol.Workers().CreatePool("NetworkProtocol"), protocol.MainEngine()), + Protocol: core.NewProtocol(endpoint, protocol.Workers().CreatePool("NetworkProtocol"), protocol), } protocol.HookInitialized(func() { diff --git a/pkg/protocol/options.go b/pkg/protocol/options.go index db0f5ab65..bb073a994 100644 --- a/pkg/protocol/options.go +++ b/pkg/protocol/options.go @@ -201,6 +201,12 @@ func WithUpgradeOrchestratorProvider(optsUpgradeOrchestratorProvider module.Prov } } +func WithSyncManagerProvider(optsSyncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager]) options.Option[Protocol] { + return func(p *Protocol) { + p.options.SyncManagerProvider = optsSyncManagerProvider + } +} + func WithEngineOptions(opts ...options.Option[engine.Engine]) options.Option[Protocol] { return func(p *Protocol) { p.options.EngineOptions = append(p.options.EngineOptions, opts...) diff --git a/pkg/tests/accounts_test.go b/pkg/tests/accounts_test.go index fa14538fe..8654ca619 100644 --- a/pkg/tests/accounts_test.go +++ b/pkg/tests/accounts_test.go @@ -264,7 +264,7 @@ func Test_TransitionAccount(t *testing.T) { tx4 := lo.PanicOnErr(ts.TransactionFramework.CreateTransactionWithOptions("TX4", delegationTransitionWallets, testsuite.WithContextInputs(iotago.TxEssenceContextInputs{ &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForDelegationTransition), @@ -274,7 +274,7 @@ func Test_TransitionAccount(t *testing.T) { slotIndexBlock4 := latestParent.ID().Index() - block4 := ts.IssueBlockAtSlotWithOptions("block4", slotIndexBlock4, node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node1, tx4, blockfactory.WithStrongParents(latestParent.ID())) + block4 := ts.IssueBlockAtSlotWithOptions("block4", slotIndexBlock4, node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment(), node1, tx4, blockfactory.WithStrongParents(latestParent.ID())) _ = ts.CommitUntilSlot(slotIndexBlock4, activeNodes, block4) diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 1e2e0f4f2..8c89c7e18 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -13,7 +13,6 @@ import ( "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/core/account" "github.com/iotaledger/iota-core/pkg/protocol" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" "github.com/iotaledger/iota-core/pkg/protocol/engine/syncmanager/trivialsyncmanager" @@ -71,12 +70,6 @@ func TestProtocol_EngineSwitching(t *testing.T) { nodeOptions := make(map[string][]options.Option[protocol.Protocol]) for _, node := range ts.Nodes() { nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), protocol.WithSybilProtectionProvider( sybilprotectionv1.NewProvider( sybilprotectionv1.WithSeatManagerProvider( diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index e5bfe3014..ccd5f0575 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -368,7 +368,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngineInstance().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.MainEngine().WriteSnapshot(snapshotPath)) nodeD := ts.AddNode("nodeE") nodeD.CopyIdentityFromNode(ts.Node("nodeC-restarted")) // we just want to be able to issue some stuff and don't care about the account for now. diff --git a/pkg/tests/upgrade_signaling_test.go b/pkg/tests/upgrade_signaling_test.go index 057510a5a..e64ad8348 100644 --- a/pkg/tests/upgrade_signaling_test.go +++ b/pkg/tests/upgrade_signaling_test.go @@ -15,7 +15,6 @@ import ( "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" @@ -37,12 +36,6 @@ func Test_Upgrade_Signaling(t *testing.T) { defer ts.Shutdown() nodeOptions := []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), protocol.WithEngineOptions( engine.WithBlockRequesterOptions( eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), @@ -160,7 +153,7 @@ func Test_Upgrade_Signaling(t *testing.T) { }, ts.Nodes()...) // check that rollback is correct - account, exists, err := ts.Node("nodeA").Protocol.MainEngineInstance().Ledger.Account(ts.Node("nodeA").AccountID, 7) + account, exists, err := ts.Node("nodeA").Protocol.MainEngine().Ledger.Account(ts.Node("nodeA").AccountID, 7) require.NoError(t, err) require.True(t, exists) require.Equal(t, model.VersionAndHash{Version: 4, Hash: hash2}, account.LatestSupportedProtocolVersionAndHash) diff --git a/pkg/testsuite/accounts.go b/pkg/testsuite/accounts.go index 91944c122..ec6260b89 100644 --- a/pkg/testsuite/accounts.go +++ b/pkg/testsuite/accounts.go @@ -13,12 +13,12 @@ import ( func (t *TestSuite) AssertAccountData(accountData *accounts.AccountData, nodes ...*mock.Node) { t.Eventually(func() error { for _, node := range nodes { - actualAccountData, exists, err := node.Protocol.MainEngine().Ledger.Account(accountData.ID, node.Protocol.MainEngine().SyncStatus().LatestCommitment.Index()) + actualAccountData, exists, err := node.Protocol.MainEngine().Ledger.Account(accountData.ID, node.Protocol.MainEngine().SyncManager.LatestCommitment().Index()) if err != nil { return ierrors.Wrap(err, "AssertAccountData: failed to load account data") } if !exists { - return ierrors.Errorf("AssertAccountData: %s: account %s does not exist with latest committed slot %d", node.Name, accountData.ID, node.Protocol.MainEngine().SyncStatus().LatestCommitment.Index()) + return ierrors.Errorf("AssertAccountData: %s: account %s does not exist with latest committed slot %d", node.Name, accountData.ID, node.Protocol.MainEngine().SyncManager.LatestCommitment().Index()) } if accountData.ID != actualAccountData.ID { diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index b05c3c16f..48d639aaa 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -157,7 +157,7 @@ func (n *Node) hookEvents() { func (n *Node) hookLogging(failOnBlockFiltered bool) { n.attachEngineLogs(failOnBlockFiltered, n.Protocol.MainEngine()) - n.attachEngineLogs(failOnBlockFiltered, n.Protocol.MainEngineInstance()) + n.attachEngineLogs(failOnBlockFiltered, n.Protocol.MainEngine()) n.Protocol.OnBlockReceived(func(block *model.Block, source peer.ID) { fmt.Printf("%s > Network.BlockReceived: from %s %s - %d\n", n.Name, source, block.ID(), block.ID().Index()) From 5612a77814598aba40c1a198a6a95c181b6a8359 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:22:50 +0200 Subject: [PATCH 101/356] Refactor: reverted changes --- components/dashboard/jsonresponse.go | 8 ++++---- components/inx/server_blocks.go | 2 +- components/protocol/component.go | 4 ++-- components/restapi/core/accounts.go | 2 +- components/restapi/core/blocks.go | 2 +- components/restapi/core/component.go | 4 ++-- components/validator/component.go | 2 +- components/validator/issuer.go | 4 ++-- pkg/blockfactory/blockissuer.go | 8 ++++---- pkg/protocol/protocol.go | 2 +- pkg/testsuite/mock/node.go | 2 +- pkg/testsuite/storage_settings.go | 4 ++-- 12 files changed, 22 insertions(+), 22 deletions(-) diff --git a/components/dashboard/jsonresponse.go b/components/dashboard/jsonresponse.go index 3b4ceba25..26eb49f97 100644 --- a/components/dashboard/jsonresponse.go +++ b/components/dashboard/jsonresponse.go @@ -39,7 +39,7 @@ type Output struct { // NewOutput returns an Output from the given ledgerstate.Output. func NewOutput(output iotago.Output) (result *Output) { - outputJSON, err := deps.Protocol.MainEngine().CurrentAPI().JSONEncode(output) + outputJSON, err := deps.Protocol.CurrentAPI().JSONEncode(output) if err != nil { return nil } @@ -130,7 +130,7 @@ type Transaction struct { // NewTransaction returns a Transaction from the given ledgerstate.Transaction. func NewTransaction(iotaTx *iotago.Transaction) *Transaction { - txID, err := iotaTx.ID(deps.Protocol.MainEngine().CurrentAPI()) + txID, err := iotaTx.ID(deps.Protocol.CurrentAPI()) if err != nil { return nil } @@ -157,7 +157,7 @@ func NewTransaction(iotaTx *iotago.Transaction) *Transaction { dataPayload := make([]byte, 0) if iotaTx.Essence.Payload != nil { - dataPayload, _ = deps.Protocol.MainEngine().CurrentAPI().Encode(iotaTx.Essence.Payload) + dataPayload, _ = deps.Protocol.CurrentAPI().Encode(iotaTx.Essence.Payload) } return &Transaction{ @@ -216,7 +216,7 @@ func NewUnlockBlock(unlockBlock iotago.Unlock) *UnlockBlock { case *iotago.SignatureUnlock: switch signature := unlock.Signature.(type) { case *iotago.Ed25519Signature: - sigJSON, err := deps.Protocol.MainEngine().CurrentAPI().JSONEncode(signature) + sigJSON, err := deps.Protocol.CurrentAPI().JSONEncode(signature) if err != nil { return nil } diff --git a/components/inx/server_blocks.go b/components/inx/server_blocks.go index aa25d6158..13536277e 100644 --- a/components/inx/server_blocks.go +++ b/components/inx/server_blocks.go @@ -139,7 +139,7 @@ func (s *Server) SubmitBlock(ctx context.Context, rawBlock *inx.RawBlock) (*inx. } func (s *Server) SubmitPayload(ctx context.Context, rawPayload *inx.RawPayload) (*inx.BlockId, error) { - payload, err := rawPayload.Unwrap(deps.Protocol.MainEngine().CurrentAPI(), serix.WithValidation()) + payload, err := rawPayload.Unwrap(deps.Protocol.CurrentAPI(), serix.WithValidation()) if err != nil { return nil, err } diff --git a/components/protocol/component.go b/components/protocol/component.go index f9fce456f..41aa3a81f 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -207,11 +207,11 @@ func configure() error { }) deps.Protocol.MainEngineEvents.Clock.AcceptedTimeUpdated.Hook(func(time time.Time) { - Component.LogDebugf("AcceptedTimeUpdated: Slot %d @ %s", deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(time), time) + Component.LogDebugf("AcceptedTimeUpdated: Slot %d @ %s", deps.Protocol.CurrentAPI().TimeProvider().SlotFromTime(time), time) }) deps.Protocol.MainEngineEvents.Clock.ConfirmedTimeUpdated.Hook(func(time time.Time) { - Component.LogDebugf("ConfirmedTimeUpdated: Slot %d @ %s", deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(time), time) + Component.LogDebugf("ConfirmedTimeUpdated: Slot %d @ %s", deps.Protocol.CurrentAPI().TimeProvider().SlotFromTime(time), time) }) deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { diff --git a/components/restapi/core/accounts.go b/components/restapi/core/accounts.go index 3f589cc90..4ca5a33c1 100644 --- a/components/restapi/core/accounts.go +++ b/components/restapi/core/accounts.go @@ -194,7 +194,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { } func selectedCommittee(c echo.Context) *apimodels.CommitteeResponse { - timeProvider := deps.Protocol.MainEngine().CurrentAPI().TimeProvider() + timeProvider := deps.Protocol.CurrentAPI().TimeProvider() var slotIndex iotago.SlotIndex diff --git a/components/restapi/core/blocks.go b/components/restapi/core/blocks.go index 4bf045b80..71b44bad2 100644 --- a/components/restapi/core/blocks.go +++ b/components/restapi/core/blocks.go @@ -86,7 +86,7 @@ func sendBlock(c echo.Context) (*apimodels.BlockCreatedResponse, error) { switch mimeType { case echo.MIMEApplicationJSON: // Do not validate here, the parents might need to be set - if err := deps.Protocol.MainEngine().CurrentAPI().JSONDecode(bytes, iotaBlock); err != nil { + if err := deps.Protocol.CurrentAPI().JSONDecode(bytes, iotaBlock); err != nil { return nil, ierrors.Wrapf(httpserver.ErrInvalidParameter, "invalid block, error: %w", err) } diff --git a/components/restapi/core/component.go b/components/restapi/core/component.go index 315d22513..3863a72d3 100644 --- a/components/restapi/core/component.go +++ b/components/restapi/core/component.go @@ -382,7 +382,7 @@ func responseByHeader(c echo.Context, obj any) error { switch mimeType { case httpserver.MIMEApplicationVendorIOTASerializerV2: // TODO: that should take the API that belongs to the object - b, err := deps.Protocol.MainEngine().CurrentAPI().Encode(obj) + b, err := deps.Protocol.CurrentAPI().Encode(obj) if err != nil { return err } @@ -392,7 +392,7 @@ func responseByHeader(c echo.Context, obj any) error { // default to echo.MIMEApplicationJSON default: // TODO: that should take the API that belongs to the object - j, err := deps.Protocol.MainEngine().CurrentAPI().JSONEncode(obj) + j, err := deps.Protocol.CurrentAPI().JSONEncode(obj) if err != nil { return err } diff --git a/components/validator/component.go b/components/validator/component.go index 0c8ac3f44..5c2550cd4 100644 --- a/components/validator/component.go +++ b/components/validator/component.go @@ -76,7 +76,7 @@ func checkValidatorStatus(ctx context.Context) { return } - if !exists || account.StakeEndEpoch <= deps.Protocol.MainEngine().CurrentAPI().TimeProvider().EpochFromSlot(deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(time.Now())) { + if !exists || account.StakeEndEpoch <= deps.Protocol.CurrentAPI().TimeProvider().EpochFromSlot(deps.Protocol.CurrentAPI().TimeProvider().SlotFromTime(time.Now())) { if prevValue := isValidator.Swap(false); prevValue { // If the account stops being a validator, don't issue any blocks. Component.LogInfof("BlockIssuer account %s stopped being a validator", validatorAccount.ID()) diff --git a/components/validator/issuer.go b/components/validator/issuer.go index 6b4528a24..df21f2ee6 100644 --- a/components/validator/issuer.go +++ b/components/validator/issuer.go @@ -28,7 +28,7 @@ func issueValidatorBlock(ctx context.Context) { return } - protocolParametersHash, err := deps.Protocol.MainEngine().CurrentAPI().ProtocolParameters().Hash() + protocolParametersHash, err := deps.Protocol.CurrentAPI().ProtocolParameters().Hash() if err != nil { Component.LogWarnf("failed to get protocol parameters hash: %s", err.Error()) @@ -50,7 +50,7 @@ func issueValidatorBlock(ctx context.Context) { return } - if !engineInstance.SybilProtection.SeatManager().Committee(deps.Protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(blockIssuingTime)).HasAccount(validatorAccount.ID()) { + if !engineInstance.SybilProtection.SeatManager().Committee(deps.Protocol.CurrentAPI().TimeProvider().SlotFromTime(blockIssuingTime)).HasAccount(validatorAccount.ID()) { // update nextBroadcast value here, so that this updated value is used in the `defer` // callback to schedule issuing of the next block at a different interval than for committee members nextBroadcast = blockIssuingTime.Add(ParamsValidator.CandidateBroadcastInterval) diff --git a/pkg/blockfactory/blockissuer.go b/pkg/blockfactory/blockissuer.go index 72f69f94e..379728a86 100644 --- a/pkg/blockfactory/blockissuer.go +++ b/pkg/blockfactory/blockissuer.go @@ -87,7 +87,7 @@ func (i *BlockIssuer) CreateValidationBlock(ctx context.Context, issuerAccount A } if blockParams.ProtocolParametersHash == nil { - protocolParametersHash, err := i.protocol.MainEngine().CurrentAPI().ProtocolParameters().Hash() + protocolParametersHash, err := i.protocol.CurrentAPI().ProtocolParameters().Hash() if err != nil { return nil, ierrors.Wrap(err, "error getting protocol parameters hash") } @@ -145,7 +145,7 @@ func (i *BlockIssuer) retrieveAPI(blockParams *BlockHeaderParams) (iotago.API, e return i.protocol.MainEngine().APIForVersion(*blockParams.ProtocolVersion) } - return i.protocol.MainEngine().CurrentAPI(), nil + return i.protocol.CurrentAPI(), nil } // CreateBlock creates a new block with the options. @@ -393,7 +393,7 @@ func (i *BlockIssuer) setDefaultBlockParams(blockParams *BlockHeaderParams, issu if blockParams.SlotCommitment == nil { var err error - blockParams.SlotCommitment, err = i.getCommitment(i.protocol.MainEngine().CurrentAPI().TimeProvider().SlotFromTime(*blockParams.IssuingTime)) + blockParams.SlotCommitment, err = i.getCommitment(i.protocol.CurrentAPI().TimeProvider().SlotFromTime(*blockParams.IssuingTime)) if err != nil { return ierrors.Wrap(err, "error getting commitment") } @@ -418,7 +418,7 @@ func (i *BlockIssuer) setDefaultBlockParams(blockParams *BlockHeaderParams, issu } func (i *BlockIssuer) getCommitment(blockSlot iotago.SlotIndex) (*iotago.Commitment, error) { - protoParams := i.protocol.MainEngine().CurrentAPI().ProtocolParameters() + protoParams := i.protocol.CurrentAPI().ProtocolParameters() commitment := i.protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment() if blockSlot > commitment.Index+protoParams.MaxCommittableAge() { diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index d5b245d1e..2d6936db3 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -68,7 +68,7 @@ func (p *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { } func (p *Protocol) CurrentAPI() iotago.API { - return p.MainEngine().CurrentAPI() + return p.CurrentAPI() } func (p *Protocol) LatestAPI() iotago.API { diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 48d639aaa..9e0274d0d 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -460,7 +460,7 @@ func (n *Node) CopyIdentityFromNode(otherNode *Node) { func (n *Node) ProtocolParametersHash() iotago.Identifier { if n.protocolParametersHash == iotago.EmptyIdentifier { - return lo.PanicOnErr(n.Protocol.MainEngine().CurrentAPI().ProtocolParameters().Hash()) + return lo.PanicOnErr(n.Protocol.CurrentAPI().ProtocolParameters().Hash()) } return n.protocolParametersHash diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index f0e9c780a..32822ce79 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -25,8 +25,8 @@ func (t *TestSuite) AssertProtocolParameters(parameters iotago.ProtocolParameter for _, node := range nodes { t.Eventually(func() error { - if !parameters.Equals(node.Protocol.MainEngine().CurrentAPI().ProtocolParameters()) { - return ierrors.Errorf("AssertProtocolParameters: %s: expected %s, got %s", node.Name, parameters, node.Protocol.MainEngine().CurrentAPI().ProtocolParameters()) + if !parameters.Equals(node.Protocol.CurrentAPI().ProtocolParameters()) { + return ierrors.Errorf("AssertProtocolParameters: %s: expected %s, got %s", node.Name, parameters, node.Protocol.CurrentAPI().ProtocolParameters()) } return nil From eb0a011aa124ff01f70ff5a15d014d7620e1b3f3 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:24:15 +0200 Subject: [PATCH 102/356] Refactor: reverted more changes --- components/dashboard/jsonresponse.go | 2 +- components/dashboard/visualizer.go | 2 +- components/restapi/core/accounts.go | 6 +++--- pkg/protocol/protocol.go | 2 +- pkg/testsuite/mock/node.go | 2 +- 5 files changed, 7 insertions(+), 7 deletions(-) diff --git a/components/dashboard/jsonresponse.go b/components/dashboard/jsonresponse.go index 26eb49f97..08b0a1833 100644 --- a/components/dashboard/jsonresponse.go +++ b/components/dashboard/jsonresponse.go @@ -52,7 +52,7 @@ func NewOutput(output iotago.Output) (result *Output) { // NewOutput returns an Output from the given ledgerstate.Output. func NewOutputFromLedgerstateOutput(output *utxoledger.Output) (result *Output) { - outputJSON, err := deps.Protocol.MainEngine().APIForSlot(output.SlotCreated()).JSONEncode(output) + outputJSON, err := deps.Protocol.APIForSlot(output.SlotCreated()).JSONEncode(output) if err != nil { return nil } diff --git a/components/dashboard/visualizer.go b/components/dashboard/visualizer.go index e7db90506..2a91d7f93 100644 --- a/components/dashboard/visualizer.go +++ b/components/dashboard/visualizer.go @@ -42,7 +42,7 @@ type tipinfo struct { // } func sendVertex(blk *blocks.Block, confirmed bool) { - modelBlk, _ := model.BlockFromBlock(blk.ProtocolBlock(), deps.Protocol.MainEngine().APIForSlot(blk.ID().Index())) + modelBlk, _ := model.BlockFromBlock(blk.ProtocolBlock(), deps.Protocol.APIForSlot(blk.ID().Index())) tx, isTx := modelBlk.Transaction() broadcastWsBlock(&wsblk{MsgTypeVertex, &vertex{ diff --git a/components/restapi/core/accounts.go b/components/restapi/core/accounts.go index 4ca5a33c1..84c9cd44d 100644 --- a/components/restapi/core/accounts.go +++ b/components/restapi/core/accounts.go @@ -38,7 +38,7 @@ func congestionForAccountID(c echo.Context) (*apimodels.CongestionResponse, erro if !exists { return nil, ierrors.Errorf("account not found: %s", accountID.ToHex()) } - rmcSlot, err := safemath.SafeSub(slotIndex, deps.Protocol.MainEngine().APIForSlot(slotIndex).ProtocolParameters().MaxCommittableAge()) + rmcSlot, err := safemath.SafeSub(slotIndex, deps.Protocol.APIForSlot(slotIndex).ProtocolParameters().MaxCommittableAge()) if err != nil { rmcSlot = 0 } @@ -83,7 +83,7 @@ func validators(c echo.Context) (*apimodels.ValidatorsResponse, error) { return nil, ierrors.Errorf("request is too old, request started at %d, latest committed slot index is %d", requestedSlotIndex, latestCommittedSlot) } - nextEpoch := deps.Protocol.MainEngine().APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 + nextEpoch := deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 slotRange := uint32(requestedSlotIndex / RequestsMemoryCacheGranularity) registeredValidators, exists := deps.Protocol.MainEngine().Retainer.RegisteredValidatorsCache(slotRange) @@ -124,7 +124,7 @@ func validatorByAccountID(c echo.Context) (*apimodels.ValidatorResponse, error) if !exists { return nil, ierrors.Errorf("account not found: %s for latest committedSlot %d", accountID.ToHex(), latestCommittedSlot) } - nextEpoch := deps.Protocol.MainEngine().APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 + nextEpoch := deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 active := deps.Protocol.MainEngine().SybilProtection.IsCandidateActive(accountID, nextEpoch) return &apimodels.ValidatorResponse{ diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 2d6936db3..1d2d98b54 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -60,7 +60,7 @@ func (p *Protocol) APIForVersion(version iotago.Version) (api iotago.API, err er // APIForSlot returns the API for the given slot. func (p *Protocol) APIForSlot(slot iotago.SlotIndex) iotago.API { - return p.MainEngine().APIForSlot(slot) + return p.APIForSlot(slot) } func (p *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 9e0274d0d..0074cdd8b 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -521,7 +521,7 @@ func (n *Node) IssueValidationBlock(ctx context.Context, alias string, opts ...o } func (n *Node) IssueActivity(ctx context.Context, wg *sync.WaitGroup, startSlot iotago.SlotIndex) { - issuingTime := n.Protocol.MainEngine().APIForSlot(startSlot).TimeProvider().SlotStartTime(startSlot) + issuingTime := n.Protocol.APIForSlot(startSlot).TimeProvider().SlotStartTime(startSlot) start := time.Now() wg.Add(1) From 03ca94222cd9696ddfe4c93fdde2df2c1ab6dcff Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:26:25 +0200 Subject: [PATCH 103/356] Refactor: reverted more changes --- components/dashboard/explorer_routes.go | 4 ++-- components/dashboard/visualizer.go | 4 ++-- components/inx/server_blocks.go | 2 +- components/restapi/core/blocks.go | 2 +- pkg/blockfactory/blockissuer.go | 4 ++-- pkg/protocol/protocol.go | 2 +- pkg/testsuite/mock/node.go | 2 +- 7 files changed, 10 insertions(+), 10 deletions(-) diff --git a/components/dashboard/explorer_routes.go b/components/dashboard/explorer_routes.go index 5a405055b..f7416bd01 100644 --- a/components/dashboard/explorer_routes.go +++ b/components/dashboard/explorer_routes.go @@ -105,7 +105,7 @@ func createExplorerBlock(block *model.Block, cachedBlock *blocks.Block, metadata var payloadJSON []byte basicBlock, isBasic := block.BasicBlock() if isBasic { - payloadJSON, err = lo.PanicOnErr(deps.Protocol.MainEngine().APIForVersion(iotaBlk.ProtocolVersion)).JSONEncode(basicBlock.Payload) + payloadJSON, err = lo.PanicOnErr(deps.Protocol.APIForVersion(iotaBlk.ProtocolVersion)).JSONEncode(basicBlock.Payload) if err != nil { return nil } @@ -145,7 +145,7 @@ func createExplorerBlock(block *model.Block, cachedBlock *blocks.Block, metadata TransactionID: func() string { if isBasic && basicBlock.Payload != nil && basicBlock.Payload.PayloadType() == iotago.PayloadTransaction { tx, _ := basicBlock.Payload.(*iotago.Transaction) - id, _ := tx.ID(lo.PanicOnErr(deps.Protocol.MainEngine().APIForVersion(iotaBlk.ProtocolVersion))) + id, _ := tx.ID(lo.PanicOnErr(deps.Protocol.APIForVersion(iotaBlk.ProtocolVersion))) return id.ToHex() } diff --git a/components/dashboard/visualizer.go b/components/dashboard/visualizer.go index 2a91d7f93..c42e7226b 100644 --- a/components/dashboard/visualizer.go +++ b/components/dashboard/visualizer.go @@ -54,7 +54,7 @@ func sendVertex(blk *blocks.Block, confirmed bool) { IsTx: isTx, IsTxAccepted: func() bool { if isTx { - api := lo.PanicOnErr(deps.Protocol.MainEngine().APIForVersion(blk.ProtocolBlock().ProtocolVersion)) + api := lo.PanicOnErr(deps.Protocol.APIForVersion(blk.ProtocolBlock().ProtocolVersion)) txMetadata, exists := deps.Protocol.MainEngine().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(tx.ID(api))) if exists { return txMetadata.IsAccepted() @@ -88,7 +88,7 @@ func runVisualizer(component *app.Component) { tx, hasTx := block.Transaction() if hasTx { - api := lo.PanicOnErr(deps.Protocol.MainEngine().APIForVersion(block.ProtocolBlock().ProtocolVersion)) + api := lo.PanicOnErr(deps.Protocol.APIForVersion(block.ProtocolBlock().ProtocolVersion)) txMetadata, exists := deps.Protocol.MainEngine().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(tx.ID(api))) if exists { txMetadata.OnAccepted(func() { diff --git a/components/inx/server_blocks.go b/components/inx/server_blocks.go index 13536277e..c0f5d2b38 100644 --- a/components/inx/server_blocks.go +++ b/components/inx/server_blocks.go @@ -125,7 +125,7 @@ func (s *Server) SubmitBlock(ctx context.Context, rawBlock *inx.RawBlock) (*inx. return nil, status.Errorf(codes.InvalidArgument, "failed to parse block version: %s", err.Error()) } - apiForVersion, err := deps.Protocol.MainEngine().APIForVersion(version) + apiForVersion, err := deps.Protocol.APIForVersion(version) if err != nil { return nil, status.Errorf(codes.InvalidArgument, "invalid block version: %s", err.Error()) } diff --git a/components/restapi/core/blocks.go b/components/restapi/core/blocks.go index 71b44bad2..424859156 100644 --- a/components/restapi/core/blocks.go +++ b/components/restapi/core/blocks.go @@ -96,7 +96,7 @@ func sendBlock(c echo.Context) (*apimodels.BlockCreatedResponse, error) { return nil, ierrors.Wrapf(httpserver.ErrInvalidParameter, "invalid block, error: %w", err) } - apiForVersion, err := deps.Protocol.MainEngine().APIForVersion(version) + apiForVersion, err := deps.Protocol.APIForVersion(version) if err != nil { return nil, ierrors.Wrapf(httpserver.ErrInvalidParameter, "invalid block, error: %w", err) } diff --git a/pkg/blockfactory/blockissuer.go b/pkg/blockfactory/blockissuer.go index 379728a86..21f481fae 100644 --- a/pkg/blockfactory/blockissuer.go +++ b/pkg/blockfactory/blockissuer.go @@ -142,7 +142,7 @@ func (i *BlockIssuer) CreateValidationBlock(ctx context.Context, issuerAccount A func (i *BlockIssuer) retrieveAPI(blockParams *BlockHeaderParams) (iotago.API, error) { if blockParams.ProtocolVersion != nil { - return i.protocol.MainEngine().APIForVersion(*blockParams.ProtocolVersion) + return i.protocol.APIForVersion(*blockParams.ProtocolVersion) } return i.protocol.CurrentAPI(), nil @@ -271,7 +271,7 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco // if anything changes, need to make a new signature var resign bool - apiForVesion, err := i.protocol.MainEngine().APIForVersion(iotaBlock.ProtocolVersion) + apiForVesion, err := i.protocol.APIForVersion(iotaBlock.ProtocolVersion) if err != nil { return iotago.EmptyBlockID(), ierrors.Wrapf(ErrBlockAttacherInvalidBlock, "protocolVersion invalid: %d", iotaBlock.ProtocolVersion) } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 1d2d98b54..548dcae1f 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -55,7 +55,7 @@ func (p *Protocol) Workers() *workerpool.Group { // APIForVersion returns the API for the given version. func (p *Protocol) APIForVersion(version iotago.Version) (api iotago.API, err error) { - return p.MainEngine().APIForVersion(version) + return p.APIForVersion(version) } // APIForSlot returns the API for the given slot. diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 0074cdd8b..1284f6798 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -177,7 +177,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { n.Protocol.OnAttestationsReceived(func(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { fmt.Printf("%s > Network.AttestationsReceived: from %s %s number of attestations: %d with merkleProof: %s - %s\n", n.Name, source, commitment.ID(), len(attestations), lo.PanicOnErr(json.Marshal(merkleProof)), lo.Map(attestations, func(a *iotago.Attestation) iotago.BlockID { - return lo.PanicOnErr(a.BlockID(lo.PanicOnErr(n.Protocol.MainEngine().APIForVersion(a.ProtocolVersion)))) + return lo.PanicOnErr(a.BlockID(lo.PanicOnErr(n.Protocol.APIForVersion(a.ProtocolVersion)))) })) }) From 5bb00f300fdeb16aeb74846558e1183fc8b8d64c Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:28:59 +0200 Subject: [PATCH 104/356] Refactor: reverted more name changes --- components/dashboard/component.go | 6 ++--- components/dashboard/explorer_routes.go | 20 +++++++------- components/dashboard/tip.go | 2 +- components/dashboard/visualizer.go | 4 +-- components/dashboard/ws.go | 2 +- components/dashboard_metrics/node.go | 6 ++--- components/debugapi/blocks.go | 2 +- components/debugapi/component.go | 2 +- components/debugapi/node.go | 4 +-- components/debugapi/transactions.go | 2 +- components/inx/server_blocks.go | 4 +-- components/inx/server_commitments.go | 2 +- components/inx/server_node.go | 4 +-- components/inx/server_utxo.go | 10 +++---- components/metrics/metrics_accounts.go | 4 +-- components/metrics/metrics_conflicts.go | 4 +-- components/metrics/metrics_db.go | 4 +-- components/metrics/metrics_info.go | 2 +- components/metrics/metrics_scheduler.go | 28 +++++++++---------- components/metrics/metrics_slots.go | 14 +++++----- components/metrics/metrics_tangle.go | 4 +-- components/metricstracker/component.go | 2 +- components/restapi/core/accounts.go | 30 ++++++++++----------- components/restapi/core/blocks.go | 10 +++---- components/restapi/core/commitment.go | 4 +-- components/restapi/core/component.go | 2 +- components/restapi/core/node.go | 6 ++--- components/restapi/core/transaction.go | 4 +-- components/restapi/core/utxo.go | 14 +++++----- components/restapi/management/pruning.go | 10 +++---- components/restapi/routes.go | 2 +- components/validator/component.go | 2 +- components/validator/issuer.go | 4 +-- pkg/blockfactory/blockissuer.go | 22 +++++++-------- pkg/protocol/chains.go | 4 +-- pkg/protocol/engines.go | 2 +- pkg/protocol/gossip.go | 8 +++--- pkg/protocol/protocol.go | 4 +-- pkg/tests/accounts_test.go | 16 +++++------ pkg/tests/confirmation_state_test.go | 22 +++++++-------- pkg/tests/protocol_engine_switching_test.go | 20 +++++++------- pkg/tests/protocol_startup_test.go | 10 +++---- pkg/tests/upgrade_signaling_test.go | 4 +-- pkg/testsuite/accounts.go | 6 ++--- pkg/testsuite/attestations.go | 2 +- pkg/testsuite/blocks.go | 8 +++--- pkg/testsuite/chainmanager.go | 2 +- pkg/testsuite/conflicts.go | 2 +- pkg/testsuite/eviction.go | 6 ++--- pkg/testsuite/mock/node.go | 8 +++--- pkg/testsuite/storage_accountdiffs.go | 2 +- pkg/testsuite/storage_blocks.go | 4 +-- pkg/testsuite/storage_commitments.go | 4 +-- pkg/testsuite/storage_prunable.go | 2 +- pkg/testsuite/storage_rootblocks.go | 2 +- pkg/testsuite/storage_settings.go | 24 ++++++++--------- pkg/testsuite/sybilprotection.go | 4 +-- pkg/testsuite/testsuite_issue_blocks.go | 6 ++--- pkg/testsuite/tips.go | 2 +- pkg/testsuite/transactions.go | 8 +++--- pkg/testsuite/transactions_framework.go | 4 +-- pkg/testsuite/upgrades.go | 6 ++--- 62 files changed, 217 insertions(+), 217 deletions(-) diff --git a/components/dashboard/component.go b/components/dashboard/component.go index f7a75e848..31471b762 100644 --- a/components/dashboard/component.go +++ b/components/dashboard/component.go @@ -150,12 +150,12 @@ func currentNodeStatus() *nodestatus { LastPauseGC: m.PauseNs[(m.NumGC+255)%256], } // get TangleTime - cl := deps.Protocol.MainEngine().Clock - syncStatus := deps.Protocol.MainEngine().SyncManager.SyncStatus() + cl := deps.Protocol.MainEngineInstance().Clock + syncStatus := deps.Protocol.MainEngineInstance().SyncManager.SyncStatus() status.TangleTime = tangleTime{ Synced: syncStatus.NodeSynced, - Bootstrapped: deps.Protocol.MainEngine().SyncManager.IsBootstrapped(), + Bootstrapped: deps.Protocol.MainEngineInstance().SyncManager.IsBootstrapped(), AcceptedBlockSlot: int64(syncStatus.LastAcceptedBlockSlot), ConfirmedBlockSlot: int64(syncStatus.LastConfirmedBlockSlot), CommittedSlot: int64(syncStatus.LatestCommitment.Index()), diff --git a/components/dashboard/explorer_routes.go b/components/dashboard/explorer_routes.go index f7416bd01..890c90d5a 100644 --- a/components/dashboard/explorer_routes.go +++ b/components/dashboard/explorer_routes.go @@ -79,14 +79,14 @@ func setupExplorerRoutes(routeGroup *echo.Group) { } func findBlock(blockID iotago.BlockID) (explorerBlk *ExplorerBlock, err error) { - block, exists := deps.Protocol.MainEngine().Block(blockID) + block, exists := deps.Protocol.MainEngineInstance().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.ToHex()) } - cachedBlock, _ := deps.Protocol.MainEngine().BlockCache.Block(blockID) + cachedBlock, _ := deps.Protocol.MainEngineInstance().BlockCache.Block(blockID) - blockMetadata, err := deps.Protocol.MainEngine().Retainer.BlockMetadata(blockID) + blockMetadata, err := deps.Protocol.MainEngineInstance().Retainer.BlockMetadata(blockID) if err != nil { return nil, ierrors.Wrapf(err, "block metadata %s", blockID.ToHex()) } @@ -201,12 +201,12 @@ func getTransaction(c echo.Context) error { outputID := iotago.OutputID{} copy(outputID[:], txID[:]) - output, err := deps.Protocol.MainEngine().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) if err != nil { return err } - block, exists := deps.Protocol.MainEngine().Block(output.BlockID()) + block, exists := deps.Protocol.MainEngineInstance().Block(output.BlockID()) if !exists { return ierrors.Errorf("block not found: %s", output.BlockID().ToHex()) } @@ -228,12 +228,12 @@ func getTransactionMetadata(c echo.Context) error { // Get the first output of that transaction (using index 0) outputID := iotago.OutputID{} copy(outputID[:], txID[:]) - txMetadata, exists := deps.Protocol.MainEngine().Ledger.MemPool().TransactionMetadata(txID) + txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(txID) if !exists { return ierrors.Errorf("tx metadata not found: %s", txID.ToHex()) } - conflicts, _ := deps.Protocol.MainEngine().Ledger.ConflictDAG().ConflictingConflicts(txID) + conflicts, _ := deps.Protocol.MainEngineInstance().Ledger.ConflictDAG().ConflictingConflicts(txID) return httpserver.JSONResponse(c, http.StatusOK, NewTransactionMetadata(txMetadata, conflicts)) } @@ -244,7 +244,7 @@ func getOutput(c echo.Context) error { return err } - output, err := deps.Protocol.MainEngine().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) if err != nil { return err } @@ -258,12 +258,12 @@ func getSlotDetailsByID(c echo.Context) error { return err } - commitment, err := deps.Protocol.MainEngine().Storage.Commitments().Load(commitmentID.Index()) + commitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(commitmentID.Index()) if err != nil { return err } - diffs, err := deps.Protocol.MainEngine().Ledger.SlotDiffs(commitmentID.Index()) + diffs, err := deps.Protocol.MainEngineInstance().Ledger.SlotDiffs(commitmentID.Index()) if err != nil { return err } diff --git a/components/dashboard/tip.go b/components/dashboard/tip.go index 6a6b7d0fb..0b75d9663 100644 --- a/components/dashboard/tip.go +++ b/components/dashboard/tip.go @@ -17,7 +17,7 @@ func setupTipsRoutes(routeGroup *echo.Group) { } func tips() *TipsResponse { - allTips := append(deps.Protocol.MainEngine().TipManager.StrongTips(), deps.Protocol.MainEngine().TipManager.WeakTips()...) + allTips := append(deps.Protocol.MainEngineInstance().TipManager.StrongTips(), deps.Protocol.MainEngineInstance().TipManager.WeakTips()...) t := make([]string, len(allTips)) for i, tip := range allTips { diff --git a/components/dashboard/visualizer.go b/components/dashboard/visualizer.go index c42e7226b..3bfe0bf92 100644 --- a/components/dashboard/visualizer.go +++ b/components/dashboard/visualizer.go @@ -55,7 +55,7 @@ func sendVertex(blk *blocks.Block, confirmed bool) { IsTxAccepted: func() bool { if isTx { api := lo.PanicOnErr(deps.Protocol.APIForVersion(blk.ProtocolBlock().ProtocolVersion)) - txMetadata, exists := deps.Protocol.MainEngine().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(tx.ID(api))) + txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(tx.ID(api))) if exists { return txMetadata.IsAccepted() } @@ -89,7 +89,7 @@ func runVisualizer(component *app.Component) { tx, hasTx := block.Transaction() if hasTx { api := lo.PanicOnErr(deps.Protocol.APIForVersion(block.ProtocolBlock().ProtocolVersion)) - txMetadata, exists := deps.Protocol.MainEngine().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(tx.ID(api))) + txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(tx.ID(api))) if exists { txMetadata.OnAccepted(func() { sendTxAccepted(block.ID(), true) diff --git a/components/dashboard/ws.go b/components/dashboard/ws.go index 582c87a78..251da18e6 100644 --- a/components/dashboard/ws.go +++ b/components/dashboard/ws.go @@ -50,7 +50,7 @@ func runWebSocketStreams(component *app.Component) { broadcastWsBlock(&wsblk{MsgTypeNodeStatus, currentNodeStatus()}) broadcastWsBlock(&wsblk{MsgTypeNeighborMetric, neighborMetrics()}) broadcastWsBlock(&wsblk{MsgTypeTipsMetric, &tipsInfo{ - TotalTips: len(deps.Protocol.MainEngine().TipManager.StrongTips()) + len(deps.Protocol.MainEngine().TipManager.WeakTips()), + TotalTips: len(deps.Protocol.MainEngineInstance().TipManager.StrongTips()) + len(deps.Protocol.MainEngineInstance().TipManager.WeakTips()), }}) case *componentsmetric: broadcastWsBlock(&wsblk{MsgTypeComponentCounterMetric, x}) diff --git a/components/dashboard_metrics/node.go b/components/dashboard_metrics/node.go index 3d58b2ef8..2e347ab0d 100644 --- a/components/dashboard_metrics/node.go +++ b/components/dashboard_metrics/node.go @@ -27,9 +27,9 @@ func nodeInfoExtended() *NodeInfoExtended { func databaseSizesMetrics() (*DatabaseSizesMetric, error) { return &DatabaseSizesMetric{ - Prunable: deps.Protocol.MainEngine().Storage.PrunableDatabaseSize(), - Permanent: deps.Protocol.MainEngine().Storage.PermanentDatabaseSize(), - Total: deps.Protocol.MainEngine().Storage.Size(), + Prunable: deps.Protocol.MainEngineInstance().Storage.PrunableDatabaseSize(), + Permanent: deps.Protocol.MainEngineInstance().Storage.PermanentDatabaseSize(), + Total: deps.Protocol.MainEngineInstance().Storage.Size(), Time: time.Now().Unix(), }, nil } diff --git a/components/debugapi/blocks.go b/components/debugapi/blocks.go index 66fe3e453..165ef6c22 100644 --- a/components/debugapi/blocks.go +++ b/components/debugapi/blocks.go @@ -10,7 +10,7 @@ import ( ) func getSlotBlockIDs(index iotago.SlotIndex) (*BlockChangesResponse, error) { - blocksForSlot, err := deps.Protocol.MainEngine().Storage.Blocks(index) + blocksForSlot, err := deps.Protocol.MainEngineInstance().Storage.Blocks(index) if err != nil { return nil, ierrors.Wrapf(err, "failed to get block storage bucket for slot %d", index) } diff --git a/components/debugapi/component.go b/components/debugapi/component.go index cf068e9cf..6f085ce9a 100644 --- a/components/debugapi/component.go +++ b/components/debugapi/component.go @@ -153,7 +153,7 @@ func configure() error { return err } - if block, exists := deps.Protocol.MainEngine().BlockCache.Block(blockID); exists && block.ProtocolBlock() != nil { + if block, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(blockID); exists && block.ProtocolBlock() != nil { response := BlockMetadataResponseFromBlock(block) return httpserver.JSONResponse(c, http.StatusOK, response) diff --git a/components/debugapi/node.go b/components/debugapi/node.go index 0e6d513df..49afe6433 100644 --- a/components/debugapi/node.go +++ b/components/debugapi/node.go @@ -8,8 +8,8 @@ import ( //nolint:unparam // we have no error case right now func validatorsSummary() (*ValidatorsSummaryResponse, error) { - seatManager := deps.Protocol.MainEngine().SybilProtection.SeatManager() - latestSlotIndex := deps.Protocol.MainEngine().Storage.Settings().LatestCommitment().Index() + seatManager := deps.Protocol.MainEngineInstance().SybilProtection.SeatManager() + latestSlotIndex := deps.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index() latestCommittee := seatManager.Committee(latestSlotIndex) validatorSeats := []*Validator{} latestCommittee.Accounts().ForEach(func(id iotago.AccountID, pool *account.Pool) bool { diff --git a/components/debugapi/transactions.go b/components/debugapi/transactions.go index 90aa23e14..d72ce7806 100644 --- a/components/debugapi/transactions.go +++ b/components/debugapi/transactions.go @@ -17,7 +17,7 @@ func init() { func storeTransactionsPerSlot(scd *notarization.SlotCommittedDetails) error { slot := scd.Commitment.Index() - stateDiff := deps.Protocol.MainEngine().Ledger.MemPool().StateDiff(slot) + stateDiff := deps.Protocol.MainEngineInstance().Ledger.MemPool().StateDiff(slot) mutationsTree := ads.NewSet(mapdb.NewMapDB(), iotago.Identifier.Bytes, iotago.IdentifierFromBytes) tcs := &TransactionsChangesResponse{ Index: slot, diff --git a/components/inx/server_blocks.go b/components/inx/server_blocks.go index c0f5d2b38..d6b5f265c 100644 --- a/components/inx/server_blocks.go +++ b/components/inx/server_blocks.go @@ -19,7 +19,7 @@ import ( func (s *Server) ReadBlock(_ context.Context, blockID *inx.BlockId) (*inx.RawBlock, error) { blkID := blockID.Unwrap() - block, exists := deps.Protocol.MainEngine().Block(blkID) // block +1 + block, exists := deps.Protocol.MainEngineInstance().Block(blkID) // block +1 if !exists { return nil, status.Errorf(codes.NotFound, "block %s not found", blkID.ToHex()) } @@ -30,7 +30,7 @@ func (s *Server) ReadBlock(_ context.Context, blockID *inx.BlockId) (*inx.RawBlo } func (s *Server) ReadBlockMetadata(_ context.Context, blockID *inx.BlockId) (*inx.BlockMetadata, error) { - blockMetadata, err := deps.Protocol.MainEngine().Retainer.BlockMetadata(blockID.Unwrap()) + blockMetadata, err := deps.Protocol.MainEngineInstance().Retainer.BlockMetadata(blockID.Unwrap()) if err != nil { return nil, err } diff --git a/components/inx/server_commitments.go b/components/inx/server_commitments.go index 62bdfd0f5..9dbfb08c0 100644 --- a/components/inx/server_commitments.go +++ b/components/inx/server_commitments.go @@ -28,7 +28,7 @@ func (s *Server) ReadCommitment(_ context.Context, req *inx.CommitmentRequest) ( commitmentIndex = req.GetCommitmentId().Unwrap().Index() } - commitment, err := deps.Protocol.MainEngine().Storage.Commitments().Load(commitmentIndex) + commitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(commitmentIndex) if err != nil { if ierrors.Is(err, kvstore.ErrKeyNotFound) { return nil, status.Errorf(codes.NotFound, "commitment index %d not found", req.GetCommitmentIndex()) diff --git a/components/inx/server_node.go b/components/inx/server_node.go index 1800530d1..801940cd2 100644 --- a/components/inx/server_node.go +++ b/components/inx/server_node.go @@ -22,7 +22,7 @@ func inxNodeStatus(status *syncmanager.SyncStatus) *inx.NodeStatus { } func (s *Server) ReadNodeStatus(context.Context, *inx.NoParams) (*inx.NodeStatus, error) { - return inxNodeStatus(deps.Protocol.MainEngine().SyncManager.SyncStatus()), nil + return inxNodeStatus(deps.Protocol.MainEngineInstance().SyncManager.SyncStatus()), nil } func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_ListenToNodeStatusServer) error { @@ -83,7 +83,7 @@ func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_List func (s *Server) ReadNodeConfiguration(context.Context, *inx.NoParams) (*inx.NodeConfiguration, error) { protoParams := make([]*inx.RawProtocolParameters, 0) - provider := deps.Protocol.MainEngine().Storage.Settings().APIProvider() + provider := deps.Protocol.MainEngineInstance().Storage.Settings().APIProvider() for _, version := range provider.ProtocolEpochVersions() { protocolParams := provider.ProtocolParameters(version.Version) if protocolParams == nil { diff --git a/components/inx/server_utxo.go b/components/inx/server_utxo.go index a1e50bd60..4f9ac71ef 100644 --- a/components/inx/server_utxo.go +++ b/components/inx/server_utxo.go @@ -93,7 +93,7 @@ func NewLedgerUpdateBatchOperationConsumed(spent *utxoledger.Spent) (*inx.Ledger } func (s *Server) ReadOutput(_ context.Context, id *inx.OutputId) (*inx.OutputResponse, error) { - engine := deps.Protocol.MainEngine() + engine := deps.Protocol.MainEngineInstance() latestCommitment := engine.Storage.Settings().LatestCommitment() @@ -132,7 +132,7 @@ func (s *Server) ReadOutput(_ context.Context, id *inx.OutputId) (*inx.OutputRes } func (s *Server) ReadUnspentOutputs(_ *inx.NoParams, srv inx.INX_ReadUnspentOutputsServer) error { - engine := deps.Protocol.MainEngine() + engine := deps.Protocol.MainEngineInstance() latestCommitment := engine.Storage.Settings().LatestCommitment() var innerErr error @@ -205,7 +205,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li sendStateDiffsRange := func(startIndex iotago.SlotIndex, endIndex iotago.SlotIndex) error { for currentIndex := startIndex; currentIndex <= endIndex; currentIndex++ { - stateDiff, err := deps.Protocol.MainEngine().Ledger.SlotDiffs(currentIndex) + stateDiff, err := deps.Protocol.MainEngineInstance().Ledger.SlotDiffs(currentIndex) if err != nil { return status.Errorf(codes.NotFound, "ledger update for milestoneIndex %d not found", currentIndex) } @@ -227,7 +227,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li return 0, nil } - latestCommitment := deps.Protocol.MainEngine().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment() if startIndex > latestCommitment.Index() { // no need to send previous milestone diffs @@ -235,7 +235,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li } // Stream all available milestone diffs first - pruningIndex := deps.Protocol.MainEngine().SyncManager.LatestFinalizedSlot() + pruningIndex := deps.Protocol.MainEngineInstance().SyncManager.LatestFinalizedSlot() if startIndex <= pruningIndex { return 0, status.Errorf(codes.InvalidArgument, "given startMilestoneIndex %d is older than the current pruningIndex %d", startIndex, pruningIndex) } diff --git a/components/metrics/metrics_accounts.go b/components/metrics/metrics_accounts.go index f6fdf203f..4c1ed2021 100644 --- a/components/metrics/metrics_accounts.go +++ b/components/metrics/metrics_accounts.go @@ -23,7 +23,7 @@ var AccountMetrics = collector.NewCollection(accountNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - accountData, exists, _ := deps.Protocol.MainEngine().Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.MainEngine().SyncManager.LatestCommitment().Index()) + accountData, exists, _ := deps.Protocol.MainEngineInstance().Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Index()) if exists { deps.Collector.Update(accountNamespace, credits, float64(accountData.Credits.Value), accountData.ID.String()) } @@ -34,7 +34,7 @@ var AccountMetrics = collector.NewCollection(accountNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Seats seen as active by the node."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngine().SybilProtection.SeatManager().OnlineCommittee().Size()), nil + return float64(deps.Protocol.MainEngineInstance().SybilProtection.SeatManager().OnlineCommittee().Size()), nil }), )), ) diff --git a/components/metrics/metrics_conflicts.go b/components/metrics/metrics_conflicts.go index cc907708a..54d1570fa 100644 --- a/components/metrics/metrics_conflicts.go +++ b/components/metrics/metrics_conflicts.go @@ -22,9 +22,9 @@ var ConflictMetrics = collector.NewCollection(conflictNamespace, collector.WithHelp("Time since transaction issuance to the conflict acceptance"), collector.WithInitFunc(func() { deps.Protocol.MainEngineEvents.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngine().Ledger.MemPool().TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(conflictID); exists { firstAttachmentID := txMetadata.EarliestIncludedAttachment() - if block, blockExists := deps.Protocol.MainEngine().BlockFromCache(firstAttachmentID); blockExists { + if block, blockExists := deps.Protocol.MainEngineInstance().BlockFromCache(firstAttachmentID); blockExists { timeSinceIssuance := time.Since(block.IssuingTime()).Milliseconds() timeIssuanceSeconds := float64(timeSinceIssuance) / 1000 deps.Collector.Update(conflictNamespace, resolutionTime, timeIssuanceSeconds) diff --git a/components/metrics/metrics_db.go b/components/metrics/metrics_db.go index 6ed9e5842..c5147900e 100644 --- a/components/metrics/metrics_db.go +++ b/components/metrics/metrics_db.go @@ -17,14 +17,14 @@ var DBMetrics = collector.NewCollection(dbNamespace, collector.WithType(collector.Gauge), collector.WithHelp("DB size in bytes for permanent storage."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngine().Storage.PermanentDatabaseSize()), nil + return float64(deps.Protocol.MainEngineInstance().Storage.PermanentDatabaseSize()), nil }), )), collector.WithMetric(collector.NewMetric(sizeBytesPrunable, collector.WithType(collector.Gauge), collector.WithHelp("DB size in bytes for prunable storage."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngine().Storage.PrunableDatabaseSize()), nil + return float64(deps.Protocol.MainEngineInstance().Storage.PrunableDatabaseSize()), nil }), )), ) diff --git a/components/metrics/metrics_info.go b/components/metrics/metrics_info.go index bc6841173..7072124f3 100644 --- a/components/metrics/metrics_info.go +++ b/components/metrics/metrics_info.go @@ -36,7 +36,7 @@ var InfoMetrics = collector.NewCollection(infoNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Node sync status based on ATT."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - if deps.Protocol.MainEngine().SyncManager.IsNodeSynced() { + if deps.Protocol.MainEngineInstance().SyncManager.IsNodeSynced() { return 1, nil } diff --git a/components/metrics/metrics_scheduler.go b/components/metrics/metrics_scheduler.go index f77be100b..5f84ae243 100644 --- a/components/metrics/metrics_scheduler.go +++ b/components/metrics/metrics_scheduler.go @@ -35,22 +35,22 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithHelp("Current size of each node's queue (in work units)."), collector.WithInitFunc(func() { deps.Protocol.MainEngineEvents.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -63,22 +63,22 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithHelp("Current size of each node's queue (as block count)."), collector.WithInitFunc(func() { deps.Protocol.MainEngineEvents.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -90,9 +90,9 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithHelp("Current amount of mana of each issuer in the queue."), collector.WithInitFunc(func() { deps.Protocol.MainEngineEvents.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - mana, err := deps.Protocol.MainEngine().Ledger.ManaManager().GetManaOnAccount(block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Index()) + mana, err := deps.Protocol.MainEngineInstance().Ledger.ManaManager().GetManaOnAccount(block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Index()) if err != nil { - deps.Protocol.MainEngine().ErrorHandler("metrics")(ierrors.Wrapf(err, "failed to retrieve mana on account %s for slot %d", block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Index())) + deps.Protocol.MainEngineInstance().ErrorHandler("metrics")(ierrors.Wrapf(err, "failed to retrieve mana on account %s for slot %d", block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Index())) return } @@ -131,28 +131,28 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Maximum number of blocks that can be stored in the buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngine().Scheduler.MaxBufferSize()), []string{} + return float64(deps.Protocol.MainEngineInstance().Scheduler.MaxBufferSize()), []string{} }), )), collector.WithMetric(collector.NewMetric(bufferReadyBlockCount, collector.WithType(collector.Gauge), collector.WithHelp("Number of ready blocks in the scheduler buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngine().Scheduler.ReadyBlocksCount()), []string{} + return float64(deps.Protocol.MainEngineInstance().Scheduler.ReadyBlocksCount()), []string{} }), )), collector.WithMetric(collector.NewMetric(bufferTotalSize, collector.WithType(collector.Gauge), collector.WithHelp("Current size of the scheduler buffer (in bytes)."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngine().Scheduler.BufferSize()), []string{} + return float64(deps.Protocol.MainEngineInstance().Scheduler.BufferSize()), []string{} }), )), collector.WithMetric(collector.NewMetric(rate, collector.WithType(collector.Gauge), collector.WithHelp("Current rate of the scheduler."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngine().Scheduler.Rate()), []string{} + return float64(deps.Protocol.MainEngineInstance().Scheduler.Rate()), []string{} }), )), ) diff --git a/components/metrics/metrics_slots.go b/components/metrics/metrics_slots.go index 3d417ca99..ff2dad81c 100644 --- a/components/metrics/metrics_slots.go +++ b/components/metrics/metrics_slots.go @@ -69,10 +69,10 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Number of accepted attachments by the node per slot."), collector.WithInitFunc(func() { - deps.Protocol.MainEngine().Ledger.OnTransactionAttached(func(transactionMetadata mempool.TransactionMetadata) { + deps.Protocol.MainEngineInstance().Ledger.OnTransactionAttached(func(transactionMetadata mempool.TransactionMetadata) { transactionMetadata.OnAccepted(func() { for _, attachmentBlockID := range transactionMetadata.Attachments() { - if block, exists := deps.Protocol.MainEngine().BlockCache.Block(attachmentBlockID); exists && block.IsAccepted() { + if block, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(attachmentBlockID); exists && block.IsAccepted() { deps.Collector.Increment(slotNamespace, acceptedAttachments, strconv.Itoa(int(attachmentBlockID.Index()))) } } @@ -94,7 +94,7 @@ var SlotMetrics = collector.NewCollection(slotNamespace, }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.MainEngineEvents.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngine().Ledger.TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { for _, attachment := range txMetadata.Attachments() { deps.Collector.Increment(slotNamespace, createdConflicts, strconv.Itoa(int(attachment.Index()))) } @@ -116,9 +116,9 @@ var SlotMetrics = collector.NewCollection(slotNamespace, }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.MainEngineEvents.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngine().Ledger.TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { for _, attachmentBlockID := range txMetadata.Attachments() { - if attachment, exists := deps.Protocol.MainEngine().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { + if attachment, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { deps.Collector.Increment(slotNamespace, acceptedConflicts, strconv.Itoa(int(attachment.ID().Index()))) } } @@ -140,9 +140,9 @@ var SlotMetrics = collector.NewCollection(slotNamespace, }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.MainEngineEvents.ConflictDAG.ConflictRejected.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngine().Ledger.TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { for _, attachmentBlockID := range txMetadata.Attachments() { - if attachment, exists := deps.Protocol.MainEngine().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { + if attachment, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { deps.Collector.Increment(slotNamespace, rejectedConflicts, strconv.Itoa(int(attachment.ID().Index()))) } } diff --git a/components/metrics/metrics_tangle.go b/components/metrics/metrics_tangle.go index ea992ea99..005e20c06 100644 --- a/components/metrics/metrics_tangle.go +++ b/components/metrics/metrics_tangle.go @@ -21,7 +21,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Number of strong tips in the tangle"), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - count := len(deps.Protocol.MainEngine().TipManager.StrongTips()) + count := len(deps.Protocol.MainEngineInstance().TipManager.StrongTips()) return float64(count), nil }), @@ -30,7 +30,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Number of weak tips in the tangle"), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - count := len(deps.Protocol.MainEngine().TipManager.WeakTips()) + count := len(deps.Protocol.MainEngineInstance().TipManager.WeakTips()) return float64(count), nil }), diff --git a/components/metricstracker/component.go b/components/metricstracker/component.go index 22bd7883f..828185a27 100644 --- a/components/metricstracker/component.go +++ b/components/metricstracker/component.go @@ -46,7 +46,7 @@ func provide(c *dig.Container) error { } if err := c.Provide(func(deps metricsTrackerDeps) *MetricsTracker { - m := New(deps.Protocol.MainEngine().SyncManager.IsBootstrapped) + m := New(deps.Protocol.MainEngineInstance().SyncManager.IsBootstrapped) return m }); err != nil { diff --git a/components/restapi/core/accounts.go b/components/restapi/core/accounts.go index 84c9cd44d..1293a97b1 100644 --- a/components/restapi/core/accounts.go +++ b/components/restapi/core/accounts.go @@ -29,9 +29,9 @@ func congestionForAccountID(c echo.Context) (*apimodels.CongestionResponse, erro return nil, err } - slotIndex := deps.Protocol.MainEngine().SyncManager.LatestCommitment().Index() + slotIndex := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Index() - acc, exists, err := deps.Protocol.MainEngine().Ledger.Account(accountID, slotIndex) + acc, exists, err := deps.Protocol.MainEngineInstance().Ledger.Account(accountID, slotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to get account: %s form the Ledger", accountID.ToHex()) } @@ -42,14 +42,14 @@ func congestionForAccountID(c echo.Context) (*apimodels.CongestionResponse, erro if err != nil { rmcSlot = 0 } - rmc, err := deps.Protocol.MainEngine().Ledger.RMCManager().RMC(rmcSlot) + rmc, err := deps.Protocol.MainEngineInstance().Ledger.RMCManager().RMC(rmcSlot) if err != nil { return nil, ierrors.Wrapf(err, "failed to get RMC for slot: %d", rmcSlot) } return &apimodels.CongestionResponse{ SlotIndex: slotIndex, - Ready: deps.Protocol.MainEngine().Scheduler.IsBlockIssuerReady(accountID), + Ready: deps.Protocol.MainEngineInstance().Scheduler.IsBlockIssuerReady(accountID), ReferenceManaCost: rmc, BlockIssuanceCredits: acc.Credits.Value, }, nil @@ -67,7 +67,7 @@ func validators(c echo.Context) (*apimodels.ValidatorsResponse, error) { pageSize = restapi.ParamsRestAPI.MaxPageSize } } - latestCommittedSlot := deps.Protocol.MainEngine().SyncManager.LatestCommitment().Index() + latestCommittedSlot := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Index() // no cursor provided will be the first request requestedSlotIndex := latestCommittedSlot var cursorIndex uint32 @@ -86,13 +86,13 @@ func validators(c echo.Context) (*apimodels.ValidatorsResponse, error) { nextEpoch := deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 slotRange := uint32(requestedSlotIndex / RequestsMemoryCacheGranularity) - registeredValidators, exists := deps.Protocol.MainEngine().Retainer.RegisteredValidatorsCache(slotRange) + registeredValidators, exists := deps.Protocol.MainEngineInstance().Retainer.RegisteredValidatorsCache(slotRange) if !exists { - registeredValidators, err = deps.Protocol.MainEngine().SybilProtection.OrderedRegisteredCandidateValidatorsList(nextEpoch) + registeredValidators, err = deps.Protocol.MainEngineInstance().SybilProtection.OrderedRegisteredCandidateValidatorsList(nextEpoch) if err != nil { return nil, ierrors.Wrapf(err, "failed to get ordered registered validators list for epoch %d", nextEpoch) } - deps.Protocol.MainEngine().Retainer.RetainRegisteredValidatorsCache(slotRange, registeredValidators) + deps.Protocol.MainEngineInstance().Retainer.RetainRegisteredValidatorsCache(slotRange, registeredValidators) } page := registeredValidators[cursorIndex:lo.Min(cursorIndex+pageSize, uint32(len(registeredValidators)))] @@ -115,9 +115,9 @@ func validatorByAccountID(c echo.Context) (*apimodels.ValidatorResponse, error) if err != nil { return nil, ierrors.Wrapf(err, "failed to parse the %s parameter", restapipkg.ParameterAccountID) } - latestCommittedSlot := deps.Protocol.MainEngine().SyncManager.LatestCommitment().Index() + latestCommittedSlot := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Index() - accountData, exists, err := deps.Protocol.MainEngine().Ledger.Account(accountID, latestCommittedSlot) + accountData, exists, err := deps.Protocol.MainEngineInstance().Ledger.Account(accountID, latestCommittedSlot) if err != nil { return nil, ierrors.Wrapf(err, "failed to get account: %s form the Ledger", accountID.ToHex()) } @@ -125,7 +125,7 @@ func validatorByAccountID(c echo.Context) (*apimodels.ValidatorResponse, error) return nil, ierrors.Errorf("account not found: %s for latest committedSlot %d", accountID.ToHex(), latestCommittedSlot) } nextEpoch := deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 - active := deps.Protocol.MainEngine().SybilProtection.IsCandidateActive(accountID, nextEpoch) + active := deps.Protocol.MainEngineInstance().SybilProtection.IsCandidateActive(accountID, nextEpoch) return &apimodels.ValidatorResponse{ AccountID: accountID, @@ -145,7 +145,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { return nil, ierrors.Wrapf(err, "failed to parse the %s parameter", restapipkg.ParameterOutputID) } - utxoOutput, err := deps.Protocol.MainEngine().Ledger.Output(outputID) + utxoOutput, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output %s from ledger", outputID) } @@ -165,7 +165,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { stakingFeature := feature.(*iotago.StakingFeature) // check if the account is a validator - reward, actualStart, actualEnd, err = deps.Protocol.MainEngine().SybilProtection.ValidatorReward( + reward, actualStart, actualEnd, err = deps.Protocol.MainEngineInstance().SybilProtection.ValidatorReward( accountOutput.AccountID, stakingFeature.StakedAmount, stakingFeature.StartEpoch, @@ -175,7 +175,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { case iotago.OutputDelegation: //nolint:forcetypeassert delegationOutput := utxoOutput.Output().(*iotago.DelegationOutput) - reward, actualStart, actualEnd, err = deps.Protocol.MainEngine().SybilProtection.DelegatorReward( + reward, actualStart, actualEnd, err = deps.Protocol.MainEngineInstance().SybilProtection.DelegatorReward( delegationOutput.ValidatorID, delegationOutput.DelegatedAmount, delegationOutput.StartEpoch, @@ -207,7 +207,7 @@ func selectedCommittee(c echo.Context) *apimodels.CommitteeResponse { slotIndex = timeProvider.EpochEnd(epochIndex) } - seatedAccounts := deps.Protocol.MainEngine().SybilProtection.SeatManager().Committee(slotIndex) + seatedAccounts := deps.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(slotIndex) committee := make([]*apimodels.CommitteeMemberResponse, 0, seatedAccounts.Accounts().Size()) seatedAccounts.Accounts().ForEach(func(accountID iotago.AccountID, seat *account.Pool) bool { committee = append(committee, &apimodels.CommitteeMemberResponse{ diff --git a/components/restapi/core/blocks.go b/components/restapi/core/blocks.go index 424859156..dcff49cb9 100644 --- a/components/restapi/core/blocks.go +++ b/components/restapi/core/blocks.go @@ -20,7 +20,7 @@ func blockByID(c echo.Context) (*model.Block, error) { return nil, ierrors.Wrapf(err, "failed to parse block ID: %s", c.Param(restapi.ParameterBlockID)) } - block, exists := deps.Protocol.MainEngine().Block(blockID) + block, exists := deps.Protocol.MainEngineInstance().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.ToHex()) } @@ -29,7 +29,7 @@ func blockByID(c echo.Context) (*model.Block, error) { } func blockMetadataByBlockID(blockID iotago.BlockID) (*apimodels.BlockMetadataResponse, error) { - blockMetadata, err := deps.Protocol.MainEngine().Retainer.BlockMetadata(blockID) + blockMetadata, err := deps.Protocol.MainEngineInstance().Retainer.BlockMetadata(blockID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get block metadata: %s", blockID.ToHex()) } @@ -47,8 +47,8 @@ func blockMetadataByID(c echo.Context) (*apimodels.BlockMetadataResponse, error) } func blockIssuance(_ echo.Context) (*apimodels.IssuanceBlockHeaderResponse, error) { - references := deps.Protocol.MainEngine().TipSelection.SelectTips(iotago.BlockMaxParents) - slotCommitment := deps.Protocol.MainEngine().SyncManager.LatestCommitment() + references := deps.Protocol.MainEngineInstance().TipSelection.SelectTips(iotago.BlockMaxParents) + slotCommitment := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment() if len(references[iotago.StrongParentType]) == 0 { return nil, ierrors.Wrap(echo.ErrServiceUnavailable, "get references failed") @@ -58,7 +58,7 @@ func blockIssuance(_ echo.Context) (*apimodels.IssuanceBlockHeaderResponse, erro StrongParents: references[iotago.StrongParentType], WeakParents: references[iotago.WeakParentType], ShallowLikeParents: references[iotago.ShallowLikeParentType], - LatestFinalizedSlot: deps.Protocol.MainEngine().SyncManager.LatestFinalizedSlot(), + LatestFinalizedSlot: deps.Protocol.MainEngineInstance().SyncManager.LatestFinalizedSlot(), Commitment: slotCommitment.Commitment(), } diff --git a/components/restapi/core/commitment.go b/components/restapi/core/commitment.go index c81f6275c..92389a6aa 100644 --- a/components/restapi/core/commitment.go +++ b/components/restapi/core/commitment.go @@ -20,7 +20,7 @@ func indexByCommitmentID(c echo.Context) (iotago.SlotIndex, error) { } func getCommitmentDetails(index iotago.SlotIndex) (*iotago.Commitment, error) { - commitment, err := deps.Protocol.MainEngine().Storage.Commitments().Load(index) + commitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(index) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment: %d", index) } @@ -29,7 +29,7 @@ func getCommitmentDetails(index iotago.SlotIndex) (*iotago.Commitment, error) { } func getUTXOChanges(index iotago.SlotIndex) (*apimodels.UTXOChangesResponse, error) { - diffs, err := deps.Protocol.MainEngine().Ledger.SlotDiffs(index) + diffs, err := deps.Protocol.MainEngineInstance().Ledger.SlotDiffs(index) if err != nil { return nil, ierrors.Wrapf(err, "failed to get slot diffs: %d", index) } diff --git a/components/restapi/core/component.go b/components/restapi/core/component.go index 3863a72d3..3248e2cce 100644 --- a/components/restapi/core/component.go +++ b/components/restapi/core/component.go @@ -351,7 +351,7 @@ func AddFeature(feature string) { func checkNodeSynced() echo.MiddlewareFunc { return func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { - if !deps.Protocol.MainEngine().SyncManager.IsNodeSynced() { + if !deps.Protocol.MainEngineInstance().SyncManager.IsNodeSynced() { return ierrors.Wrap(echo.ErrServiceUnavailable, "node is not synced") } diff --git a/components/restapi/core/node.go b/components/restapi/core/node.go index 1117a871b..927c58515 100644 --- a/components/restapi/core/node.go +++ b/components/restapi/core/node.go @@ -6,7 +6,7 @@ import ( func protocolParameters() []*apimodels.InfoResProtocolParameters { protoParams := make([]*apimodels.InfoResProtocolParameters, 0) - provider := deps.Protocol.MainEngine().Storage.Settings().APIProvider() + provider := deps.Protocol.MainEngineInstance().Storage.Settings().APIProvider() for _, version := range provider.ProtocolEpochVersions() { protocolParams := provider.ProtocolParameters(version.Version) if protocolParams == nil { @@ -23,8 +23,8 @@ func protocolParameters() []*apimodels.InfoResProtocolParameters { } func info() *apimodels.InfoResponse { - clSnapshot := deps.Protocol.MainEngine().Clock.Snapshot() - syncStatus := deps.Protocol.MainEngine().SyncManager.SyncStatus() + clSnapshot := deps.Protocol.MainEngineInstance().Clock.Snapshot() + syncStatus := deps.Protocol.MainEngineInstance().SyncManager.SyncStatus() metrics := deps.MetricsTracker.NodeMetrics() return &apimodels.InfoResponse{ diff --git a/components/restapi/core/transaction.go b/components/restapi/core/transaction.go index f3cc6c419..5c3fdbe4a 100644 --- a/components/restapi/core/transaction.go +++ b/components/restapi/core/transaction.go @@ -25,7 +25,7 @@ func blockIDFromTransactionID(transactionID iotago.TransactionID) (iotago.BlockI outputID := iotago.OutputID{} copy(outputID[:], transactionID[:]) - output, err := deps.Protocol.MainEngine().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) if err != nil { return iotago.EmptyBlockID(), ierrors.Wrapf(err, "failed to get output: %s", outputID.String()) } @@ -39,7 +39,7 @@ func blockByTransactionID(c echo.Context) (*model.Block, error) { return nil, ierrors.Wrapf(err, "failed to get block ID by transaction ID") } - block, exists := deps.Protocol.MainEngine().Block(blockID) + block, exists := deps.Protocol.MainEngineInstance().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.String()) } diff --git a/components/restapi/core/utxo.go b/components/restapi/core/utxo.go index 83339c1f2..762cebddf 100644 --- a/components/restapi/core/utxo.go +++ b/components/restapi/core/utxo.go @@ -16,7 +16,7 @@ func getOutput(c echo.Context) (*utxoledger.Output, error) { return nil, ierrors.Wrapf(err, "failed to parse output ID param: %s", c.Param(restapipkg.ParameterOutputID)) } - output, err := deps.Protocol.MainEngine().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output: %s from the Ledger", outputID.String()) } @@ -30,7 +30,7 @@ func getOutputMetadata(c echo.Context) (*apimodels.OutputMetadataResponse, error return nil, ierrors.Wrapf(err, "failed to parse output ID param: %s", c.Param(restapipkg.ParameterOutputID)) } - output, spent, err := deps.Protocol.MainEngine().Ledger.OutputOrSpent(outputID) + output, spent, err := deps.Protocol.MainEngineInstance().Ledger.OutputOrSpent(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output: %s from the Ledger", outputID.String()) } @@ -43,7 +43,7 @@ func getOutputMetadata(c echo.Context) (*apimodels.OutputMetadataResponse, error } func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMetadataResponse, error) { - latestCommitment := deps.Protocol.MainEngine().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment() resp := &apimodels.OutputMetadataResponse{ BlockID: output.BlockID(), @@ -55,7 +55,7 @@ func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMeta includedSlotIndex := output.SlotBooked() if includedSlotIndex <= latestCommitment.Index() { - includedCommitment, err := deps.Protocol.MainEngine().Storage.Commitments().Load(includedSlotIndex) + includedCommitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(includedSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", includedSlotIndex) } @@ -66,7 +66,7 @@ func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMeta } func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadataResponse, error) { - latestCommitment := deps.Protocol.MainEngine().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment() resp := &apimodels.OutputMetadataResponse{ BlockID: spent.BlockID(), @@ -79,7 +79,7 @@ func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadat includedSlotIndex := spent.Output().SlotBooked() if includedSlotIndex <= latestCommitment.Index() { - includedCommitment, err := deps.Protocol.MainEngine().Storage.Commitments().Load(includedSlotIndex) + includedCommitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(includedSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", includedSlotIndex) } @@ -88,7 +88,7 @@ func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadat spentSlotIndex := spent.SlotIndexSpent() if spentSlotIndex <= latestCommitment.Index() { - spentCommitment, err := deps.Protocol.MainEngine().Storage.Commitments().Load(spentSlotIndex) + spentCommitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(spentSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", spentSlotIndex) } diff --git a/components/restapi/management/pruning.go b/components/restapi/management/pruning.go index 15c9fa5f1..2907feaad 100644 --- a/components/restapi/management/pruning.go +++ b/components/restapi/management/pruning.go @@ -10,7 +10,7 @@ import ( ) func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { - if deps.Protocol.MainEngine().Storage.IsPruning() { + if deps.Protocol.MainEngineInstance().Storage.IsPruning() { return nil, ierrors.Wrapf(echo.ErrServiceUnavailable, "node is already pruning") } @@ -30,14 +30,14 @@ func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { var err error if request.Index != 0 { - err = deps.Protocol.MainEngine().Storage.PruneByEpochIndex(request.Index) + err = deps.Protocol.MainEngineInstance().Storage.PruneByEpochIndex(request.Index) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } } if request.Depth != 0 { - _, _, err := deps.Protocol.MainEngine().Storage.PruneByDepth(request.Depth) + _, _, err := deps.Protocol.MainEngineInstance().Storage.PruneByDepth(request.Depth) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } @@ -49,13 +49,13 @@ func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } - err = deps.Protocol.MainEngine().Storage.PruneBySize(pruningTargetDatabaseSizeBytes) + err = deps.Protocol.MainEngineInstance().Storage.PruneBySize(pruningTargetDatabaseSizeBytes) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } } - targetIndex, hasPruned := deps.Protocol.MainEngine().Storage.LastPrunedEpoch() + targetIndex, hasPruned := deps.Protocol.MainEngineInstance().Storage.LastPrunedEpoch() if hasPruned { targetIndex++ } diff --git a/components/restapi/routes.go b/components/restapi/routes.go index 2ca5fdb82..262284b27 100644 --- a/components/restapi/routes.go +++ b/components/restapi/routes.go @@ -21,7 +21,7 @@ type RoutesResponse struct { func setupRoutes() { deps.Echo.GET(nodeAPIHealthRoute, func(c echo.Context) error { - if deps.Protocol.MainEngine().SyncManager.IsNodeSynced() { + if deps.Protocol.MainEngineInstance().SyncManager.IsNodeSynced() { return c.NoContent(http.StatusOK) } diff --git a/components/validator/component.go b/components/validator/component.go index 5c2550cd4..7aef545d6 100644 --- a/components/validator/component.go +++ b/components/validator/component.go @@ -69,7 +69,7 @@ func run() error { } func checkValidatorStatus(ctx context.Context) { - account, exists, err := deps.Protocol.MainEngine().Ledger.Account(validatorAccount.ID(), deps.Protocol.MainEngine().Storage.Settings().LatestCommitment().Index()) + account, exists, err := deps.Protocol.MainEngineInstance().Ledger.Account(validatorAccount.ID(), deps.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index()) if err != nil { Component.LogErrorf("error when retrieving BlockIssuer account %s: %w", validatorAccount.ID(), err) diff --git a/components/validator/issuer.go b/components/validator/issuer.go index df21f2ee6..4e22b5b09 100644 --- a/components/validator/issuer.go +++ b/components/validator/issuer.go @@ -9,7 +9,7 @@ import ( func issueValidatorBlock(ctx context.Context) { // Get the main engine instance in case it changes mid-execution. - engineInstance := deps.Protocol.MainEngine() + engineInstance := deps.Protocol.MainEngineInstance() // Get the latest commitment from the engine before to avoid race conditions if something is committed after we fix block issuing time. latestCommitment := engineInstance.Storage.Settings().LatestCommitment() @@ -42,7 +42,7 @@ func issueValidatorBlock(ctx context.Context) { blockfactory.WithSlotCommitment(latestCommitment.Commitment()), ), blockfactory.WithProtocolParametersHash(protocolParametersHash), - blockfactory.WithHighestSupportedVersion(deps.Protocol.MainEngine().LatestAPI().Version()), + blockfactory.WithHighestSupportedVersion(deps.Protocol.MainEngineInstance().LatestAPI().Version()), ) if err != nil { Component.LogWarnf("error creating validator block: %s", err.Error()) diff --git a/pkg/blockfactory/blockissuer.go b/pkg/blockfactory/blockissuer.go index 21f481fae..dc27aba79 100644 --- a/pkg/blockfactory/blockissuer.go +++ b/pkg/blockfactory/blockissuer.go @@ -82,7 +82,7 @@ func (i *BlockIssuer) CreateValidationBlock(ctx context.Context, issuerAccount A if blockParams.HighestSupportedVersion == nil { // We use the latest supported version and not the current one. - version := i.protocol.MainEngine().LatestAPI().Version() + version := i.protocol.MainEngineInstance().LatestAPI().Version() blockParams.HighestSupportedVersion = &version } @@ -194,7 +194,7 @@ func (i *BlockIssuer) CreateBlock(ctx context.Context, issuerAccount Account, op if err != nil { rmcSlot = 0 } - rmc, err := i.protocol.MainEngine().Ledger.RMCManager().RMC(rmcSlot) + rmc, err := i.protocol.MainEngineInstance().Ledger.RMCManager().RMC(rmcSlot) if err != nil { return nil, ierrors.Wrapf(err, "error loading commitment of slot %d from storage to get RMC", rmcSlot) } @@ -284,8 +284,8 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco } if iotaBlock.SlotCommitmentID == iotago.EmptyCommitmentID { - iotaBlock.SlotCommitmentID = i.protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment().MustID() - iotaBlock.LatestFinalizedSlot = i.protocol.MainEngine().Storage.Settings().LatestFinalizedSlot() + iotaBlock.SlotCommitmentID = i.protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID() + iotaBlock.LatestFinalizedSlot = i.protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot() resign = true } @@ -335,7 +335,7 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco if err != nil { rmcSlot = 0 } - rmc, err := i.protocol.MainEngine().Ledger.RMCManager().RMC(rmcSlot) + rmc, err := i.protocol.MainEngineInstance().Ledger.RMCManager().RMC(rmcSlot) if err != nil { return iotago.EmptyBlockID(), ierrors.Wrapf(err, "error loading commitment of slot %d from storage to get RMC", rmcSlot) } @@ -374,7 +374,7 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco return iotago.EmptyBlockID(), ierrors.Wrap(err, "error serializing block to model block") } - if !i.optsRateSetterEnabled || i.protocol.MainEngine().Scheduler.IsBlockIssuerReady(modelBlock.ProtocolBlock().IssuerID) { + if !i.optsRateSetterEnabled || i.protocol.MainEngineInstance().Scheduler.IsBlockIssuerReady(modelBlock.ProtocolBlock().IssuerID) { i.events.BlockConstructed.Trigger(modelBlock) if err = i.IssueBlockAndAwaitEvent(ctx, modelBlock, i.protocol.MainEngineEvents.BlockDAG.BlockAttached); err != nil { @@ -400,7 +400,7 @@ func (i *BlockIssuer) setDefaultBlockParams(blockParams *BlockHeaderParams, issu } if blockParams.LatestFinalizedSlot == nil { - latestFinalizedSlot := i.protocol.MainEngine().Storage.Settings().LatestFinalizedSlot() + latestFinalizedSlot := i.protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot() blockParams.LatestFinalizedSlot = &latestFinalizedSlot } @@ -419,7 +419,7 @@ func (i *BlockIssuer) setDefaultBlockParams(blockParams *BlockHeaderParams, issu func (i *BlockIssuer) getCommitment(blockSlot iotago.SlotIndex) (*iotago.Commitment, error) { protoParams := i.protocol.CurrentAPI().ProtocolParameters() - commitment := i.protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment() + commitment := i.protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment() if blockSlot > commitment.Index+protoParams.MaxCommittableAge() { return nil, ierrors.Errorf("can't issue block: block slot %d is too far in the future, latest commitment is %d", blockSlot, commitment.Index) @@ -431,7 +431,7 @@ func (i *BlockIssuer) getCommitment(blockSlot iotago.SlotIndex) (*iotago.Commitm } commitmentSlot := commitment.Index - protoParams.MinCommittableAge() - loadedCommitment, err := i.protocol.MainEngine().Storage.Commitments().Load(commitmentSlot) + loadedCommitment, err := i.protocol.MainEngineInstance().Storage.Commitments().Load(commitmentSlot) if err != nil { return nil, ierrors.Wrapf(err, "error loading valid commitment of slot %d according to minCommittableAge from storage", commitmentSlot) } @@ -453,7 +453,7 @@ func (i *BlockIssuer) getReferences(ctx context.Context, p iotago.Payload, stron func (i *BlockIssuer) validateReferences(issuingTime time.Time, slotCommitmentIndex iotago.SlotIndex, references model.ParentReferences) error { for _, parent := range lo.Flatten(lo.Map(lo.Values(references), func(ds iotago.BlockIDs) []iotago.BlockID { return ds })) { - b, exists := i.protocol.MainEngine().BlockFromCache(parent) + b, exists := i.protocol.MainEngineInstance().BlockFromCache(parent) if !exists { return ierrors.Errorf("cannot issue block if the parents are not known: %s", parent) } @@ -488,7 +488,7 @@ func (i *BlockIssuer) getReferencesWithRetry(ctx context.Context, _ iotago.Paylo defer timeutil.CleanupTicker(interval) for { - references = i.protocol.MainEngine().TipSelection.SelectTips(parentsCount) + references = i.protocol.MainEngineInstance().TipSelection.SelectTips(parentsCount) if len(references[iotago.StrongParentType]) > 0 { return references, nil } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index b37bc77ae..d106f74da 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -36,7 +36,7 @@ func newChains(protocol *Protocol) *Chains { c := &Chains{ protocol: protocol, EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(protocol.MainEngine().SyncManager.LatestCommitment(), true), protocol.MainEngine())), + mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(protocol.MainEngineInstance().SyncManager.LatestCommitment(), true), protocol.MainEngineInstance())), heaviestClaimedCandidate: reactive.NewVariable[*Chain](), heaviestAttestedCandidate: reactive.NewVariable[*Chain](), heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), @@ -45,7 +45,7 @@ func newChains(protocol *Protocol) *Chains { chainCreated: event.New1[*Chain](), } - c.publishLatestEngineCommitment(protocol.MainEngine()) + c.publishLatestEngineCommitment(protocol.MainEngineInstance()) protocol.OnEngineCreated(c.publishLatestEngineCommitment) c.enableChainSwitching() diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index b09b09f48..9cb46f275 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -68,7 +68,7 @@ func newEngines(protocol *Protocol) *Engines { return e } -func (e *Engines) MainEngine() *engine.Engine { +func (e *Engines) MainEngineInstance() *engine.Engine { return e.mainEngine.Get() } diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go index 92ad84754..f6918516a 100644 --- a/pkg/protocol/gossip.go +++ b/pkg/protocol/gossip.go @@ -54,7 +54,7 @@ func NewGossip(protocol *Protocol) *Gossip { } func (r *Gossip) IssueBlock(block *model.Block) error { - r.protocol.MainEngine().ProcessBlockFromPeer(block, "self") + r.protocol.MainEngineInstance().ProcessBlockFromPeer(block, "self") return nil } @@ -82,7 +82,7 @@ func (r *Gossip) ProcessBlock(block *model.Block, src peer.ID) error { } func (r *Gossip) ProcessBlockRequest(blockID iotago.BlockID, src peer.ID) error { - block, exists := r.protocol.MainEngine().Block(blockID) + block, exists := r.protocol.MainEngineInstance().Block(blockID) if !exists { // TODO: CREATE SENTINAL ERRORS return ierrors.Errorf("requested block %s not found", blockID) @@ -133,7 +133,7 @@ func (r *Gossip) ProcessAttestationsResponse(commitmentModel *model.Commitment, } func (r *Gossip) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) error { - mainEngine := r.protocol.MainEngine() + mainEngine := r.protocol.MainEngineInstance() if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { return ierrors.Errorf("main engine has produced the requested commitment %s, yet", commitmentID) @@ -253,7 +253,7 @@ func (r *Gossip) startBlockRequester() { engine.HookShutdown(unsubscribe) } - startBlockRequester(r.protocol.MainEngine()) + startBlockRequester(r.protocol.MainEngineInstance()) r.protocol.OnEngineCreated(startBlockRequester) } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 548dcae1f..eb2344056 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -64,7 +64,7 @@ func (p *Protocol) APIForSlot(slot iotago.SlotIndex) iotago.API { } func (p *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { - return p.MainEngine().APIForEpoch(epoch) + return p.MainEngineInstance().APIForEpoch(epoch) } func (p *Protocol) CurrentAPI() iotago.API { @@ -72,7 +72,7 @@ func (p *Protocol) CurrentAPI() iotago.API { } func (p *Protocol) LatestAPI() iotago.API { - return p.MainEngine().LatestAPI() + return p.MainEngineInstance().LatestAPI() } func (p *Protocol) OnError(callback func(error)) (unsubscribe func()) { diff --git a/pkg/tests/accounts_test.go b/pkg/tests/accounts_test.go index 8654ca619..a3e69243d 100644 --- a/pkg/tests/accounts_test.go +++ b/pkg/tests/accounts_test.go @@ -62,7 +62,7 @@ func Test_TransitionAccount(t *testing.T) { newGenesisOutputKey := utils.RandBlockIssuerKey() newAccountBlockIssuerKey := utils.RandBlockIssuerKey() - latestCommitmentID := node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment().MustID() + latestCommitmentID := node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID() accountInput, accountOutputs, accountWallets := ts.TransactionFramework.TransitionAccount( "Genesis:1", @@ -122,7 +122,7 @@ func Test_TransitionAccount(t *testing.T) { // commit until the expiry slot of the transitioned genesis account plus one latestParent = ts.CommitUntilSlot(accountOutputs[0].FeatureSet().BlockIssuer().ExpirySlot+1, activeNodes, latestParent) // set the expiry slof of the transitioned genesis account to the latest committed + MaxCommittableAge - newAccountExpirySlot := node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Index() + ts.API.ProtocolParameters().MaxCommittableAge() + newAccountExpirySlot := node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index() + ts.API.ProtocolParameters().MaxCommittableAge() inputForNewAccount, newAccountOutputs, newAccountWallets := ts.TransactionFramework.CreateAccountFromInput("TX1:1", testsuite.WithAccountConditions(iotago.AccountOutputUnlockConditions{ &iotago.StateControllerAddressUnlockCondition{Address: ts.TransactionFramework.DefaultAddress()}, @@ -150,7 +150,7 @@ func Test_TransitionAccount(t *testing.T) { AccountID: genesisAccountOutput.AccountID, }, &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForNewAccount), @@ -159,7 +159,7 @@ func Test_TransitionAccount(t *testing.T) { testsuite.WithCreationSlot(slotIndexBlock2), )) - block2 := ts.IssueBlockAtSlotWithOptions("block2", slotIndexBlock2, node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment(), node1, tx2, blockfactory.WithStrongParents(latestParent.ID())) + block2 := ts.IssueBlockAtSlotWithOptions("block2", slotIndexBlock2, node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node1, tx2, blockfactory.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(slotIndexBlock2, activeNodes, block2) @@ -220,7 +220,7 @@ func Test_TransitionAccount(t *testing.T) { tx3 := lo.PanicOnErr(ts.TransactionFramework.CreateTransactionWithOptions("TX3", newDelegationWallets, testsuite.WithContextInputs(iotago.TxEssenceContextInputs{ &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForNewDelegation), @@ -228,7 +228,7 @@ func Test_TransitionAccount(t *testing.T) { testsuite.WithCreationSlot(slotIndexBlock3), )) - block3 := ts.IssueBlockAtSlotWithOptions("block3", slotIndexBlock3, node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment(), node1, tx3, blockfactory.WithStrongParents(latestParent.ID())) + block3 := ts.IssueBlockAtSlotWithOptions("block3", slotIndexBlock3, node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node1, tx3, blockfactory.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(slotIndexBlock3, activeNodes, block3) delegatedAmount := inputForNewDelegation[0].BaseTokenAmount() @@ -264,7 +264,7 @@ func Test_TransitionAccount(t *testing.T) { tx4 := lo.PanicOnErr(ts.TransactionFramework.CreateTransactionWithOptions("TX4", delegationTransitionWallets, testsuite.WithContextInputs(iotago.TxEssenceContextInputs{ &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForDelegationTransition), @@ -274,7 +274,7 @@ func Test_TransitionAccount(t *testing.T) { slotIndexBlock4 := latestParent.ID().Index() - block4 := ts.IssueBlockAtSlotWithOptions("block4", slotIndexBlock4, node1.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment(), node1, tx4, blockfactory.WithStrongParents(latestParent.ID())) + block4 := ts.IssueBlockAtSlotWithOptions("block4", slotIndexBlock4, node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node1, tx4, blockfactory.WithStrongParents(latestParent.ID())) _ = ts.CommitUntilSlot(slotIndexBlock4, activeNodes, block4) diff --git a/pkg/tests/confirmation_state_test.go b/pkg/tests/confirmation_state_test.go index 837465431..8b9c15e48 100644 --- a/pkg/tests/confirmation_state_test.go +++ b/pkg/tests/confirmation_state_test.go @@ -97,7 +97,7 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithChainID(genesisCommitment.MustID()), testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID))), + testsuite.WithSybilProtectionOnlineCommittee(lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID))), testsuite.WithEvictedSlot(0), testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), @@ -134,7 +134,7 @@ func TestConfirmationFlags(t *testing.T) { // Issue in the next slot so that slot 2 becomes committed. - slot1Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine().Storage.Commitments().Load(1)).Commitment() + slot1Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngineInstance().Storage.Commitments().Load(1)).Commitment() slot2CommittableIndex := slot1CommittableIndex + 1 alias2A0 := fmt.Sprintf("A.%d.0", slot2CommittableIndex) alias2A1 := fmt.Sprintf("A.%d.1", slot2CommittableIndex) @@ -154,15 +154,15 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(2), testsuite.WithSybilProtectionCommittee(slot2CommittableIndex, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), + lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), + lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), ), testsuite.WithEvictedSlot(2), ) // Confirm aliasA0 by pre-confirming a block a 3rd validator in the next slot. - slot2Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine().Storage.Commitments().Load(2)).Commitment() + slot2Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngineInstance().Storage.Commitments().Load(2)).Commitment() slot3CommittableIndex := slot2CommittableIndex + 1 alias3C0 := fmt.Sprintf("C.%d.0", slot3CommittableIndex) @@ -194,9 +194,9 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(2), testsuite.WithSybilProtectionCommittee(slot3CommittableIndex, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.AccountID)), + lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), + lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), + lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.AccountID)), ), testsuite.WithEvictedSlot(2), ) @@ -249,9 +249,9 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(3), testsuite.WithSybilProtectionCommittee(slot4CommittableIndex, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.AccountID)), + lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), + lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), + lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.AccountID)), ), testsuite.WithEvictedSlot(3), ) diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 8c89c7e18..ec495d61a 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -108,20 +108,20 @@ func TestProtocol_EngineSwitching(t *testing.T) { node7.AccountID, } expectedP1OnlineCommittee := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node4.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node4.AccountID)), } expectedP2OnlineCommittee := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node6.AccountID)), - lo.Return1(node0.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(node7.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node6.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node7.AccountID)), } expectedOnlineCommittee := append(expectedP1OnlineCommittee, expectedP2OnlineCommittee...) for _, node := range ts.Nodes() { - node.Protocol.MainEngine().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") + node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") } // Verify that nodes have the expected states. @@ -187,7 +187,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { // Set online committee for each partition. for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngine().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA) if node.Partition == "P1" { manualPOA.SetOnline("node0", "node1", "node2", "node3", "node4") manualPOA.SetOffline("node6", "node7") @@ -309,7 +309,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { } for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngine().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA) manualPOA.SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") } diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index ccd5f0575..361cc3e1f 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -60,8 +60,8 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { } expectedOnlineCommittee := []account.SeatIndex{ - lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), + lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.AccountID)), + lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.AccountID)), } // Verify that nodes have the expected states. @@ -217,7 +217,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngine().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.MainEngineInstance().WriteSnapshot(snapshotPath)) nodeD := ts.AddNode("nodeD") nodeD.CopyIdentityFromNode(ts.Node("nodeC-restarted")) // we just want to be able to issue some stuff and don't care about the account for now. @@ -239,7 +239,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { ts.AssertStorageRootBlocks(expectedStorageRootBlocksFrom9, ts.Nodes("nodeD")...) } - slot7Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine().Storage.Commitments().Load(7)) + slot7Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngineInstance().Storage.Commitments().Load(7)) ts.AssertNodeState(ts.Nodes("nodeC-restarted", "nodeD"), testsuite.WithSnapshotImported(true), @@ -368,7 +368,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngine().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.MainEngineInstance().WriteSnapshot(snapshotPath)) nodeD := ts.AddNode("nodeE") nodeD.CopyIdentityFromNode(ts.Node("nodeC-restarted")) // we just want to be able to issue some stuff and don't care about the account for now. diff --git a/pkg/tests/upgrade_signaling_test.go b/pkg/tests/upgrade_signaling_test.go index e64ad8348..3b5fb1510 100644 --- a/pkg/tests/upgrade_signaling_test.go +++ b/pkg/tests/upgrade_signaling_test.go @@ -153,7 +153,7 @@ func Test_Upgrade_Signaling(t *testing.T) { }, ts.Nodes()...) // check that rollback is correct - account, exists, err := ts.Node("nodeA").Protocol.MainEngine().Ledger.Account(ts.Node("nodeA").AccountID, 7) + account, exists, err := ts.Node("nodeA").Protocol.MainEngineInstance().Ledger.Account(ts.Node("nodeA").AccountID, 7) require.NoError(t, err) require.True(t, exists) require.Equal(t, model.VersionAndHash{Version: 4, Hash: hash2}, account.LatestSupportedProtocolVersionAndHash) @@ -202,7 +202,7 @@ func Test_Upgrade_Signaling(t *testing.T) { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngine().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.MainEngineInstance().WriteSnapshot(snapshotPath)) { nodeG := ts.AddNode("nodeG") diff --git a/pkg/testsuite/accounts.go b/pkg/testsuite/accounts.go index ec6260b89..50503f33a 100644 --- a/pkg/testsuite/accounts.go +++ b/pkg/testsuite/accounts.go @@ -13,12 +13,12 @@ import ( func (t *TestSuite) AssertAccountData(accountData *accounts.AccountData, nodes ...*mock.Node) { t.Eventually(func() error { for _, node := range nodes { - actualAccountData, exists, err := node.Protocol.MainEngine().Ledger.Account(accountData.ID, node.Protocol.MainEngine().SyncManager.LatestCommitment().Index()) + actualAccountData, exists, err := node.Protocol.MainEngineInstance().Ledger.Account(accountData.ID, node.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Index()) if err != nil { return ierrors.Wrap(err, "AssertAccountData: failed to load account data") } if !exists { - return ierrors.Errorf("AssertAccountData: %s: account %s does not exist with latest committed slot %d", node.Name, accountData.ID, node.Protocol.MainEngine().SyncManager.LatestCommitment().Index()) + return ierrors.Errorf("AssertAccountData: %s: account %s does not exist with latest committed slot %d", node.Name, accountData.ID, node.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Index()) } if accountData.ID != actualAccountData.ID { @@ -74,7 +74,7 @@ func (t *TestSuite) AssertAccountDiff(accountID iotago.AccountID, index iotago.S t.Eventually(func() error { for _, node := range nodes { - accountsDiffStorage, err := node.Protocol.MainEngine().Storage.AccountDiffs(index) + accountsDiffStorage, err := node.Protocol.MainEngineInstance().Storage.AccountDiffs(index) if err != nil { return ierrors.Wrapf(err, "AssertAccountDiff: %s: failed to load accounts diff for slot %d", node.Name, index) } diff --git a/pkg/testsuite/attestations.go b/pkg/testsuite/attestations.go index ee4b612df..ebbde4fb9 100644 --- a/pkg/testsuite/attestations.go +++ b/pkg/testsuite/attestations.go @@ -23,7 +23,7 @@ func (t *TestSuite) AssertAttestationsForSlot(slotIndex iotago.SlotIndex, blocks for _, node := range nodes { t.Eventually(func() error { - attestationTree, err := node.Protocol.MainEngine().Attestations.GetMap(slotIndex) + attestationTree, err := node.Protocol.MainEngineInstance().Attestations.GetMap(slotIndex) if err != nil { return ierrors.Wrapf(err, "AssertAttestationsForSlot: %s: error loading attestation tree for slot %d", node.Name, slotIndex) } diff --git a/pkg/testsuite/blocks.go b/pkg/testsuite/blocks.go index 72a4e8e8c..225df6b1e 100644 --- a/pkg/testsuite/blocks.go +++ b/pkg/testsuite/blocks.go @@ -16,7 +16,7 @@ func (t *TestSuite) AssertBlock(block *blocks.Block, node *mock.Node) *model.Blo var loadedBlock *model.Block t.Eventually(func() error { var exists bool - loadedBlock, exists = node.Protocol.MainEngine().Block(block.ID()) + loadedBlock, exists = node.Protocol.MainEngineInstance().Block(block.ID()) if !exists { return ierrors.Errorf("AssertBlock: %s: block %s does not exist", node.Name, block.ID()) } @@ -47,7 +47,7 @@ func (t *TestSuite) AssertBlocksExist(blocks []*blocks.Block, expectedExist bool t.AssertBlock(block, node) } else { t.Eventually(func() error { - if lo.Return2(node.Protocol.MainEngine().Block(block.ID())) { + if lo.Return2(node.Protocol.MainEngineInstance().Block(block.ID())) { return ierrors.Errorf("AssertBlocksExist: %s: block %s exists but should not", node.Name, block) } @@ -64,7 +64,7 @@ func (t *TestSuite) assertBlocksInCacheWithFunc(expectedBlocks []*blocks.Block, for _, node := range nodes { for _, block := range expectedBlocks { t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngine().BlockFromCache(block.ID()) + blockFromCache, exists := node.Protocol.MainEngineInstance().BlockFromCache(block.ID()) if !exists { return ierrors.Errorf("assertBlocksInCacheWithFunc[%s]: %s: block %s does not exist", propertyName, node.Name, block.ID()) } @@ -113,7 +113,7 @@ func (t *TestSuite) AssertBlocksInCacheConflicts(blockConflicts map[*blocks.Bloc for _, node := range nodes { for block, conflictAliases := range blockConflicts { t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngine().BlockFromCache(block.ID()) + blockFromCache, exists := node.Protocol.MainEngineInstance().BlockFromCache(block.ID()) if !exists { return ierrors.Errorf("AssertBlocksInCacheConflicts: %s: block %s does not exist", node.Name, block.ID()) } diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index 6eeb84a14..e4364d237 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -16,7 +16,7 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { } latestChainCommitment := chain.LatestCommitment() - latestCommitment := node.Protocol.MainEngine().Storage.Settings().LatestCommitment() + latestCommitment := node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment() if latestCommitment.ID() != latestChainCommitment.ID() { return ierrors.Errorf("AssertChainManagerIsSolid: %s: latest commitment is not equal, expected %d, got %d", node.Name, latestCommitment.ID(), latestChainCommitment.ID()) diff --git a/pkg/testsuite/conflicts.go b/pkg/testsuite/conflicts.go index e78af4aa4..7c7047da0 100644 --- a/pkg/testsuite/conflicts.go +++ b/pkg/testsuite/conflicts.go @@ -13,7 +13,7 @@ func (t *TestSuite) AssertConflictsInCacheAcceptanceState(expectedConflictAliase for _, node := range nodes { for _, conflictAlias := range expectedConflictAliases { t.Eventually(func() error { - acceptanceState := node.Protocol.MainEngine().Ledger.ConflictDAG().AcceptanceState(ds.NewSet(t.TransactionFramework.TransactionID(conflictAlias))) + acceptanceState := node.Protocol.MainEngineInstance().Ledger.ConflictDAG().AcceptanceState(ds.NewSet(t.TransactionFramework.TransactionID(conflictAlias))) if acceptanceState != expectedState { return ierrors.Errorf("assertTransactionsInCacheWithFunc: %s: conflict %s is %s, but expected %s", node.Name, conflictAlias, acceptanceState, expectedState) diff --git a/pkg/testsuite/eviction.go b/pkg/testsuite/eviction.go index f332802ef..07ad2418a 100644 --- a/pkg/testsuite/eviction.go +++ b/pkg/testsuite/eviction.go @@ -20,7 +20,7 @@ func (t *TestSuite) AssertActiveRootBlocks(expectedBlocks []*blocks.Block, nodes for _, node := range nodes { t.Eventually(func() error { - activeRootBlocks := node.Protocol.MainEngine().EvictionState.ActiveRootBlocks() + activeRootBlocks := node.Protocol.MainEngineInstance().EvictionState.ActiveRootBlocks() if !cmp.Equal(expectedRootBlocks, activeRootBlocks) { return ierrors.Errorf("AssertActiveRootBlocks: %s: expected %v, got %v", node.Name, expectedRootBlocks, activeRootBlocks) @@ -36,8 +36,8 @@ func (t *TestSuite) AssertEvictedSlot(expectedIndex iotago.SlotIndex, nodes ...* for _, node := range nodes { t.Eventually(func() error { - if expectedIndex != lo.Return1(node.Protocol.MainEngine().EvictionState.LastEvictedSlot()) { - return ierrors.Errorf("AssertEvictedSlot: %s: expected %d, got %d", node.Name, expectedIndex, lo.Return1(node.Protocol.MainEngine().EvictionState.LastEvictedSlot())) + if expectedIndex != lo.Return1(node.Protocol.MainEngineInstance().EvictionState.LastEvictedSlot()) { + return ierrors.Errorf("AssertEvictedSlot: %s: expected %d, got %d", node.Name, expectedIndex, lo.Return1(node.Protocol.MainEngineInstance().EvictionState.LastEvictedSlot())) } return nil diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 1284f6798..5ff3fc966 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -155,9 +155,9 @@ func (n *Node) hookEvents() { } func (n *Node) hookLogging(failOnBlockFiltered bool) { - n.attachEngineLogs(failOnBlockFiltered, n.Protocol.MainEngine()) + n.attachEngineLogs(failOnBlockFiltered, n.Protocol.MainEngineInstance()) - n.attachEngineLogs(failOnBlockFiltered, n.Protocol.MainEngine()) + n.attachEngineLogs(failOnBlockFiltered, n.Protocol.MainEngineInstance()) n.Protocol.OnBlockReceived(func(block *model.Block, source peer.ID) { fmt.Printf("%s > Network.BlockReceived: from %s %s - %d\n", n.Name, source, block.ID(), block.ID().Index()) @@ -213,7 +213,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { } func (n *Node) attachEngineLogs(failOnBlockFiltered bool, instance *engine.Engine) { - engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.MainEngine() != instance, "Candidate", "Main"), instance.Name()[:8]) + engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.MainEngineInstance() != instance, "Candidate", "Main"), instance.Name()[:8]) events := instance.Events events.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { @@ -472,7 +472,7 @@ func (n *Node) SetProtocolParametersHash(hash iotago.Identifier) { func (n *Node) HighestSupportedVersion() iotago.Version { if n.highestSupportedVersion == 0 { - return n.Protocol.MainEngine().LatestAPI().Version() + return n.Protocol.MainEngineInstance().LatestAPI().Version() } return n.highestSupportedVersion diff --git a/pkg/testsuite/storage_accountdiffs.go b/pkg/testsuite/storage_accountdiffs.go index 49365b8f6..7971f4831 100644 --- a/pkg/testsuite/storage_accountdiffs.go +++ b/pkg/testsuite/storage_accountdiffs.go @@ -15,7 +15,7 @@ func (t *TestSuite) AssertStorageAccountDiffs(slotIndex iotago.SlotIndex, accoun for _, node := range nodes { for accountID, diffChange := range accountDiffs { t.Eventually(func() error { - store, err := node.Protocol.MainEngine().Storage.AccountDiffs(slotIndex) + store, err := node.Protocol.MainEngineInstance().Storage.AccountDiffs(slotIndex) if err != nil { return ierrors.Wrapf(err, "AssertStorageAccountDiffs: %s: failed to load accounts diff for slot %d", node.Name, slotIndex) } diff --git a/pkg/testsuite/storage_blocks.go b/pkg/testsuite/storage_blocks.go index 26f44620f..b503b1df3 100644 --- a/pkg/testsuite/storage_blocks.go +++ b/pkg/testsuite/storage_blocks.go @@ -10,7 +10,7 @@ import ( func (t *TestSuite) AssertStorageBlock(block *model.Block, node *mock.Node) { t.Eventually(func() error { - storage, err := node.Protocol.MainEngine().Storage.Blocks(block.ID().Index()) + storage, err := node.Protocol.MainEngineInstance().Storage.Blocks(block.ID().Index()) if err != nil { return ierrors.Errorf("AssertStorageBlock: %s: storage for %s is nil", node.Name, block.ID().Index()) } @@ -37,7 +37,7 @@ func (t *TestSuite) AssertStorageBlockExist(block *model.Block, expectedExist bo t.AssertStorageBlock(block, node) } else { t.Eventually(func() error { - storage, err := node.Protocol.MainEngine().Storage.Blocks(block.ID().Index()) + storage, err := node.Protocol.MainEngineInstance().Storage.Blocks(block.ID().Index()) if err != nil { //nolint:nilerr // expected behavior return nil diff --git a/pkg/testsuite/storage_commitments.go b/pkg/testsuite/storage_commitments.go index 443482047..066f06fe7 100644 --- a/pkg/testsuite/storage_commitments.go +++ b/pkg/testsuite/storage_commitments.go @@ -15,7 +15,7 @@ func (t *TestSuite) AssertStorageCommitments(commitments []*iotago.Commitment, n for _, node := range nodes { for _, commitment := range commitments { t.Eventually(func() error { - storedCommitment, err := node.Protocol.MainEngine().Storage.Commitments().Load(commitment.Index) + storedCommitment, err := node.Protocol.MainEngineInstance().Storage.Commitments().Load(commitment.Index) if err != nil { return ierrors.Wrapf(err, "AssertStorageCommitments: %s: error loading commitment: %s", node.Name, commitment.MustID()) } @@ -37,7 +37,7 @@ func (t *TestSuite) AssertEqualStoredCommitmentAtIndex(index iotago.SlotIndex, n var commitment *model.Commitment var commitmentNode *mock.Node for _, node := range nodes { - storedCommitment, err := node.Protocol.MainEngine().Storage.Commitments().Load(index) + storedCommitment, err := node.Protocol.MainEngineInstance().Storage.Commitments().Load(index) if err != nil { return ierrors.Wrapf(err, "AssertEqualStoredCommitmentAtIndex: %s: error loading commitment for slot: %d", node.Name, index) } diff --git a/pkg/testsuite/storage_prunable.go b/pkg/testsuite/storage_prunable.go index d62c66e01..67bba2fb1 100644 --- a/pkg/testsuite/storage_prunable.go +++ b/pkg/testsuite/storage_prunable.go @@ -26,7 +26,7 @@ func (t *TestSuite) AssertPrunedUntil(expectedStorage *types.Tuple[int, bool], for _, node := range nodes { t.Eventually(func() error { - if err := t.assertPrunedUntil(node.Protocol.MainEngine().Storage, expectedStorage, expectedDecidedUpgrades, expectedPoolStats, expectedCommittee, expectedRewards); err != nil { + if err := t.assertPrunedUntil(node.Protocol.MainEngineInstance().Storage, expectedStorage, expectedDecidedUpgrades, expectedPoolStats, expectedCommittee, expectedRewards); err != nil { return ierrors.Wrapf(err, "AssertPrunedSlot: %s", node.Name) } diff --git a/pkg/testsuite/storage_rootblocks.go b/pkg/testsuite/storage_rootblocks.go index 1faeea08a..43ab091a7 100644 --- a/pkg/testsuite/storage_rootblocks.go +++ b/pkg/testsuite/storage_rootblocks.go @@ -12,7 +12,7 @@ func (t *TestSuite) AssertStorageRootBlocks(blocks []*blocks.Block, nodes ...*mo for _, node := range nodes { for _, block := range blocks { t.Eventually(func() error { - storage, err := node.Protocol.MainEngine().Storage.RootBlocks(block.ID().Index()) + storage, err := node.Protocol.MainEngineInstance().Storage.RootBlocks(block.ID().Index()) if err != nil { return ierrors.Errorf("AssertStorageRootBlocks: %s: error loading root blocks for %s: %v", node.Name, block.ID().Index(), err) } diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 32822ce79..5a5e69554 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -11,8 +11,8 @@ func (t *TestSuite) AssertSnapshotImported(imported bool, nodes ...*mock.Node) { for _, node := range nodes { t.Eventually(func() error { - if imported != node.Protocol.MainEngine().Storage.Settings().IsSnapshotImported() { - return ierrors.Errorf("AssertSnapshotImported: %s: expected %v, got %v", node.Name, imported, node.Protocol.MainEngine().Storage.Settings().IsSnapshotImported()) + if imported != node.Protocol.MainEngineInstance().Storage.Settings().IsSnapshotImported() { + return ierrors.Errorf("AssertSnapshotImported: %s: expected %v, got %v", node.Name, imported, node.Protocol.MainEngineInstance().Storage.Settings().IsSnapshotImported()) } return nil @@ -39,8 +39,8 @@ func (t *TestSuite) AssertLatestCommitment(commitment *iotago.Commitment, nodes for _, node := range nodes { t.Eventually(func() error { - if !commitment.Equals(node.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment()) { - return ierrors.Errorf("AssertLatestCommitment: %s: expected %s, got %s", node.Name, commitment, node.Protocol.MainEngine().Storage.Settings().LatestCommitment()) + if !commitment.Equals(node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment()) { + return ierrors.Errorf("AssertLatestCommitment: %s: expected %s, got %s", node.Name, commitment, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment()) } return nil @@ -53,11 +53,11 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes for _, node := range nodes { t.Eventually(func() error { - if node.Protocol.MainEngine().Storage.Settings().LatestCommitment().ID().Index() < slot { + if node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().ID().Index() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment with at least %v not found in settings.LatestCommitmentR()", node.Name, slot) } - cm, err := node.Protocol.MainEngine().Storage.Commitments().Load(slot) + cm, err := node.Protocol.MainEngineInstance().Storage.Commitments().Load(slot) if err != nil { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: expected %v, got error %v", node.Name, slot, err) } @@ -81,8 +81,8 @@ func (t *TestSuite) AssertLatestCommitmentSlotIndex(slot iotago.SlotIndex, nodes for _, node := range nodes { t.Eventually(func() error { - if slot != node.Protocol.MainEngine().Storage.Settings().LatestCommitment().Index() { - return ierrors.Errorf("AssertLatestCommitmentSlotIndex: %s: expected %v, got %v", node.Name, slot, node.Protocol.MainEngine().Storage.Settings().LatestCommitment().Index()) + if slot != node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index() { + return ierrors.Errorf("AssertLatestCommitmentSlotIndex: %s: expected %v, got %v", node.Name, slot, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index()) } return nil @@ -95,8 +95,8 @@ func (t *TestSuite) AssertLatestCommitmentCumulativeWeight(cw uint64, nodes ...* for _, node := range nodes { t.Eventually(func() error { - if cw != node.Protocol.MainEngine().Storage.Settings().LatestCommitment().CumulativeWeight() { - return ierrors.Errorf("AssertLatestCommitmentCumulativeWeight: %s: expected %v, got %v", node.Name, cw, node.Protocol.MainEngine().Storage.Settings().LatestCommitment().CumulativeWeight()) + if cw != node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().CumulativeWeight() { + return ierrors.Errorf("AssertLatestCommitmentCumulativeWeight: %s: expected %v, got %v", node.Name, cw, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().CumulativeWeight()) } return nil @@ -109,8 +109,8 @@ func (t *TestSuite) AssertLatestFinalizedSlot(slot iotago.SlotIndex, nodes ...*m for _, node := range nodes { t.Eventually(func() error { - if slot != node.Protocol.MainEngine().Storage.Settings().LatestFinalizedSlot() { - return ierrors.Errorf("AssertLatestFinalizedSlot: %s: expected %d, got %d from settings", node.Name, slot, node.Protocol.MainEngine().Storage.Settings().LatestFinalizedSlot()) + if slot != node.Protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot() { + return ierrors.Errorf("AssertLatestFinalizedSlot: %s: expected %d, got %d from settings", node.Name, slot, node.Protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot()) } return nil diff --git a/pkg/testsuite/sybilprotection.go b/pkg/testsuite/sybilprotection.go index 87422e0c2..a9490fc11 100644 --- a/pkg/testsuite/sybilprotection.go +++ b/pkg/testsuite/sybilprotection.go @@ -14,7 +14,7 @@ func (t *TestSuite) AssertSybilProtectionCommittee(slotIndex iotago.SlotIndex, e for _, node := range nodes { t.Eventually(func() error { - accounts := node.Protocol.MainEngine().SybilProtection.SeatManager().Committee(slotIndex).Accounts().IDs() + accounts := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(slotIndex).Accounts().IDs() if !assert.ElementsMatch(t.fakeTesting, expectedAccounts, accounts) { return ierrors.Errorf("AssertSybilProtectionCommittee: %s: expected %s, got %s", node.Name, expectedAccounts, accounts) } @@ -33,7 +33,7 @@ func (t *TestSuite) AssertSybilProtectionOnlineCommittee(expectedSeats []account for _, node := range nodes { t.Eventually(func() error { - seats := node.Protocol.MainEngine().SybilProtection.SeatManager().OnlineCommittee().ToSlice() + seats := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().OnlineCommittee().ToSlice() if !assert.ElementsMatch(t.fakeTesting, expectedSeats, seats) { return ierrors.Errorf("AssertSybilProtectionOnlineCommittee: %s: expected %v, got %v", node.Name, expectedSeats, seats) } diff --git a/pkg/testsuite/testsuite_issue_blocks.go b/pkg/testsuite/testsuite_issue_blocks.go index 2f4d5bbc2..60b4cdd19 100644 --- a/pkg/testsuite/testsuite_issue_blocks.go +++ b/pkg/testsuite/testsuite_issue_blocks.go @@ -275,7 +275,7 @@ func (t *TestSuite) CommitUntilSlot(slot iotago.SlotIndex, activeNodes []*mock.N // first issue a chain of blocks with step size minCA up until slot + minCA + 1 // then issue one more block to accept the last in the chain which will trigger commitment of the second last in the chain - latestCommittedSlot := activeNodes[0].Protocol.MainEngine().Storage.Settings().LatestCommitment().Index() + latestCommittedSlot := activeNodes[0].Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Index() if latestCommittedSlot >= slot { return parent } @@ -286,12 +286,12 @@ func (t *TestSuite) CommitUntilSlot(slot iotago.SlotIndex, activeNodes []*mock.N // preacceptance of nextBlockSlot for _, node := range activeNodes { blockAlias := fmt.Sprintf("chain-%s-%d-%s", parent.ID().Alias(), chainIndex, node.Name) - tip = t.IssueBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) + tip = t.IssueBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) } // acceptance of nextBlockSlot for _, node := range activeNodes { blockAlias := fmt.Sprintf("chain-%s-%d-%s", parent.ID().Alias(), chainIndex+1, node.Name) - tip = t.IssueBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngine().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) + tip = t.IssueBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) } if nextBlockSlot == slot+t.optsMinCommittableAge { break diff --git a/pkg/testsuite/tips.go b/pkg/testsuite/tips.go index b155002f9..9abd91a96 100644 --- a/pkg/testsuite/tips.go +++ b/pkg/testsuite/tips.go @@ -17,7 +17,7 @@ func (t *TestSuite) AssertStrongTips(expectedBlocks []*blocks.Block, nodes ...*m for _, node := range nodes { t.Eventually(func() error { - storedTipsBlocks := node.Protocol.MainEngine().TipManager.StrongTips() + storedTipsBlocks := node.Protocol.MainEngineInstance().TipManager.StrongTips() storedTipsBlockIDs := lo.Map(storedTipsBlocks, tipmanager.TipMetadata.ID) if !assert.ElementsMatch(t.fakeTesting, expectedBlockIDs, storedTipsBlockIDs) { diff --git a/pkg/testsuite/transactions.go b/pkg/testsuite/transactions.go index 1a00e65c8..fa4aad9de 100644 --- a/pkg/testsuite/transactions.go +++ b/pkg/testsuite/transactions.go @@ -19,7 +19,7 @@ func (t *TestSuite) AssertTransaction(transaction *iotago.Transaction, node *moc t.Eventually(func() error { var exists bool - loadedTransaction, exists = node.Protocol.MainEngine().Ledger.TransactionMetadata(transactionID) + loadedTransaction, exists = node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("AssertTransaction: %s: transaction %s does not exist", node.Name, transactionID) } @@ -51,7 +51,7 @@ func (t *TestSuite) AssertTransactionsExist(transactions []*iotago.Transaction, t.AssertTransaction(transaction, node) } else { t.Eventually(func() error { - if lo.Return2(node.Protocol.MainEngine().Ledger.TransactionMetadata(transactionID)) { + if lo.Return2(node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID)) { return ierrors.Errorf("AssertTransactionsExist: %s: transaction %s exists but should not", node.Name, transactionID) } @@ -74,7 +74,7 @@ func (t *TestSuite) assertTransactionsInCacheWithFunc(expectedTransactions []*io require.NoError(t.Testing, err) t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngine().Ledger.TransactionMetadata(transactionID) + blockFromCache, exists := node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("assertTransactionsInCacheWithFunc: %s: transaction %s does not exist", node.Name, transactionID) } @@ -122,7 +122,7 @@ func (t *TestSuite) AssertTransactionInCacheConflicts(transactionConflicts map[* require.NoError(t.Testing, err) t.Eventually(func() error { - transactionFromCache, exists := node.Protocol.MainEngine().Ledger.TransactionMetadata(transactionID) + transactionFromCache, exists := node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("AssertTransactionInCacheConflicts: %s: block %s does not exist", node.Name, transactionID) } diff --git a/pkg/testsuite/transactions_framework.go b/pkg/testsuite/transactions_framework.go index cc85f371a..a854970fd 100644 --- a/pkg/testsuite/transactions_framework.go +++ b/pkg/testsuite/transactions_framework.go @@ -27,7 +27,7 @@ type TransactionFramework struct { func NewTransactionFramework(protocol *protocol.Protocol, genesisSeed []byte, accounts ...snapshotcreator.AccountDetails) *TransactionFramework { // The genesis output is on index 0 of the genesis TX - genesisOutput, err := protocol.MainEngine().Ledger.Output(iotago.OutputIDFromTransactionIDAndIndex(snapshotcreator.GenesisTransactionID, 0)) + genesisOutput, err := protocol.MainEngineInstance().Ledger.Output(iotago.OutputIDFromTransactionIDAndIndex(snapshotcreator.GenesisTransactionID, 0)) if err != nil { panic(err) } @@ -43,7 +43,7 @@ func NewTransactionFramework(protocol *protocol.Protocol, genesisSeed []byte, ac // Genesis TX outputID := iotago.OutputIDFromTransactionIDAndIndex(snapshotcreator.GenesisTransactionID, uint16(idx+1)) - if tf.states[fmt.Sprintf("Genesis:%d", idx+1)], err = protocol.MainEngine().Ledger.Output(outputID); err != nil { + if tf.states[fmt.Sprintf("Genesis:%d", idx+1)], err = protocol.MainEngineInstance().Ledger.Output(outputID); err != nil { panic(err) } } diff --git a/pkg/testsuite/upgrades.go b/pkg/testsuite/upgrades.go index cea60efbe..00fdfb424 100644 --- a/pkg/testsuite/upgrades.go +++ b/pkg/testsuite/upgrades.go @@ -14,7 +14,7 @@ func (t *TestSuite) AssertEpochVersions(epochVersions map[iotago.Version]iotago. t.Eventually(func() error { for version, expectedEpoch := range epochVersions { - epochForVersion, exists := node.Protocol.MainEngine().Storage.Settings().APIProvider().EpochForVersion(version) + epochForVersion, exists := node.Protocol.MainEngineInstance().Storage.Settings().APIProvider().EpochForVersion(version) if !exists { return ierrors.Errorf("AssertEpochVersions: %s: version %d not found", node.Name, version) } @@ -36,7 +36,7 @@ func (t *TestSuite) AssertVersionAndProtocolParameters(versionsAndProtocolParame t.Eventually(func() error { for version, expectedProtocolParameters := range versionsAndProtocolParameters { - protocolParameters := node.Protocol.MainEngine().Storage.Settings().APIProvider().ProtocolParameters(version) + protocolParameters := node.Protocol.MainEngineInstance().Storage.Settings().APIProvider().ProtocolParameters(version) if expectedProtocolParameters == nil { if protocolParameters != nil { @@ -67,7 +67,7 @@ func (t *TestSuite) AssertVersionAndProtocolParametersHashes(versionsAndProtocol t.Eventually(func() error { for version, expectedProtocolParametersHash := range versionsAndProtocolParametersHashes { - protocolParametersHash := node.Protocol.MainEngine().Storage.Settings().APIProvider().ProtocolParametersHash(version) + protocolParametersHash := node.Protocol.MainEngineInstance().Storage.Settings().APIProvider().ProtocolParametersHash(version) if expectedProtocolParametersHash == iotago.EmptyIdentifier { if protocolParametersHash != iotago.EmptyIdentifier { From a4c850477999b2ea9f71ece0a90c300153d18b96 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:32:09 +0200 Subject: [PATCH 105/356] Refactor: reverted more changes --- components/validator/issuer.go | 2 +- pkg/blockfactory/blockissuer.go | 2 +- pkg/protocol/protocol.go | 2 +- pkg/testsuite/mock/node.go | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/validator/issuer.go b/components/validator/issuer.go index 4e22b5b09..9b913159c 100644 --- a/components/validator/issuer.go +++ b/components/validator/issuer.go @@ -42,7 +42,7 @@ func issueValidatorBlock(ctx context.Context) { blockfactory.WithSlotCommitment(latestCommitment.Commitment()), ), blockfactory.WithProtocolParametersHash(protocolParametersHash), - blockfactory.WithHighestSupportedVersion(deps.Protocol.MainEngineInstance().LatestAPI().Version()), + blockfactory.WithHighestSupportedVersion(deps.Protocol.LatestAPI().Version()), ) if err != nil { Component.LogWarnf("error creating validator block: %s", err.Error()) diff --git a/pkg/blockfactory/blockissuer.go b/pkg/blockfactory/blockissuer.go index dc27aba79..55891514f 100644 --- a/pkg/blockfactory/blockissuer.go +++ b/pkg/blockfactory/blockissuer.go @@ -82,7 +82,7 @@ func (i *BlockIssuer) CreateValidationBlock(ctx context.Context, issuerAccount A if blockParams.HighestSupportedVersion == nil { // We use the latest supported version and not the current one. - version := i.protocol.MainEngineInstance().LatestAPI().Version() + version := i.protocol.LatestAPI().Version() blockParams.HighestSupportedVersion = &version } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index eb2344056..481213e1d 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -72,7 +72,7 @@ func (p *Protocol) CurrentAPI() iotago.API { } func (p *Protocol) LatestAPI() iotago.API { - return p.MainEngineInstance().LatestAPI() + return p.LatestAPI() } func (p *Protocol) OnError(callback func(error)) (unsubscribe func()) { diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 5ff3fc966..7ad07b30e 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -472,7 +472,7 @@ func (n *Node) SetProtocolParametersHash(hash iotago.Identifier) { func (n *Node) HighestSupportedVersion() iotago.Version { if n.highestSupportedVersion == 0 { - return n.Protocol.MainEngineInstance().LatestAPI().Version() + return n.Protocol.LatestAPI().Version() } return n.highestSupportedVersion From 97d0ec52d502650c3dfa41ee9a02c920dea359d9 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:36:59 +0200 Subject: [PATCH 106/356] Feat: addressed linter warning --- pkg/protocol/chains.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index d106f74da..35e86d2cc 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -114,7 +114,9 @@ func (c *Chains) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { } func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { - c.requestCommitment(commitment.PrevID(), true, commitment.setParent) + if _, err := c.requestCommitment(commitment.PrevID(), true, commitment.setParent); err != nil { + c.protocol.TriggerError(ierrors.Wrapf(err, "failed to request parent commitment %s", commitment.PrevID())) + } slotEvictedEvent.OnTrigger(func() { commitment.evicted.Trigger() From 6b0e2766e9ad96c155f5b02c206bd2f372d19300 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:38:16 +0200 Subject: [PATCH 107/356] Fix: fixed erroneous revert --- pkg/protocol/protocol.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 481213e1d..52e60e106 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -55,12 +55,12 @@ func (p *Protocol) Workers() *workerpool.Group { // APIForVersion returns the API for the given version. func (p *Protocol) APIForVersion(version iotago.Version) (api iotago.API, err error) { - return p.APIForVersion(version) + return p.MainEngineInstance().APIForVersion(version) } // APIForSlot returns the API for the given slot. func (p *Protocol) APIForSlot(slot iotago.SlotIndex) iotago.API { - return p.APIForSlot(slot) + return p.MainEngineInstance().APIForSlot(slot) } func (p *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { @@ -68,11 +68,11 @@ func (p *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { } func (p *Protocol) CurrentAPI() iotago.API { - return p.CurrentAPI() + return p.MainEngineInstance().CurrentAPI() } func (p *Protocol) LatestAPI() iotago.API { - return p.LatestAPI() + return p.MainEngineInstance().LatestAPI() } func (p *Protocol) OnError(callback func(error)) (unsubscribe func()) { From 1d78545ba4285b4623a735c6378d51ab74afcda8 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:50:00 +0200 Subject: [PATCH 108/356] Refactor: reverted more changes --- components/dashboard/livefeed.go | 2 +- components/dashboard/slotfeed.go | 2 +- components/dashboard/visualizer.go | 6 +-- components/dashboard_metrics/component.go | 8 ++-- components/debugapi/component.go | 8 ++-- components/inx/server_blocks.go | 6 +-- components/inx/server_node.go | 2 +- components/inx/server_utxo.go | 2 +- components/metrics/metrics_accounts.go | 2 +- components/metrics/metrics_commitments.go | 8 ++-- components/metrics/metrics_conflicts.go | 6 +-- components/metrics/metrics_scheduler.go | 26 +++++------ components/metrics/metrics_slots.go | 18 ++++---- components/metrics/metrics_tangle.go | 6 +-- components/metricstracker/component.go | 6 +-- components/protocol/component.go | 56 +++++++++++------------ components/validator/component.go | 2 +- pkg/blockfactory/blockissuer.go | 4 +- pkg/protocol/engines.go | 5 +- pkg/protocol/events.go | 13 ++++++ pkg/protocol/gossip.go | 5 +- pkg/protocol/protocol.go | 3 ++ pkg/testsuite/mock/node.go | 2 +- 23 files changed, 106 insertions(+), 92 deletions(-) create mode 100644 pkg/protocol/events.go diff --git a/components/dashboard/livefeed.go b/components/dashboard/livefeed.go index 9877a1cf5..2821106a6 100644 --- a/components/dashboard/livefeed.go +++ b/components/dashboard/livefeed.go @@ -12,7 +12,7 @@ import ( func runLiveFeed(component *app.Component) { if err := component.Daemon().BackgroundWorker("Dashboard[Livefeed]", func(ctx context.Context) { - hook := deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(b *blocks.Block) { + hook := deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(b *blocks.Block) { payloadType := iotago.PayloadType(0) if basicBlock, isBasicBlock := b.BasicBlock(); isBasicBlock && basicBlock.Payload != nil { payloadType = basicBlock.Payload.PayloadType() diff --git a/components/dashboard/slotfeed.go b/components/dashboard/slotfeed.go index 23a45ae26..165840143 100644 --- a/components/dashboard/slotfeed.go +++ b/components/dashboard/slotfeed.go @@ -17,7 +17,7 @@ type SlotInfo struct { func runSlotsLiveFeed(component *app.Component) { if err := component.Daemon().BackgroundWorker("Dashboard[SlotsLiveFeed]", func(ctx context.Context) { - hook := deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(onSlotCommitted, event.WithWorkerPool(component.WorkerPool)) + hook := deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(onSlotCommitted, event.WithWorkerPool(component.WorkerPool)) <-ctx.Done() diff --git a/components/dashboard/visualizer.go b/components/dashboard/visualizer.go index 3bfe0bf92..60f097fb6 100644 --- a/components/dashboard/visualizer.go +++ b/components/dashboard/visualizer.go @@ -83,7 +83,7 @@ func sendTipInfo(block *blocks.Block, isTip bool) { func runVisualizer(component *app.Component) { if err := component.Daemon().BackgroundWorker("Dashboard[Visualizer]", func(ctx context.Context) { unhook := lo.Batch( - deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { sendVertex(block, false) tx, hasTx := block.Transaction() @@ -100,10 +100,10 @@ func runVisualizer(component *app.Component) { // currentSlot.Store(int64(block.ID().Index())) // } }, event.WithWorkerPool(component.WorkerPool)).Unhook, - deps.Protocol.MainEngineEvents.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { sendVertex(block, block.IsConfirmed()) }, event.WithWorkerPool(component.WorkerPool)).Unhook, - deps.Protocol.MainEngineEvents.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { + deps.Protocol.Events.Engine.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { tipMetadata.IsStrongTip().OnUpdate(func(_, newValue bool) { sendTipInfo(tipMetadata.Block(), newValue) }) diff --git a/components/dashboard_metrics/component.go b/components/dashboard_metrics/component.go index 45070dea6..26e4cdce7 100644 --- a/components/dashboard_metrics/component.go +++ b/components/dashboard_metrics/component.go @@ -110,19 +110,19 @@ func configureComponentCountersEvents() { incComponentCounter(Received) }) - deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(_ *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(_ *blocks.Block) { incComponentCounter(Attached) }) - deps.Protocol.MainEngineEvents.BlockDAG.BlockSolid.Hook(func(b *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockSolid.Hook(func(b *blocks.Block) { incComponentCounter(Solidified) }) - deps.Protocol.MainEngineEvents.Booker.BlockBooked.Hook(func(b *blocks.Block) { + deps.Protocol.Events.Engine.Booker.BlockBooked.Hook(func(b *blocks.Block) { incComponentCounter(Booked) }) - deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(b *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(b *blocks.Block) { incComponentCounter(Scheduled) }) } diff --git a/components/debugapi/component.go b/components/debugapi/component.go index 6f085ce9a..9b4a57ab4 100644 --- a/components/debugapi/component.go +++ b/components/debugapi/component.go @@ -89,13 +89,13 @@ func configure() error { routeGroup := deps.RestRouteManager.AddRoute("debug/v2") - deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { blocksPerSlot.Set(block.ID().Index(), append(lo.Return1(blocksPerSlot.GetOrCreate(block.ID().Index(), func() []*blocks.Block { return make([]*blocks.Block, 0) })), block)) }) - deps.Protocol.MainEngineEvents.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { + deps.Protocol.Events.Engine.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { epoch := deps.Protocol.APIForSlot(index).TimeProvider().EpochFromSlot(index) if epoch < iotago.EpochIndex(ParamsDebugAPI.PruningThreshold) { return @@ -114,13 +114,13 @@ func configure() error { }, event.WithWorkerPool(workerpool.NewGroup("DebugAPI").CreatePool("PruneDebugAPI", 1))) - deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(scd *notarization.SlotCommittedDetails) { + deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(scd *notarization.SlotCommittedDetails) { if err := storeTransactionsPerSlot(scd); err != nil { Component.LogWarnf(">> DebugAPI Error: %s\n", err) } }) - deps.Protocol.MainEngineEvents.EvictionState.SlotEvicted.Hook(func(index iotago.SlotIndex) { + deps.Protocol.Events.Engine.EvictionState.SlotEvicted.Hook(func(index iotago.SlotIndex) { blocksInSlot, exists := blocksPerSlot.Get(index) if !exists { return diff --git a/components/inx/server_blocks.go b/components/inx/server_blocks.go index d6b5f265c..8c2c32bfb 100644 --- a/components/inx/server_blocks.go +++ b/components/inx/server_blocks.go @@ -49,7 +49,7 @@ func (s *Server) ListenToBlocks(_ *inx.NoParams, srv inx.INX_ListenToBlocksServe wp := workerpool.New("ListenToBlocks", workerCount).Start() - unhook := deps.Protocol.MainEngineEvents.Booker.BlockBooked.Hook(func(block *blocks.Block) { + unhook := deps.Protocol.Events.Engine.Booker.BlockBooked.Hook(func(block *blocks.Block) { payload := inx.NewBlockWithBytes(block.ID(), block.ModelBlock().Data()) if err := srv.Send(payload); err != nil { Component.LogErrorf("send error: %v", err) @@ -74,7 +74,7 @@ func (s *Server) ListenToAcceptedBlocks(_ *inx.NoParams, srv inx.INX_ListenToAcc wp := workerpool.New("ListenToAcceptedBlocks", workerCount).Start() - unhook := deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { + unhook := deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { payload := inx.NewBlockWithBytes(block.ID(), block.ModelBlock().Data()) if err := srv.Send(payload); err != nil { Component.LogErrorf("send error: %v", err) @@ -99,7 +99,7 @@ func (s *Server) ListenToConfirmedBlocks(_ *inx.NoParams, srv inx.INX_ListenToCo wp := workerpool.New("ListenToConfirmedBlocks", workerCount).Start() - unhook := deps.Protocol.MainEngineEvents.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { + unhook := deps.Protocol.Events.Engine.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { payload := inx.NewBlockWithBytes(block.ID(), block.ModelBlock().Data()) if err := srv.Send(payload); err != nil { Component.LogErrorf("send error: %v", err) diff --git a/components/inx/server_node.go b/components/inx/server_node.go index 801940cd2..8c689de8c 100644 --- a/components/inx/server_node.go +++ b/components/inx/server_node.go @@ -67,7 +67,7 @@ func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_List } wp.Start() - unhook := deps.Protocol.MainEngineEvents.SyncManager.UpdatedStatus.Hook(onUpdate, event.WithWorkerPool(wp)).Unhook + unhook := deps.Protocol.Events.Engine.SyncManager.UpdatedStatus.Hook(onUpdate, event.WithWorkerPool(wp)).Unhook <-ctx.Done() unhook() diff --git a/components/inx/server_utxo.go b/components/inx/server_utxo.go index 4f9ac71ef..f38a846da 100644 --- a/components/inx/server_utxo.go +++ b/components/inx/server_utxo.go @@ -292,7 +292,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li wp := workerpool.New("ListenToLedgerUpdates", workerCount).Start() - unhook := deps.Protocol.MainEngineEvents.Ledger.StateDiffApplied.Hook(func(index iotago.SlotIndex, newOutputs utxoledger.Outputs, newSpents utxoledger.Spents) { + unhook := deps.Protocol.Events.Engine.Ledger.StateDiffApplied.Hook(func(index iotago.SlotIndex, newOutputs utxoledger.Outputs, newSpents utxoledger.Spents) { done, err := handleRangedSend2(index, newOutputs, newSpents, stream, catchUpFunc, sendFunc) switch { case err != nil: diff --git a/components/metrics/metrics_accounts.go b/components/metrics/metrics_accounts.go index 4c1ed2021..582ec769b 100644 --- a/components/metrics/metrics_accounts.go +++ b/components/metrics/metrics_accounts.go @@ -22,7 +22,7 @@ var AccountMetrics = collector.NewCollection(accountNamespace, collector.WithLabels("account"), collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { accountData, exists, _ := deps.Protocol.MainEngineInstance().Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Index()) if exists { deps.Collector.Update(accountNamespace, credits, float64(accountData.Credits.Value), accountData.ID.String()) diff --git a/components/metrics/metrics_commitments.go b/components/metrics/metrics_commitments.go index bebfd6fe4..843b73851 100644 --- a/components/metrics/metrics_commitments.go +++ b/components/metrics/metrics_commitments.go @@ -29,7 +29,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithLabels("commitment"), collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { deps.Collector.Update(commitmentsNamespace, latestCommitment, float64(details.Commitment.ID().Index()), details.Commitment.ID().String()) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -38,7 +38,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Last commitment finalized by the node."), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.SlotGadget.SlotFinalized.Hook(func(slot iotago.SlotIndex) { + deps.Protocol.Events.Engine.SlotGadget.SlotFinalized.Hook(func(slot iotago.SlotIndex) { deps.Collector.Update(commitmentsNamespace, finalizedCommitment, float64(slot)) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -61,7 +61,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithResetBeforeCollecting(true), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { deps.Collector.Update(commitmentsNamespace, acceptedBlocks, float64(details.AcceptedBlocks.Size()), strconv.Itoa(int(details.Commitment.Index()))) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -73,7 +73,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithResetBeforeCollecting(true), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { deps.Collector.Update(commitmentsNamespace, validators, float64(details.ActiveValidatorsCount), strconv.Itoa(int(details.Commitment.Index()))) }, event.WithWorkerPool(Component.WorkerPool)) }), diff --git a/components/metrics/metrics_conflicts.go b/components/metrics/metrics_conflicts.go index 54d1570fa..54caa7a8c 100644 --- a/components/metrics/metrics_conflicts.go +++ b/components/metrics/metrics_conflicts.go @@ -21,7 +21,7 @@ var ConflictMetrics = collector.NewCollection(conflictNamespace, collector.WithType(collector.Counter), collector.WithHelp("Time since transaction issuance to the conflict acceptance"), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { + deps.Protocol.Events.Engine.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(conflictID); exists { firstAttachmentID := txMetadata.EarliestIncludedAttachment() if block, blockExists := deps.Protocol.MainEngineInstance().BlockFromCache(firstAttachmentID); blockExists { @@ -37,7 +37,7 @@ var ConflictMetrics = collector.NewCollection(conflictNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of resolved (accepted) conflicts"), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { + deps.Protocol.Events.Engine.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { deps.Collector.Increment(conflictNamespace, resolvedConflictCount) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -46,7 +46,7 @@ var ConflictMetrics = collector.NewCollection(conflictNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of created conflicts"), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { + deps.Protocol.Events.Engine.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { deps.Collector.Increment(conflictNamespace, allConflictCounts) }, event.WithWorkerPool(Component.WorkerPool)) }), diff --git a/components/metrics/metrics_scheduler.go b/components/metrics/metrics_scheduler.go index 5f84ae243..4bf22e2af 100644 --- a/components/metrics/metrics_scheduler.go +++ b/components/metrics/metrics_scheduler.go @@ -34,22 +34,22 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Current size of each node's queue (in work units)."), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { + deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) @@ -62,22 +62,22 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Current size of each node's queue (as block count)."), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { + deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) @@ -89,7 +89,7 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Current amount of mana of each issuer in the queue."), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { mana, err := deps.Protocol.MainEngineInstance().Ledger.ManaManager().GetManaOnAccount(block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Index()) if err != nil { deps.Protocol.MainEngineInstance().ErrorHandler("metrics")(ierrors.Wrapf(err, "failed to retrieve mana on account %s for slot %d", block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Index())) @@ -106,22 +106,22 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithLabels("state"), collector.WithHelp("Number of blocks processed by the scheduler."), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { deps.Collector.Increment(schedulerNamespace, schedulerProcessedBlocks, enqueuedBlockLabel) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { + deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { deps.Collector.Increment(schedulerNamespace, schedulerProcessedBlocks, droppedBlockLabel) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { deps.Collector.Increment(schedulerNamespace, schedulerProcessedBlocks, skippedBlockLabel) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { deps.Collector.Increment(schedulerNamespace, schedulerProcessedBlocks, scheduledBlockLabel) }, event.WithWorkerPool(Component.WorkerPool)) diff --git a/components/metrics/metrics_slots.go b/components/metrics/metrics_slots.go index ff2dad81c..5a5865544 100644 --- a/components/metrics/metrics_slots.go +++ b/components/metrics/metrics_slots.go @@ -32,7 +32,7 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Number of blocks seen by the node in a slot."), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { eventSlot := int(block.ID().Index()) deps.Collector.Increment(slotNamespace, totalBlocks, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) @@ -45,7 +45,7 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithLabels(slotLabelName), collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { eventSlot := int(block.ID().Index()) deps.Collector.Increment(slotNamespace, acceptedBlocksInSlot, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) @@ -57,7 +57,7 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Number of invalid blocks in a slot."), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { + deps.Protocol.Events.Engine.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { eventSlot := int(block.ID().Index()) deps.Collector.Increment(slotNamespace, invalidBlocks, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) @@ -88,12 +88,12 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithInitFunc(func() { // Attach to BlockAttached to initialize metric for the slot for improved readability in the Dashboard. // Update for a counter doesn't override the value with 0, but rather adds 0 to the value. - deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { eventSlot := int(block.ID().Index()) deps.Collector.Update(slotNamespace, createdConflicts, 0, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { + deps.Protocol.Events.Engine.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { for _, attachment := range txMetadata.Attachments() { deps.Collector.Increment(slotNamespace, createdConflicts, strconv.Itoa(int(attachment.Index()))) @@ -110,12 +110,12 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithInitFunc(func() { // Attach to BlockAttached to initialize metric for the slot for improved readability in the Dashboard. // Update for a counter doesn't override the value with 0, but rather adds 0 to the value. - deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { eventSlot := int(block.ID().Index()) deps.Collector.Update(slotNamespace, acceptedConflicts, 0, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { + deps.Protocol.Events.Engine.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { for _, attachmentBlockID := range txMetadata.Attachments() { if attachment, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { @@ -134,12 +134,12 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithInitFunc(func() { // Attach to BlockAttached to initialize metric for the slot for improved readability in the Dashboard. // Update for a counter doesn't override the value with 0, but rather adds 0 to the value. - deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { eventSlot := int(block.ID().Index()) deps.Collector.Update(slotNamespace, rejectedConflicts, 0, strconv.Itoa(eventSlot)) }, event.WithWorkerPool(Component.WorkerPool)) - deps.Protocol.MainEngineEvents.ConflictDAG.ConflictRejected.Hook(func(conflictID iotago.TransactionID) { + deps.Protocol.Events.Engine.ConflictDAG.ConflictRejected.Hook(func(conflictID iotago.TransactionID) { if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { for _, attachmentBlockID := range txMetadata.Attachments() { if attachment, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { diff --git a/components/metrics/metrics_tangle.go b/components/metrics/metrics_tangle.go index 005e20c06..44a20ba72 100644 --- a/components/metrics/metrics_tangle.go +++ b/components/metrics/metrics_tangle.go @@ -39,7 +39,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Counter), collector.WithHelp("Total number of blocks attached."), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(_ *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(_ *blocks.Block) { deps.Collector.Increment(tangleNamespace, blocksTotal) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -48,7 +48,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of blocks missing during the solidification in the tangle"), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.BlockDAG.BlockMissing.Hook(func(_ *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockMissing.Hook(func(_ *blocks.Block) { deps.Collector.Increment(tangleNamespace, missingBlocksCount) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -57,7 +57,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of accepted blocks"), collector.WithInitFunc(func() { - deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(_ *blocks.Block) { + deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(_ *blocks.Block) { deps.Collector.Increment(tangleNamespace, acceptedBlocksCount) }, event.WithWorkerPool(Component.WorkerPool)) }), diff --git a/components/metricstracker/component.go b/components/metricstracker/component.go index 828185a27..a5d0ac03b 100644 --- a/components/metricstracker/component.go +++ b/components/metricstracker/component.go @@ -63,13 +63,13 @@ func run() error { Component.LogInfo("Starting Metrics Tracker ... done") unhook := lo.Batch( - deps.Protocol.MainEngineEvents.BlockDAG.BlockAttached.Hook(func(b *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockAttached.Hook(func(b *blocks.Block) { deps.MetricsTracker.metrics.Blocks.Inc() }, event.WithWorkerPool(Component.WorkerPool)).Unhook, - deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(_ *notarization.SlotCommittedDetails) { + deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(_ *notarization.SlotCommittedDetails) { deps.MetricsTracker.measure() }, event.WithWorkerPool(Component.WorkerPool)).Unhook, - deps.Protocol.MainEngineEvents.BlockGadget.BlockConfirmed.Hook(func(b *blocks.Block) { + deps.Protocol.Events.Engine.BlockGadget.BlockConfirmed.Hook(func(b *blocks.Block) { deps.MetricsTracker.metrics.ConfirmedBlocks.Inc() }, event.WithWorkerPool(Component.WorkerPool)).Unhook, ) diff --git a/components/protocol/component.go b/components/protocol/component.go index 41aa3a81f..66a928261 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -146,91 +146,91 @@ func configure() error { Component.LogDebugf("BlockReceived: %s", block.ID()) }) - deps.Protocol.MainEngineEvents.BlockProcessed.Hook(func(blockID iotago.BlockID) { + deps.Protocol.Events.Engine.BlockProcessed.Hook(func(blockID iotago.BlockID) { Component.LogDebugf("BlockProcessed: %s", blockID) }) - deps.Protocol.MainEngineEvents.AcceptedBlockProcessed.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.AcceptedBlockProcessed.Hook(func(block *blocks.Block) { Component.LogDebugf("AcceptedBlockProcessed: %s", block.ID()) }) - deps.Protocol.MainEngineEvents.Filter.BlockPreFiltered.Hook(func(event *filter.BlockPreFilteredEvent) { + deps.Protocol.Events.Engine.Filter.BlockPreFiltered.Hook(func(event *filter.BlockPreFilteredEvent) { Component.LogDebugf("BlockPreFiltered: %s - %s", event.Block.ID(), event.Reason.Error()) }) - deps.Protocol.MainEngineEvents.Filter.BlockPreAllowed.Hook(func(blk *model.Block) { + deps.Protocol.Events.Engine.Filter.BlockPreAllowed.Hook(func(blk *model.Block) { Component.LogDebugf("BlockPreAllowed: %s - %s", blk.ID()) }) - deps.Protocol.MainEngineEvents.CommitmentFilter.BlockAllowed.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.CommitmentFilter.BlockAllowed.Hook(func(block *blocks.Block) { Component.LogDebugf("CommitmentFilter.BlockAllowed: %s\n", block.ID()) }) - deps.Protocol.MainEngineEvents.CommitmentFilter.BlockFiltered.Hook(func(event *commitmentfilter.BlockFilteredEvent) { + deps.Protocol.Events.Engine.CommitmentFilter.BlockFiltered.Hook(func(event *commitmentfilter.BlockFilteredEvent) { Component.LogWarnf("CommitmentFilter.BlockFiltered: %s - %s\n", event.Block.ID(), event.Reason.Error()) }) - deps.Protocol.MainEngineEvents.TipManager.BlockAdded.Hook(func(tip tipmanager.TipMetadata) { + deps.Protocol.Events.Engine.TipManager.BlockAdded.Hook(func(tip tipmanager.TipMetadata) { Component.LogDebugf("BlockAdded to tip pool: %s; is strong: %v; is weak: %v", tip.ID(), tip.IsStrongTip(), tip.IsWeakTip()) }) - deps.Protocol.MainEngineEvents.BlockDAG.BlockSolid.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockDAG.BlockSolid.Hook(func(block *blocks.Block) { Component.LogDebugf("BlockSolid: %s", block.ID()) }) - deps.Protocol.MainEngineEvents.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { + deps.Protocol.Events.Engine.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { Component.LogDebugf("BlockInvalid in blockDAG: %s, error: %v", block.ID(), err.Error()) }) - deps.Protocol.MainEngineEvents.Booker.BlockBooked.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Booker.BlockBooked.Hook(func(block *blocks.Block) { Component.LogDebugf("BlockBooked: %s", block.ID()) }) - deps.Protocol.MainEngineEvents.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { + deps.Protocol.Events.Engine.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { Component.LogDebugf("BlockInvalid in booker: %s, error: %v", block.ID(), err.Error()) }) - deps.Protocol.MainEngineEvents.BlockGadget.BlockPreAccepted.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockGadget.BlockPreAccepted.Hook(func(block *blocks.Block) { Component.LogDebugf("BlockPreAccepted: %s", block.ID()) }) - deps.Protocol.MainEngineEvents.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { Component.LogDebugf("BlockAccepted: %s", block.ID()) }) - deps.Protocol.MainEngineEvents.BlockGadget.BlockPreConfirmed.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockGadget.BlockPreConfirmed.Hook(func(block *blocks.Block) { Component.LogDebugf("BlockPreConfirmed: %s", block.ID()) }) - deps.Protocol.MainEngineEvents.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { Component.LogDebugf("BlockConfirmed: %s", block.ID()) }) - deps.Protocol.MainEngineEvents.Clock.AcceptedTimeUpdated.Hook(func(time time.Time) { + deps.Protocol.Events.Engine.Clock.AcceptedTimeUpdated.Hook(func(time time.Time) { Component.LogDebugf("AcceptedTimeUpdated: Slot %d @ %s", deps.Protocol.CurrentAPI().TimeProvider().SlotFromTime(time), time) }) - deps.Protocol.MainEngineEvents.Clock.ConfirmedTimeUpdated.Hook(func(time time.Time) { + deps.Protocol.Events.Engine.Clock.ConfirmedTimeUpdated.Hook(func(time time.Time) { Component.LogDebugf("ConfirmedTimeUpdated: Slot %d @ %s", deps.Protocol.CurrentAPI().TimeProvider().SlotFromTime(time), time) }) - deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { Component.LogInfof("SlotCommitted: %s - %d", details.Commitment.ID(), details.Commitment.Index()) }) - deps.Protocol.MainEngineEvents.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { + deps.Protocol.Events.Engine.SlotGadget.SlotFinalized.Hook(func(index iotago.SlotIndex) { Component.LogInfof("SlotFinalized: %d", index) }) - deps.Protocol.MainEngineEvents.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { Component.LogDebugf("BlockScheduled: %s", block.ID()) }) - deps.Protocol.MainEngineEvents.Scheduler.BlockDropped.Hook(func(block *blocks.Block, err error) { + deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, err error) { Component.LogDebugf("BlockDropped: %s; reason: %s", block.ID(), err) }) - deps.Protocol.MainEngineEvents.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { + deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { Component.LogDebugf("BlockSkipped: %s", block.ID()) }) @@ -246,27 +246,27 @@ func configure() error { Component.LogDebugf("SlotCommitmentReceived: %s", commitment.ID()) }) - deps.Protocol.MainEngineEvents.SybilProtection.CommitteeSelected.Hook(func(committee *account.Accounts, epoch iotago.EpochIndex) { + deps.Protocol.Events.Engine.SybilProtection.CommitteeSelected.Hook(func(committee *account.Accounts, epoch iotago.EpochIndex) { Component.LogInfof("CommitteeSelected: Epoch %d - %s (reused: %t)", epoch, committee.IDs(), committee.IsReused()) }) - deps.Protocol.MainEngineEvents.SybilProtection.RewardsCommitted.Hook(func(epoch iotago.EpochIndex) { + deps.Protocol.Events.Engine.SybilProtection.RewardsCommitted.Hook(func(epoch iotago.EpochIndex) { Component.LogInfof("RewardsCommitted: Epoch %d", epoch) }) - deps.Protocol.MainEngineEvents.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { + deps.Protocol.Events.Engine.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { Component.LogWarnf("Booker BlockInvalid: Block %s - %s", block.ID(), err.Error()) }) - deps.Protocol.MainEngineEvents.SeatManager.OnlineCommitteeSeatAdded.Hook(func(seatIndex account.SeatIndex, account iotago.AccountID) { + deps.Protocol.Events.Engine.SeatManager.OnlineCommitteeSeatAdded.Hook(func(seatIndex account.SeatIndex, account iotago.AccountID) { Component.LogWarnf("OnlineCommitteeSeatAdded: %s - %d", account.ToHex(), seatIndex) }) - deps.Protocol.MainEngineEvents.SeatManager.OnlineCommitteeSeatRemoved.Hook(func(seatIndex account.SeatIndex) { + deps.Protocol.Events.Engine.SeatManager.OnlineCommitteeSeatRemoved.Hook(func(seatIndex account.SeatIndex) { Component.LogWarnf("OnlineCommitteeSeatRemoved: seatIndex: %d", seatIndex) }) - deps.Protocol.MainEngineEvents.Booker.TransactionInvalid.Hook(func(transaction mempool.TransactionMetadata, reason error) { + deps.Protocol.Events.Engine.Booker.TransactionInvalid.Hook(func(transaction mempool.TransactionMetadata, reason error) { Component.LogWarnf("TransactionInvalid: transaction %s - %s", transaction.ID(), reason.Error()) }) diff --git a/components/validator/component.go b/components/validator/component.go index 7aef545d6..9d1f15392 100644 --- a/components/validator/component.go +++ b/components/validator/component.go @@ -56,7 +56,7 @@ func run() error { checkValidatorStatus(ctx) - deps.Protocol.MainEngineEvents.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { + deps.Protocol.Events.Engine.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { checkValidatorStatus(ctx) }, event.WithWorkerPool(Component.WorkerPool)) diff --git a/pkg/blockfactory/blockissuer.go b/pkg/blockfactory/blockissuer.go index 55891514f..be7e06d1f 100644 --- a/pkg/blockfactory/blockissuer.go +++ b/pkg/blockfactory/blockissuer.go @@ -241,7 +241,7 @@ func (i *BlockIssuer) IssueBlockAndAwaitEvent(ctx context.Context, block *model. } }, event.WithWorkerPool(i.workerPool)).Unhook() - defer i.protocol.MainEngineEvents.Filter.BlockPreFiltered.Hook(func(event *filter.BlockPreFilteredEvent) { + defer i.protocol.Events.Engine.Filter.BlockPreFiltered.Hook(func(event *filter.BlockPreFilteredEvent) { if block.ID() != event.Block.ID() { return } @@ -377,7 +377,7 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco if !i.optsRateSetterEnabled || i.protocol.MainEngineInstance().Scheduler.IsBlockIssuerReady(modelBlock.ProtocolBlock().IssuerID) { i.events.BlockConstructed.Trigger(modelBlock) - if err = i.IssueBlockAndAwaitEvent(ctx, modelBlock, i.protocol.MainEngineEvents.BlockDAG.BlockAttached); err != nil { + if err = i.IssueBlockAndAwaitEvent(ctx, modelBlock, i.protocol.Events.Engine.BlockDAG.BlockAttached); err != nil { return iotago.EmptyBlockID(), ierrors.Wrap(err, "error issuing model block") } } diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 9cb46f275..329908512 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -9,8 +9,6 @@ import ( ) type Engines struct { - MainEngineEvents *engine.Events - mainEngine reactive.Variable[*engine.Engine] candidateEngine reactive.Variable[*engine.Engine] @@ -19,7 +17,6 @@ type Engines struct { func newEngines(protocol *Protocol) *Engines { e := &Engines{ - MainEngineEvents: engine.NewEvents(), EngineManager: enginemanager.New( protocol.Workers(), func(err error) { @@ -62,7 +59,7 @@ func newEngines(protocol *Protocol) *Engines { e.mainEngine.Set(newChain.Engine()) }) - e.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { e.MainEngineEvents.LinkTo(engine.Events) }) + e.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { protocol.Events.Engine.LinkTo(engine.Events) }) }) return e diff --git a/pkg/protocol/events.go b/pkg/protocol/events.go new file mode 100644 index 000000000..231c12aeb --- /dev/null +++ b/pkg/protocol/events.go @@ -0,0 +1,13 @@ +package protocol + +import "github.com/iotaledger/iota-core/pkg/protocol/engine" + +type Events struct { + Engine *engine.Events +} + +func NewEvents() *Events { + return &Events{ + Engine: engine.NewEvents(), + } +} diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go index f6918516a..1118b1313 100644 --- a/pkg/protocol/gossip.go +++ b/pkg/protocol/gossip.go @@ -44,8 +44,9 @@ func NewGossip(protocol *Protocol) *Gossip { g.startBlockRequester() for _, gossipEvent := range []*event.Event1[*blocks.Block]{ - protocol.MainEngineEvents.Scheduler.BlockScheduled, - protocol.MainEngineEvents.Scheduler.BlockSkipped, + // TODO: REPLACE WITH REACTIVE VERSION + protocol.Events.Engine.Scheduler.BlockScheduled, + protocol.Events.Engine.Scheduler.BlockSkipped, } { gossipEvent.Hook(func(block *blocks.Block) { g.gossip.Trigger(block.ModelBlock()) }) } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 52e60e106..76b2aad02 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -12,6 +12,8 @@ import ( ) type Protocol struct { + Events *Events + workers *workerpool.Group error *event.Event1[error] options *Options @@ -26,6 +28,7 @@ type Protocol struct { func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { return options.Apply(&Protocol{ + Events: NewEvents(), workers: workers, error: event.New1[error](), options: newOptions(), diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 7ad07b30e..7d79d67e8 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -193,7 +193,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, newChain.Root().ID()) }) - n.Protocol.MainEngineEvents.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { + n.Protocol.Events.Engine.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { fmt.Printf("%s > TipManager.BlockAdded: %s in pool %d\n", n.Name, tipMetadata.ID(), tipMetadata.TipPool().Get()) }) From 5bed18c4a7b9bc7080a83855bc2cf4b4d141c2cf Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:52:41 +0200 Subject: [PATCH 109/356] Refactor: reverted more changes --- pkg/blockfactory/blockissuer.go | 2 +- pkg/protocol/engines.go | 2 +- pkg/protocol/network.go | 2 +- pkg/protocol/protocol.go | 8 ++------ 4 files changed, 5 insertions(+), 9 deletions(-) diff --git a/pkg/blockfactory/blockissuer.go b/pkg/blockfactory/blockissuer.go index be7e06d1f..ec7edf9b5 100644 --- a/pkg/blockfactory/blockissuer.go +++ b/pkg/blockfactory/blockissuer.go @@ -49,7 +49,7 @@ type BlockIssuer struct { func New(p *protocol.Protocol, opts ...options.Option[BlockIssuer]) *BlockIssuer { return options.Apply(&BlockIssuer{ events: NewEvents(), - workerPool: p.Workers().CreatePool("BlockIssuer"), + workerPool: p.Workers.CreatePool("BlockIssuer"), protocol: p, optsIncompleteBlockAccepted: false, optsRateSetterEnabled: false, diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 329908512..bff1aa4e0 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -18,7 +18,7 @@ type Engines struct { func newEngines(protocol *Protocol) *Engines { e := &Engines{ EngineManager: enginemanager.New( - protocol.Workers(), + protocol.Workers, func(err error) { fmt.Println(err) }, diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index 5b697224c..c62a17535 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -21,7 +21,7 @@ type Network struct { func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { n := &Network{ - Protocol: core.NewProtocol(endpoint, protocol.Workers().CreatePool("NetworkProtocol"), protocol), + Protocol: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), } protocol.HookInitialized(func() { diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 76b2aad02..8f9764ce3 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -14,7 +14,7 @@ import ( type Protocol struct { Events *Events - workers *workerpool.Group + Workers *workerpool.Group error *event.Event1[error] options *Options @@ -29,7 +29,7 @@ type Protocol struct { func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { return options.Apply(&Protocol{ Events: NewEvents(), - workers: workers, + Workers: workers, error: event.New1[error](), options: newOptions(), }, opts, func(p *Protocol) { @@ -52,10 +52,6 @@ func (p *Protocol) Run(ctx context.Context) error { return ctx.Err() } -func (p *Protocol) Workers() *workerpool.Group { - return p.workers -} - // APIForVersion returns the API for the given version. func (p *Protocol) APIForVersion(version iotago.Version) (api iotago.API, err error) { return p.MainEngineInstance().APIForVersion(version) From 6085c93ed03f17eb759eeffcb7426c3c3588b76a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:57:12 +0200 Subject: [PATCH 110/356] Refactor: reverted more changes --- .../engine/consensus/slotgadget/slotgadget.go | 6 ------ .../totalweightslotgadget/gadget.go | 20 +++++-------------- 2 files changed, 5 insertions(+), 21 deletions(-) diff --git a/pkg/protocol/engine/consensus/slotgadget/slotgadget.go b/pkg/protocol/engine/consensus/slotgadget/slotgadget.go index 128788ace..3d6b6eb56 100644 --- a/pkg/protocol/engine/consensus/slotgadget/slotgadget.go +++ b/pkg/protocol/engine/consensus/slotgadget/slotgadget.go @@ -1,15 +1,9 @@ package slotgadget import ( - "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/runtime/module" - iotago "github.com/iotaledger/iota.go/v4" ) type Gadget interface { - LatestFinalizedSlot() iotago.SlotIndex - - LatestFinalizedSlotR() reactive.Variable[iotago.SlotIndex] - module.Interface } diff --git a/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go b/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go index 5fbced368..338cc2fe9 100644 --- a/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go +++ b/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go @@ -1,7 +1,6 @@ package totalweightslotgadget import ( - "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" @@ -28,7 +27,7 @@ type Gadget struct { slotTrackers *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *slottracker.SlotTracker] seatManager seatmanager.SeatManager - lastFinalizedSlot reactive.Variable[iotago.SlotIndex] + lastFinalizedSlot iotago.SlotIndex storeLastFinalizedSlotFunc func(index iotago.SlotIndex) mutex syncutils.RWMutex @@ -44,7 +43,6 @@ func NewProvider(opts ...options.Option[Gadget]) module.Provider[*engine.Engine, return options.Apply(&Gadget{ events: slotgadget.NewEvents(), optsSlotFinalizationThreshold: 0.67, - lastFinalizedSlot: reactive.NewVariable[iotago.SlotIndex](), errorHandler: e.ErrorHandler("slotgadget"), }, opts, func(g *Gadget) { @@ -71,7 +69,7 @@ func NewProvider(opts ...options.Option[Gadget]) module.Provider[*engine.Engine, func() { g.mutex.Lock() defer g.mutex.Unlock() - g.lastFinalizedSlot.Set(e.Storage.Settings().LatestFinalizedSlot()) + g.lastFinalizedSlot = e.Storage.Settings().LatestFinalizedSlot() }() g.TriggerInitialized() @@ -82,21 +80,13 @@ func NewProvider(opts ...options.Option[Gadget]) module.Provider[*engine.Engine, }) } -func (g *Gadget) LatestFinalizedSlot() iotago.SlotIndex { - return g.lastFinalizedSlot.Get() -} - -func (g *Gadget) LatestFinalizedSlotR() reactive.Variable[iotago.SlotIndex] { - return g.lastFinalizedSlot -} - func (g *Gadget) Shutdown() { g.TriggerStopped() g.workers.Shutdown() } func (g *Gadget) setLastFinalizedSlot(i iotago.SlotIndex) { - g.lastFinalizedSlot.Set(i) + g.lastFinalizedSlot = i g.storeLastFinalizedSlotFunc(i) } @@ -109,7 +99,7 @@ func (g *Gadget) trackVotes(block *blocks.Block) { return slottracker.NewSlotTracker() }) - prevLatestSlot, latestSlot, updated := tracker.TrackVotes(block.SlotCommitmentID().Index(), block.ProtocolBlock().IssuerID, g.LatestFinalizedSlot()) + prevLatestSlot, latestSlot, updated := tracker.TrackVotes(block.SlotCommitmentID().Index(), block.ProtocolBlock().IssuerID, g.lastFinalizedSlot) if !updated { return nil } @@ -127,7 +117,7 @@ func (g *Gadget) trackVotes(block *blocks.Block) { func (g *Gadget) refreshSlotFinalization(tracker *slottracker.SlotTracker, previousLatestSlotIndex iotago.SlotIndex, newLatestSlotIndex iotago.SlotIndex) (finalizedSlots []iotago.SlotIndex) { committeeTotalSeats := g.seatManager.SeatCount() - for i := lo.Max(g.LatestFinalizedSlot(), previousLatestSlotIndex) + 1; i <= newLatestSlotIndex; i++ { + for i := lo.Max(g.lastFinalizedSlot, previousLatestSlotIndex) + 1; i <= newLatestSlotIndex; i++ { attestorsTotalSeats := len(tracker.Voters(i)) if !votes.IsThresholdReached(attestorsTotalSeats, committeeTotalSeats, g.optsSlotFinalizationThreshold) { From 49bcd691ba6ca0f920f91263e69dfb84d61645ae Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:58:57 +0200 Subject: [PATCH 111/356] Refactor: reverted more changes --- .../engine/consensus/blockgadget/gadget.go | 10 ----- .../thresholdblockgadget/gadget.go | 45 +------------------ 2 files changed, 1 insertion(+), 54 deletions(-) diff --git a/pkg/protocol/engine/consensus/blockgadget/gadget.go b/pkg/protocol/engine/consensus/blockgadget/gadget.go index 733e9cf70..2fe562c37 100644 --- a/pkg/protocol/engine/consensus/blockgadget/gadget.go +++ b/pkg/protocol/engine/consensus/blockgadget/gadget.go @@ -1,22 +1,12 @@ package blockgadget import ( - "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" - iotago "github.com/iotaledger/iota.go/v4" ) type Gadget interface { module.Interface - LastAcceptedBlockIndex() iotago.SlotIndex - - LastAcceptedBlockIndexR() reactive.Variable[iotago.SlotIndex] - - LastConfirmedBlockIndex() iotago.SlotIndex - - LastConfirmedBlockIndexR() reactive.Variable[iotago.SlotIndex] - TrackWitnessWeight(votingBlock *blocks.Block) } diff --git a/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go b/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go index cb6c3cce6..58b048136 100644 --- a/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go +++ b/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go @@ -4,7 +4,6 @@ import ( "fmt" "github.com/iotaledger/hive.go/ds" - "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/walker" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" @@ -25,9 +24,6 @@ type Gadget struct { seatManager seatmanager.SeatManager blockCache *blocks.Blocks - lastAcceptedBlockIndex reactive.Variable[iotago.SlotIndex] - lastConfirmedBlockIndex reactive.Variable[iotago.SlotIndex] - optsAcceptanceThreshold float64 optsConfirmationThreshold float64 optsConfirmationRatificationThreshold iotago.SlotIndex @@ -54,55 +50,16 @@ func New(blockCache *blocks.Blocks, seatManager seatmanager.SeatManager, opts .. seatManager: seatManager, blockCache: blockCache, - lastAcceptedBlockIndex: reactive.NewVariable[iotago.SlotIndex](), - lastConfirmedBlockIndex: reactive.NewVariable[iotago.SlotIndex](), - optsAcceptanceThreshold: 0.67, optsConfirmationThreshold: 0.67, optsConfirmationRatificationThreshold: 2, - }, opts, func(g *Gadget) { - g.events.BlockAccepted.Hook(func(block *blocks.Block) { - g.lastAcceptedBlockIndex.Compute(func(lastAcceptedBlockIndex iotago.SlotIndex) iotago.SlotIndex { - if block.ID().Index() < lastAcceptedBlockIndex { - return lastAcceptedBlockIndex - } - - return block.ID().Index() - }) - }) - - g.events.BlockConfirmed.Hook(func(block *blocks.Block) { - g.lastConfirmedBlockIndex.Compute(func(lastConfirmedBlockIndex iotago.SlotIndex) iotago.SlotIndex { - if block.ID().Index() < lastConfirmedBlockIndex { - return lastConfirmedBlockIndex - } - - return block.ID().Index() - }) - }) - }, (*Gadget).TriggerConstructed) + }, opts, (*Gadget).TriggerConstructed) } func (g *Gadget) Events() *blockgadget.Events { return g.events } -func (g *Gadget) LastAcceptedBlockIndex() iotago.SlotIndex { - return g.lastAcceptedBlockIndex.Get() -} - -func (g *Gadget) LastAcceptedBlockIndexR() reactive.Variable[iotago.SlotIndex] { - return g.lastAcceptedBlockIndex -} - -func (g *Gadget) LastConfirmedBlockIndex() iotago.SlotIndex { - return g.lastConfirmedBlockIndex.Get() -} - -func (g *Gadget) LastConfirmedBlockIndexR() reactive.Variable[iotago.SlotIndex] { - return g.lastConfirmedBlockIndex -} - func (g *Gadget) Shutdown() { g.TriggerStopped() } From 3c58e71af0bee1e53f512a636fb46736746f7c8d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 04:59:51 +0200 Subject: [PATCH 112/356] Refactor: reverted more changes --- .../consensus/blockgadget/thresholdblockgadget/gadget.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go b/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go index 58b048136..6a54a6a2c 100644 --- a/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go +++ b/pkg/protocol/engine/consensus/blockgadget/thresholdblockgadget/gadget.go @@ -53,7 +53,9 @@ func New(blockCache *blocks.Blocks, seatManager seatmanager.SeatManager, opts .. optsAcceptanceThreshold: 0.67, optsConfirmationThreshold: 0.67, optsConfirmationRatificationThreshold: 2, - }, opts, (*Gadget).TriggerConstructed) + }, opts, + (*Gadget).TriggerConstructed, + ) } func (g *Gadget) Events() *blockgadget.Events { From 38d1577532783c55e113ad2e16ffbf91c0aad861 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 05:10:16 +0200 Subject: [PATCH 113/356] Refactor: reverted more changes --- pkg/testsuite/storage_settings.go | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 5a5e69554..08da3a591 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -54,7 +54,7 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes for _, node := range nodes { t.Eventually(func() error { if node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().ID().Index() < slot { - return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment with at least %v not found in settings.LatestCommitmentR()", node.Name, slot) + return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment with at least %v not found in settings.LatestCommitment()", node.Name, slot) } cm, err := node.Protocol.MainEngineInstance().Storage.Commitments().Load(slot) @@ -123,8 +123,9 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - if expectedChainID != node.Protocol.MainChain().Root().ID() { - return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Index(), node.Protocol.MainChain().Root().ID(), node.Protocol.MainChain().Root().ID().Index()) + actualChainID := node.Protocol.MainChain().Root().ID() + if expectedChainID != actualChainID { + return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Index(), actualChainID, actualChainID.Index()) } return nil From 1413678314d5d78738fd8a6eeec8b77b9a4fa34b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 05:29:35 +0200 Subject: [PATCH 114/356] Refactor: removed utility function --- pkg/protocol/chain.go | 7 +++---- pkg/protocol/chains.go | 39 +++++++++++++++++++------------------- pkg/protocol/commitment.go | 8 ++++++++ pkg/protocol/utils.go | 11 ----------- 4 files changed, 30 insertions(+), 35 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 337261852..60898bfeb 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -65,10 +65,9 @@ func NewChain(root *Commitment, optStartingEngine ...*engine.Engine) *Chain { c.engine = newChainEngine(root, optStartingEngine...) - // track weights of the chain - c.claimedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestCommitment) - c.attestedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestAttestedCommitment) - c.verifiedWeight = reactive.NewDerivedVariable[uint64](noPanicIfNil((*Commitment).CumulativeWeight), c.latestVerifiedCommitment) + c.claimedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.latestCommitment) + c.attestedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.latestAttestedCommitment) + c.verifiedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.latestVerifiedCommitment) c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 35e86d2cc..ab39b00b2 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -48,7 +48,7 @@ func newChains(protocol *Protocol) *Chains { c.publishLatestEngineCommitment(protocol.MainEngineInstance()) protocol.OnEngineCreated(c.publishLatestEngineCommitment) - c.enableChainSwitching() + c.initChainSwitching() return c } @@ -186,7 +186,7 @@ func (c *Chains) publishLatestEngineCommitment(engine *engine.Engine) { engine.HookShutdown(unsubscribe) } -func (c *Chains) enableChainSwitching() { +func (c *Chains) initChainSwitching() { c.heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { prevCandidate.requestAttestations.Set(false) @@ -203,26 +203,25 @@ func (c *Chains) enableChainSwitching() { newCandidate.engine.instantiate.Set(true) }) - selectHeaviestCandidate := func(candidate reactive.Variable[*Chain], newCandidate *Chain, chainWeight func(*Chain) reactive.Variable[uint64]) { - chainWeight(newCandidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= c.mainChain.Get().verifiedWeight.Get() { - return - } + c.OnChainCreated(func(chain *Chain) { + c.trackHeaviestCandidate(c.heaviestClaimedCandidate, (*Chain).ClaimedWeight, chain) + c.trackHeaviestCandidate(c.heaviestAttestedCandidate, (*Chain).AttestedWeight, chain) + c.trackHeaviestCandidate(c.heaviestVerifiedCandidate, (*Chain).VerifiedWeight, chain) + }) +} - candidate.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeight(currentCandidate).Get() { - return newCandidate - } +func (c *Chains) trackHeaviestCandidate(candidateVariable reactive.Variable[*Chain], chainWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) { + chainWeightVariable(candidate).OnUpdate(func(_, newChainWeight uint64) { + if newChainWeight <= c.mainChain.Get().verifiedWeight.Get() { + return + } - return currentCandidate - }) - }) - } + candidateVariable.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeightVariable(currentCandidate).Get() { + return candidate + } - c.OnChainCreated(func(chain *Chain) { - // TODO: ON SOLID - selectHeaviestCandidate(c.heaviestClaimedCandidate, chain, (*Chain).ClaimedWeight) - selectHeaviestCandidate(c.heaviestAttestedCandidate, chain, (*Chain).AttestedWeight) - selectHeaviestCandidate(c.heaviestVerifiedCandidate, chain, (*Chain).VerifiedWeight) + return currentCandidate + }) }) } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 0d18b1545..9a5c571f9 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -176,6 +176,14 @@ func (c *Commitment) max(other *Commitment) *Commitment { return c } +func (c *Commitment) cumulativeWeight() uint64 { + if c == nil { + return 0 + } + + return c.CumulativeWeight() +} + type commitmentInSyncRange struct { reactive.Variable[bool] diff --git a/pkg/protocol/utils.go b/pkg/protocol/utils.go index 92c1d441f..c8156c676 100644 --- a/pkg/protocol/utils.go +++ b/pkg/protocol/utils.go @@ -5,17 +5,6 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -// noPanicIfNil prevents a panic of the getter when the receiver is nil by returning the zero value of the return type. -func noPanicIfNil[ReceiverType, ReturnType any](getter func(*ReceiverType) ReturnType) func(*ReceiverType) ReturnType { - return func(receiver *ReceiverType) (zeroValue ReturnType) { - if receiver == nil { - return zeroValue - } - - return getter(receiver) - } -} - // triggerEventIfCommitmentBelowThreshold triggers the given event if the given commitment is below the given threshold. func triggerEventIfCommitmentBelowThreshold(event func(*Commitment) reactive.Event, commitment *Commitment, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) From 8c6b76138dc35fd8af94123bd52bfa276f9b94cc Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 7 Sep 2023 20:56:17 +0200 Subject: [PATCH 115/356] Feat: started adding loggers --- components/protocol/component.go | 5 +- pkg/network/protocols/core/protocol.go | 4 +- pkg/protocol/chains.go | 6 +- pkg/protocol/errors.go | 4 +- pkg/protocol/gossip.go | 100 +++++++++++++++++-------- pkg/protocol/network.go | 86 +++++---------------- pkg/protocol/options.go | 2 + pkg/protocol/protocol.go | 18 ++--- pkg/testsuite/mock/node.go | 8 +- 9 files changed, 112 insertions(+), 121 deletions(-) diff --git a/components/protocol/component.go b/components/protocol/component.go index 66a928261..307a6a1f6 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -102,6 +102,7 @@ func provide(c *dig.Container) error { } return protocol.New( + Component.Logger(), // TODO: USE REAL LOGGER workerpool.NewGroup("Protocol"), deps.P2PManager, protocol.WithBaseDirectory(ParamsDatabase.Path), @@ -238,11 +239,11 @@ func configure() error { Component.LogDebugf("RequestCommitment: %s", id) }) - deps.Protocol.OnSlotCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, id peer.ID) { + deps.Protocol.OnCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, id peer.ID) { Component.LogDebugf("SlotCommitmentRequestReceived: %s", commitmentID) }) - deps.Protocol.OnSlotCommitmentReceived(func(commitment *model.Commitment, id peer.ID) { + deps.Protocol.OnCommitmentReceived(func(commitment *model.Commitment, id peer.ID) { Component.LogDebugf("SlotCommitmentReceived: %s", commitment.ID()) }) diff --git a/pkg/network/protocols/core/protocol.go b/pkg/network/protocols/core/protocol.go index 58695e337..0b915b83d 100644 --- a/pkg/network/protocols/core/protocol.go +++ b/pkg/network/protocols/core/protocol.go @@ -107,11 +107,11 @@ func (p *Protocol) OnBlockRequestReceived(callback func(blockID iotago.BlockID, return p.Events.BlockRequestReceived.Hook(callback).Unhook } -func (p *Protocol) OnSlotCommitmentReceived(callback func(commitment *model.Commitment, src peer.ID)) (unsubscribe func()) { +func (p *Protocol) OnCommitmentReceived(callback func(commitment *model.Commitment, src peer.ID)) (unsubscribe func()) { return p.Events.SlotCommitmentReceived.Hook(callback).Unhook } -func (p *Protocol) OnSlotCommitmentRequestReceived(callback func(commitmentID iotago.CommitmentID, src peer.ID)) (unsubscribe func()) { +func (p *Protocol) OnCommitmentRequestReceived(callback func(commitmentID iotago.CommitmentID, src peer.ID)) (unsubscribe func()) { return p.Events.SlotCommitmentRequestReceived.Hook(callback).Unhook } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index ab39b00b2..05b4fa515 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -115,7 +115,7 @@ func (c *Chains) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { if _, err := c.requestCommitment(commitment.PrevID(), true, commitment.setParent); err != nil { - c.protocol.TriggerError(ierrors.Wrapf(err, "failed to request parent commitment %s", commitment.PrevID())) + c.protocol.LogDebug(ierrors.Wrapf(err, "failed to request parent commitment %s", commitment.PrevID())) } slotEvictedEvent.OnTrigger(func() { @@ -175,10 +175,10 @@ func (c *Chains) publishLatestEngineCommitment(engine *engine.Engine) { unsubscribe := engine.Events.Notarization.LatestCommitmentUpdated.Hook(func(modelCommitment *model.Commitment) { commitment, err := c.PublishCommitment(modelCommitment) if err != nil { - c.protocol.TriggerError(ierrors.Wrapf(err, "failed to add commitment %s", modelCommitment.ID())) + c.protocol.LogDebug(ierrors.Wrapf(err, "failed to add commitment %s", modelCommitment.ID())) } - // TODO: WHAT TO DO IF OUR VERIFIED COMMITMENT IS IN A FORK + commitment.Parent().Get().successor.Set(commitment) commitment.Verified().Trigger() }).Unhook diff --git a/pkg/protocol/errors.go b/pkg/protocol/errors.go index 99402ae07..0c7191795 100644 --- a/pkg/protocol/errors.go +++ b/pkg/protocol/errors.go @@ -1,6 +1,8 @@ package protocol -import "github.com/iotaledger/hive.go/ierrors" +import ( + "github.com/iotaledger/hive.go/ierrors" +) var ( ErrorCommitmentNotFound = ierrors.New("commitment not found") diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go index 1118b1313..f68e699a4 100644 --- a/pkg/protocol/gossip.go +++ b/pkg/protocol/gossip.go @@ -8,7 +8,9 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/kvstore" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/logger" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" @@ -26,6 +28,8 @@ type Gossip struct { blockRequestStopped *event.Event2[iotago.BlockID, *engine.Engine] blockRequested *event.Event2[iotago.BlockID, *engine.Engine] commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] + + *logger.WrappedLogger } func NewGossip(protocol *Protocol) *Gossip { @@ -38,6 +42,7 @@ func NewGossip(protocol *Protocol) *Gossip { blockRequestStopped: event.New2[iotago.BlockID, *engine.Engine](), blockRequested: event.New2[iotago.BlockID, *engine.Engine](), commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), + WrappedLogger: logger.NewWrappedLogger(protocol.WrappedLogger.LoggerNamed("gossip")), } g.startAttestationsRequester() @@ -60,13 +65,21 @@ func (r *Gossip) IssueBlock(block *model.Block) error { return nil } -func (r *Gossip) ProcessBlock(block *model.Block, src peer.ID) error { +func (r *Gossip) ProcessBlock(block *model.Block, src peer.ID) { commitmentRequest, err := r.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) if err != nil { - return ierrors.Wrapf(err, "failed to process block %s from peer %s", block.ID(), src) - } else if commitmentRequest.WasRejected() { - return ierrors.Wrapf(commitmentRequest.Err(), "failed to process block %s from peer %s", block.ID(), src) - } else if !commitmentRequest.WasCompleted() { + r.protocol.LogDebug(ierrors.Wrapf(err, "failed to process block %s from peer %s", block.ID(), src)) + + return + } + + if commitmentRequest.WasRejected() { + r.protocol.LogDebug(ierrors.Wrapf(commitmentRequest.Err(), "failed to process block %s from peer %s", block.ID(), src)) + + return + } + + if !commitmentRequest.WasCompleted() { fmt.Println("WARNING3", block.ProtocolBlock().SlotCommitmentID) // TODO: QUEUE TO UNSOLID COMMITMENT BLOCKS } else { @@ -78,95 +91,118 @@ func (r *Gossip) ProcessBlock(block *model.Block, src peer.ID) error { } } } - - return nil } -func (r *Gossip) ProcessBlockRequest(blockID iotago.BlockID, src peer.ID) error { +func (r *Gossip) ProcessBlockRequest(blockID iotago.BlockID, src peer.ID) { block, exists := r.protocol.MainEngineInstance().Block(blockID) if !exists { - // TODO: CREATE SENTINAL ERRORS - return ierrors.Errorf("requested block %s not found", blockID) + r.LogDebug(ierrors.Errorf("requested block %s not found", blockID)) } r.protocol.SendBlock(block, src) +} - return nil +func (r *Gossip) ProcessCommitment(commitmentModel *model.Commitment, src peer.ID) { + if _, err := r.protocol.PublishCommitment(commitmentModel); err != nil { + r.LogDebug(ierrors.Wrapf(err, "failed to publish commitment %s from peer %s", commitmentModel.ID(), src)) + } } -func (r *Gossip) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src peer.ID) error { - if commitment, err := r.protocol.Commitment(commitmentID); err == nil { +func (r *Gossip) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src peer.ID) { + if commitment, err := r.protocol.Commitment(commitmentID); err != nil { + r.LogDebug(ierrors.Wrapf(err, "failed to process commitment request for commitment %s from peer %s", commitmentID, src)) + } else { r.protocol.SendSlotCommitment(commitment.CommitmentModel(), src) - } else if !ierrors.Is(err, ErrorCommitmentNotFound) { - return ierrors.Wrapf(err, "failed to process slot commitment request for commitment %s from peer %s", commitmentID, src) } - - return nil } -func (r *Gossip) ProcessAttestationsResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) (err error) { +func (r *Gossip) ProcessAttestations(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { commitment, err := r.protocol.PublishCommitment(commitmentModel) if err != nil { - return ierrors.Wrapf(err, "failed to publish commitment %s when processing attestations", commitmentModel.ID()) + r.LogDebug(ierrors.Wrapf(err, "failed to publish commitment %s when processing attestations", commitmentModel.ID())) + return } chain := commitment.Chain() if chain == nil { - return ierrors.Errorf("failed to find chain for commitment %s when processing attestations", commitmentModel.ID()) + r.LogDebug(ierrors.Errorf("failed to find chain for commitment %s when processing attestations", commitmentModel.ID())) + return } commitmentVerifier, exists := r.commitmentVerifiers.Get(chain.Root().ID()) if !exists { - return ierrors.Errorf("failed to find commitment verifier for commitment %s when processing attestations", commitmentModel.ID()) + r.LogDebug(ierrors.Errorf("failed to find commitment verifier for commitment %s when processing attestations", commitmentModel.ID())) + return } blockIDs, actualCumulativeWeight, err := commitmentVerifier.verifyCommitment(commitmentModel, attestations, merkleProof) if err != nil { - return ierrors.Errorf("failed to verify commitment %s when processing attestations", commitmentModel.ID()) + r.LogError(ierrors.Errorf("failed to verify commitment %s when processing attestations", commitmentModel.ID())) + return } // TODO: publish blockIDs, actualCumulativeWeight to target commitment commitment.Attested().Set(true) fmt.Println("ATTESTATIONS", blockIDs, actualCumulativeWeight, source) - - return nil } -func (r *Gossip) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) error { +func (r *Gossip) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) { mainEngine := r.protocol.MainEngineInstance() if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { - return ierrors.Errorf("main engine has produced the requested commitment %s, yet", commitmentID) + r.LogDebug(ierrors.Errorf("requested commitment %s is not available, yet", commitmentID)) + + return } commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Index()) if err != nil { - return ierrors.Wrapf(err, "failed to load commitment %s", commitmentID) + if ierrors.Is(err, kvstore.ErrKeyNotFound) { + r.LogDebug(ierrors.Wrapf(err, "failed to load commitment %s", commitmentID)) + } else { + r.LogError(ierrors.Wrapf(err, "failed to load commitment %s", commitmentID)) + } + + return } if commitment.ID() != commitmentID { - return ierrors.Errorf("requested commitment is not from the main chain %s", commitmentID) + r.LogDebug(ierrors.Errorf("requested commitment is not from the main engine %s", commitmentID)) + + return } attestations, err := mainEngine.Attestations.Get(commitmentID.Index()) if err != nil { - return ierrors.Wrapf(err, "failed to load attestations for commitment %s", commitmentID) + r.LogError(ierrors.Wrapf(err, "failed to load attestations for commitment %s", commitmentID)) + + return } rootsStorage, err := mainEngine.Storage.Roots(commitmentID.Index()) if err != nil { - return ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID) + r.LogError(ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID)) + + return } roots, err := rootsStorage.Load(commitmentID) if err != nil { - return ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID) + r.LogError(ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID)) + + return } r.protocol.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) +} - return nil +func (r *Gossip) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], src peer.ID) { + panic("implement me") +} + +func (r *Gossip) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, src peer.ID) { + panic("implement me") } func (r *Gossip) OnSendBlock(callback func(block *model.Block)) (unsubscribe func()) { diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index c62a17535..6a3695ba7 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -10,10 +10,11 @@ import ( "github.com/iotaledger/iota-core/pkg/network/protocols/core" "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/merklehasher" ) type Network struct { + protocol *Protocol + *core.Protocol module.Module @@ -21,16 +22,28 @@ type Network struct { func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { n := &Network{ + protocol: protocol, Protocol: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), } protocol.HookInitialized(func() { n.OnError(func(err error, src peer.ID) { - protocol.TriggerError(ierrors.Wrapf(err, "Network error from %s", src)) + protocol.LogError(ierrors.Wrapf(err, "network error in connection to %s", src)) }) - n.dispatchInboundMessages(protocol) - n.dispatchOutboundMessages(protocol) + n.OnBlockReceived(protocol.ProcessBlock) + n.OnBlockRequestReceived(protocol.ProcessBlockRequest) + n.OnCommitmentReceived(protocol.ProcessCommitment) + n.OnCommitmentRequestReceived(protocol.ProcessCommitmentRequest) + n.OnAttestationsReceived(protocol.ProcessAttestations) + n.OnAttestationsRequestReceived(protocol.ProcessAttestationsRequest) + n.OnWarpSyncResponseReceived(protocol.ProcessWarpSyncResponse) + n.OnWarpSyncRequestReceived(protocol.ProcessWarpSyncRequest) + + protocol.OnSendBlock(func(block *model.Block) { n.SendBlock(block) }) + protocol.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { n.RequestBlock(blockID) }) + protocol.OnCommitmentRequested(func(id iotago.CommitmentID) { n.RequestSlotCommitment(id) }) + protocol.OnAttestationsRequested(func(commitmentID iotago.CommitmentID) { n.RequestAttestations(commitmentID) }) n.TriggerInitialized() }) @@ -42,71 +55,6 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { return n } -func (n *Network) dispatchInboundMessages(protocol *Protocol) { - n.OnBlockReceived(func(block *model.Block, src peer.ID) { - if err := protocol.ProcessBlock(block, src); err != nil { - protocol.TriggerError(ierrors.Wrapf(err, "failed to process block %s from peer %s", block.ID(), src)) - } - }) - - n.OnBlockRequestReceived(func(blockID iotago.BlockID, src peer.ID) { - if err := protocol.ProcessBlockRequest(blockID, src); err != nil { - protocol.TriggerError(ierrors.Wrapf(err, "failed to process block %s from peer %s", blockID, src)) - } - }) - - n.OnSlotCommitmentReceived(func(commitment *model.Commitment, src peer.ID) { - if _, err := protocol.PublishCommitment(commitment); err != nil { - protocol.TriggerError(ierrors.Wrapf(err, "failed to process slot commitment %s from peer %s", commitment.ID(), src)) - } - }) - - n.OnSlotCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, src peer.ID) { - if err := protocol.ProcessCommitmentRequest(commitmentID, src); err != nil { - protocol.TriggerError(ierrors.Wrapf(err, "failed to process slot commitment request %s from peer %s", commitmentID, src)) - } - }) - - n.OnAttestationsReceived(func(commitment *model.Commitment, attestations []*iotago.Attestation, m *merklehasher.Proof[iotago.Identifier], id peer.ID) { - if err := protocol.ProcessAttestationsResponse(commitment, attestations, m, id); err != nil { - protocol.TriggerError(ierrors.Wrapf(err, "failed to process attestations response for commitment %s from peer %s", commitment.ID(), id)) - } - }) - - n.OnAttestationsRequestReceived(func(commitmentID iotago.CommitmentID, src peer.ID) { - if err := protocol.ProcessAttestationsRequest(commitmentID, src); err != nil { - protocol.TriggerError(ierrors.Wrapf(err, "failed to process attestations request for commitment %s from peer %s", commitmentID, src)) - } - }) - - n.OnWarpSyncResponseReceived(func(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], src peer.ID) { - panic("implement me") - }) - - n.OnWarpSyncRequestReceived(func(commitmentID iotago.CommitmentID, src peer.ID) { - panic("implement me") - }) -} - -func (n *Network) dispatchOutboundMessages(protocol *Protocol) { - protocol.OnSendBlock(func(block *model.Block) { - n.SendBlock(block) - }) - - protocol.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { - n.RequestBlock(blockID) - }) - - protocol.OnCommitmentRequested(func(id iotago.CommitmentID) { - n.RequestSlotCommitment(id) - }) - - protocol.OnAttestationsRequested(func(commitmentID iotago.CommitmentID) { - n.RequestAttestations(commitmentID) - }) - -} - func (n *Network) Shutdown() { n.TriggerShutdown() n.Protocol.Shutdown() diff --git a/pkg/protocol/options.go b/pkg/protocol/options.go index bb073a994..f461e79fc 100644 --- a/pkg/protocol/options.go +++ b/pkg/protocol/options.go @@ -1,6 +1,7 @@ package protocol import ( + "github.com/iotaledger/hive.go/logger" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/protocol/engine" @@ -42,6 +43,7 @@ import ( ) type Options struct { + Logger *logger.Logger BaseDirectory string SnapshotPath string ChainSwitchingThreshold int diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 8f9764ce3..383373ab5 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -3,6 +3,7 @@ package protocol import ( "context" + "github.com/iotaledger/hive.go/logger" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" @@ -23,20 +24,23 @@ type Protocol struct { *Chains *Gossip + *logger.WrappedLogger module.Module } -func New(workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { +func New(loggerInstance *logger.Logger, workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { return options.Apply(&Protocol{ - Events: NewEvents(), - Workers: workers, - error: event.New1[error](), - options: newOptions(), + Events: NewEvents(), + Workers: workers, + WrappedLogger: logger.NewWrappedLogger(loggerInstance), + error: event.New1[error](), + options: newOptions(), }, opts, func(p *Protocol) { p.Network = newNetwork(p, dispatcher) p.Engines = newEngines(p) p.Chains = newChains(p) p.Gossip = NewGossip(p) + }, (*Protocol).TriggerConstructed) } @@ -77,7 +81,3 @@ func (p *Protocol) LatestAPI() iotago.API { func (p *Protocol) OnError(callback func(error)) (unsubscribe func()) { return p.error.Hook(callback).Unhook } - -func (p *Protocol) TriggerError(err error) { - p.error.Trigger(err) -} diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 7d79d67e8..034ff7453 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -111,7 +111,9 @@ func NewNode(t *testing.T, net *Network, partition string, name string, validato } func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[protocol.Protocol]) { - n.Protocol = protocol.New(n.Workers.CreateGroup("Protocol"), + n.Protocol = protocol.New( + nil, // TODO: REPLACE WITH A REAL LOGGER + n.Workers.CreateGroup("Protocol"), n.Endpoint, opts..., ) @@ -167,11 +169,11 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { fmt.Printf("%s > Network.BlockRequestReceived: from %s %s\n", n.Name, source, blockID) }) - n.Protocol.OnSlotCommitmentReceived(func(commitment *model.Commitment, source peer.ID) { + n.Protocol.OnCommitmentReceived(func(commitment *model.Commitment, source peer.ID) { fmt.Printf("%s > Network.SlotCommitmentReceived: from %s %s\n", n.Name, source, commitment.ID()) }) - n.Protocol.OnSlotCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, source peer.ID) { + n.Protocol.OnCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, source peer.ID) { fmt.Printf("%s > Network.SlotCommitmentRequestReceived: from %s %s\n", n.Name, source, commitmentID) }) From 217d9d12a872e6d1ec0294d9101a2f72c98f0f5a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 8 Sep 2023 02:23:25 +0200 Subject: [PATCH 116/356] Fix: fixed problems relating to startup test --- components/protocol/component.go | 6 +-- pkg/protocol/chains.go | 79 ++++++++++++++++++++------------ pkg/protocol/engine/engine.go | 2 + pkg/protocol/engines.go | 4 ++ pkg/protocol/gossip.go | 2 + pkg/protocol/protocol.go | 6 +-- pkg/testsuite/chainmanager.go | 2 +- pkg/testsuite/mock/node.go | 13 +++++- 8 files changed, 75 insertions(+), 39 deletions(-) diff --git a/components/protocol/component.go b/components/protocol/component.go index 307a6a1f6..792985d26 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -102,7 +102,7 @@ func provide(c *dig.Container) error { } return protocol.New( - Component.Logger(), // TODO: USE REAL LOGGER + Component.Logger().Named("Protocol"), workerpool.NewGroup("Protocol"), deps.P2PManager, protocol.WithBaseDirectory(ParamsDatabase.Path), @@ -139,10 +139,6 @@ func provide(c *dig.Container) error { } func configure() error { - deps.Protocol.OnError(func(err error) { - Component.LogErrorf("Error in Protocol: %s", err) - }) - deps.Protocol.OnBlockReceived(func(block *model.Block, source peer.ID) { Component.LogDebugf("BlockReceived: %s", block.ID()) }) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 05b4fa515..3b8aa7866 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -36,7 +36,7 @@ func newChains(protocol *Protocol) *Chains { c := &Chains{ protocol: protocol, EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - mainChain: reactive.NewVariable[*Chain]().Init(NewChain(NewCommitment(protocol.MainEngineInstance().SyncManager.LatestCommitment(), true), protocol.MainEngineInstance())), + mainChain: reactive.NewVariable[*Chain](), heaviestClaimedCandidate: reactive.NewVariable[*Chain](), heaviestAttestedCandidate: reactive.NewVariable[*Chain](), heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), @@ -45,10 +45,12 @@ func newChains(protocol *Protocol) *Chains { chainCreated: event.New1[*Chain](), } - c.publishLatestEngineCommitment(protocol.MainEngineInstance()) - protocol.OnEngineCreated(c.publishLatestEngineCommitment) + protocol.HookConstructed(func() { + c.initMainChain() + c.initChainSwitching() - c.initChainSwitching() + protocol.OnEngineCreated(c.monitorLatestEngineCommitment) + }) return c } @@ -67,6 +69,10 @@ func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMeta } func (c *Chains) Commitment(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { + if root := c.MainChain().Root(); root != nil && commitmentID == root.ID() { + return root, nil + } + commitmentRequest, exists := c.commitments.Get(commitmentID) if !exists && lo.First(requestMissing) { if commitmentRequest, err = c.requestCommitment(commitmentID, true); err != nil { @@ -113,6 +119,45 @@ func (c *Chains) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { return c.heaviestVerifiedCandidate } +func (c *Chains) initMainChain() { + mainEngine := c.protocol.MainEngineInstance() + rootCommitment := mainEngine.EarliestRootCommitment(mainEngine.Storage.Settings().LatestFinalizedSlot()) + + c.Evict(rootCommitment.Index()) + + c.mainChain.Set(NewChain(NewCommitment(rootCommitment, true), mainEngine)) + + for i := rootCommitment.Index() + 1; i <= mainEngine.Storage.Settings().LatestCommitment().Index(); i++ { + lo.PanicOnErr(c.PublishCommitment(lo.PanicOnErr(mainEngine.Storage.Commitments().Load(i)))) + } + + c.monitorLatestEngineCommitment(mainEngine) +} + +func (c *Chains) initChainSwitching() { + c.heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + prevCandidate.requestAttestations.Set(false) + } + + newCandidate.requestAttestations.Set(true) + }) + + c.heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + prevCandidate.engine.instantiate.Set(false) + } + + newCandidate.engine.instantiate.Set(true) + }) + + c.OnChainCreated(func(chain *Chain) { + c.trackHeaviestCandidate(c.heaviestClaimedCandidate, (*Chain).ClaimedWeight, chain) + c.trackHeaviestCandidate(c.heaviestAttestedCandidate, (*Chain).AttestedWeight, chain) + c.trackHeaviestCandidate(c.heaviestVerifiedCandidate, (*Chain).VerifiedWeight, chain) + }) +} + func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { if _, err := c.requestCommitment(commitment.PrevID(), true, commitment.setParent); err != nil { c.protocol.LogDebug(ierrors.Wrapf(err, "failed to request parent commitment %s", commitment.PrevID())) @@ -171,7 +216,7 @@ func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFrom return commitmentRequest, nil } -func (c *Chains) publishLatestEngineCommitment(engine *engine.Engine) { +func (c *Chains) monitorLatestEngineCommitment(engine *engine.Engine) { unsubscribe := engine.Events.Notarization.LatestCommitmentUpdated.Hook(func(modelCommitment *model.Commitment) { commitment, err := c.PublishCommitment(modelCommitment) if err != nil { @@ -186,30 +231,6 @@ func (c *Chains) publishLatestEngineCommitment(engine *engine.Engine) { engine.HookShutdown(unsubscribe) } -func (c *Chains) initChainSwitching() { - c.heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - prevCandidate.requestAttestations.Set(false) - } - - newCandidate.requestAttestations.Set(true) - }) - - c.heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - prevCandidate.engine.instantiate.Set(false) - } - - newCandidate.engine.instantiate.Set(true) - }) - - c.OnChainCreated(func(chain *Chain) { - c.trackHeaviestCandidate(c.heaviestClaimedCandidate, (*Chain).ClaimedWeight, chain) - c.trackHeaviestCandidate(c.heaviestAttestedCandidate, (*Chain).AttestedWeight, chain) - c.trackHeaviestCandidate(c.heaviestVerifiedCandidate, (*Chain).VerifiedWeight, chain) - }) -} - func (c *Chains) trackHeaviestCandidate(candidateVariable reactive.Variable[*Chain], chainWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) { chainWeightVariable(candidate).OnUpdate(func(_, newChainWeight uint64) { if newChainWeight <= c.mainChain.Get().verifiedWeight.Get() { diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index c68b60526..c1bb40df0 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -235,6 +235,8 @@ func (e *Engine) Shutdown() { e.Retainer.Shutdown() e.Storage.Shutdown() e.Workers.Shutdown() + + e.TriggerStopped() } } diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index bff1aa4e0..7e8b25056 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -51,7 +51,11 @@ func newEngines(protocol *Protocol) *Engines { if mainEngine, err := e.EngineManager.LoadActiveEngine(protocol.options.SnapshotPath); err != nil { panic(fmt.Sprintf("could not load active engine: %s", err)) } else { + mainEngine.SetChainID(mainEngine.EarliestRootCommitment(mainEngine.Storage.Settings().LatestFinalizedSlot()).ID()) + e.mainEngine.Set(mainEngine) + + protocol.HookStopped(mainEngine.Shutdown) } protocol.HookConstructed(func() { diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go index f68e699a4..a1f83ed6d 100644 --- a/pkg/protocol/gossip.go +++ b/pkg/protocol/gossip.go @@ -97,6 +97,8 @@ func (r *Gossip) ProcessBlockRequest(blockID iotago.BlockID, src peer.ID) { block, exists := r.protocol.MainEngineInstance().Block(blockID) if !exists { r.LogDebug(ierrors.Errorf("requested block %s not found", blockID)) + + return } r.protocol.SendBlock(block, src) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 383373ab5..9f2186034 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -40,18 +40,18 @@ func New(loggerInstance *logger.Logger, workers *workerpool.Group, dispatcher ne p.Engines = newEngines(p) p.Chains = newChains(p) p.Gossip = NewGossip(p) - + }, func(p *Protocol) { + p.HookShutdown(workers.Shutdown) }, (*Protocol).TriggerConstructed) } func (p *Protocol) Run(ctx context.Context) error { - defer p.TriggerStopped() - p.TriggerInitialized() <-ctx.Done() p.TriggerShutdown() + p.TriggerStopped() return ctx.Err() } diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index e4364d237..b6eb7ad6c 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -19,7 +19,7 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { latestCommitment := node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment() if latestCommitment.ID() != latestChainCommitment.ID() { - return ierrors.Errorf("AssertChainManagerIsSolid: %s: latest commitment is not equal, expected %d, got %d", node.Name, latestCommitment.ID(), latestChainCommitment.ID()) + return ierrors.Errorf("AssertChainManagerIsSolid: %s: latest commitment is not equal, expected %s, got %s", node.Name, latestCommitment.ID(), latestChainCommitment.ID()) } if !latestChainCommitment.Solid().WasTriggered() { return ierrors.Errorf("AssertChainManagerIsSolid: %s: is not solid", node.Name) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 034ff7453..8513191be 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -15,7 +15,10 @@ import ( "github.com/stretchr/testify/require" "golang.org/x/crypto/blake2b" + "github.com/iotaledger/hive.go/app/configuration" + appLogger "github.com/iotaledger/hive.go/app/logger" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/logger" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/syncutils" "github.com/iotaledger/hive.go/runtime/workerpool" @@ -112,7 +115,7 @@ func NewNode(t *testing.T, net *Network, partition string, name string, validato func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[protocol.Protocol]) { n.Protocol = protocol.New( - nil, // TODO: REPLACE WITH A REAL LOGGER + logger.NewLogger("Protocol"), n.Workers.CreateGroup("Protocol"), n.Endpoint, opts..., @@ -570,3 +573,11 @@ func (n *Node) AttachedBlocks() []*blocks.Block { return n.attachedBlocks } + +func init() { + if err := appLogger.InitGlobalLogger(configuration.New()); err != nil { + panic(err) + } + + logger.SetLevel(logger.LevelDebug) +} From 79d0a9c47d664f540ae01ce206bd5e95fe3b1485 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 8 Sep 2023 03:04:31 +0200 Subject: [PATCH 117/356] Feat: WIPWIPWIP --- pkg/protocol/network.go | 45 ++++++++++++++++++++++++---------------- pkg/protocol/protocol.go | 4 ++-- 2 files changed, 29 insertions(+), 20 deletions(-) diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index 6a3695ba7..9f7e2e975 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -4,6 +4,7 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" @@ -26,37 +27,45 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { Protocol: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), } + var unsubscribeFromNetworkEvents func() + protocol.HookInitialized(func() { n.OnError(func(err error, src peer.ID) { protocol.LogError(ierrors.Wrapf(err, "network error in connection to %s", src)) }) - n.OnBlockReceived(protocol.ProcessBlock) - n.OnBlockRequestReceived(protocol.ProcessBlockRequest) - n.OnCommitmentReceived(protocol.ProcessCommitment) - n.OnCommitmentRequestReceived(protocol.ProcessCommitmentRequest) - n.OnAttestationsReceived(protocol.ProcessAttestations) - n.OnAttestationsRequestReceived(protocol.ProcessAttestationsRequest) - n.OnWarpSyncResponseReceived(protocol.ProcessWarpSyncResponse) - n.OnWarpSyncRequestReceived(protocol.ProcessWarpSyncRequest) + unsubscribeFromNetworkEvents = lo.Batch( + n.OnBlockReceived(protocol.ProcessBlock), + n.OnBlockRequestReceived(protocol.ProcessBlockRequest), + n.OnCommitmentReceived(protocol.ProcessCommitment), + n.OnCommitmentRequestReceived(protocol.ProcessCommitmentRequest), + n.OnAttestationsReceived(protocol.ProcessAttestations), + n.OnAttestationsRequestReceived(protocol.ProcessAttestationsRequest), + n.OnWarpSyncResponseReceived(protocol.ProcessWarpSyncResponse), + n.OnWarpSyncRequestReceived(protocol.ProcessWarpSyncRequest), - protocol.OnSendBlock(func(block *model.Block) { n.SendBlock(block) }) - protocol.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { n.RequestBlock(blockID) }) - protocol.OnCommitmentRequested(func(id iotago.CommitmentID) { n.RequestSlotCommitment(id) }) - protocol.OnAttestationsRequested(func(commitmentID iotago.CommitmentID) { n.RequestAttestations(commitmentID) }) + protocol.OnSendBlock(func(block *model.Block) { n.SendBlock(block) }), + protocol.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { n.RequestBlock(blockID) }), + protocol.OnCommitmentRequested(func(id iotago.CommitmentID) { n.RequestSlotCommitment(id) }), + protocol.OnAttestationsRequested(func(commitmentID iotago.CommitmentID) { n.RequestAttestations(commitmentID) }), + ) n.TriggerInitialized() }) - protocol.HookShutdown(n.Shutdown) + protocol.HookShutdown(func() { + n.TriggerShutdown() + + unsubscribeFromNetworkEvents() + + n.Protocol.Shutdown() + + n.TriggerStopped() + }) n.TriggerConstructed() return n } -func (n *Network) Shutdown() { - n.TriggerShutdown() - n.Protocol.Shutdown() - n.TriggerStopped() -} +func (n *Network) Shutdown() {} diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 9f2186034..e0dc1b703 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -40,8 +40,6 @@ func New(loggerInstance *logger.Logger, workers *workerpool.Group, dispatcher ne p.Engines = newEngines(p) p.Chains = newChains(p) p.Gossip = NewGossip(p) - }, func(p *Protocol) { - p.HookShutdown(workers.Shutdown) }, (*Protocol).TriggerConstructed) } @@ -53,6 +51,8 @@ func (p *Protocol) Run(ctx context.Context) error { p.TriggerShutdown() p.TriggerStopped() + p.Workers.Shutdown() + return ctx.Err() } From ac96ced23831c7253b0ab7015e32221b0216b10d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 8 Sep 2023 12:01:36 +0200 Subject: [PATCH 118/356] Fix: fixed shutdown problem --- pkg/protocol/engines.go | 6 ++---- pkg/testsuite/mock/node.go | 2 -- 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 7e8b25056..affac566a 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -19,9 +19,7 @@ func newEngines(protocol *Protocol) *Engines { e := &Engines{ EngineManager: enginemanager.New( protocol.Workers, - func(err error) { - fmt.Println(err) - }, + func(err error) { protocol.LogError(err) }, protocol.options.BaseDirectory, 3, protocol.options.StorageOptions, @@ -55,7 +53,7 @@ func newEngines(protocol *Protocol) *Engines { e.mainEngine.Set(mainEngine) - protocol.HookStopped(mainEngine.Shutdown) + protocol.Network.HookStopped(mainEngine.Shutdown) } protocol.HookConstructed(func() { diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 8513191be..003613b31 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -135,8 +135,6 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto }) go func() { - defer n.ctxCancel() - if err := n.Protocol.Run(n.ctx); err != nil { fmt.Printf("%s > Run finished with error: %s\n", n.Name, err.Error()) } From ac493d553486ba2158a48640f6bedae146ab4639 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 8 Sep 2023 14:02:21 +0200 Subject: [PATCH 119/356] Refactor: refactored init method --- pkg/protocol/chains.go | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 3b8aa7866..af9db44fb 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -120,18 +120,22 @@ func (c *Chains) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { } func (c *Chains) initMainChain() { - mainEngine := c.protocol.MainEngineInstance() - rootCommitment := mainEngine.EarliestRootCommitment(mainEngine.Storage.Settings().LatestFinalizedSlot()) + var ( + engine = c.protocol.MainEngineInstance() + syncStatus = engine.SyncManager.SyncStatus() + root = NewCommitment(engine.EarliestRootCommitment(syncStatus.LatestFinalizedSlot), true) + ) - c.Evict(rootCommitment.Index()) + c.Evict(root.Index()) - c.mainChain.Set(NewChain(NewCommitment(rootCommitment, true), mainEngine)) + c.mainChain.Set(NewChain(root, engine)) - for i := rootCommitment.Index() + 1; i <= mainEngine.Storage.Settings().LatestCommitment().Index(); i++ { - lo.PanicOnErr(c.PublishCommitment(lo.PanicOnErr(mainEngine.Storage.Commitments().Load(i)))) + for i := root.Index() + 1; i <= syncStatus.LatestCommitment.Index(); i++ { + lo.PanicOnErr(c.PublishCommitment(lo.PanicOnErr(engine.Storage.Commitments().Load(i)))) } - c.monitorLatestEngineCommitment(mainEngine) + c.monitorLatestEngineCommitment(engine) + } func (c *Chains) initChainSwitching() { From d9e4381c2f1f1b0b882af8b42e8127976d6ed0f6 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 12 Sep 2023 04:24:34 +0200 Subject: [PATCH 120/356] Feat: refactored engine instantiation --- components/debugapi/commitment.go | 8 +- go.mod | 26 +- go.sum | 52 +-- pkg/protocol/chain.go | 80 +++- pkg/protocol/chains.go | 189 ++++++-- pkg/protocol/commitment.go | 288 +++++------- pkg/protocol/engine/clock/blocktime/clock.go | 6 +- pkg/protocol/engine/engine.go | 73 ++- pkg/protocol/engine/tipmanager/v1/provider.go | 5 +- .../engine/tipselection/v1/provider.go | 5 +- pkg/protocol/engines.go | 84 ---- pkg/protocol/gossip.go | 30 +- pkg/protocol/protocol.go | 2 - pkg/protocol/utils.go | 19 +- pkg/testsuite/chainmanager.go | 2 +- pkg/testsuite/mock/node.go | 11 +- pkg/testsuite/storage_settings.go | 2 +- tools/evil-spammer/go.mod | 26 +- tools/evil-spammer/go.sum | 52 +-- tools/gendoc/go.mod | 30 +- tools/gendoc/go.sum | 52 +-- tools/genesis-snapshot/go.mod | 34 +- tools/genesis-snapshot/go.sum | 429 +++++++++++++++++- 23 files changed, 975 insertions(+), 530 deletions(-) delete mode 100644 pkg/protocol/engines.go diff --git a/components/debugapi/commitment.go b/components/debugapi/commitment.go index 24eaba55a..6786d597b 100644 --- a/components/debugapi/commitment.go +++ b/components/debugapi/commitment.go @@ -13,7 +13,7 @@ import ( ) func chainManagerAllChainsDot() (string, error) { - rootCommitment := deps.Protocol.MainChain().Root() + rootCommitment := deps.Protocol.MainChain().ForkingPoint() g := graphviz.New() defer g.Close() @@ -32,7 +32,7 @@ func chainManagerAllChainsDot() (string, error) { } func chainManagerAllChainsRendered() ([]byte, error) { - rootCommitment := deps.Protocol.MainChain().Root() + rootCommitment := deps.Protocol.MainChain().ForkingPoint() g := graphviz.New() defer g.Close() @@ -69,13 +69,13 @@ func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *protocol.Commi return nil, parentErr } - if err = parentCommitment.Children().ForEach(func(childCommitment *protocol.Commitment) error { + if err = parentCommitment.Children.ForEach(func(childCommitment *protocol.Commitment) error { child, childErr := createNode(graph, childCommitment) if childErr != nil { return childErr } - if childCommitment.Chain() == deps.Protocol.MainChain() { + if childCommitment.Chain.Get() == deps.Protocol.MainChain() { child.SetColor("green") } diff --git a/go.mod b/go.mod index c74ae3b78..419791b3c 100644 --- a/go.mod +++ b/go.mod @@ -9,19 +9,19 @@ require ( github.com/google/uuid v1.3.1 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/app v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/logger v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2 + github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b github.com/iotaledger/iota.go/v4 v4.0.0-20230829160021-46cad51e89d1 diff --git a/go.sum b/go.sum index f1613c696..f8956510c 100644 --- a/go.sum +++ b/go.sum @@ -277,32 +277,32 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 h1:C8oOO8iHniK2yiQiphft8MXT/x97InWgUww+moQh2DU= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230906114834-b50190b9f9c2 h1:0iwjkfvNdJftw83lhJSnniZeY0FLtEAavZT91QIkFGc= -github.com/iotaledger/hive.go/app v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2 h1:sck44Y5VB79MaG7p3s6/gRyXvBk31f0Alxxl/fFP/Ac= -github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2 h1:g9vVD1/Hx/KL4NLVJ7vsQXDIBKGxtPYBQBoillNqjxM= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2 h1:yNF7+4K/f4okb8v5BiBIJ8sIq3LUWdLDEPYZ38rCEAE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2 h1:BayCsCFoK5Ij0ZZn0Wejw+sKFvxTbkOGcoDBWZtyYAk= -github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2 h1:G6rcO7YWSPzhUfp+Z+ubusFVEbWxmXFqqjH43agoap8= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 h1:PBc7/OrBkfXV70odqXdGJzKqvImx/R46R65OO9RMRpw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2 h1:wLZPoEOVv+L2rVDtRqcoOKmQuEw+Uw61fviYAmBWp98= -github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230906114834-b50190b9f9c2 h1:vVs4Zh6VWZdpduOJqo/LRuZRnLkWtg5aQnWXyjTkT9s= -github.com/iotaledger/hive.go/logger v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2 h1:jpX2K+d9+FaCngP3dTjSIabm+OIxThc/AQPKvp2d23c= -github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2 h1:kEakiZRk/LUb2CxQvSOsdTgUXK1Ee4BNec9ps40+iXQ= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2 h1:exATYMLT/d8fgMuVNO6kMDsFn9DUJEcyCuoBv9sP13g= -github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272 h1:8dZqe4bnHNhwwPRi/SC/LWDdziZB/tD8xusv0vRm4wU= +github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272 h1:1QqOt3NKPTagZxPuNqfjQhTsSkwvFvCsgGjgqeE784k= +github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272 h1:e4JydqeUSOD0XF3LEXtaARuJXHV+oxFrT24muNyllw0= +github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272 h1:iJsFL+p/hjdypxRKdaDkIbVvrnPtaGWLdrhCzegTkfE= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272 h1:oqmp24gUuSRmhhUGBHG2IstBRsUv2W2sbaXc8fInWqQ= +github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272 h1:ac84RMbrGrdFaJRwh1ve2GVOA3Z9FmXKEEo933ASexI= +github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272 h1:fLgtC1oswHLnKBRPyTgjNC/4I8vQyZVQw1kM0OmFpg4= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272 h1:F7Q1Hw9syVZ7+6YW563xOcAaOAN1E8iSf+EPl4/WZPI= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272 h1:KCAxk173D21tRqC4FqrTRHYhBBz+qhPrCxlrS8Z5h/I= +github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272 h1:EofN3DqV8yHU7kvPNvpQj9ea/SL6Qvo4NXLs4c6mlaE= +github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272 h1:Oh4B2gbNGsXeFPD4x9HHMzJ2yn1/0PDAegDuWh85pSA= +github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272 h1:T98ib6oj63bHdUbEQB4SK8Q1HvnMYaWU5ST/mVDkToI= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272 h1:njt9RKg0RehDi+AveZLNV6gWPnPv5ufGKfl050Mx54Q= +github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 h1:BkDuQxUYo9aZ4XYuh8EbXWtZBdh7WvL7oh2unWNUFMo= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14/go.mod h1:ADBXzdHXTldP0NB2Vf+KbhDxkYciGRjzQVXT6Rdne1g= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b h1:EPB/+iWeSx/WgJlzaXl8yjinxuD8CCOdi2ZPMLeeMVY= diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 60898bfeb..f62466604 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -10,8 +10,8 @@ import ( // Chain is a reactive component that manages the state of a chain. type Chain struct { - // root contains the Commitment object that spawned this chain. - root *Commitment + // forkingPoint contains the Commitment object that spawned this chain. + forkingPoint reactive.Variable[*Commitment] // commitments is a map of Commitment objects that belong to the same chain. commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] @@ -47,14 +47,18 @@ type Chain struct { // engine is the engine that is used to process blocks of this chain. engine *chainEngine + // isSolid is an event that gets triggered when the chain becomes solid (all blocks till the forking point of the + // main chain are available). + isSolid reactive.Event + // evicted is an event that gets triggered when the chain gets evicted. evicted reactive.Event } // NewChain creates a new Chain instance. -func NewChain(root *Commitment, optStartingEngine ...*engine.Engine) *Chain { +func NewChain() *Chain { c := &Chain{ - root: root, + forkingPoint: reactive.NewVariable[*Commitment](), commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), latestCommitment: reactive.NewVariable[*Commitment](), latestAttestedCommitment: reactive.NewVariable[*Commitment](), @@ -63,11 +67,11 @@ func NewChain(root *Commitment, optStartingEngine ...*engine.Engine) *Chain { evicted: reactive.NewEvent(), } - c.engine = newChainEngine(root, optStartingEngine...) + c.engine = newChainEngine(c) - c.claimedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.latestCommitment) - c.attestedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.latestAttestedCommitment) - c.verifiedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.latestVerifiedCommitment) + c.claimedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.latestCommitment) + c.attestedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.latestAttestedCommitment) + c.verifiedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.latestVerifiedCommitment) c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { @@ -85,20 +89,23 @@ func NewChain(root *Commitment, optStartingEngine ...*engine.Engine) *Chain { return latestVerifiedCommitment.Index() + SyncWindow + 1 }, c.latestVerifiedCommitment) - root.chain.Set(c) - return c } -// Root returns the Commitment object that spawned this chain. -func (c *Chain) Root() *Commitment { - return c.root +// ForkingPoint returns the Commitment object that spawned this chain. +func (c *Chain) ForkingPoint() *Commitment { + return c.forkingPoint.Get() +} + +// ForkingPointR returns the Commitment object that spawned this chain. +func (c *Chain) ForkingPointR() reactive.Variable[*Commitment] { + return c.forkingPoint } // Commitment returns the Commitment object with the given index, if it exists. func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c; currentChain != nil; { - switch root := currentChain.Root(); { + switch root := currentChain.ForkingPoint(); { case root == nil: return nil, false // this should never happen, but we can handle it gracefully anyway case root.Index() == index: @@ -106,12 +113,12 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exis case index > root.Index(): return currentChain.commitments.Get(index) default: - parent := root.parent.Get() + parent := root.Parent.Get() if parent == nil { return nil, false } - currentChain = parent.Chain() + currentChain = parent.Chain.Get() } } @@ -203,15 +210,24 @@ func (c *Chain) Evicted() reactive.Event { func (c *Chain) registerCommitment(commitment *Commitment) { c.commitments.Set(commitment.Index(), commitment) - c.latestCommitment.Compute(commitment.max) + // maxCommitment returns the Commitment object with the higher index. + maxCommitment := func(other *Commitment) *Commitment { + if commitment == nil || other != nil && other.Index() >= commitment.Index() { + return other + } + + return commitment + } + + c.latestCommitment.Compute(maxCommitment) unsubscribe := lo.Batch( - commitment.attested.OnTrigger(func() { c.latestAttestedCommitment.Compute(commitment.max) }), - commitment.verified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(commitment.max) }), + commitment.IsAttested.OnTrigger(func() { c.latestAttestedCommitment.Compute(maxCommitment) }), + commitment.IsVerified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(maxCommitment) }), ) // unsubscribe and unregister the commitment when it changes its chain - commitment.chain.OnUpdateOnce(func(_, _ *Chain) { + commitment.Chain.OnUpdateOnce(func(_, _ *Chain) { unsubscribe() c.unregisterCommitment(commitment) @@ -227,7 +243,7 @@ func (c *Chain) unregisterCommitment(commitment *Commitment) { return latestCommitment } - return commitment.parent.Get() + return commitment.Parent.Get() } c.latestCommitment.Compute(resetToParent) @@ -245,14 +261,22 @@ type chainEngine struct { instantiate reactive.Variable[bool] } -func newChainEngine(commitment *Commitment, optInitEngine ...*engine.Engine) *chainEngine { +func newChainEngine(chain *Chain) *chainEngine { e := &chainEngine{ parentEngine: reactive.NewVariable[*engine.Engine](), instantiate: reactive.NewVariable[bool](), - spawnedEngine: reactive.NewVariable[*engine.Engine]().Init(lo.First(optInitEngine)), + spawnedEngine: reactive.NewVariable[*engine.Engine](), } - commitment.parent.OnUpdate(func(_, parent *Commitment) { e.parentEngine.InheritFrom(parent.Engine()) }) + chain.forkingPoint.OnUpdateWithContext(func(_, forkingPoint *Commitment, withinContext func(subscriptionFactory func() (unsubscribe func()))) { + withinContext(func() func() { + return forkingPoint.Parent.OnUpdate(func(_, parent *Commitment) { + withinContext(func() func() { + return e.parentEngine.InheritFrom(parent.Engine) + }) + }) + }) + }) e.Variable = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { if spawnedEngine != nil { @@ -264,3 +288,11 @@ func newChainEngine(commitment *Commitment, optInitEngine ...*engine.Engine) *ch return e } + +func cumulativeWeight(commitment *Commitment) uint64 { + if commitment == nil { + return 0 + } + + return commitment.CumulativeWeight() +} diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index af9db44fb..215f59192 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -1,6 +1,8 @@ package protocol import ( + "fmt" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" @@ -9,12 +11,15 @@ import ( "github.com/iotaledger/iota-core/pkg/core/promise" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" iotago "github.com/iotaledger/iota.go/v4" ) type Chains struct { protocol *Protocol + engineManager *enginemanager.EngineManager + mainChain reactive.Variable[*Chain] heaviestClaimedCandidate reactive.Variable[*Chain] @@ -34,7 +39,32 @@ type Chains struct { func newChains(protocol *Protocol) *Chains { c := &Chains{ - protocol: protocol, + protocol: protocol, + engineManager: enginemanager.New( + protocol.Workers, + func(err error) { protocol.LogError(err) }, + protocol.options.BaseDirectory, + 3, + protocol.options.StorageOptions, + protocol.options.EngineOptions, + protocol.options.FilterProvider, + protocol.options.CommitmentFilterProvider, + protocol.options.BlockDAGProvider, + protocol.options.BookerProvider, + protocol.options.ClockProvider, + protocol.options.BlockGadgetProvider, + protocol.options.SlotGadgetProvider, + protocol.options.SybilProtectionProvider, + protocol.options.NotarizationProvider, + protocol.options.AttestationProvider, + protocol.options.LedgerProvider, + protocol.options.SchedulerProvider, + protocol.options.TipManagerProvider, + protocol.options.TipSelectionProvider, + protocol.options.RetainerProvider, + protocol.options.UpgradeOrchestratorProvider, + protocol.options.SyncManagerProvider, + ), EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), mainChain: reactive.NewVariable[*Chain](), heaviestClaimedCandidate: reactive.NewVariable[*Chain](), @@ -45,16 +75,62 @@ func newChains(protocol *Protocol) *Chains { chainCreated: event.New1[*Chain](), } + c.OnChainCreated(func(chain *Chain) { + c.provideEngines(chain) + c.publishEngineCommitments(chain) + }) + + mainChain := NewChain() + c.mainChain.Set(mainChain) + c.chainCreated.Trigger(mainChain) + protocol.HookConstructed(func() { - c.initMainChain() + mainChain.engine.instantiate.Set(true) + + c.mainChain.Set(mainChain) + + mainChain.forkingPoint.Get().IsRoot.Trigger() + + //protocol.HeaviestVerifiedCandidate().OnUpdate(func(_, newChain *Chain) { + // e.mainEngine.Set(newChain.Engine()) + //}) + + mainChain.EngineR().OnUpdate(func(_, newEngine *engine.Engine) { + protocol.Events.Engine.LinkTo(newEngine.Events) + }) + c.initChainSwitching() - protocol.OnEngineCreated(c.monitorLatestEngineCommitment) + // TODO: trigger initialized }) return c } +func (c *Chains) provideEngines(chain *Chain) func() { + return chain.engine.instantiate.OnUpdate(func(_, instantiate bool) { + if !instantiate { + chain.engine.spawnedEngine.Set(nil) + + return + } + + currentEngine := chain.engine.Get() + if currentEngine == nil { + mainEngine, err := c.engineManager.LoadActiveEngine(c.protocol.options.SnapshotPath) + if err != nil { + panic(fmt.Sprintf("could not load active engine: %s", err)) + } + + chain.engine.spawnedEngine.Set(mainEngine) + + c.protocol.Network.HookStopped(mainEngine.Shutdown) + } else { + fmt.Println("WATT IS HIER LOS? EIN FORK?") + } + }) +} + func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment, err error) { request, requestErr := c.requestCommitment(commitment.ID(), false) if requestErr != nil { @@ -69,10 +145,6 @@ func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMeta } func (c *Chains) Commitment(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { - if root := c.MainChain().Root(); root != nil && commitmentID == root.ID() { - return root, nil - } - commitmentRequest, exists := c.commitments.Get(commitmentID) if !exists && lo.First(requestMissing) { if commitmentRequest, err = c.requestCommitment(commitmentID, true); err != nil { @@ -107,6 +179,14 @@ func (c *Chains) MainChainR() reactive.Variable[*Chain] { return c.mainChain } +func (c *Chains) MainEngineInstance() *engine.Engine { + return c.mainChain.Get().Engine() +} + +func (c *Chains) MainEngineR() reactive.Variable[*engine.Engine] { + return c.mainChain.Get().EngineR() +} + func (c *Chains) HeaviestClaimedCandidate() reactive.Variable[*Chain] { return c.heaviestClaimedCandidate } @@ -119,25 +199,6 @@ func (c *Chains) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { return c.heaviestVerifiedCandidate } -func (c *Chains) initMainChain() { - var ( - engine = c.protocol.MainEngineInstance() - syncStatus = engine.SyncManager.SyncStatus() - root = NewCommitment(engine.EarliestRootCommitment(syncStatus.LatestFinalizedSlot), true) - ) - - c.Evict(root.Index()) - - c.mainChain.Set(NewChain(root, engine)) - - for i := root.Index() + 1; i <= syncStatus.LatestCommitment.Index(); i++ { - lo.PanicOnErr(c.PublishCommitment(lo.PanicOnErr(engine.Storage.Commitments().Load(i)))) - } - - c.monitorLatestEngineCommitment(engine) - -} - func (c *Chains) initChainSwitching() { c.heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { @@ -163,17 +224,17 @@ func (c *Chains) initChainSwitching() { } func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { - if _, err := c.requestCommitment(commitment.PrevID(), true, commitment.setParent); err != nil { + if _, err := c.requestCommitment(commitment.PrevID(), true, lo.Void(commitment.Parent.Set)); err != nil { c.protocol.LogDebug(ierrors.Wrapf(err, "failed to request parent commitment %s", commitment.PrevID())) } slotEvictedEvent.OnTrigger(func() { - commitment.evicted.Trigger() + commitment.IsEvicted.Trigger() }) c.commitmentCreated.Trigger(commitment) - commitment.spawnedChain.OnUpdate(func(_, newChain *Chain) { + commitment.SpawnedChain.OnUpdate(func(_, newChain *Chain) { if newChain != nil { c.chainCreated.Trigger(newChain) } @@ -182,18 +243,18 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment], err error) { slotEvicted := c.EvictionEvent(commitmentID.Index()) - if slotEvicted.WasTriggered() { - rootCommitment := c.mainChain.Get().Root() + if slotEvicted.WasTriggered() && c.LastEvictedSlot().Get() != 0 { + forkingPoint := c.mainChain.Get().ForkingPoint() - if rootCommitment == nil || commitmentID != rootCommitment.ID() { + if forkingPoint == nil || commitmentID != forkingPoint.ID() { return nil, ErrorSlotEvicted } for _, successCallback := range optSuccessCallbacks { - successCallback(rootCommitment) + successCallback(forkingPoint) } - return promise.New[*Commitment]().Resolve(rootCommitment), nil + return promise.New[*Commitment]().Resolve(forkingPoint), nil } commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) @@ -220,19 +281,55 @@ func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFrom return commitmentRequest, nil } -func (c *Chains) monitorLatestEngineCommitment(engine *engine.Engine) { - unsubscribe := engine.Events.Notarization.LatestCommitmentUpdated.Hook(func(modelCommitment *model.Commitment) { - commitment, err := c.PublishCommitment(modelCommitment) - if err != nil { - c.protocol.LogDebug(ierrors.Wrapf(err, "failed to add commitment %s", modelCommitment.ID())) +func (c *Chains) publishEngineCommitments(chain *Chain) { + chain.engine.OnUpdateWithContext(func(_, engine *engine.Engine, withinContext func(subscriptionFactory func() (unsubscribe func()))) { + if engine != nil { + withinContext(func() (unsubscribe func()) { + var ( + latestPublishedIndex iotago.SlotIndex + rootPublished bool + ) + + publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment) { + publishedCommitment, err := c.PublishCommitment(commitment) + if err != nil { + panic(err) // this can never happen, but we panic to get a stack trace if it ever does + } + + publishedCommitment.promote(chain) + publishedCommitment.IsVerified.Trigger() + + latestPublishedIndex = commitment.Index() + + return publishedCommitment + } + + return engine.LatestCommitment().OnUpdate(func(_, latestModelCommitment *model.Commitment) { + if !rootPublished { + publishedRoot := publishCommitment(engine.RootCommitment().Get()) + + chain.ForkingPointR().Compute(func(currentValue *Commitment) *Commitment { + if currentValue != nil { + return currentValue + } + + return publishedRoot + }) + + rootPublished = true + } + + for latestPublishedIndex < latestModelCommitment.Index() { + if commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedIndex + 1); err != nil { + panic(err) // this should never happen, but we panic to get a stack trace if it does + } else { + publishCommitment(commitmentToPublish) + } + } + }) + }) } - - commitment.Parent().Get().successor.Set(commitment) - - commitment.Verified().Trigger() - }).Unhook - - engine.HookShutdown(unsubscribe) + }) } func (c *Chains) trackHeaviestCandidate(candidateVariable reactive.Variable[*Chain], chainWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 9a5c571f9..5f14016e8 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -1,6 +1,8 @@ package protocol import ( + "fmt" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/iota-core/pkg/model" @@ -10,240 +12,172 @@ import ( type Commitment struct { *model.Commitment - parent reactive.Variable[*Commitment] - successor reactive.Variable[*Commitment] - children reactive.Set[*Commitment] - spawnedChain reactive.Variable[*Chain] - chain reactive.Variable[*Chain] - solid reactive.Event - attested reactive.Event - verified reactive.Event - inSyncRange *commitmentInSyncRange - requestBlocks *commitmentRequestBlocks - requestAttestations *commitmentRequestAttestations - evicted reactive.Event -} - -func NewCommitment(commitment *model.Commitment, optIsRoot ...bool) *Commitment { + Parent reactive.Variable[*Commitment] + Children reactive.Set[*Commitment] + MainChild reactive.Variable[*Commitment] + SpawnedChain reactive.Variable[*Chain] + Chain reactive.Variable[*Chain] + Engine reactive.Variable[*engine.Engine] + InSyncRange *commitmentInSyncRange + RequestBlocks *commitmentRequestBlocks + RequestAttestations *commitmentRequestAttestations + IsSolid reactive.Event + IsAttested reactive.Event + IsVerified reactive.Event + IsRoot reactive.Event + IsEvicted reactive.Event +} + +func NewCommitment(commitment *model.Commitment) *Commitment { c := &Commitment{ Commitment: commitment, - parent: reactive.NewVariable[*Commitment](), - successor: reactive.NewVariable[*Commitment](), - children: reactive.NewSet[*Commitment](), - spawnedChain: reactive.NewVariable[*Chain](), - chain: reactive.NewVariable[*Chain](), - solid: reactive.NewEvent(), - attested: reactive.NewEvent(), - verified: reactive.NewEvent(), - evicted: reactive.NewEvent(), - } - - c.inSyncRange = newCommitmentInSyncRange(c, lo.First(optIsRoot)) - c.requestBlocks = newCommitmentRequestBlocks(c, lo.First(optIsRoot)) - c.requestAttestations = newCommitmentRequestAttestations(c) - - c.parent.OnUpdate(func(_, parent *Commitment) { c.solid.InheritFrom(parent.solid) }) - - c.chain.OnUpdate(func(_, chain *Chain) { chain.registerCommitment(c) }) - - if lo.First(optIsRoot) { - c.solid.Set(true) - c.attested.Set(true) - c.verified.Set(true) + Parent: reactive.NewVariable[*Commitment](), + MainChild: reactive.NewVariable[*Commitment](), + Children: reactive.NewSet[*Commitment](), + SpawnedChain: reactive.NewVariable[*Chain](), + Chain: reactive.NewVariable[*Chain](), + Engine: reactive.NewVariable[*engine.Engine](), + IsSolid: reactive.NewEvent(), + IsAttested: reactive.NewEvent(), + IsVerified: reactive.NewEvent(), + IsRoot: reactive.NewEvent(), + IsEvicted: reactive.NewEvent(), } - return c -} + c.InSyncRange = newCommitmentInSyncRange(c) + c.RequestBlocks = newCommitmentRequestBlocks(c) + c.RequestAttestations = newCommitmentRequestAttestations(c) -func (c *Commitment) CommitmentModel() *model.Commitment { - return c.Commitment -} - -func (c *Commitment) Parent() reactive.Variable[*Commitment] { - return c.parent -} - -func (c *Commitment) Successor() reactive.Variable[*Commitment] { - return c.successor -} - -func (c *Commitment) Children() reactive.Set[*Commitment] { - return c.children -} - -func (c *Commitment) SpawnedChain() reactive.Variable[*Chain] { - return c.spawnedChain -} - -func (c *Commitment) Chain() *Chain { - return c.chain.Get() -} - -func (c *Commitment) ChainR() reactive.Variable[*Chain] { - return c.chain -} - -func (c *Commitment) Solid() reactive.Event { - return c.solid -} - -func (c *Commitment) Attested() reactive.Event { - return c.attested -} - -func (c *Commitment) Verified() reactive.Event { - return c.verified -} - -func (c *Commitment) InSyncRange() reactive.Variable[bool] { - return c.inSyncRange -} + c.IsRoot.OnTrigger(func() { + c.IsSolid.Set(true) + c.IsAttested.Set(true) + c.IsVerified.Set(true) + }) -func (c *Commitment) RequestBlocks() reactive.Variable[bool] { - return c.requestBlocks -} + c.Parent.OnUpdate(func(_, parent *Commitment) { + c.IsSolid.InheritFrom(parent.IsSolid) -func (c *Commitment) RequestAttestations() reactive.Variable[bool] { - return c.requestAttestations -} + parent.registerChild(c, c.inheritChain(parent)) + }) -func (c *Commitment) Engine() reactive.Variable[*engine.Engine] { - return c.chain.Get().EngineR() -} + c.Chain.OnUpdate(func(_, chain *Chain) { + chain.registerCommitment(c) -func (c *Commitment) Evicted() reactive.Event { - return c.evicted -} - -func (c *Commitment) setParent(parent *Commitment) { - parent.registerChild(c, c.chainUpdater(parent)) + // commitments inherit the engine from the chain + chain.engine.OnUpdate(func(_, chainEngine *engine.Engine) { + c.Engine.Set(chainEngine) + }) + }) - if c.parent.Set(parent) != nil { - panic("parent may not be changed once it was set") - } + return c } func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { - if c.children.Add(newChild) { - c.successor.Compute(func(currentSuccessor *Commitment) *Commitment { + if c.Children.Add(newChild) { + c.MainChild.Compute(func(currentSuccessor *Commitment) *Commitment { return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) }) - unsubscribe := c.successor.OnUpdate(onSuccessorUpdated) + unsubscribe := c.MainChild.OnUpdate(onSuccessorUpdated) - c.evicted.OnTrigger(unsubscribe) + c.IsEvicted.OnTrigger(unsubscribe) } } -func (c *Commitment) chainUpdater(parent *Commitment) func(*Commitment, *Commitment) { +func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { var unsubscribeFromParent func() return func(_, successor *Commitment) { - c.spawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { - if successor == nil { - panic("successor may not be changed back to nil") - } + c.SpawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { + switch successor { + case nil: + panic("Successor may not be changed back to nil") - if successor == c { + case c: if spawnedChain != nil { spawnedChain.evicted.Trigger() } - unsubscribeFromParent = parent.chain.OnUpdate(func(_, chain *Chain) { c.chain.Set(chain) }) + unsubscribeFromParent = parent.Chain.OnUpdate(func(_, chain *Chain) { + c.Chain.Set(chain) + }) return nil - } - if spawnedChain != nil { - return spawnedChain - } + default: + if spawnedChain == nil { + if unsubscribeFromParent != nil { + unsubscribeFromParent() + } - if unsubscribeFromParent != nil { - unsubscribeFromParent() - } + spawnedChain = NewChain() + spawnedChain.forkingPoint.Set(c) + } - return NewChain(c) + return spawnedChain + } }) } } -// max compares the commitment with the given other commitment and returns the one with the higher index. -func (c *Commitment) max(other *Commitment) *Commitment { - if c == nil || other != nil && other.Index() >= c.Index() { - return other - } - - return c -} - -func (c *Commitment) cumulativeWeight() uint64 { - if c == nil { - return 0 - } +func (c *Commitment) promote(targetChain *Chain) { + c.Chain.Compute(func(currentChain *Chain) *Chain { + if currentChain != nil { + fmt.Println("SHOULD PROMOTE") + //currentChain.Promote(targetChain) + } - return c.CumulativeWeight() + return targetChain + }) } type commitmentInSyncRange struct { reactive.Variable[bool] - aboveLatestVerifiedCommitment *commitmentAboveLatestVerifiedCommitment + aboveLatestVerifiedCommitment reactive.Variable[bool] isBelowSyncThreshold reactive.Event } -func newCommitmentInSyncRange(commitment *Commitment, isRoot bool) *commitmentInSyncRange { +func newCommitmentInSyncRange(commitment *Commitment) *commitmentInSyncRange { i := &commitmentInSyncRange{ aboveLatestVerifiedCommitment: newCommitmentAboveLatestVerifiedCommitment(commitment), isBelowSyncThreshold: reactive.NewEvent(), } - commitment.parent.OnUpdate(func(_, parent *Commitment) { + commitment.Parent.OnUpdate(func(_, parent *Commitment) { triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.inSyncRange.isBelowSyncThreshold + return commitment.InSyncRange.isBelowSyncThreshold }, commitment, (*Chain).SyncThreshold) }) - if isRoot { + commitment.IsRoot.OnTrigger(func() { i.isBelowSyncThreshold.Set(true) - } + }) i.Variable = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { return belowSyncThreshold && aboveLatestVerifiedCommitment - }, i.isBelowSyncThreshold, newCommitmentAboveLatestVerifiedCommitment(commitment)) + }, i.isBelowSyncThreshold, i.aboveLatestVerifiedCommitment) return i } -type commitmentAboveLatestVerifiedCommitment struct { - reactive.Variable[bool] - - parentVerified reactive.Event - - parentAboveLatestVerifiedCommitment reactive.Variable[bool] - - directlyAboveLatestVerifiedCommitment reactive.Variable[bool] -} - -func newCommitmentAboveLatestVerifiedCommitment(commitment *Commitment) *commitmentAboveLatestVerifiedCommitment { - a := &commitmentAboveLatestVerifiedCommitment{ - parentVerified: reactive.NewEvent(), - parentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - } +func newCommitmentAboveLatestVerifiedCommitment(commitment *Commitment) reactive.Variable[bool] { + var ( + parentVerified = reactive.NewEvent() + parentAboveLatestVerifiedCommitment = reactive.NewVariable[bool]() + directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { + return parentVerified && !verified + }, parentVerified, commitment.IsVerified) + ) - a.directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { - return parentVerified && !verified - }, a.parentVerified, commitment.verified) - - a.Variable = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { - return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment - }, a.directlyAboveLatestVerifiedCommitment, a.parentAboveLatestVerifiedCommitment) - - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { - a.parentVerified.InheritFrom(parent.verified) - a.parentAboveLatestVerifiedCommitment.InheritFrom(parent.inSyncRange.aboveLatestVerifiedCommitment) + commitment.Parent.OnUpdateOnce(func(_, parent *Commitment) { + parentVerified.InheritFrom(parent.IsVerified) + parentAboveLatestVerifiedCommitment.InheritFrom(parent.InSyncRange.aboveLatestVerifiedCommitment) }) - return a + return reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { + return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment + }, directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment) } type commitmentRequestAttestations struct { @@ -262,13 +196,13 @@ func newCommitmentRequestAttestations(commitment *Commitment) *commitmentRequest c.isDirectlyAboveLatestAttestedCommitment = reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { return parentAttested && !attested - }, c.parentAttested, commitment.attested) + }, c.parentAttested, commitment.IsAttested) - commitment.parent.OnUpdateOnce(func(_, parent *Commitment) { c.parentAttested.InheritFrom(parent.attested) }) + commitment.Parent.OnUpdateOnce(func(_, parent *Commitment) { c.parentAttested.InheritFrom(parent.IsAttested) }) var attestationRequestedByChain reactive.DerivedVariable[bool] - commitment.chain.OnUpdate(func(_, newChain *Chain) { + commitment.Chain.OnUpdate(func(_, newChain *Chain) { // cleanup the old chain specific derived variable if it exists if attestationRequestedByChain != nil { attestationRequestedByChain.Unsubscribe() @@ -292,22 +226,22 @@ type commitmentRequestBlocks struct { isBelowWarpSyncThreshold reactive.Event } -func newCommitmentRequestBlocks(commitment *Commitment, isRoot bool) *commitmentRequestBlocks { +func newCommitmentRequestBlocks(commitment *Commitment) *commitmentRequestBlocks { r := &commitmentRequestBlocks{ isBelowWarpSyncThreshold: reactive.NewEvent(), } - if isRoot { + commitment.IsRoot.OnTrigger(func() { r.isBelowWarpSyncThreshold.Set(true) - } + }) r.Variable = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { return inSyncWindow && belowWarpSyncThreshold - }, commitment.inSyncRange, r.isBelowWarpSyncThreshold) + }, commitment.InSyncRange, r.isBelowWarpSyncThreshold) - commitment.parent.OnUpdate(func(_, parent *Commitment) { + commitment.Parent.OnUpdate(func(_, parent *Commitment) { triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.requestBlocks.isBelowWarpSyncThreshold + return commitment.RequestBlocks.isBelowWarpSyncThreshold }, commitment, (*Chain).WarpSyncThreshold) }) diff --git a/pkg/protocol/engine/clock/blocktime/clock.go b/pkg/protocol/engine/clock/blocktime/clock.go index 414e7af1d..376104571 100644 --- a/pkg/protocol/engine/clock/blocktime/clock.go +++ b/pkg/protocol/engine/clock/blocktime/clock.go @@ -49,7 +49,7 @@ func NewProvider(opts ...options.Option[Clock]) module.Provider[*engine.Engine, e.Events.Clock.ConfirmedTimeUpdated.LinkTo(c.confirmedTime.OnUpdated) asyncOpt := event.WithWorkerPool(e.Workers.CreatePool("Clock", 1)) - c.HookStopped(lo.Batch( + c.HookShutdown(lo.Batch( e.Events.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { c.advanceAccepted(block.IssuingTime()) }, asyncOpt).Unhook, @@ -64,10 +64,10 @@ func NewProvider(opts ...options.Option[Clock]) module.Provider[*engine.Engine, c.onSlotFinalized(slotEndTime) }, asyncOpt).Unhook, + + c.TriggerStopped, )) }) - - e.HookStopped(c.TriggerStopped) }, (*Clock).TriggerConstructed) }) } diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index c1bb40df0..d2230c823 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -9,6 +9,7 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/runtime/event" @@ -73,6 +74,8 @@ type Engine struct { startupAvailableBlocksWindow iotago.SlotIndex chainID iotago.CommitmentID + rootCommitment reactive.Variable[*model.Commitment] + latestCommitment reactive.Variable[*model.Commitment] mutex syncutils.RWMutex optsSnapshotPath string @@ -106,7 +109,7 @@ func New( syncManagerProvider module.Provider[*Engine, syncmanager.SyncManager], opts ...options.Option[Engine], ) (engine *Engine) { - var needsToImportSnapshot bool + var importSnapshot bool var file *os.File var fileErr error @@ -121,10 +124,8 @@ func New( optsSnapshotPath: "snapshot.bin", optsSnapshotDepth: 5, }, opts, func(e *Engine) { - needsToImportSnapshot = !e.Storage.Settings().IsSnapshotImported() && e.optsSnapshotPath != "" - // Import the settings from the snapshot file if needed. - if needsToImportSnapshot { + if importSnapshot = !e.Storage.Settings().IsSnapshotImported() && e.optsSnapshotPath != ""; importSnapshot { file, fileErr = os.Open(e.optsSnapshotPath) if fileErr != nil { panic(ierrors.Wrap(fileErr, "failed to open snapshot file")) @@ -136,7 +137,11 @@ func New( } }, func(e *Engine) { - // Setup all components + // setup reactive variables + e.rootCommitment = newEngineRootCommitmentVariable(e) + e.latestCommitment = newEngineLatestCommitmentVariable(e) + + // setup all components e.BlockCache = blocks.New(e.EvictionState, e.Storage.Settings().APIProvider()) e.BlockRequester = eventticker.New(e.optsBlockRequester...) e.SybilProtection = sybilProtectionProvider(e) @@ -165,7 +170,7 @@ func New( (*Engine).TriggerConstructed, func(e *Engine) { // Import the rest of the snapshot if needed. - if needsToImportSnapshot { + if importSnapshot { if err := e.ImportContents(file); err != nil { panic(ierrors.Wrap(err, "failed to import snapshot contents")) } @@ -214,7 +219,7 @@ func New( func (e *Engine) Shutdown() { if !e.WasStopped() { - e.TriggerStopped() + e.TriggerShutdown() e.BlockRequester.Shutdown() e.Attestations.Shutdown() @@ -493,6 +498,14 @@ func (e *Engine) setupPruning() { }, event.WithWorkerPool(e.Workers.CreatePool("PruneEngine", 1))) } +func (e *Engine) RootCommitment() reactive.Variable[*model.Commitment] { + return e.rootCommitment +} + +func (e *Engine) LatestCommitment() reactive.Variable[*model.Commitment] { + return e.latestCommitment +} + // EarliestRootCommitment is used to make sure that the chainManager knows the earliest possible // commitment that blocks we are solidifying will refer to. Failing to do so will prevent those blocks // from being processed as their chain will be deemed unsolid. @@ -524,6 +537,52 @@ func (e *Engine) ErrorHandler(componentName string) func(error) { } } +func newEngineRootCommitmentVariable(e *Engine) reactive.Variable[*model.Commitment] { + v := reactive.NewVariable[*model.Commitment]() + + updateRootCommitment := func(lastFinalizedSlot iotago.SlotIndex) { + maxCommittableAge := e.APIForSlot(lastFinalizedSlot).ProtocolParameters().MaxCommittableAge() + + v.Compute(func(rootCommitment *model.Commitment) *model.Commitment { + return lo.Return1(e.Storage.Commitments().Load(lo.Cond(lastFinalizedSlot < maxCommittableAge, 0, lastFinalizedSlot-maxCommittableAge))) + }) + } + + e.HookConstructed(func() { + unsubscribe := e.Events.SlotGadget.SlotFinalized.Hook(updateRootCommitment).Unhook + + e.HookInitialized(func() { + updateRootCommitment(e.Storage.Settings().LatestFinalizedSlot()) + }) + + e.HookShutdown(unsubscribe) + }) + + return v +} + +func newEngineLatestCommitmentVariable(e *Engine) reactive.Variable[*model.Commitment] { + l := reactive.NewVariable[*model.Commitment]() + + updateLatestCommitment := func(latestCommitment *model.Commitment) { + l.Compute(func(currentLatestComponent *model.Commitment) *model.Commitment { + return lo.Cond(currentLatestComponent == nil || currentLatestComponent.Index() < latestCommitment.Index(), latestCommitment, currentLatestComponent) + }) + } + + e.HookConstructed(func() { + unsubscribe := e.Events.Notarization.LatestCommitmentUpdated.Hook(updateLatestCommitment).Unhook + + e.HookInitialized(func() { + updateLatestCommitment(e.Storage.Settings().LatestCommitment()) + }) + + e.HookShutdown(unsubscribe) + }) + + return l +} + // endregion /////////////////////////////////////////////////////////////////////////////////////////////////////////// // region Options ////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/pkg/protocol/engine/tipmanager/v1/provider.go b/pkg/protocol/engine/tipmanager/v1/provider.go index 26fe1a5e9..fe44998a1 100644 --- a/pkg/protocol/engine/tipmanager/v1/provider.go +++ b/pkg/protocol/engine/tipmanager/v1/provider.go @@ -25,7 +25,10 @@ func NewProvider(opts ...options.Option[TipManager]) module.Provider[*engine.Eng t.TriggerInitialized() }) - e.HookStopped(t.TriggerStopped) + e.HookShutdown(func() { + t.TriggerShutdown() + t.TriggerStopped() + }) return t }) diff --git a/pkg/protocol/engine/tipselection/v1/provider.go b/pkg/protocol/engine/tipselection/v1/provider.go index 88bc2ed3e..067cdd0b8 100644 --- a/pkg/protocol/engine/tipselection/v1/provider.go +++ b/pkg/protocol/engine/tipselection/v1/provider.go @@ -28,7 +28,10 @@ func NewProvider(opts ...options.Option[TipSelection]) module.Provider[*engine.E e.TipManager.OnBlockAdded(t.classifyTip) }) - e.HookStopped(t.TriggerStopped) + e.HookShutdown(func() { + t.TriggerShutdown() + t.TriggerStopped() + }) return t }) diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go deleted file mode 100644 index affac566a..000000000 --- a/pkg/protocol/engines.go +++ /dev/null @@ -1,84 +0,0 @@ -package protocol - -import ( - "fmt" - - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" -) - -type Engines struct { - mainEngine reactive.Variable[*engine.Engine] - candidateEngine reactive.Variable[*engine.Engine] - - *enginemanager.EngineManager -} - -func newEngines(protocol *Protocol) *Engines { - e := &Engines{ - EngineManager: enginemanager.New( - protocol.Workers, - func(err error) { protocol.LogError(err) }, - protocol.options.BaseDirectory, - 3, - protocol.options.StorageOptions, - protocol.options.EngineOptions, - protocol.options.FilterProvider, - protocol.options.CommitmentFilterProvider, - protocol.options.BlockDAGProvider, - protocol.options.BookerProvider, - protocol.options.ClockProvider, - protocol.options.BlockGadgetProvider, - protocol.options.SlotGadgetProvider, - protocol.options.SybilProtectionProvider, - protocol.options.NotarizationProvider, - protocol.options.AttestationProvider, - protocol.options.LedgerProvider, - protocol.options.SchedulerProvider, - protocol.options.TipManagerProvider, - protocol.options.TipSelectionProvider, - protocol.options.RetainerProvider, - protocol.options.UpgradeOrchestratorProvider, - protocol.options.SyncManagerProvider, - ), - mainEngine: reactive.NewVariable[*engine.Engine](), - candidateEngine: reactive.NewVariable[*engine.Engine](), - } - - if mainEngine, err := e.EngineManager.LoadActiveEngine(protocol.options.SnapshotPath); err != nil { - panic(fmt.Sprintf("could not load active engine: %s", err)) - } else { - mainEngine.SetChainID(mainEngine.EarliestRootCommitment(mainEngine.Storage.Settings().LatestFinalizedSlot()).ID()) - - e.mainEngine.Set(mainEngine) - - protocol.Network.HookStopped(mainEngine.Shutdown) - } - - protocol.HookConstructed(func() { - protocol.HeaviestVerifiedCandidate().OnUpdate(func(_, newChain *Chain) { - e.mainEngine.Set(newChain.Engine()) - }) - - e.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { protocol.Events.Engine.LinkTo(engine.Events) }) - }) - - return e -} - -func (e *Engines) MainEngineInstance() *engine.Engine { - return e.mainEngine.Get() -} - -func (e *Engines) MainEngineR() reactive.Variable[*engine.Engine] { - return e.mainEngine -} - -func (e *Engines) CandidateEngine() *engine.Engine { - return e.candidateEngine.Get() -} - -func (e *Engines) CandidateEngineR() reactive.Variable[*engine.Engine] { - return e.candidateEngine -} diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go index a1f83ed6d..1166ea78e 100644 --- a/pkg/protocol/gossip.go +++ b/pkg/protocol/gossip.go @@ -80,13 +80,13 @@ func (r *Gossip) ProcessBlock(block *model.Block, src peer.ID) { } if !commitmentRequest.WasCompleted() { - fmt.Println("WARNING3", block.ProtocolBlock().SlotCommitmentID) + fmt.Println(r.protocol.MainEngineInstance().Name(), "WARNING3", block.ProtocolBlock().SlotCommitmentID, block.ProtocolBlock().SlotCommitmentID.Index()) // TODO: QUEUE TO UNSOLID COMMITMENT BLOCKS } else { commitment := commitmentRequest.Result() - if chain := commitment.Chain(); chain != nil && chain.InSyncRange(block.ID().Index()) { - if engine := commitment.Engine().Get(); engine != nil { + if chain := commitment.Chain.Get(); chain != nil && chain.InSyncRange(block.ID().Index()) { + if engine := commitment.Engine.Get(); engine != nil { engine.ProcessBlockFromPeer(block, src) } } @@ -114,7 +114,7 @@ func (r *Gossip) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src if commitment, err := r.protocol.Commitment(commitmentID); err != nil { r.LogDebug(ierrors.Wrapf(err, "failed to process commitment request for commitment %s from peer %s", commitmentID, src)) } else { - r.protocol.SendSlotCommitment(commitment.CommitmentModel(), src) + r.protocol.SendSlotCommitment(commitment.Commitment, src) } } @@ -125,13 +125,13 @@ func (r *Gossip) ProcessAttestations(commitmentModel *model.Commitment, attestat return } - chain := commitment.Chain() + chain := commitment.Chain.Get() if chain == nil { r.LogDebug(ierrors.Errorf("failed to find chain for commitment %s when processing attestations", commitmentModel.ID())) return } - commitmentVerifier, exists := r.commitmentVerifiers.Get(chain.Root().ID()) + commitmentVerifier, exists := r.commitmentVerifiers.Get(chain.ForkingPoint().ID()) if !exists { r.LogDebug(ierrors.Errorf("failed to find commitment verifier for commitment %s when processing attestations", commitmentModel.ID())) return @@ -144,7 +144,7 @@ func (r *Gossip) ProcessAttestations(commitmentModel *model.Commitment, attestat } // TODO: publish blockIDs, actualCumulativeWeight to target commitment - commitment.Attested().Set(true) + commitment.IsAttested.Set(true) fmt.Println("ATTESTATIONS", blockIDs, actualCumulativeWeight, source) } @@ -252,17 +252,17 @@ func (r *Gossip) startAttestationsRequester() { r.protocol.OnChainCreated(func(chain *Chain) { chain.RequestAttestations().OnUpdate(func(_, requestAttestations bool) { if requestAttestations { - r.commitmentVerifiers.GetOrCreate(chain.Root().ID(), func() *CommitmentVerifier { - return NewCommitmentVerifier(chain.EngineR().Get(), chain.Root().Parent().Get().CommitmentModel()) + r.commitmentVerifiers.GetOrCreate(chain.ForkingPoint().ID(), func() *CommitmentVerifier { + return NewCommitmentVerifier(chain.EngineR().Get(), chain.ForkingPoint().Parent.Get().Commitment) }) } else { - r.commitmentVerifiers.Delete(chain.Root().ID()) + r.commitmentVerifiers.Delete(chain.ForkingPoint().ID()) } }) }) r.protocol.OnCommitmentCreated(func(commitment *Commitment) { - commitment.requestAttestations.OnUpdate(func(_, requestAttestations bool) { + commitment.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { if requestAttestations { r.attestationsRequester.StartTicker(commitment.ID()) } else { @@ -292,7 +292,11 @@ func (r *Gossip) startBlockRequester() { engine.HookShutdown(unsubscribe) } - startBlockRequester(r.protocol.MainEngineInstance()) + r.protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { + startBlockRequester(engine) + }) - r.protocol.OnEngineCreated(startBlockRequester) + r.protocol.OnChainCreated(func(chain *Chain) { + chain.EngineR().OnUpdate(func(_, engine *engine.Engine) { startBlockRequester(engine) }) + }) } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index e0dc1b703..fdc848372 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -20,7 +20,6 @@ type Protocol struct { options *Options *Network - *Engines *Chains *Gossip @@ -37,7 +36,6 @@ func New(loggerInstance *logger.Logger, workers *workerpool.Group, dispatcher ne options: newOptions(), }, opts, func(p *Protocol) { p.Network = newNetwork(p, dispatcher) - p.Engines = newEngines(p) p.Chains = newChains(p) p.Gossip = NewGossip(p) }, (*Protocol).TriggerConstructed) diff --git a/pkg/protocol/utils.go b/pkg/protocol/utils.go index c8156c676..e45116311 100644 --- a/pkg/protocol/utils.go +++ b/pkg/protocol/utils.go @@ -7,13 +7,18 @@ import ( // triggerEventIfCommitmentBelowThreshold triggers the given event if the given commitment is below the given threshold. func triggerEventIfCommitmentBelowThreshold(event func(*Commitment) reactive.Event, commitment *Commitment, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { - // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) - event(commitment.parent.Get()).OnTrigger(func() { - // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met - chainThreshold(commitment.chain.Get()).OnUpdateOnce(func(_, _ iotago.SlotIndex) { - event(commitment).Trigger() - }, func(_, slotIndex iotago.SlotIndex) bool { - return commitment.Index() < slotIndex + commitment.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { + + // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) + withinContext(func() (unsubscribe func()) { + return event(commitment.Parent.Get()).OnTrigger(func() { + // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met + chainThreshold(chain).OnUpdateOnce(func(_, _ iotago.SlotIndex) { + event(commitment).Trigger() + }, func(_, slotIndex iotago.SlotIndex) bool { + return commitment.Index() < slotIndex + }) + }) }) }) } diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index b6eb7ad6c..2d7e3c665 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -21,7 +21,7 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { if latestCommitment.ID() != latestChainCommitment.ID() { return ierrors.Errorf("AssertChainManagerIsSolid: %s: latest commitment is not equal, expected %s, got %s", node.Name, latestCommitment.ID(), latestChainCommitment.ID()) } - if !latestChainCommitment.Solid().WasTriggered() { + if !latestChainCommitment.IsSolid.WasTriggered() { return ierrors.Errorf("AssertChainManagerIsSolid: %s: is not solid", node.Name) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 003613b31..5a6c28c56 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -193,18 +193,19 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { }) n.Protocol.HeaviestAttestedCandidate().OnUpdate(func(_, newChain *protocol.Chain) { - fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, newChain.Root().ID()) + fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, newChain.ForkingPoint().ID()) }) n.Protocol.Events.Engine.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { fmt.Printf("%s > TipManager.BlockAdded: %s in pool %d\n", n.Name, tipMetadata.ID(), tipMetadata.TipPool().Get()) }) - n.Protocol.CandidateEngineR().OnUpdate(func(_, engine *engine.Engine) { - fmt.Printf("%s > CandidateEngineActivated: %s, ChainID:%s Index:%s\n", n.Name, engine.Name(), engine.ChainID(), engine.ChainID().Index()) + // TODO: FIX + //n.Protocol.CandidateEngineR().OnUpdate(func(_, engine *engine.Engine) { + // fmt.Printf("%s > CandidateEngineActivated: %s, ChainID:%s Index:%s\n", n.Name, engine.Name(), engine.ChainID(), engine.ChainID().Index()) - n.attachEngineLogs(failOnBlockFiltered, engine) - }) + // n.attachEngineLogs(failOnBlockFiltered, engine) + //}) n.Protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { fmt.Printf("%s > MainEngineSwitched: %s, ChainID:%s Index:%s\n", n.Name, engine.Name(), engine.ChainID(), engine.ChainID().Index()) diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 08da3a591..d5224d7ea 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -123,7 +123,7 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - actualChainID := node.Protocol.MainChain().Root().ID() + actualChainID := node.Protocol.MainChain().ForkingPoint().ID() if expectedChainID != actualChainID { return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Index(), actualChainID, actualChainID.Index()) } diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index d99fbe088..59bdcc743 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -8,13 +8,13 @@ replace github.com/iotaledger/iota-core/tools/genesis-snapshot => ../genesis-sna require ( github.com/AlecAivazis/survey/v2 v2.3.7 - github.com/iotaledger/hive.go/app v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/logger v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2 + github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230829160021-46cad51e89d1 @@ -37,12 +37,12 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index e933c06e2..aeff98cc3 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -171,32 +171,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 h1:C8oOO8iHniK2yiQiphft8MXT/x97InWgUww+moQh2DU= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230906114834-b50190b9f9c2 h1:0iwjkfvNdJftw83lhJSnniZeY0FLtEAavZT91QIkFGc= -github.com/iotaledger/hive.go/app v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2 h1:sck44Y5VB79MaG7p3s6/gRyXvBk31f0Alxxl/fFP/Ac= -github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2 h1:g9vVD1/Hx/KL4NLVJ7vsQXDIBKGxtPYBQBoillNqjxM= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2 h1:yNF7+4K/f4okb8v5BiBIJ8sIq3LUWdLDEPYZ38rCEAE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2 h1:BayCsCFoK5Ij0ZZn0Wejw+sKFvxTbkOGcoDBWZtyYAk= -github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2 h1:G6rcO7YWSPzhUfp+Z+ubusFVEbWxmXFqqjH43agoap8= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 h1:PBc7/OrBkfXV70odqXdGJzKqvImx/R46R65OO9RMRpw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2 h1:wLZPoEOVv+L2rVDtRqcoOKmQuEw+Uw61fviYAmBWp98= -github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230906114834-b50190b9f9c2 h1:vVs4Zh6VWZdpduOJqo/LRuZRnLkWtg5aQnWXyjTkT9s= -github.com/iotaledger/hive.go/logger v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2 h1:jpX2K+d9+FaCngP3dTjSIabm+OIxThc/AQPKvp2d23c= -github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2 h1:kEakiZRk/LUb2CxQvSOsdTgUXK1Ee4BNec9ps40+iXQ= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2 h1:exATYMLT/d8fgMuVNO6kMDsFn9DUJEcyCuoBv9sP13g= -github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272 h1:8dZqe4bnHNhwwPRi/SC/LWDdziZB/tD8xusv0vRm4wU= +github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272 h1:1QqOt3NKPTagZxPuNqfjQhTsSkwvFvCsgGjgqeE784k= +github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272 h1:e4JydqeUSOD0XF3LEXtaARuJXHV+oxFrT24muNyllw0= +github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272 h1:iJsFL+p/hjdypxRKdaDkIbVvrnPtaGWLdrhCzegTkfE= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272 h1:oqmp24gUuSRmhhUGBHG2IstBRsUv2W2sbaXc8fInWqQ= +github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272 h1:ac84RMbrGrdFaJRwh1ve2GVOA3Z9FmXKEEo933ASexI= +github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272 h1:fLgtC1oswHLnKBRPyTgjNC/4I8vQyZVQw1kM0OmFpg4= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272 h1:F7Q1Hw9syVZ7+6YW563xOcAaOAN1E8iSf+EPl4/WZPI= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272 h1:KCAxk173D21tRqC4FqrTRHYhBBz+qhPrCxlrS8Z5h/I= +github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272 h1:EofN3DqV8yHU7kvPNvpQj9ea/SL6Qvo4NXLs4c6mlaE= +github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272 h1:Oh4B2gbNGsXeFPD4x9HHMzJ2yn1/0PDAegDuWh85pSA= +github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272 h1:T98ib6oj63bHdUbEQB4SK8Q1HvnMYaWU5ST/mVDkToI= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272 h1:njt9RKg0RehDi+AveZLNV6gWPnPv5ufGKfl050Mx54Q= +github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20230829160021-46cad51e89d1 h1:10hGLm62uQ2V2HgqCR6FV0fvgpXo5GqlL/SIJ/t4VmY= github.com/iotaledger/iota.go/v4 v4.0.0-20230829160021-46cad51e89d1/go.mod h1:MM3RLtTEsfT6Wh0EhpgmzVO/HM0/NOw+E7+mnGTnyA0= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index fc0b285a5..59288f0f9 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20230906114834-b50190b9f9c2 + github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -18,7 +18,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect @@ -58,18 +57,18 @@ require ( github.com/huin/goupnp v1.2.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20230829160021-46cad51e89d1 // indirect @@ -132,7 +131,6 @@ require ( github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pokt-network/smt v0.6.1 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/prometheus/client_golang v1.16.0 // indirect @@ -148,7 +146,6 @@ require ( github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.8.4 // indirect github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect @@ -178,6 +175,5 @@ require ( google.golang.org/grpc v1.57.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 845291da5..60462f13a 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -279,34 +279,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 h1:C8oOO8iHniK2yiQiphft8MXT/x97InWgUww+moQh2DU= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230906114834-b50190b9f9c2 h1:0iwjkfvNdJftw83lhJSnniZeY0FLtEAavZT91QIkFGc= -github.com/iotaledger/hive.go/app v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272 h1:8dZqe4bnHNhwwPRi/SC/LWDdziZB/tD8xusv0vRm4wU= +github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272 h1:1QqOt3NKPTagZxPuNqfjQhTsSkwvFvCsgGjgqeE784k= +github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2 h1:sck44Y5VB79MaG7p3s6/gRyXvBk31f0Alxxl/fFP/Ac= -github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2 h1:g9vVD1/Hx/KL4NLVJ7vsQXDIBKGxtPYBQBoillNqjxM= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2 h1:yNF7+4K/f4okb8v5BiBIJ8sIq3LUWdLDEPYZ38rCEAE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2 h1:BayCsCFoK5Ij0ZZn0Wejw+sKFvxTbkOGcoDBWZtyYAk= -github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2 h1:G6rcO7YWSPzhUfp+Z+ubusFVEbWxmXFqqjH43agoap8= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 h1:PBc7/OrBkfXV70odqXdGJzKqvImx/R46R65OO9RMRpw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2 h1:wLZPoEOVv+L2rVDtRqcoOKmQuEw+Uw61fviYAmBWp98= -github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230906114834-b50190b9f9c2 h1:vVs4Zh6VWZdpduOJqo/LRuZRnLkWtg5aQnWXyjTkT9s= -github.com/iotaledger/hive.go/logger v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2 h1:jpX2K+d9+FaCngP3dTjSIabm+OIxThc/AQPKvp2d23c= -github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2 h1:kEakiZRk/LUb2CxQvSOsdTgUXK1Ee4BNec9ps40+iXQ= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2 h1:exATYMLT/d8fgMuVNO6kMDsFn9DUJEcyCuoBv9sP13g= -github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272 h1:e4JydqeUSOD0XF3LEXtaARuJXHV+oxFrT24muNyllw0= +github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272 h1:iJsFL+p/hjdypxRKdaDkIbVvrnPtaGWLdrhCzegTkfE= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272 h1:oqmp24gUuSRmhhUGBHG2IstBRsUv2W2sbaXc8fInWqQ= +github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272 h1:ac84RMbrGrdFaJRwh1ve2GVOA3Z9FmXKEEo933ASexI= +github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272 h1:fLgtC1oswHLnKBRPyTgjNC/4I8vQyZVQw1kM0OmFpg4= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272 h1:F7Q1Hw9syVZ7+6YW563xOcAaOAN1E8iSf+EPl4/WZPI= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272 h1:KCAxk173D21tRqC4FqrTRHYhBBz+qhPrCxlrS8Z5h/I= +github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272 h1:EofN3DqV8yHU7kvPNvpQj9ea/SL6Qvo4NXLs4c6mlaE= +github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272 h1:Oh4B2gbNGsXeFPD4x9HHMzJ2yn1/0PDAegDuWh85pSA= +github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272 h1:T98ib6oj63bHdUbEQB4SK8Q1HvnMYaWU5ST/mVDkToI= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272 h1:njt9RKg0RehDi+AveZLNV6gWPnPv5ufGKfl050Mx54Q= +github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 h1:BkDuQxUYo9aZ4XYuh8EbXWtZBdh7WvL7oh2unWNUFMo= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14/go.mod h1:ADBXzdHXTldP0NB2Vf+KbhDxkYciGRjzQVXT6Rdne1g= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b h1:EPB/+iWeSx/WgJlzaXl8yjinxuD8CCOdi2ZPMLeeMVY= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index acc200680..4165e0356 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2 + github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272 + github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230829160021-46cad51e89d1 github.com/mr-tron/base58 v1.2.0 @@ -22,24 +22,32 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/ethereum/go-ethereum v1.12.2 // indirect + github.com/fatih/structs v1.1.0 // indirect + github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/uuid v1.3.1 // indirect github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect + github.com/knadh/koanf v1.5.0 // indirect github.com/kr/text v0.2.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-libp2p v0.30.0 // indirect github.com/minio/sha256-simd v1.0.1 // indirect + github.com/mitchellh/copystructure v1.2.0 // indirect + github.com/mitchellh/mapstructure v1.5.0 // indirect + github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect github.com/multiformats/go-base36 v0.2.0 // indirect github.com/multiformats/go-multiaddr v0.11.0 // indirect @@ -54,13 +62,17 @@ require ( github.com/pokt-network/smt v0.6.1 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect + github.com/spf13/cast v1.5.1 // indirect github.com/stretchr/testify v1.8.4 // indirect github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98 // indirect github.com/zyedidia/generic v1.2.1 // indirect go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.25.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/sys v0.12.0 // indirect google.golang.org/protobuf v1.31.0 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 4691777e4..4afe130e0 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -1,9 +1,45 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= +github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= +github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= +github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0/go.mod h1:gqlclDEZp4aqJOancXK6TN24aKhT0W0Ae9MHk3wzTMM= +github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= +github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= +github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= +github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= +github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= +github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= +github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= +github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -12,60 +48,209 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5il github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum/go-ethereum v1.12.2 h1:eGHJ4ij7oyVqUQn48LBz3B7pvQ8sV0wGJiIE6gDq/6Y= github.com/ethereum/go-ethereum v1.12.2/go.mod h1:1cRAEV+rp/xX0zraSCBnu9Py3HQ+geRMj3HdR+k0wfI= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= +github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= +github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= +github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= +github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= +github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= +github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= +github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= +github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= +github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= +github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= +github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= +github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= +github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= +github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= +github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= +github.com/hjson/hjson-go/v4 v4.0.0 h1:wlm6IYYqHjOdXH1gHev4VoXCaW20HdQAGCxdOEEg2cs= +github.com/hjson/hjson-go/v4 v4.0.0/go.mod h1:KaYt3bTw3zhBjYqnXkYywcYctk0A2nxeEFTse3rH13E= github.com/holiman/uint256 v1.2.3 h1:K8UWO1HUJpRMXBxbmaY1Y8IAMZC/RsKB+ArEnnK4l5o= github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 h1:C8oOO8iHniK2yiQiphft8MXT/x97InWgUww+moQh2DU= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2 h1:sck44Y5VB79MaG7p3s6/gRyXvBk31f0Alxxl/fFP/Ac= -github.com/iotaledger/hive.go/constraints v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2 h1:g9vVD1/Hx/KL4NLVJ7vsQXDIBKGxtPYBQBoillNqjxM= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230906114834-b50190b9f9c2/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2 h1:yNF7+4K/f4okb8v5BiBIJ8sIq3LUWdLDEPYZ38rCEAE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2 h1:BayCsCFoK5Ij0ZZn0Wejw+sKFvxTbkOGcoDBWZtyYAk= -github.com/iotaledger/hive.go/ds v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2 h1:G6rcO7YWSPzhUfp+Z+ubusFVEbWxmXFqqjH43agoap8= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 h1:PBc7/OrBkfXV70odqXdGJzKqvImx/R46R65OO9RMRpw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2 h1:wLZPoEOVv+L2rVDtRqcoOKmQuEw+Uw61fviYAmBWp98= -github.com/iotaledger/hive.go/lo v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2 h1:jpX2K+d9+FaCngP3dTjSIabm+OIxThc/AQPKvp2d23c= -github.com/iotaledger/hive.go/runtime v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2 h1:kEakiZRk/LUb2CxQvSOsdTgUXK1Ee4BNec9ps40+iXQ= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230906114834-b50190b9f9c2/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2 h1:exATYMLT/d8fgMuVNO6kMDsFn9DUJEcyCuoBv9sP13g= -github.com/iotaledger/hive.go/stringify v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272 h1:8dZqe4bnHNhwwPRi/SC/LWDdziZB/tD8xusv0vRm4wU= +github.com/iotaledger/hive.go/ads v0.0.0-20230912002851-de46b7eb1272/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272 h1:1QqOt3NKPTagZxPuNqfjQhTsSkwvFvCsgGjgqeE784k= +github.com/iotaledger/hive.go/app v0.0.0-20230912002851-de46b7eb1272/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272 h1:e4JydqeUSOD0XF3LEXtaARuJXHV+oxFrT24muNyllw0= +github.com/iotaledger/hive.go/constraints v0.0.0-20230912002851-de46b7eb1272/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272 h1:iJsFL+p/hjdypxRKdaDkIbVvrnPtaGWLdrhCzegTkfE= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912002851-de46b7eb1272/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272 h1:oqmp24gUuSRmhhUGBHG2IstBRsUv2W2sbaXc8fInWqQ= +github.com/iotaledger/hive.go/crypto v0.0.0-20230912002851-de46b7eb1272/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272 h1:ac84RMbrGrdFaJRwh1ve2GVOA3Z9FmXKEEo933ASexI= +github.com/iotaledger/hive.go/ds v0.0.0-20230912002851-de46b7eb1272/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272 h1:fLgtC1oswHLnKBRPyTgjNC/4I8vQyZVQw1kM0OmFpg4= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230912002851-de46b7eb1272/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272 h1:F7Q1Hw9syVZ7+6YW563xOcAaOAN1E8iSf+EPl4/WZPI= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230912002851-de46b7eb1272/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272 h1:KCAxk173D21tRqC4FqrTRHYhBBz+qhPrCxlrS8Z5h/I= +github.com/iotaledger/hive.go/lo v0.0.0-20230912002851-de46b7eb1272/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272 h1:EofN3DqV8yHU7kvPNvpQj9ea/SL6Qvo4NXLs4c6mlaE= +github.com/iotaledger/hive.go/logger v0.0.0-20230912002851-de46b7eb1272/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272 h1:Oh4B2gbNGsXeFPD4x9HHMzJ2yn1/0PDAegDuWh85pSA= +github.com/iotaledger/hive.go/runtime v0.0.0-20230912002851-de46b7eb1272/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272 h1:T98ib6oj63bHdUbEQB4SK8Q1HvnMYaWU5ST/mVDkToI= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912002851-de46b7eb1272/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272 h1:njt9RKg0RehDi+AveZLNV6gWPnPv5ufGKfl050Mx54Q= +github.com/iotaledger/hive.go/stringify v0.0.0-20230912002851-de46b7eb1272/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20230829160021-46cad51e89d1 h1:10hGLm62uQ2V2HgqCR6FV0fvgpXo5GqlL/SIJ/t4VmY= github.com/iotaledger/iota.go/v4 v4.0.0-20230829160021-46cad51e89d1/go.mod h1:MM3RLtTEsfT6Wh0EhpgmzVO/HM0/NOw+E7+mnGTnyA0= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= +github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= +github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= +github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= +github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/knadh/koanf v1.5.0 h1:q2TSd/3Pyc/5yP9ldIrSdIz26MCcyNQzW0pEAugLPNs= +github.com/knadh/koanf v1.5.0/go.mod h1:Hgyjp4y8v44hpZtPzs7JZfRAW5AhN7KfZcwv1RYggDs= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-libp2p v0.30.0 h1:9EZwFtJPFBcs/yJTnP90TpN1hgrT/EsFfM+OZuwV87U= github.com/libp2p/go-libp2p v0.30.0/go.mod h1:nr2g5V7lfftwgiJ78/HrID+pwvayLyqKCEirT2Y3Byg= +github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= +github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= +github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= +github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= +github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= +github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= +github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= +github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= +github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= +github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= +github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= +github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= @@ -82,56 +267,256 @@ github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7B github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= +github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= +github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnuG+zWp9L0Uk= +github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e h1:s2RNOM/IGdY0Y6qfTeUKhDawdHDpK9RGBdx80qN4Ttw= github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e/go.mod h1:nBdnFKj15wFbf94Rwfq4m30eAcyY9V/IyKAGQFtqkW0= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c h1:Gcce/r5tSQeprxswXXOwQ/RBU1bjQWVd9dB7QKoPXBE= github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c/go.mod h1:1iCZ0433JJMecYqCa+TdWA9Pax8MGl4ByuNDZ7eSnQY= +github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= +github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc h1:8bQZVK1X6BJR/6nYUPxQEP+ReTsceJTKizeuwjWOPUA= github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= +github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= +github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pokt-network/smt v0.6.1 h1:u5yTGNNND6edXv3vMQrAcjku1Ig4osehdu+EMYSXHUU= github.com/pokt-network/smt v0.6.1/go.mod h1:CWgC9UzDxXJNkL7TEADnJXutZVMYzK/+dmBb37RWkeQ= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= +github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= +github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= +github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= +github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= +github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= +github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= +github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98 h1:i7k63xHOX2ntuHrhHewfKro67c834jug2DIk599fqAA= github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98/go.mod h1:Knu2XMRWe8SkwTlHc/+ghP+O9DEaZRQQEyTjvLJ5Cck= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XDc= github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= +go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= +go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= +go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= +golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= +golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= +golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= +golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= +golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= +google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= +google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= +google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= +google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= +gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= +sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= From 0a78cf382b77c1af8be46f44c5d2d80b027be54f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 12 Sep 2023 04:44:55 +0200 Subject: [PATCH 121/356] Refactor: more cleanup --- pkg/protocol/chains.go | 57 ++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 32 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 215f59192..c4bae81c6 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -18,8 +18,6 @@ import ( type Chains struct { protocol *Protocol - engineManager *enginemanager.EngineManager - mainChain reactive.Variable[*Chain] heaviestClaimedCandidate reactive.Variable[*Chain] @@ -34,12 +32,22 @@ type Chains struct { chainCreated *event.Event1[*Chain] + engineManager *enginemanager.EngineManager + reactive.EvictionState[iotago.SlotIndex] } func newChains(protocol *Protocol) *Chains { c := &Chains{ - protocol: protocol, + protocol: protocol, + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), + mainChain: reactive.NewVariable[*Chain]().Init(NewChain()), + heaviestClaimedCandidate: reactive.NewVariable[*Chain](), + heaviestAttestedCandidate: reactive.NewVariable[*Chain](), + heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + commitmentCreated: event.New1[*Commitment](), + chainCreated: event.New1[*Chain](), engineManager: enginemanager.New( protocol.Workers, func(err error) { protocol.LogError(err) }, @@ -65,40 +73,17 @@ func newChains(protocol *Protocol) *Chains { protocol.options.UpgradeOrchestratorProvider, protocol.options.SyncManagerProvider, ), - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - mainChain: reactive.NewVariable[*Chain](), - heaviestClaimedCandidate: reactive.NewVariable[*Chain](), - heaviestAttestedCandidate: reactive.NewVariable[*Chain](), - heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), - commitmentCreated: event.New1[*Commitment](), - chainCreated: event.New1[*Chain](), } c.OnChainCreated(func(chain *Chain) { - c.provideEngines(chain) + c.provideEngineIfRequested(chain) c.publishEngineCommitments(chain) }) - mainChain := NewChain() - c.mainChain.Set(mainChain) - c.chainCreated.Trigger(mainChain) + c.chainCreated.Trigger(c.mainChain.Get()) protocol.HookConstructed(func() { - mainChain.engine.instantiate.Set(true) - - c.mainChain.Set(mainChain) - - mainChain.forkingPoint.Get().IsRoot.Trigger() - - //protocol.HeaviestVerifiedCandidate().OnUpdate(func(_, newChain *Chain) { - // e.mainEngine.Set(newChain.Engine()) - //}) - - mainChain.EngineR().OnUpdate(func(_, newEngine *engine.Engine) { - protocol.Events.Engine.LinkTo(newEngine.Events) - }) - + c.initMainChain() c.initChainSwitching() // TODO: trigger initialized @@ -107,7 +92,16 @@ func newChains(protocol *Protocol) *Chains { return c } -func (c *Chains) provideEngines(chain *Chain) func() { +func (c *Chains) initMainChain() { + mainChain := c.mainChain.Get() + mainChain.engine.instantiate.Set(true) + mainChain.engine.OnUpdate(func(_, newEngine *engine.Engine) { + c.protocol.Events.Engine.LinkTo(newEngine.Events) + }) + mainChain.forkingPoint.Get().IsRoot.Trigger() +} + +func (c *Chains) provideEngineIfRequested(chain *Chain) func() { return chain.engine.instantiate.OnUpdate(func(_, instantiate bool) { if !instantiate { chain.engine.spawnedEngine.Set(nil) @@ -115,8 +109,7 @@ func (c *Chains) provideEngines(chain *Chain) func() { return } - currentEngine := chain.engine.Get() - if currentEngine == nil { + if currentEngine := chain.engine.Get(); currentEngine == nil { mainEngine, err := c.engineManager.LoadActiveEngine(c.protocol.options.SnapshotPath) if err != nil { panic(fmt.Sprintf("could not load active engine: %s", err)) From 6d3026aa50b1975555e9ab1044e030dceb4032a9 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 12 Sep 2023 13:07:23 +0200 Subject: [PATCH 122/356] Refactor: scrub scrub --- pkg/protocol/commitment.go | 97 ++++++++++++++++---------------------- 1 file changed, 41 insertions(+), 56 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 5f14016e8..e845f9812 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -20,7 +20,7 @@ type Commitment struct { Engine reactive.Variable[*engine.Engine] InSyncRange *commitmentInSyncRange RequestBlocks *commitmentRequestBlocks - RequestAttestations *commitmentRequestAttestations + RequestAttestations reactive.Variable[bool] IsSolid reactive.Event IsAttested reactive.Event IsVerified reactive.Event @@ -30,23 +30,25 @@ type Commitment struct { func NewCommitment(commitment *model.Commitment) *Commitment { c := &Commitment{ - Commitment: commitment, - Parent: reactive.NewVariable[*Commitment](), - MainChild: reactive.NewVariable[*Commitment](), - Children: reactive.NewSet[*Commitment](), - SpawnedChain: reactive.NewVariable[*Chain](), - Chain: reactive.NewVariable[*Chain](), - Engine: reactive.NewVariable[*engine.Engine](), - IsSolid: reactive.NewEvent(), - IsAttested: reactive.NewEvent(), - IsVerified: reactive.NewEvent(), - IsRoot: reactive.NewEvent(), - IsEvicted: reactive.NewEvent(), + Commitment: commitment, + Parent: reactive.NewVariable[*Commitment](), + MainChild: reactive.NewVariable[*Commitment](), + Children: reactive.NewSet[*Commitment](), + SpawnedChain: reactive.NewVariable[*Chain](), + Chain: reactive.NewVariable[*Chain](), + Engine: reactive.NewVariable[*engine.Engine](), + RequestAttestations: reactive.NewVariable[bool](), + IsSolid: reactive.NewEvent(), + IsAttested: reactive.NewEvent(), + IsVerified: reactive.NewEvent(), + IsRoot: reactive.NewEvent(), + IsEvicted: reactive.NewEvent(), } + c.deriveRequestAttestations() + c.InSyncRange = newCommitmentInSyncRange(c) c.RequestBlocks = newCommitmentRequestBlocks(c) - c.RequestAttestations = newCommitmentRequestAttestations(c) c.IsRoot.OnTrigger(func() { c.IsSolid.Set(true) @@ -55,9 +57,9 @@ func NewCommitment(commitment *model.Commitment) *Commitment { }) c.Parent.OnUpdate(func(_, parent *Commitment) { - c.IsSolid.InheritFrom(parent.IsSolid) - parent.registerChild(c, c.inheritChain(parent)) + + c.IsSolid.InheritFrom(parent.IsSolid) }) c.Chain.OnUpdate(func(_, chain *Chain) { @@ -72,6 +74,29 @@ func NewCommitment(commitment *model.Commitment) *Commitment { return c } +func (c *Commitment) deriveRequestAttestations() { + isParentAttested := reactive.NewEvent() + c.Parent.OnUpdateOnce(func(_, parent *Commitment) { + isParentAttested.InheritFrom(parent.IsAttested) + }) + + isDirectlyAboveLatestAttestedCommitment := reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { + return parentAttested && !attested + }, isParentAttested, c.IsAttested) + + c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { + withinContext(func() (unsubscribe func()) { + attestationsRequested := reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { + return requestAttestations && isDirectlyAboveLatestAttestedCommitment + }, chain.requestAttestations, isDirectlyAboveLatestAttestedCommitment) + + c.RequestAttestations.InheritFrom(attestationsRequested) + + return attestationsRequested.Unsubscribe + }) + }) +} + func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { if c.Children.Add(newChild) { c.MainChild.Compute(func(currentSuccessor *Commitment) *Commitment { @@ -180,46 +205,6 @@ func newCommitmentAboveLatestVerifiedCommitment(commitment *Commitment) reactive }, directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment) } -type commitmentRequestAttestations struct { - reactive.Variable[bool] - - parentAttested reactive.Event - - isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] -} - -func newCommitmentRequestAttestations(commitment *Commitment) *commitmentRequestAttestations { - c := &commitmentRequestAttestations{ - Variable: reactive.NewVariable[bool](), - parentAttested: reactive.NewEvent(), - } - - c.isDirectlyAboveLatestAttestedCommitment = reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { - return parentAttested && !attested - }, c.parentAttested, commitment.IsAttested) - - commitment.Parent.OnUpdateOnce(func(_, parent *Commitment) { c.parentAttested.InheritFrom(parent.IsAttested) }) - - var attestationRequestedByChain reactive.DerivedVariable[bool] - - commitment.Chain.OnUpdate(func(_, newChain *Chain) { - // cleanup the old chain specific derived variable if it exists - if attestationRequestedByChain != nil { - attestationRequestedByChain.Unsubscribe() - } - - // create a chain specific derived variable - attestationRequestedByChain = reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { - return requestAttestations && isDirectlyAboveLatestAttestedCommitment - }, newChain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) - - // expose the chain specific derived variable to the commitment property - c.InheritFrom(attestationRequestedByChain) - }) - - return c -} - type commitmentRequestBlocks struct { reactive.Variable[bool] From a4b003a2a2b0ccacfe1c2ff83afe1d1a0aa1e7bf Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:44:04 +0200 Subject: [PATCH 123/356] Refactor: got rid of utils --- pkg/protocol/commitment.go | 201 ++++++++++++++++--------------------- pkg/protocol/utils.go | 24 ----- 2 files changed, 86 insertions(+), 139 deletions(-) delete mode 100644 pkg/protocol/utils.go diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index e845f9812..315517366 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -4,9 +4,9 @@ import ( "fmt" "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" + iotago "github.com/iotaledger/iota.go/v4" ) type Commitment struct { @@ -18,19 +18,29 @@ type Commitment struct { SpawnedChain reactive.Variable[*Chain] Chain reactive.Variable[*Chain] Engine reactive.Variable[*engine.Engine] - InSyncRange *commitmentInSyncRange - RequestBlocks *commitmentRequestBlocks + InSyncRange reactive.Variable[bool] + RequestBlocks reactive.Variable[bool] RequestAttestations reactive.Variable[bool] IsSolid reactive.Event IsAttested reactive.Event IsVerified reactive.Event IsRoot reactive.Event IsEvicted reactive.Event + + isParentAttested reactive.Event + isParentVerified reactive.Event + isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] + isDirectlyAboveLatestVerifiedCommitment reactive.Variable[bool] + isBelowSyncThreshold reactive.Event + isBelowWarpSyncThreshold reactive.Event + isParentAboveLatestVerifiedCommitment reactive.Variable[bool] + isAboveLatestVerifiedCommitment reactive.Variable[bool] } func NewCommitment(commitment *model.Commitment) *Commitment { c := &Commitment{ - Commitment: commitment, + Commitment: commitment, + Parent: reactive.NewVariable[*Commitment](), MainChild: reactive.NewVariable[*Commitment](), Children: reactive.NewSet[*Commitment](), @@ -43,67 +53,88 @@ func NewCommitment(commitment *model.Commitment) *Commitment { IsVerified: reactive.NewEvent(), IsRoot: reactive.NewEvent(), IsEvicted: reactive.NewEvent(), + + isParentAttested: reactive.NewEvent(), + isParentVerified: reactive.NewEvent(), + isBelowSyncThreshold: reactive.NewEvent(), + isBelowWarpSyncThreshold: reactive.NewEvent(), + isParentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), } - c.deriveRequestAttestations() + c.isDirectlyAboveLatestAttestedCommitment = reactive.NewDerivedVariable2(func(isParentAttested, isAttested bool) bool { + return isParentAttested && !isAttested + }, c.isParentAttested, c.IsAttested) - c.InSyncRange = newCommitmentInSyncRange(c) - c.RequestBlocks = newCommitmentRequestBlocks(c) + c.isDirectlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(isParentVerified, isVerified bool) bool { + return isParentVerified && !isVerified + }, c.isParentVerified, c.IsVerified) - c.IsRoot.OnTrigger(func() { - c.IsSolid.Set(true) - c.IsAttested.Set(true) - c.IsVerified.Set(true) - }) + c.isAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { + return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment + }, c.isDirectlyAboveLatestVerifiedCommitment, c.isParentAboveLatestVerifiedCommitment) + + c.InSyncRange = reactive.NewDerivedVariable2(func(aboveLatestVerifiedCommitment, belowSyncThreshold bool) bool { + return aboveLatestVerifiedCommitment && belowSyncThreshold + }, c.isAboveLatestVerifiedCommitment, c.isBelowSyncThreshold) + + c.RequestBlocks = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { + return inSyncWindow && belowWarpSyncThreshold + }, c.InSyncRange, c.isBelowWarpSyncThreshold) c.Parent.OnUpdate(func(_, parent *Commitment) { parent.registerChild(c, c.inheritChain(parent)) c.IsSolid.InheritFrom(parent.IsSolid) + c.isParentAttested.InheritFrom(parent.IsAttested) + c.isParentVerified.InheritFrom(parent.IsVerified) + c.isParentAboveLatestVerifiedCommitment.InheritFrom(parent.isAboveLatestVerifiedCommitment) + + c.triggerEventIfBelowThreshold(func(c *Commitment) reactive.Event { return c.isBelowSyncThreshold }, (*Chain).SyncThreshold) + c.triggerEventIfBelowThreshold(func(c *Commitment) reactive.Event { return c.isBelowWarpSyncThreshold }, (*Chain).WarpSyncThreshold) }) - c.Chain.OnUpdate(func(_, chain *Chain) { + c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { chain.registerCommitment(c) - // commitments inherit the engine from the chain - chain.engine.OnUpdate(func(_, chainEngine *engine.Engine) { - c.Engine.Set(chainEngine) + withinContext(func() (unsubscribe func()) { + return chain.engine.OnUpdate(func(_, chainEngine *engine.Engine) { + c.Engine.Set(chainEngine) + }) }) - }) - return c -} - -func (c *Commitment) deriveRequestAttestations() { - isParentAttested := reactive.NewEvent() - c.Parent.OnUpdateOnce(func(_, parent *Commitment) { - isParentAttested.InheritFrom(parent.IsAttested) - }) - - isDirectlyAboveLatestAttestedCommitment := reactive.NewDerivedVariable2(func(parentAttested, attested bool) bool { - return parentAttested && !attested - }, isParentAttested, c.IsAttested) - - c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { withinContext(func() (unsubscribe func()) { - attestationsRequested := reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { + requestAttestations := reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { return requestAttestations && isDirectlyAboveLatestAttestedCommitment - }, chain.requestAttestations, isDirectlyAboveLatestAttestedCommitment) + }, chain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) - c.RequestAttestations.InheritFrom(attestationsRequested) + c.RequestAttestations.InheritFrom(requestAttestations) - return attestationsRequested.Unsubscribe + return requestAttestations.Unsubscribe }) }) + + c.IsRoot.OnTrigger(func() { + c.IsSolid.Set(true) + c.IsAttested.Set(true) + c.IsVerified.Set(true) + c.isBelowWarpSyncThreshold.Set(true) + c.isBelowSyncThreshold.Set(true) + }) + + return c } -func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func(*Commitment, *Commitment)) { +func (c *Commitment) registerChild(newChild *Commitment, onMainChildUpdated func(*Commitment, *Commitment)) { if c.Children.Add(newChild) { - c.MainChild.Compute(func(currentSuccessor *Commitment) *Commitment { - return lo.Cond(currentSuccessor != nil, currentSuccessor, newChild) + c.MainChild.Compute(func(currentMainChild *Commitment) *Commitment { + if currentMainChild != nil { + return currentMainChild + } + + return newChild }) - unsubscribe := c.MainChild.OnUpdate(onSuccessorUpdated) + unsubscribe := c.MainChild.OnUpdate(onMainChildUpdated) c.IsEvicted.OnTrigger(unsubscribe) } @@ -112,11 +143,11 @@ func (c *Commitment) registerChild(newChild *Commitment, onSuccessorUpdated func func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { var unsubscribeFromParent func() - return func(_, successor *Commitment) { + return func(_, mainChild *Commitment) { c.SpawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { - switch successor { + switch mainChild { case nil: - panic("Successor may not be changed back to nil") + panic("main child may not be changed to nil") case c: if spawnedChain != nil { @@ -156,79 +187,19 @@ func (c *Commitment) promote(targetChain *Chain) { }) } -type commitmentInSyncRange struct { - reactive.Variable[bool] - - aboveLatestVerifiedCommitment reactive.Variable[bool] - isBelowSyncThreshold reactive.Event -} - -func newCommitmentInSyncRange(commitment *Commitment) *commitmentInSyncRange { - i := &commitmentInSyncRange{ - aboveLatestVerifiedCommitment: newCommitmentAboveLatestVerifiedCommitment(commitment), - isBelowSyncThreshold: reactive.NewEvent(), - } - - commitment.Parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.InSyncRange.isBelowSyncThreshold - }, commitment, (*Chain).SyncThreshold) - }) - - commitment.IsRoot.OnTrigger(func() { - i.isBelowSyncThreshold.Set(true) - }) - - i.Variable = reactive.NewDerivedVariable2(func(belowSyncThreshold, aboveLatestVerifiedCommitment bool) bool { - return belowSyncThreshold && aboveLatestVerifiedCommitment - }, i.isBelowSyncThreshold, i.aboveLatestVerifiedCommitment) - - return i -} - -func newCommitmentAboveLatestVerifiedCommitment(commitment *Commitment) reactive.Variable[bool] { - var ( - parentVerified = reactive.NewEvent() - parentAboveLatestVerifiedCommitment = reactive.NewVariable[bool]() - directlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(parentVerified, verified bool) bool { - return parentVerified && !verified - }, parentVerified, commitment.IsVerified) - ) - - commitment.Parent.OnUpdateOnce(func(_, parent *Commitment) { - parentVerified.InheritFrom(parent.IsVerified) - parentAboveLatestVerifiedCommitment.InheritFrom(parent.InSyncRange.aboveLatestVerifiedCommitment) - }) - - return reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { - return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment - }, directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment) -} - -type commitmentRequestBlocks struct { - reactive.Variable[bool] - - isBelowWarpSyncThreshold reactive.Event -} - -func newCommitmentRequestBlocks(commitment *Commitment) *commitmentRequestBlocks { - r := &commitmentRequestBlocks{ - isBelowWarpSyncThreshold: reactive.NewEvent(), - } - - commitment.IsRoot.OnTrigger(func() { - r.isBelowWarpSyncThreshold.Set(true) - }) - - r.Variable = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { - return inSyncWindow && belowWarpSyncThreshold - }, commitment.InSyncRange, r.isBelowWarpSyncThreshold) +func (c *Commitment) triggerEventIfBelowThreshold(event func(*Commitment) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { + c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { - commitment.Parent.OnUpdate(func(_, parent *Commitment) { - triggerEventIfCommitmentBelowThreshold(func(commitment *Commitment) reactive.Event { - return commitment.RequestBlocks.isBelowWarpSyncThreshold - }, commitment, (*Chain).WarpSyncThreshold) + // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) + withinContext(func() (unsubscribe func()) { + return event(c.Parent.Get()).OnTrigger(func() { + // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met + chainThreshold(chain).OnUpdateOnce(func(_, _ iotago.SlotIndex) { + event(c).Trigger() + }, func(_, slotIndex iotago.SlotIndex) bool { + return c.Index() < slotIndex + }) + }) + }) }) - - return r } diff --git a/pkg/protocol/utils.go b/pkg/protocol/utils.go deleted file mode 100644 index e45116311..000000000 --- a/pkg/protocol/utils.go +++ /dev/null @@ -1,24 +0,0 @@ -package protocol - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - iotago "github.com/iotaledger/iota.go/v4" -) - -// triggerEventIfCommitmentBelowThreshold triggers the given event if the given commitment is below the given threshold. -func triggerEventIfCommitmentBelowThreshold(event func(*Commitment) reactive.Event, commitment *Commitment, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { - commitment.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { - - // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) - withinContext(func() (unsubscribe func()) { - return event(commitment.Parent.Get()).OnTrigger(func() { - // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met - chainThreshold(chain).OnUpdateOnce(func(_, _ iotago.SlotIndex) { - event(commitment).Trigger() - }, func(_, slotIndex iotago.SlotIndex) bool { - return commitment.Index() < slotIndex - }) - }) - }) - }) -} From 287c1003a586967f12a683c6c120f62fa34792bc Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 12 Sep 2023 14:55:53 +0200 Subject: [PATCH 124/356] Feat: simplified API --- pkg/protocol/commitment.go | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 315517366..3134aba35 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -81,8 +81,8 @@ func NewCommitment(commitment *model.Commitment) *Commitment { return inSyncWindow && belowWarpSyncThreshold }, c.InSyncRange, c.isBelowWarpSyncThreshold) - c.Parent.OnUpdate(func(_, parent *Commitment) { - parent.registerChild(c, c.inheritChain(parent)) + c.Parent.OnUpdateOnce(func(_, parent *Commitment) { + parent.registerChild(c) c.IsSolid.InheritFrom(parent.IsSolid) c.isParentAttested.InheritFrom(parent.IsAttested) @@ -124,19 +124,19 @@ func NewCommitment(commitment *model.Commitment) *Commitment { return c } -func (c *Commitment) registerChild(newChild *Commitment, onMainChildUpdated func(*Commitment, *Commitment)) { - if c.Children.Add(newChild) { +func (c *Commitment) registerChild(child *Commitment) { + if c.Children.Add(child) { c.MainChild.Compute(func(currentMainChild *Commitment) *Commitment { if currentMainChild != nil { return currentMainChild } - return newChild + return child }) - unsubscribe := c.MainChild.OnUpdate(onMainChildUpdated) + unsubscribeChild := c.MainChild.OnUpdate(child.inheritChain(c)) - c.IsEvicted.OnTrigger(unsubscribe) + c.IsEvicted.OnTrigger(unsubscribeChild) } } From 3bde9d008dbd57932f7037aac738144d3e0857d8 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 12 Sep 2023 15:20:38 +0200 Subject: [PATCH 125/356] Feat: started removing getters in chain --- components/debugapi/commitment.go | 4 ++-- pkg/protocol/chain.go | 18 ++++-------------- pkg/protocol/chains.go | 6 +++--- pkg/protocol/commitment.go | 2 +- pkg/protocol/gossip.go | 8 ++++---- pkg/testsuite/mock/node.go | 2 +- pkg/testsuite/storage_settings.go | 2 +- 7 files changed, 16 insertions(+), 26 deletions(-) diff --git a/components/debugapi/commitment.go b/components/debugapi/commitment.go index 6786d597b..9e7bcee5b 100644 --- a/components/debugapi/commitment.go +++ b/components/debugapi/commitment.go @@ -13,7 +13,7 @@ import ( ) func chainManagerAllChainsDot() (string, error) { - rootCommitment := deps.Protocol.MainChain().ForkingPoint() + rootCommitment := deps.Protocol.MainChain().ForkingPoint.Get() g := graphviz.New() defer g.Close() @@ -32,7 +32,7 @@ func chainManagerAllChainsDot() (string, error) { } func chainManagerAllChainsRendered() ([]byte, error) { - rootCommitment := deps.Protocol.MainChain().ForkingPoint() + rootCommitment := deps.Protocol.MainChain().ForkingPoint.Get() g := graphviz.New() defer g.Close() diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index f62466604..c940efef2 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -11,7 +11,7 @@ import ( // Chain is a reactive component that manages the state of a chain. type Chain struct { // forkingPoint contains the Commitment object that spawned this chain. - forkingPoint reactive.Variable[*Commitment] + ForkingPoint reactive.Variable[*Commitment] // commitments is a map of Commitment objects that belong to the same chain. commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] @@ -58,7 +58,7 @@ type Chain struct { // NewChain creates a new Chain instance. func NewChain() *Chain { c := &Chain{ - forkingPoint: reactive.NewVariable[*Commitment](), + ForkingPoint: reactive.NewVariable[*Commitment](), commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), latestCommitment: reactive.NewVariable[*Commitment](), latestAttestedCommitment: reactive.NewVariable[*Commitment](), @@ -92,20 +92,10 @@ func NewChain() *Chain { return c } -// ForkingPoint returns the Commitment object that spawned this chain. -func (c *Chain) ForkingPoint() *Commitment { - return c.forkingPoint.Get() -} - -// ForkingPointR returns the Commitment object that spawned this chain. -func (c *Chain) ForkingPointR() reactive.Variable[*Commitment] { - return c.forkingPoint -} - // Commitment returns the Commitment object with the given index, if it exists. func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c; currentChain != nil; { - switch root := currentChain.ForkingPoint(); { + switch root := currentChain.ForkingPoint.Get(); { case root == nil: return nil, false // this should never happen, but we can handle it gracefully anyway case root.Index() == index: @@ -268,7 +258,7 @@ func newChainEngine(chain *Chain) *chainEngine { spawnedEngine: reactive.NewVariable[*engine.Engine](), } - chain.forkingPoint.OnUpdateWithContext(func(_, forkingPoint *Commitment, withinContext func(subscriptionFactory func() (unsubscribe func()))) { + chain.ForkingPoint.OnUpdateWithContext(func(_, forkingPoint *Commitment, withinContext func(subscriptionFactory func() (unsubscribe func()))) { withinContext(func() func() { return forkingPoint.Parent.OnUpdate(func(_, parent *Commitment) { withinContext(func() func() { diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index c4bae81c6..dd58875f9 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -98,7 +98,7 @@ func (c *Chains) initMainChain() { mainChain.engine.OnUpdate(func(_, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) - mainChain.forkingPoint.Get().IsRoot.Trigger() + mainChain.ForkingPoint.Get().IsRoot.Trigger() } func (c *Chains) provideEngineIfRequested(chain *Chain) func() { @@ -237,7 +237,7 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment], err error) { slotEvicted := c.EvictionEvent(commitmentID.Index()) if slotEvicted.WasTriggered() && c.LastEvictedSlot().Get() != 0 { - forkingPoint := c.mainChain.Get().ForkingPoint() + forkingPoint := c.mainChain.Get().ForkingPoint.Get() if forkingPoint == nil || commitmentID != forkingPoint.ID() { return nil, ErrorSlotEvicted @@ -301,7 +301,7 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { if !rootPublished { publishedRoot := publishCommitment(engine.RootCommitment().Get()) - chain.ForkingPointR().Compute(func(currentValue *Commitment) *Commitment { + chain.ForkingPoint.Compute(func(currentValue *Commitment) *Commitment { if currentValue != nil { return currentValue } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 3134aba35..db4bda32c 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -167,7 +167,7 @@ func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitm } spawnedChain = NewChain() - spawnedChain.forkingPoint.Set(c) + spawnedChain.ForkingPoint.Set(c) } return spawnedChain diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go index 1166ea78e..43e8cbce5 100644 --- a/pkg/protocol/gossip.go +++ b/pkg/protocol/gossip.go @@ -131,7 +131,7 @@ func (r *Gossip) ProcessAttestations(commitmentModel *model.Commitment, attestat return } - commitmentVerifier, exists := r.commitmentVerifiers.Get(chain.ForkingPoint().ID()) + commitmentVerifier, exists := r.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) if !exists { r.LogDebug(ierrors.Errorf("failed to find commitment verifier for commitment %s when processing attestations", commitmentModel.ID())) return @@ -252,11 +252,11 @@ func (r *Gossip) startAttestationsRequester() { r.protocol.OnChainCreated(func(chain *Chain) { chain.RequestAttestations().OnUpdate(func(_, requestAttestations bool) { if requestAttestations { - r.commitmentVerifiers.GetOrCreate(chain.ForkingPoint().ID(), func() *CommitmentVerifier { - return NewCommitmentVerifier(chain.EngineR().Get(), chain.ForkingPoint().Parent.Get().Commitment) + r.commitmentVerifiers.GetOrCreate(chain.ForkingPoint.Get().ID(), func() *CommitmentVerifier { + return NewCommitmentVerifier(chain.EngineR().Get(), chain.ForkingPoint.Get().Parent.Get().Commitment) }) } else { - r.commitmentVerifiers.Delete(chain.ForkingPoint().ID()) + r.commitmentVerifiers.Delete(chain.ForkingPoint.Get().ID()) } }) }) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 5a6c28c56..4502383a7 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -193,7 +193,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { }) n.Protocol.HeaviestAttestedCandidate().OnUpdate(func(_, newChain *protocol.Chain) { - fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, newChain.ForkingPoint().ID()) + fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, newChain.ForkingPoint.Get().ID()) }) n.Protocol.Events.Engine.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index d5224d7ea..6958f7a0c 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -123,7 +123,7 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - actualChainID := node.Protocol.MainChain().ForkingPoint().ID() + actualChainID := node.Protocol.MainChain().ForkingPoint.Get().ID() if expectedChainID != actualChainID { return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Index(), actualChainID, actualChainID.Index()) } From 56523a3322e803d70c0f6cc950b89ed164dd7bc0 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 12 Sep 2023 15:29:01 +0200 Subject: [PATCH 126/356] Refactor: removed more getters --- pkg/protocol/chain.go | 38 +++++++++---------------------- pkg/testsuite/chainmanager.go | 2 +- pkg/testsuite/storage_settings.go | 2 +- 3 files changed, 13 insertions(+), 29 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index c940efef2..f1d4bb5ff 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -17,10 +17,10 @@ type Chain struct { commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] // latestCommitment is the latest Commitment object in this chain. - latestCommitment reactive.Variable[*Commitment] + LatestCommitment reactive.Variable[*Commitment] // latestAttestedCommitment is the latest attested Commitment object in this chain. - latestAttestedCommitment reactive.Variable[*Commitment] + LatestAttestedCommitment reactive.Variable[*Commitment] // latestVerifiedCommitment is the latest verified Commitment object in this chain. latestVerifiedCommitment reactive.Variable[*Commitment] @@ -60,8 +60,8 @@ func NewChain() *Chain { c := &Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), - latestCommitment: reactive.NewVariable[*Commitment](), - latestAttestedCommitment: reactive.NewVariable[*Commitment](), + LatestCommitment: reactive.NewVariable[*Commitment](), + LatestAttestedCommitment: reactive.NewVariable[*Commitment](), latestVerifiedCommitment: reactive.NewVariable[*Commitment](), requestAttestations: reactive.NewVariable[bool](), evicted: reactive.NewEvent(), @@ -69,8 +69,8 @@ func NewChain() *Chain { c.engine = newChainEngine(c) - c.claimedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.latestCommitment) - c.attestedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.latestAttestedCommitment) + c.claimedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestCommitment) + c.attestedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestAttestedCommitment) c.verifiedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.latestVerifiedCommitment) c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { @@ -79,7 +79,7 @@ func NewChain() *Chain { } return latestCommitment.Index() - WarpSyncOffset - }, c.latestCommitment) + }, c.LatestCommitment) c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitment *Commitment) iotago.SlotIndex { if latestVerifiedCommitment == nil { @@ -115,22 +115,6 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exis return nil, false } -// LatestCommitment returns the latest Commitment object in this chain. -func (c *Chain) LatestCommitment() *Commitment { - return c.latestCommitment.Get() -} - -// LatestCommitmentR returns a reactive variable that always contains the latest Commitment object in this chain. -func (c *Chain) LatestCommitmentR() reactive.Variable[*Commitment] { - return c.latestCommitment -} - -// LatestAttestedCommitment returns a reactive variable that always contains the latest attested Commitment object -// in this chain. -func (c *Chain) LatestAttestedCommitment() reactive.Variable[*Commitment] { - return c.latestAttestedCommitment -} - // LatestVerifiedCommitment returns a reactive variable that always contains the latest verified Commitment object // in this chain. func (c *Chain) LatestVerifiedCommitment() reactive.Variable[*Commitment] { @@ -209,10 +193,10 @@ func (c *Chain) registerCommitment(commitment *Commitment) { return commitment } - c.latestCommitment.Compute(maxCommitment) + c.LatestCommitment.Compute(maxCommitment) unsubscribe := lo.Batch( - commitment.IsAttested.OnTrigger(func() { c.latestAttestedCommitment.Compute(maxCommitment) }), + commitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Compute(maxCommitment) }), commitment.IsVerified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(maxCommitment) }), ) @@ -236,8 +220,8 @@ func (c *Chain) unregisterCommitment(commitment *Commitment) { return commitment.Parent.Get() } - c.latestCommitment.Compute(resetToParent) - c.latestAttestedCommitment.Compute(resetToParent) + c.LatestCommitment.Compute(resetToParent) + c.LatestAttestedCommitment.Compute(resetToParent) c.latestVerifiedCommitment.Compute(resetToParent) } diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index 2d7e3c665..c7bb7306b 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -15,7 +15,7 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { return ierrors.Errorf("AssertChainManagerIsSolid: %s: chain is nil", node.Name) } - latestChainCommitment := chain.LatestCommitment() + latestChainCommitment := chain.LatestCommitment.Get() latestCommitment := node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment() if latestCommitment.ID() != latestChainCommitment.ID() { diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 6958f7a0c..1bfff3c55 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -67,7 +67,7 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes } // Make sure the commitment is also available in the ChainManager. - if node.Protocol.MainChain().LatestCommitment().ID().Index() < slot { + if node.Protocol.MainChain().LatestCommitment.Get().ID().Index() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found in ChainManager", node.Name, slot) } From 45952848784bd1b580d4ad04c004a4a194c27feb Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 12 Sep 2023 17:15:06 +0200 Subject: [PATCH 127/356] Refactor: refactored more code --- pkg/protocol/chain.go | 74 ++++++++++++++---------------------------- pkg/protocol/chains.go | 16 ++++++--- 2 files changed, 37 insertions(+), 53 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index f1d4bb5ff..83bd5dcbe 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -13,9 +13,6 @@ type Chain struct { // forkingPoint contains the Commitment object that spawned this chain. ForkingPoint reactive.Variable[*Commitment] - // commitments is a map of Commitment objects that belong to the same chain. - commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] - // latestCommitment is the latest Commitment object in this chain. LatestCommitment reactive.Variable[*Commitment] @@ -23,16 +20,16 @@ type Chain struct { LatestAttestedCommitment reactive.Variable[*Commitment] // latestVerifiedCommitment is the latest verified Commitment object in this chain. - latestVerifiedCommitment reactive.Variable[*Commitment] + LatestVerifiedCommitment reactive.Variable[*Commitment] - // claimedWeight contains the total cumulative weight of the chain that is claimed by the latest commitments. - claimedWeight reactive.Variable[uint64] + // ClaimedWeight contains the total cumulative weight of the chain that is claimed by the latest commitments. + ClaimedWeight reactive.Variable[uint64] - // attestedWeight contains the total cumulative weight of the chain that we received attestations for. - attestedWeight reactive.Variable[uint64] + // AttestedWeight contains the total cumulative weight of the chain that we received attestations for. + AttestedWeight reactive.Variable[uint64] - // verifiedWeight contains the total cumulative weight of the chain that we verified ourselves. - verifiedWeight reactive.Variable[uint64] + // VerifiedWeight contains the total cumulative weight of the chain that we verified ourselves. + VerifiedWeight reactive.Variable[uint64] // syncThreshold is the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). syncThreshold reactive.Variable[iotago.SlotIndex] @@ -53,6 +50,9 @@ type Chain struct { // evicted is an event that gets triggered when the chain gets evicted. evicted reactive.Event + + // commitments is a map of Commitment objects that belong to the same chain. + commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] } // NewChain creates a new Chain instance. @@ -62,16 +62,16 @@ func NewChain() *Chain { commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), LatestCommitment: reactive.NewVariable[*Commitment](), LatestAttestedCommitment: reactive.NewVariable[*Commitment](), - latestVerifiedCommitment: reactive.NewVariable[*Commitment](), + LatestVerifiedCommitment: reactive.NewVariable[*Commitment](), requestAttestations: reactive.NewVariable[bool](), evicted: reactive.NewEvent(), } c.engine = newChainEngine(c) - c.claimedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestCommitment) - c.attestedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestAttestedCommitment) - c.verifiedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.latestVerifiedCommitment) + c.ClaimedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestCommitment) + c.AttestedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestAttestedCommitment) + c.VerifiedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestVerifiedCommitment) c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { @@ -87,7 +87,7 @@ func NewChain() *Chain { } return latestVerifiedCommitment.Index() + SyncWindow + 1 - }, c.latestVerifiedCommitment) + }, c.LatestVerifiedCommitment) return c } @@ -95,15 +95,15 @@ func NewChain() *Chain { // Commitment returns the Commitment object with the given index, if it exists. func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c; currentChain != nil; { - switch root := currentChain.ForkingPoint.Get(); { - case root == nil: + switch forkingPoint := currentChain.ForkingPoint.Get(); { + case forkingPoint == nil: return nil, false // this should never happen, but we can handle it gracefully anyway - case root.Index() == index: - return root, true - case index > root.Index(): + case forkingPoint.Index() == index: + return forkingPoint, true + case index > forkingPoint.Index(): return currentChain.commitments.Get(index) default: - parent := root.Parent.Get() + parent := forkingPoint.Parent.Get() if parent == nil { return nil, false } @@ -115,30 +115,6 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exis return nil, false } -// LatestVerifiedCommitment returns a reactive variable that always contains the latest verified Commitment object -// in this chain. -func (c *Chain) LatestVerifiedCommitment() reactive.Variable[*Commitment] { - return c.latestVerifiedCommitment -} - -// ClaimedWeight returns a reactive variable that tracks the total cumulative weight of the chain that is claimed by -// the latest commitments. -func (c *Chain) ClaimedWeight() reactive.Variable[uint64] { - return c.claimedWeight -} - -// AttestedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we received -// attestations for. -func (c *Chain) AttestedWeight() reactive.Variable[uint64] { - return c.attestedWeight -} - -// VerifiedWeight returns a reactive variable that tracks the total cumulative weight of the chain that we verified -// ourselves. -func (c *Chain) VerifiedWeight() reactive.Variable[uint64] { - return c.verifiedWeight -} - // SyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the // engine (to prevent memory exhaustion). func (c *Chain) SyncThreshold() reactive.Variable[iotago.SlotIndex] { @@ -168,8 +144,8 @@ func (c *Chain) EngineR() reactive.Variable[*engine.Engine] { // InSyncRange returns true if the given index is in the sync range of this chain. func (c *Chain) InSyncRange(index iotago.SlotIndex) bool { - if latestVerifiedCommitment := c.latestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { - return index > c.latestVerifiedCommitment.Get().Index() && index < c.syncThreshold.Get() + if latestVerifiedCommitment := c.LatestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { + return index > c.LatestVerifiedCommitment.Get().Index() && index < c.syncThreshold.Get() } return false @@ -197,7 +173,7 @@ func (c *Chain) registerCommitment(commitment *Commitment) { unsubscribe := lo.Batch( commitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Compute(maxCommitment) }), - commitment.IsVerified.OnTrigger(func() { c.latestVerifiedCommitment.Compute(maxCommitment) }), + commitment.IsVerified.OnTrigger(func() { c.LatestVerifiedCommitment.Compute(maxCommitment) }), ) // unsubscribe and unregister the commitment when it changes its chain @@ -222,7 +198,7 @@ func (c *Chain) unregisterCommitment(commitment *Commitment) { c.LatestCommitment.Compute(resetToParent) c.LatestAttestedCommitment.Compute(resetToParent) - c.latestVerifiedCommitment.Compute(resetToParent) + c.LatestVerifiedCommitment.Compute(resetToParent) } type chainEngine struct { diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index dd58875f9..103564140 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -210,9 +210,17 @@ func (c *Chains) initChainSwitching() { }) c.OnChainCreated(func(chain *Chain) { - c.trackHeaviestCandidate(c.heaviestClaimedCandidate, (*Chain).ClaimedWeight, chain) - c.trackHeaviestCandidate(c.heaviestAttestedCandidate, (*Chain).AttestedWeight, chain) - c.trackHeaviestCandidate(c.heaviestVerifiedCandidate, (*Chain).VerifiedWeight, chain) + c.trackHeaviestCandidate(c.heaviestClaimedCandidate, func(chain *Chain) reactive.Variable[uint64] { + return chain.ClaimedWeight + }, chain) + + c.trackHeaviestCandidate(c.heaviestAttestedCandidate, func(chain *Chain) reactive.Variable[uint64] { + return chain.AttestedWeight + }, chain) + + c.trackHeaviestCandidate(c.heaviestVerifiedCandidate, func(chain *Chain) reactive.Variable[uint64] { + return chain.VerifiedWeight + }, chain) }) } @@ -327,7 +335,7 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { func (c *Chains) trackHeaviestCandidate(candidateVariable reactive.Variable[*Chain], chainWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) { chainWeightVariable(candidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= c.mainChain.Get().verifiedWeight.Get() { + if newChainWeight <= c.mainChain.Get().VerifiedWeight.Get() { return } From 971410ac9680f60f921d6e2897f949acd4b08f58 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 12 Sep 2023 18:44:55 +0200 Subject: [PATCH 128/356] Refactor: more cleanup --- pkg/protocol/chain.go | 81 +++++++------------------------------- pkg/protocol/commitment.go | 11 +++++- 2 files changed, 24 insertions(+), 68 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 83bd5dcbe..644ae049b 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -8,54 +8,23 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -// Chain is a reactive component that manages the state of a chain. type Chain struct { - // forkingPoint contains the Commitment object that spawned this chain. - ForkingPoint reactive.Variable[*Commitment] - - // latestCommitment is the latest Commitment object in this chain. - LatestCommitment reactive.Variable[*Commitment] - - // latestAttestedCommitment is the latest attested Commitment object in this chain. + ForkingPoint reactive.Variable[*Commitment] + LatestCommitment reactive.Variable[*Commitment] LatestAttestedCommitment reactive.Variable[*Commitment] - - // latestVerifiedCommitment is the latest verified Commitment object in this chain. LatestVerifiedCommitment reactive.Variable[*Commitment] - - // ClaimedWeight contains the total cumulative weight of the chain that is claimed by the latest commitments. - ClaimedWeight reactive.Variable[uint64] - - // AttestedWeight contains the total cumulative weight of the chain that we received attestations for. - AttestedWeight reactive.Variable[uint64] - - // VerifiedWeight contains the total cumulative weight of the chain that we verified ourselves. - VerifiedWeight reactive.Variable[uint64] - - // syncThreshold is the upper bound for slots that are being fed to the engine (to prevent memory exhaustion). - syncThreshold reactive.Variable[iotago.SlotIndex] - - // warpSyncThreshold defines an offset from latest index where the warp sync process starts (we don't request slots - // that we are about to commit ourselves). - warpSyncThreshold reactive.Variable[iotago.SlotIndex] - - // requestAttestations is a flag that indicates whether this chain wants to request attestations. - requestAttestations reactive.Variable[bool] - - // engine is the engine that is used to process blocks of this chain. - engine *chainEngine - - // isSolid is an event that gets triggered when the chain becomes solid (all blocks till the forking point of the - // main chain are available). - isSolid reactive.Event - - // evicted is an event that gets triggered when the chain gets evicted. - evicted reactive.Event - - // commitments is a map of Commitment objects that belong to the same chain. - commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] + ClaimedWeight reactive.Variable[uint64] + AttestedWeight reactive.Variable[uint64] + VerifiedWeight reactive.Variable[uint64] + SyncThreshold reactive.Variable[iotago.SlotIndex] + WarpSyncThreshold reactive.Variable[iotago.SlotIndex] + requestAttestations reactive.Variable[bool] + engine *chainEngine + isSolid reactive.Event + evicted reactive.Event + commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] } -// NewChain creates a new Chain instance. func NewChain() *Chain { c := &Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), @@ -73,7 +42,7 @@ func NewChain() *Chain { c.AttestedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestAttestedCommitment) c.VerifiedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestVerifiedCommitment) - c.warpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { + c.WarpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { return 0 } @@ -81,7 +50,7 @@ func NewChain() *Chain { return latestCommitment.Index() - WarpSyncOffset }, c.LatestCommitment) - c.syncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitment *Commitment) iotago.SlotIndex { + c.SyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitment *Commitment) iotago.SlotIndex { if latestVerifiedCommitment == nil { return SyncWindow + 1 } @@ -92,7 +61,6 @@ func NewChain() *Chain { return c } -// Commitment returns the Commitment object with the given index, if it exists. func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c; currentChain != nil; { switch forkingPoint := currentChain.ForkingPoint.Get(); { @@ -115,20 +83,6 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exis return nil, false } -// SyncThreshold returns a reactive variable that contains the upper bound for slots that are being fed to the -// engine (to prevent memory exhaustion). -func (c *Chain) SyncThreshold() reactive.Variable[iotago.SlotIndex] { - return c.syncThreshold -} - -// WarpSyncThreshold returns a reactive variable that contains an offset from latest index where the warp sync -// process starts (we don't request slots that we are about to commit ourselves). -func (c *Chain) WarpSyncThreshold() reactive.Variable[iotago.SlotIndex] { - return c.warpSyncThreshold -} - -// RequestAttestations returns a reactive variable that contains a flag that indicates whether this chain shall request -// attestations. func (c *Chain) RequestAttestations() reactive.Variable[bool] { return c.requestAttestations } @@ -137,26 +91,22 @@ func (c *Chain) Engine() *engine.Engine { return c.engine.Get() } -// EngineR returns a reactive variable that contains the engine that is used to process blocks of this chain. func (c *Chain) EngineR() reactive.Variable[*engine.Engine] { return c.engine } -// InSyncRange returns true if the given index is in the sync range of this chain. func (c *Chain) InSyncRange(index iotago.SlotIndex) bool { if latestVerifiedCommitment := c.LatestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { - return index > c.LatestVerifiedCommitment.Get().Index() && index < c.syncThreshold.Get() + return index > c.LatestVerifiedCommitment.Get().Index() && index < c.SyncThreshold.Get() } return false } -// Evicted returns a reactive event that gets triggered when the chain is evicted. func (c *Chain) Evicted() reactive.Event { return c.evicted } -// registerCommitment adds a Commitment object to this collection. func (c *Chain) registerCommitment(commitment *Commitment) { c.commitments.Set(commitment.Index(), commitment) @@ -184,7 +134,6 @@ func (c *Chain) registerCommitment(commitment *Commitment) { }, func(_, newChain *Chain) bool { return newChain != c }) } -// unregisterCommitment removes a Commitment object from this collection. func (c *Chain) unregisterCommitment(commitment *Commitment) { c.commitments.Delete(commitment.Index()) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index db4bda32c..fb16bd5ec 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -89,8 +89,15 @@ func NewCommitment(commitment *model.Commitment) *Commitment { c.isParentVerified.InheritFrom(parent.IsVerified) c.isParentAboveLatestVerifiedCommitment.InheritFrom(parent.isAboveLatestVerifiedCommitment) - c.triggerEventIfBelowThreshold(func(c *Commitment) reactive.Event { return c.isBelowSyncThreshold }, (*Chain).SyncThreshold) - c.triggerEventIfBelowThreshold(func(c *Commitment) reactive.Event { return c.isBelowWarpSyncThreshold }, (*Chain).WarpSyncThreshold) + c.triggerEventIfBelowThreshold( + func(c *Commitment) reactive.Event { return c.isBelowSyncThreshold }, + func(c *Chain) reactive.Variable[iotago.SlotIndex] { return c.SyncThreshold }, + ) + + c.triggerEventIfBelowThreshold( + func(c *Commitment) reactive.Event { return c.isBelowWarpSyncThreshold }, + func(c *Chain) reactive.Variable[iotago.SlotIndex] { return c.WarpSyncThreshold }, + ) }) c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { From 101a1bf920d77d0cb1bdb2da9737d20590867921 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 12 Sep 2023 19:12:44 +0200 Subject: [PATCH 129/356] Refactor: intermediary commit --- components/debugapi/commitment.go | 6 ++-- pkg/protocol/chain.go | 36 +++++++--------------- pkg/protocol/chains.go | 50 ++++++++++++------------------- pkg/protocol/commitment.go | 6 ++-- pkg/protocol/gossip.go | 8 ++--- pkg/testsuite/chainmanager.go | 2 +- pkg/testsuite/mock/node.go | 2 +- pkg/testsuite/storage_settings.go | 4 +-- 8 files changed, 44 insertions(+), 70 deletions(-) diff --git a/components/debugapi/commitment.go b/components/debugapi/commitment.go index 9e7bcee5b..2b875e152 100644 --- a/components/debugapi/commitment.go +++ b/components/debugapi/commitment.go @@ -13,7 +13,7 @@ import ( ) func chainManagerAllChainsDot() (string, error) { - rootCommitment := deps.Protocol.MainChain().ForkingPoint.Get() + rootCommitment := deps.Protocol.MainChain.Get().ForkingPoint.Get() g := graphviz.New() defer g.Close() @@ -32,7 +32,7 @@ func chainManagerAllChainsDot() (string, error) { } func chainManagerAllChainsRendered() ([]byte, error) { - rootCommitment := deps.Protocol.MainChain().ForkingPoint.Get() + rootCommitment := deps.Protocol.MainChain.Get().ForkingPoint.Get() g := graphviz.New() defer g.Close() @@ -75,7 +75,7 @@ func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *protocol.Commi return childErr } - if childCommitment.Chain.Get() == deps.Protocol.MainChain() { + if childCommitment.Chain.Get() == deps.Protocol.MainChain.Get() { child.SetColor("green") } diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 644ae049b..f6c4b5ae4 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -18,25 +18,27 @@ type Chain struct { VerifiedWeight reactive.Variable[uint64] SyncThreshold reactive.Variable[iotago.SlotIndex] WarpSyncThreshold reactive.Variable[iotago.SlotIndex] - requestAttestations reactive.Variable[bool] - engine *chainEngine - isSolid reactive.Event - evicted reactive.Event - commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] + RequestAttestations reactive.Variable[bool] + Engine *chainEngine + IsSolid reactive.Event + IsEvicted reactive.Event + + commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] } func NewChain() *Chain { c := &Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), - commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), LatestCommitment: reactive.NewVariable[*Commitment](), LatestAttestedCommitment: reactive.NewVariable[*Commitment](), LatestVerifiedCommitment: reactive.NewVariable[*Commitment](), - requestAttestations: reactive.NewVariable[bool](), - evicted: reactive.NewEvent(), + RequestAttestations: reactive.NewVariable[bool](), + IsEvicted: reactive.NewEvent(), + + commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), } - c.engine = newChainEngine(c) + c.Engine = newChainEngine(c) c.ClaimedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestCommitment) c.AttestedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestAttestedCommitment) @@ -83,18 +85,6 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exis return nil, false } -func (c *Chain) RequestAttestations() reactive.Variable[bool] { - return c.requestAttestations -} - -func (c *Chain) Engine() *engine.Engine { - return c.engine.Get() -} - -func (c *Chain) EngineR() reactive.Variable[*engine.Engine] { - return c.engine -} - func (c *Chain) InSyncRange(index iotago.SlotIndex) bool { if latestVerifiedCommitment := c.LatestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { return index > c.LatestVerifiedCommitment.Get().Index() && index < c.SyncThreshold.Get() @@ -103,10 +93,6 @@ func (c *Chain) InSyncRange(index iotago.SlotIndex) bool { return false } -func (c *Chain) Evicted() reactive.Event { - return c.evicted -} - func (c *Chain) registerCommitment(commitment *Commitment) { c.commitments.Set(commitment.Index(), commitment) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 103564140..0e8186abe 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -18,7 +18,7 @@ import ( type Chains struct { protocol *Protocol - mainChain reactive.Variable[*Chain] + MainChain reactive.Variable[*Chain] heaviestClaimedCandidate reactive.Variable[*Chain] @@ -41,7 +41,7 @@ func newChains(protocol *Protocol) *Chains { c := &Chains{ protocol: protocol, EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - mainChain: reactive.NewVariable[*Chain]().Init(NewChain()), + MainChain: reactive.NewVariable[*Chain]().Init(NewChain()), heaviestClaimedCandidate: reactive.NewVariable[*Chain](), heaviestAttestedCandidate: reactive.NewVariable[*Chain](), heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), @@ -80,7 +80,7 @@ func newChains(protocol *Protocol) *Chains { c.publishEngineCommitments(chain) }) - c.chainCreated.Trigger(c.mainChain.Get()) + c.chainCreated.Trigger(c.MainChain.Get()) protocol.HookConstructed(func() { c.initMainChain() @@ -93,29 +93,29 @@ func newChains(protocol *Protocol) *Chains { } func (c *Chains) initMainChain() { - mainChain := c.mainChain.Get() - mainChain.engine.instantiate.Set(true) - mainChain.engine.OnUpdate(func(_, newEngine *engine.Engine) { + mainChain := c.MainChain.Get() + mainChain.Engine.instantiate.Set(true) + mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) mainChain.ForkingPoint.Get().IsRoot.Trigger() } func (c *Chains) provideEngineIfRequested(chain *Chain) func() { - return chain.engine.instantiate.OnUpdate(func(_, instantiate bool) { + return chain.Engine.instantiate.OnUpdate(func(_, instantiate bool) { if !instantiate { - chain.engine.spawnedEngine.Set(nil) + chain.Engine.spawnedEngine.Set(nil) return } - if currentEngine := chain.engine.Get(); currentEngine == nil { + if currentEngine := chain.Engine.Get(); currentEngine == nil { mainEngine, err := c.engineManager.LoadActiveEngine(c.protocol.options.SnapshotPath) if err != nil { panic(fmt.Sprintf("could not load active engine: %s", err)) } - chain.engine.spawnedEngine.Set(mainEngine) + chain.Engine.spawnedEngine.Set(mainEngine) c.protocol.Network.HookStopped(mainEngine.Shutdown) } else { @@ -164,20 +164,8 @@ func (c *Chains) OnChainCreated(callback func(chain *Chain)) (unsubscribe func() return c.chainCreated.Hook(callback).Unhook } -func (c *Chains) MainChain() *Chain { - return c.mainChain.Get() -} - -func (c *Chains) MainChainR() reactive.Variable[*Chain] { - return c.mainChain -} - func (c *Chains) MainEngineInstance() *engine.Engine { - return c.mainChain.Get().Engine() -} - -func (c *Chains) MainEngineR() reactive.Variable[*engine.Engine] { - return c.mainChain.Get().EngineR() + return c.MainChain.Get().Engine.Get() } func (c *Chains) HeaviestClaimedCandidate() reactive.Variable[*Chain] { @@ -195,18 +183,18 @@ func (c *Chains) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { func (c *Chains) initChainSwitching() { c.heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { - prevCandidate.requestAttestations.Set(false) + prevCandidate.RequestAttestations.Set(false) } - newCandidate.requestAttestations.Set(true) + newCandidate.RequestAttestations.Set(true) }) c.heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { - prevCandidate.engine.instantiate.Set(false) + prevCandidate.Engine.instantiate.Set(false) } - newCandidate.engine.instantiate.Set(true) + newCandidate.Engine.instantiate.Set(true) }) c.OnChainCreated(func(chain *Chain) { @@ -245,7 +233,7 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment], err error) { slotEvicted := c.EvictionEvent(commitmentID.Index()) if slotEvicted.WasTriggered() && c.LastEvictedSlot().Get() != 0 { - forkingPoint := c.mainChain.Get().ForkingPoint.Get() + forkingPoint := c.MainChain.Get().ForkingPoint.Get() if forkingPoint == nil || commitmentID != forkingPoint.ID() { return nil, ErrorSlotEvicted @@ -283,7 +271,7 @@ func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFrom } func (c *Chains) publishEngineCommitments(chain *Chain) { - chain.engine.OnUpdateWithContext(func(_, engine *engine.Engine, withinContext func(subscriptionFactory func() (unsubscribe func()))) { + chain.Engine.OnUpdateWithContext(func(_, engine *engine.Engine, withinContext func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { withinContext(func() (unsubscribe func()) { var ( @@ -335,12 +323,12 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { func (c *Chains) trackHeaviestCandidate(candidateVariable reactive.Variable[*Chain], chainWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) { chainWeightVariable(candidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= c.mainChain.Get().VerifiedWeight.Get() { + if newChainWeight <= c.MainChain.Get().VerifiedWeight.Get() { return } candidateVariable.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.evicted.WasTriggered() || newChainWeight > chainWeightVariable(currentCandidate).Get() { + if currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newChainWeight > chainWeightVariable(currentCandidate).Get() { return candidate } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index fb16bd5ec..3da748ec9 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -104,7 +104,7 @@ func NewCommitment(commitment *model.Commitment) *Commitment { chain.registerCommitment(c) withinContext(func() (unsubscribe func()) { - return chain.engine.OnUpdate(func(_, chainEngine *engine.Engine) { + return chain.Engine.OnUpdate(func(_, chainEngine *engine.Engine) { c.Engine.Set(chainEngine) }) }) @@ -112,7 +112,7 @@ func NewCommitment(commitment *model.Commitment) *Commitment { withinContext(func() (unsubscribe func()) { requestAttestations := reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { return requestAttestations && isDirectlyAboveLatestAttestedCommitment - }, chain.requestAttestations, c.isDirectlyAboveLatestAttestedCommitment) + }, chain.RequestAttestations, c.isDirectlyAboveLatestAttestedCommitment) c.RequestAttestations.InheritFrom(requestAttestations) @@ -158,7 +158,7 @@ func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitm case c: if spawnedChain != nil { - spawnedChain.evicted.Trigger() + spawnedChain.IsEvicted.Trigger() } unsubscribeFromParent = parent.Chain.OnUpdate(func(_, chain *Chain) { diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go index 43e8cbce5..a12a67ac5 100644 --- a/pkg/protocol/gossip.go +++ b/pkg/protocol/gossip.go @@ -250,10 +250,10 @@ func (r *Gossip) OnAttestationsRequested(callback func(commitmentID iotago.Commi func (r *Gossip) startAttestationsRequester() { r.protocol.HookConstructed(func() { r.protocol.OnChainCreated(func(chain *Chain) { - chain.RequestAttestations().OnUpdate(func(_, requestAttestations bool) { + chain.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { if requestAttestations { r.commitmentVerifiers.GetOrCreate(chain.ForkingPoint.Get().ID(), func() *CommitmentVerifier { - return NewCommitmentVerifier(chain.EngineR().Get(), chain.ForkingPoint.Get().Parent.Get().Commitment) + return NewCommitmentVerifier(chain.Engine.Get(), chain.ForkingPoint.Get().Parent.Get().Commitment) }) } else { r.commitmentVerifiers.Delete(chain.ForkingPoint.Get().ID()) @@ -292,11 +292,11 @@ func (r *Gossip) startBlockRequester() { engine.HookShutdown(unsubscribe) } - r.protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { + r.protocol.MainChain.Get().Engine.OnUpdate(func(_, engine *engine.Engine) { startBlockRequester(engine) }) r.protocol.OnChainCreated(func(chain *Chain) { - chain.EngineR().OnUpdate(func(_, engine *engine.Engine) { startBlockRequester(engine) }) + chain.Engine.OnUpdate(func(_, engine *engine.Engine) { startBlockRequester(engine) }) }) } diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index c7bb7306b..3d1d2fe3c 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -10,7 +10,7 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { for _, node := range nodes { t.Eventually(func() error { - chain := node.Protocol.MainChain() + chain := node.Protocol.MainChain.Get() if chain == nil { return ierrors.Errorf("AssertChainManagerIsSolid: %s: chain is nil", node.Name) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 4502383a7..a5dc0dba4 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -207,7 +207,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { // n.attachEngineLogs(failOnBlockFiltered, engine) //}) - n.Protocol.MainEngineR().OnUpdate(func(_, engine *engine.Engine) { + n.Protocol.MainChain.Get().Engine.OnUpdate(func(_, engine *engine.Engine) { fmt.Printf("%s > MainEngineSwitched: %s, ChainID:%s Index:%s\n", n.Name, engine.Name(), engine.ChainID(), engine.ChainID().Index()) }) diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 1bfff3c55..2ab65a670 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -67,7 +67,7 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes } // Make sure the commitment is also available in the ChainManager. - if node.Protocol.MainChain().LatestCommitment.Get().ID().Index() < slot { + if node.Protocol.MainChain.Get().LatestCommitment.Get().ID().Index() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found in ChainManager", node.Name, slot) } @@ -123,7 +123,7 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - actualChainID := node.Protocol.MainChain().ForkingPoint.Get().ID() + actualChainID := node.Protocol.MainChain.Get().ForkingPoint.Get().ID() if expectedChainID != actualChainID { return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Index(), actualChainID, actualChainID.Index()) } From 2bdde3525126c676b075827fadc158217cb3fba1 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 13 Sep 2023 00:34:55 +0200 Subject: [PATCH 130/356] Feat: removed separate engine component --- pkg/protocol/chain.go | 111 ++++++++++++++----------------------- pkg/protocol/chains.go | 12 ++-- pkg/protocol/commitment.go | 12 +++- 3 files changed, 58 insertions(+), 77 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index f6c4b5ae4..b08d3d13a 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -19,11 +19,14 @@ type Chain struct { SyncThreshold reactive.Variable[iotago.SlotIndex] WarpSyncThreshold reactive.Variable[iotago.SlotIndex] RequestAttestations reactive.Variable[bool] - Engine *chainEngine + Engine reactive.Variable[*engine.Engine] IsSolid reactive.Event IsEvicted reactive.Event - commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] + commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] + parentEngine reactive.Variable[*engine.Engine] + spawnedEngine reactive.Variable[*engine.Engine] + instantiate reactive.Variable[bool] } func NewChain() *Chain { @@ -35,14 +38,15 @@ func NewChain() *Chain { RequestAttestations: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), - commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), + commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), + parentEngine: reactive.NewVariable[*engine.Engine](), + instantiate: reactive.NewVariable[bool](), + spawnedEngine: reactive.NewVariable[*engine.Engine](), } - c.Engine = newChainEngine(c) - - c.ClaimedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestCommitment) - c.AttestedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestAttestedCommitment) - c.VerifiedWeight = reactive.NewDerivedVariable(cumulativeWeight, c.LatestVerifiedCommitment) + c.ClaimedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestCommitment) + c.AttestedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestAttestedCommitment) + c.VerifiedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestVerifiedCommitment) c.WarpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { @@ -60,6 +64,24 @@ func NewChain() *Chain { return latestVerifiedCommitment.Index() + SyncWindow + 1 }, c.LatestVerifiedCommitment) + c.Engine = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { + if spawnedEngine != nil { + return spawnedEngine + } + + return parentEngine + }, c.spawnedEngine, c.parentEngine) + + c.ForkingPoint.OnUpdateWithContext(func(_, forkingPoint *Commitment, withinContext func(subscriptionFactory func() (unsubscribe func()))) { + withinContext(func() func() { + return forkingPoint.Parent.OnUpdate(func(_, parent *Commitment) { + withinContext(func() func() { + return c.parentEngine.InheritFrom(parent.Engine) + }) + }) + }) + }) + return c } @@ -93,7 +115,7 @@ func (c *Chain) InSyncRange(index iotago.SlotIndex) bool { return false } -func (c *Chain) registerCommitment(commitment *Commitment) { +func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { c.commitments.Set(commitment.Index(), commitment) // maxCommitment returns the Commitment object with the higher index. @@ -112,72 +134,21 @@ func (c *Chain) registerCommitment(commitment *Commitment) { commitment.IsVerified.OnTrigger(func() { c.LatestVerifiedCommitment.Compute(maxCommitment) }), ) - // unsubscribe and unregister the commitment when it changes its chain - commitment.Chain.OnUpdateOnce(func(_, _ *Chain) { + return func() { unsubscribe() - c.unregisterCommitment(commitment) - }, func(_, newChain *Chain) bool { return newChain != c }) -} - -func (c *Chain) unregisterCommitment(commitment *Commitment) { - c.commitments.Delete(commitment.Index()) - - resetToParent := func(latestCommitment *Commitment) *Commitment { - if commitment.Index() > latestCommitment.Index() { - return latestCommitment - } - - return commitment.Parent.Get() - } - - c.LatestCommitment.Compute(resetToParent) - c.LatestAttestedCommitment.Compute(resetToParent) - c.LatestVerifiedCommitment.Compute(resetToParent) -} + c.commitments.Delete(commitment.Index()) -type chainEngine struct { - reactive.Variable[*engine.Engine] - - parentEngine reactive.Variable[*engine.Engine] - - spawnedEngine reactive.Variable[*engine.Engine] - - instantiate reactive.Variable[bool] -} - -func newChainEngine(chain *Chain) *chainEngine { - e := &chainEngine{ - parentEngine: reactive.NewVariable[*engine.Engine](), - instantiate: reactive.NewVariable[bool](), - spawnedEngine: reactive.NewVariable[*engine.Engine](), - } - - chain.ForkingPoint.OnUpdateWithContext(func(_, forkingPoint *Commitment, withinContext func(subscriptionFactory func() (unsubscribe func()))) { - withinContext(func() func() { - return forkingPoint.Parent.OnUpdate(func(_, parent *Commitment) { - withinContext(func() func() { - return e.parentEngine.InheritFrom(parent.Engine) - }) - }) - }) - }) + resetToParent := func(latestCommitment *Commitment) *Commitment { + if latestCommitment == nil || commitment.Index() > latestCommitment.Index() { + return latestCommitment + } - e.Variable = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { - if spawnedEngine != nil { - return spawnedEngine + return commitment.Parent.Get() } - return parentEngine - }, e.spawnedEngine, e.parentEngine) - - return e -} - -func cumulativeWeight(commitment *Commitment) uint64 { - if commitment == nil { - return 0 + c.LatestCommitment.Compute(resetToParent) + c.LatestAttestedCommitment.Compute(resetToParent) + c.LatestVerifiedCommitment.Compute(resetToParent) } - - return commitment.CumulativeWeight() } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 0e8186abe..b889955d3 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -94,7 +94,7 @@ func newChains(protocol *Protocol) *Chains { func (c *Chains) initMainChain() { mainChain := c.MainChain.Get() - mainChain.Engine.instantiate.Set(true) + mainChain.instantiate.Set(true) mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) @@ -102,9 +102,9 @@ func (c *Chains) initMainChain() { } func (c *Chains) provideEngineIfRequested(chain *Chain) func() { - return chain.Engine.instantiate.OnUpdate(func(_, instantiate bool) { + return chain.instantiate.OnUpdate(func(_, instantiate bool) { if !instantiate { - chain.Engine.spawnedEngine.Set(nil) + chain.spawnedEngine.Set(nil) return } @@ -115,7 +115,7 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { panic(fmt.Sprintf("could not load active engine: %s", err)) } - chain.Engine.spawnedEngine.Set(mainEngine) + chain.spawnedEngine.Set(mainEngine) c.protocol.Network.HookStopped(mainEngine.Shutdown) } else { @@ -191,10 +191,10 @@ func (c *Chains) initChainSwitching() { c.heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { - prevCandidate.Engine.instantiate.Set(false) + prevCandidate.instantiate.Set(false) } - newCandidate.Engine.instantiate.Set(true) + newCandidate.instantiate.Set(true) }) c.OnChainCreated(func(chain *Chain) { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 3da748ec9..d2e5e4ab8 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -101,7 +101,9 @@ func NewCommitment(commitment *model.Commitment) *Commitment { }) c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { - chain.registerCommitment(c) + withinContext(func() (unsubscribe func()) { + return chain.registerCommitment(c) + }) withinContext(func() (unsubscribe func()) { return chain.Engine.OnUpdate(func(_, chainEngine *engine.Engine) { @@ -210,3 +212,11 @@ func (c *Commitment) triggerEventIfBelowThreshold(event func(*Commitment) reacti }) }) } + +func (c *Commitment) cumulativeWeight() uint64 { + if c == nil { + return 0 + } + + return c.CumulativeWeight() +} From af9faa4a3addd35771a5d27dab055c6f14b7ea2f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 13 Sep 2023 00:54:34 +0200 Subject: [PATCH 131/356] Refactor: removed unnecessary getters --- components/metrics/metrics_commitments.go | 2 +- pkg/protocol/chains.go | 130 +++++++++------------- pkg/testsuite/mock/node.go | 8 +- 3 files changed, 60 insertions(+), 80 deletions(-) diff --git a/components/metrics/metrics_commitments.go b/components/metrics/metrics_commitments.go index 843b73851..3ccee1979 100644 --- a/components/metrics/metrics_commitments.go +++ b/components/metrics/metrics_commitments.go @@ -47,7 +47,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of forks seen by the node."), collector.WithInitFunc(func() { - deps.Protocol.HeaviestVerifiedCandidate().OnUpdate(func(oldChain, _ *protocol.Chain) { + deps.Protocol.HeaviestVerifiedCandidate.OnUpdate(func(oldChain, _ *protocol.Chain) { if oldChain != nil { Component.WorkerPool.Submit(func() { deps.Collector.Increment(commitmentsNamespace, forksCount) }) } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index b889955d3..6e840ac39 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -16,23 +16,15 @@ import ( ) type Chains struct { - protocol *Protocol - - MainChain reactive.Variable[*Chain] - - heaviestClaimedCandidate reactive.Variable[*Chain] - - heaviestAttestedCandidate reactive.Variable[*Chain] - - heaviestVerifiedCandidate reactive.Variable[*Chain] - - commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] - - commitmentCreated *event.Event1[*Commitment] - - chainCreated *event.Event1[*Chain] - - engineManager *enginemanager.EngineManager + protocol *Protocol + MainChain reactive.Variable[*Chain] + HeaviestClaimedCandidate reactive.Variable[*Chain] + HeaviestAttestedCandidate reactive.Variable[*Chain] + HeaviestVerifiedCandidate reactive.Variable[*Chain] + commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] + commitmentCreated *event.Event1[*Commitment] + chainCreated *event.Event1[*Chain] + engineManager *enginemanager.EngineManager reactive.EvictionState[iotago.SlotIndex] } @@ -42,9 +34,9 @@ func newChains(protocol *Protocol) *Chains { protocol: protocol, EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), MainChain: reactive.NewVariable[*Chain]().Init(NewChain()), - heaviestClaimedCandidate: reactive.NewVariable[*Chain](), - heaviestAttestedCandidate: reactive.NewVariable[*Chain](), - heaviestVerifiedCandidate: reactive.NewVariable[*Chain](), + HeaviestClaimedCandidate: reactive.NewVariable[*Chain](), + HeaviestAttestedCandidate: reactive.NewVariable[*Chain](), + HeaviestVerifiedCandidate: reactive.NewVariable[*Chain](), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), commitmentCreated: event.New1[*Commitment](), chainCreated: event.New1[*Chain](), @@ -92,38 +84,6 @@ func newChains(protocol *Protocol) *Chains { return c } -func (c *Chains) initMainChain() { - mainChain := c.MainChain.Get() - mainChain.instantiate.Set(true) - mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { - c.protocol.Events.Engine.LinkTo(newEngine.Events) - }) - mainChain.ForkingPoint.Get().IsRoot.Trigger() -} - -func (c *Chains) provideEngineIfRequested(chain *Chain) func() { - return chain.instantiate.OnUpdate(func(_, instantiate bool) { - if !instantiate { - chain.spawnedEngine.Set(nil) - - return - } - - if currentEngine := chain.Engine.Get(); currentEngine == nil { - mainEngine, err := c.engineManager.LoadActiveEngine(c.protocol.options.SnapshotPath) - if err != nil { - panic(fmt.Sprintf("could not load active engine: %s", err)) - } - - chain.spawnedEngine.Set(mainEngine) - - c.protocol.Network.HookStopped(mainEngine.Shutdown) - } else { - fmt.Println("WATT IS HIER LOS? EIN FORK?") - } - }) -} - func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment, err error) { request, requestErr := c.requestCommitment(commitment.ID(), false) if requestErr != nil { @@ -168,20 +128,35 @@ func (c *Chains) MainEngineInstance() *engine.Engine { return c.MainChain.Get().Engine.Get() } -func (c *Chains) HeaviestClaimedCandidate() reactive.Variable[*Chain] { - return c.heaviestClaimedCandidate +func (c *Chains) initMainChain() { + mainChain := c.MainChain.Get() + mainChain.instantiate.Set(true) + mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { + c.protocol.Events.Engine.LinkTo(newEngine.Events) + }) + mainChain.ForkingPoint.Get().IsRoot.Trigger() } -func (c *Chains) HeaviestAttestedCandidate() reactive.Variable[*Chain] { - return c.heaviestAttestedCandidate -} +func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { + if _, err := c.requestCommitment(commitment.PrevID(), true, lo.Void(commitment.Parent.Set)); err != nil { + c.protocol.LogDebug(ierrors.Wrapf(err, "failed to request parent commitment %s", commitment.PrevID())) + } + + slotEvictedEvent.OnTrigger(func() { + commitment.IsEvicted.Trigger() + }) -func (c *Chains) HeaviestVerifiedCandidate() reactive.Variable[*Chain] { - return c.heaviestVerifiedCandidate + c.commitmentCreated.Trigger(commitment) + + commitment.SpawnedChain.OnUpdate(func(_, newChain *Chain) { + if newChain != nil { + c.chainCreated.Trigger(newChain) + } + }) } func (c *Chains) initChainSwitching() { - c.heaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + c.HeaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { prevCandidate.RequestAttestations.Set(false) } @@ -189,7 +164,7 @@ func (c *Chains) initChainSwitching() { newCandidate.RequestAttestations.Set(true) }) - c.heaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + c.HeaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { prevCandidate.instantiate.Set(false) } @@ -198,34 +173,39 @@ func (c *Chains) initChainSwitching() { }) c.OnChainCreated(func(chain *Chain) { - c.trackHeaviestCandidate(c.heaviestClaimedCandidate, func(chain *Chain) reactive.Variable[uint64] { + c.trackHeaviestCandidate(c.HeaviestClaimedCandidate, func(chain *Chain) reactive.Variable[uint64] { return chain.ClaimedWeight }, chain) - c.trackHeaviestCandidate(c.heaviestAttestedCandidate, func(chain *Chain) reactive.Variable[uint64] { + c.trackHeaviestCandidate(c.HeaviestAttestedCandidate, func(chain *Chain) reactive.Variable[uint64] { return chain.AttestedWeight }, chain) - c.trackHeaviestCandidate(c.heaviestVerifiedCandidate, func(chain *Chain) reactive.Variable[uint64] { + c.trackHeaviestCandidate(c.HeaviestVerifiedCandidate, func(chain *Chain) reactive.Variable[uint64] { return chain.VerifiedWeight }, chain) }) } -func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { - if _, err := c.requestCommitment(commitment.PrevID(), true, lo.Void(commitment.Parent.Set)); err != nil { - c.protocol.LogDebug(ierrors.Wrapf(err, "failed to request parent commitment %s", commitment.PrevID())) - } +func (c *Chains) provideEngineIfRequested(chain *Chain) func() { + return chain.instantiate.OnUpdate(func(_, instantiate bool) { + if !instantiate { + chain.spawnedEngine.Set(nil) - slotEvictedEvent.OnTrigger(func() { - commitment.IsEvicted.Trigger() - }) + return + } - c.commitmentCreated.Trigger(commitment) + if currentEngine := chain.Engine.Get(); currentEngine == nil { + mainEngine, err := c.engineManager.LoadActiveEngine(c.protocol.options.SnapshotPath) + if err != nil { + panic(fmt.Sprintf("could not load active engine: %s", err)) + } - commitment.SpawnedChain.OnUpdate(func(_, newChain *Chain) { - if newChain != nil { - c.chainCreated.Trigger(newChain) + chain.spawnedEngine.Set(mainEngine) + + c.protocol.Network.HookStopped(mainEngine.Shutdown) + } else { + fmt.Println("WATT IS HIER LOS? EIN FORK?") } }) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index a5dc0dba4..89329f33d 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -144,15 +144,15 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto } func (n *Node) hookEvents() { - n.Protocol.HeaviestClaimedCandidate().OnUpdate(func(_, newChain *protocol.Chain) { + n.Protocol.HeaviestClaimedCandidate.OnUpdate(func(_, newChain *protocol.Chain) { n.forkDetectedCount.Add(1) }) - n.Protocol.HeaviestAttestedCandidate().OnUpdate(func(_, newChain *protocol.Chain) { + n.Protocol.HeaviestAttestedCandidate.OnUpdate(func(_, newChain *protocol.Chain) { n.candidateEngineActivatedCount.Add(1) }) - n.Protocol.HeaviestVerifiedCandidate().OnUpdate(func(_, newChain *protocol.Chain) { + n.Protocol.HeaviestVerifiedCandidate.OnUpdate(func(_, newChain *protocol.Chain) { n.mainEngineSwitchedCount.Add(1) }) } @@ -192,7 +192,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { fmt.Printf("%s > ChainManager.RequestCommitment: %s\n", n.Name, commitmentID) }) - n.Protocol.HeaviestAttestedCandidate().OnUpdate(func(_, newChain *protocol.Chain) { + n.Protocol.HeaviestAttestedCandidate.OnUpdate(func(_, newChain *protocol.Chain) { fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, newChain.ForkingPoint.Get().ID()) }) From ea561fd7e621ae5924330e0c84d1976cda19970b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 13 Sep 2023 01:07:11 +0200 Subject: [PATCH 132/356] Refactor: removed more getters --- pkg/protocol/chains.go | 44 +++++++++++++++--------------------------- pkg/protocol/gossip.go | 6 +++--- 2 files changed, 19 insertions(+), 31 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 6e840ac39..939cef4e3 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -16,15 +16,16 @@ import ( ) type Chains struct { - protocol *Protocol MainChain reactive.Variable[*Chain] HeaviestClaimedCandidate reactive.Variable[*Chain] HeaviestAttestedCandidate reactive.Variable[*Chain] HeaviestVerifiedCandidate reactive.Variable[*Chain] - commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] - commitmentCreated *event.Event1[*Commitment] - chainCreated *event.Event1[*Chain] - engineManager *enginemanager.EngineManager + CommitmentCreated *event.Event1[*Commitment] + ChainCreated *event.Event1[*Chain] + + protocol *Protocol + commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] + engineManager *enginemanager.EngineManager reactive.EvictionState[iotago.SlotIndex] } @@ -38,8 +39,8 @@ func newChains(protocol *Protocol) *Chains { HeaviestAttestedCandidate: reactive.NewVariable[*Chain](), HeaviestVerifiedCandidate: reactive.NewVariable[*Chain](), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), - commitmentCreated: event.New1[*Commitment](), - chainCreated: event.New1[*Chain](), + CommitmentCreated: event.New1[*Commitment](), + ChainCreated: event.New1[*Chain](), engineManager: enginemanager.New( protocol.Workers, func(err error) { protocol.LogError(err) }, @@ -67,12 +68,12 @@ func newChains(protocol *Protocol) *Chains { ), } - c.OnChainCreated(func(chain *Chain) { + c.ChainCreated.Hook(func(chain *Chain) { c.provideEngineIfRequested(chain) c.publishEngineCommitments(chain) }) - c.chainCreated.Trigger(c.MainChain.Get()) + c.ChainCreated.Trigger(c.MainChain.Get()) protocol.HookConstructed(func() { c.initMainChain() @@ -116,14 +117,6 @@ func (c *Chains) Commitment(commitmentID iotago.CommitmentID, requestMissing ... return commitmentRequest.Result(), nil } -func (c *Chains) OnCommitmentCreated(callback func(commitment *Commitment)) (unsubscribe func()) { - return c.commitmentCreated.Hook(callback).Unhook -} - -func (c *Chains) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { - return c.chainCreated.Hook(callback).Unhook -} - func (c *Chains) MainEngineInstance() *engine.Engine { return c.MainChain.Get().Engine.Get() } @@ -146,11 +139,11 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti commitment.IsEvicted.Trigger() }) - c.commitmentCreated.Trigger(commitment) + c.CommitmentCreated.Trigger(commitment) commitment.SpawnedChain.OnUpdate(func(_, newChain *Chain) { if newChain != nil { - c.chainCreated.Trigger(newChain) + c.ChainCreated.Trigger(newChain) } }) } @@ -172,7 +165,7 @@ func (c *Chains) initChainSwitching() { newCandidate.instantiate.Set(true) }) - c.OnChainCreated(func(chain *Chain) { + c.ChainCreated.Hook(func(chain *Chain) { c.trackHeaviestCandidate(c.HeaviestClaimedCandidate, func(chain *Chain) reactive.Variable[uint64] { return chain.ClaimedWeight }, chain) @@ -254,11 +247,7 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { chain.Engine.OnUpdateWithContext(func(_, engine *engine.Engine, withinContext func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { withinContext(func() (unsubscribe func()) { - var ( - latestPublishedIndex iotago.SlotIndex - rootPublished bool - ) - + var latestPublishedIndex iotago.SlotIndex publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment) { publishedCommitment, err := c.PublishCommitment(commitment) if err != nil { @@ -273,16 +262,15 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { return publishedCommitment } + var rootPublished bool return engine.LatestCommitment().OnUpdate(func(_, latestModelCommitment *model.Commitment) { if !rootPublished { - publishedRoot := publishCommitment(engine.RootCommitment().Get()) - chain.ForkingPoint.Compute(func(currentValue *Commitment) *Commitment { if currentValue != nil { return currentValue } - return publishedRoot + return publishCommitment(engine.RootCommitment().Get()) }) rootPublished = true diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go index a12a67ac5..1d90ae8ec 100644 --- a/pkg/protocol/gossip.go +++ b/pkg/protocol/gossip.go @@ -249,7 +249,7 @@ func (r *Gossip) OnAttestationsRequested(callback func(commitmentID iotago.Commi func (r *Gossip) startAttestationsRequester() { r.protocol.HookConstructed(func() { - r.protocol.OnChainCreated(func(chain *Chain) { + r.protocol.ChainCreated.Hook(func(chain *Chain) { chain.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { if requestAttestations { r.commitmentVerifiers.GetOrCreate(chain.ForkingPoint.Get().ID(), func() *CommitmentVerifier { @@ -261,7 +261,7 @@ func (r *Gossip) startAttestationsRequester() { }) }) - r.protocol.OnCommitmentCreated(func(commitment *Commitment) { + r.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { if requestAttestations { r.attestationsRequester.StartTicker(commitment.ID()) @@ -296,7 +296,7 @@ func (r *Gossip) startBlockRequester() { startBlockRequester(engine) }) - r.protocol.OnChainCreated(func(chain *Chain) { + r.protocol.ChainCreated.Hook(func(chain *Chain) { chain.Engine.OnUpdate(func(_, engine *engine.Engine) { startBlockRequester(engine) }) }) } From a502e1f53939e6db6458de3b8b1821ba2240bafe Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 13 Sep 2023 01:20:09 +0200 Subject: [PATCH 133/356] Refactor: removed getters in engine --- pkg/protocol/chains.go | 4 ++-- pkg/protocol/engine/engine.go | 44 ++++++++++++----------------------- 2 files changed, 17 insertions(+), 31 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 939cef4e3..752f78ee8 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -263,14 +263,14 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { } var rootPublished bool - return engine.LatestCommitment().OnUpdate(func(_, latestModelCommitment *model.Commitment) { + return engine.LatestCommitment.OnUpdate(func(_, latestModelCommitment *model.Commitment) { if !rootPublished { chain.ForkingPoint.Compute(func(currentValue *Commitment) *Commitment { if currentValue != nil { return currentValue } - return publishCommitment(engine.RootCommitment().Get()) + return publishCommitment(engine.RootCommitment.Get()) }) rootPublished = true diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index 5c7222e41..733c32aef 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -66,6 +66,8 @@ type Engine struct { Retainer retainer.Retainer SyncManager syncmanager.SyncManager UpgradeOrchestrator upgrade.Orchestrator + RootCommitment reactive.Variable[*model.Commitment] + LatestCommitment reactive.Variable[*model.Commitment] Workers *workerpool.Group errorHandler func(error) @@ -74,8 +76,6 @@ type Engine struct { startupAvailableBlocksWindow iotago.SlotIndex chainID iotago.CommitmentID - rootCommitment reactive.Variable[*model.Commitment] - latestCommitment reactive.Variable[*model.Commitment] mutex syncutils.RWMutex optsSnapshotPath string @@ -115,11 +115,13 @@ func New( return options.Apply( &Engine{ - Events: NewEvents(), - Storage: storageInstance, - EvictionState: eviction.NewState(storageInstance.LatestNonEmptySlot(), storageInstance.RootBlocks), - Workers: workers, - errorHandler: errorHandler, + Events: NewEvents(), + Storage: storageInstance, + EvictionState: eviction.NewState(storageInstance.LatestNonEmptySlot(), storageInstance.RootBlocks), + RootCommitment: reactive.NewVariable[*model.Commitment](), + LatestCommitment: reactive.NewVariable[*model.Commitment](), + Workers: workers, + errorHandler: errorHandler, optsSnapshotPath: "snapshot.bin", optsSnapshotDepth: 5, @@ -138,8 +140,8 @@ func New( }, func(e *Engine) { // setup reactive variables - e.rootCommitment = newEngineRootCommitmentVariable(e) - e.latestCommitment = newEngineLatestCommitmentVariable(e) + e.initRootCommitment() + e.initLatestCommitment() // setup all components e.BlockCache = blocks.New(e.EvictionState, e.Storage.Settings().APIProvider()) @@ -506,14 +508,6 @@ func (e *Engine) setupPruning() { }, event.WithWorkerPool(e.Workers.CreatePool("PruneEngine", 1))) } -func (e *Engine) RootCommitment() reactive.Variable[*model.Commitment] { - return e.rootCommitment -} - -func (e *Engine) LatestCommitment() reactive.Variable[*model.Commitment] { - return e.latestCommitment -} - // EarliestRootCommitment is used to make sure that the chainManager knows the earliest possible // commitment that blocks we are solidifying will refer to. Failing to do so will prevent those blocks // from being processed as their chain will be deemed unsolid. @@ -545,13 +539,11 @@ func (e *Engine) ErrorHandler(componentName string) func(error) { } } -func newEngineRootCommitmentVariable(e *Engine) reactive.Variable[*model.Commitment] { - v := reactive.NewVariable[*model.Commitment]() - +func (e *Engine) initRootCommitment() { updateRootCommitment := func(lastFinalizedSlot iotago.SlotIndex) { maxCommittableAge := e.APIForSlot(lastFinalizedSlot).ProtocolParameters().MaxCommittableAge() - v.Compute(func(rootCommitment *model.Commitment) *model.Commitment { + e.RootCommitment.Compute(func(rootCommitment *model.Commitment) *model.Commitment { return lo.Return1(e.Storage.Commitments().Load(lo.Cond(lastFinalizedSlot < maxCommittableAge, 0, lastFinalizedSlot-maxCommittableAge))) }) } @@ -565,15 +557,11 @@ func newEngineRootCommitmentVariable(e *Engine) reactive.Variable[*model.Commitm e.HookShutdown(unsubscribe) }) - - return v } -func newEngineLatestCommitmentVariable(e *Engine) reactive.Variable[*model.Commitment] { - l := reactive.NewVariable[*model.Commitment]() - +func (e *Engine) initLatestCommitment() { updateLatestCommitment := func(latestCommitment *model.Commitment) { - l.Compute(func(currentLatestComponent *model.Commitment) *model.Commitment { + e.LatestCommitment.Compute(func(currentLatestComponent *model.Commitment) *model.Commitment { return lo.Cond(currentLatestComponent == nil || currentLatestComponent.Index() < latestCommitment.Index(), latestCommitment, currentLatestComponent) }) } @@ -587,8 +575,6 @@ func newEngineLatestCommitmentVariable(e *Engine) reactive.Variable[*model.Commi e.HookShutdown(unsubscribe) }) - - return l } // endregion /////////////////////////////////////////////////////////////////////////////////////////////////////////// From ba7c5176f5fe458bf03a8d1e71653a450b5952bd Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 19 Sep 2023 23:57:24 +0200 Subject: [PATCH 134/356] Feat: WIP WIP --- components/protocol/component.go | 3 +- go.mod | 33 ++-- go.sum | 64 ++++---- pkg/protocol/chain.go | 27 +++- pkg/protocol/chains.go | 65 ++++++-- pkg/protocol/commitment.go | 160 +++++++++--------- pkg/protocol/commitment_verifier.go | 31 ++-- pkg/protocol/engine/engine.go | 26 ++- pkg/protocol/gossip.go | 171 +++++++++++++++----- pkg/protocol/network.go | 3 +- pkg/protocol/protocol.go | 17 +- pkg/tests/protocol_engine_switching_test.go | 3 + pkg/testsuite/mock/node.go | 10 +- tools/evil-spammer/go.mod | 30 ++-- tools/evil-spammer/go.sum | 62 ++++--- tools/gendoc/go.mod | 30 ++-- tools/gendoc/go.sum | 60 +++---- tools/genesis-snapshot/go.mod | 30 ++-- tools/genesis-snapshot/go.sum | 62 ++++--- 19 files changed, 527 insertions(+), 360 deletions(-) diff --git a/components/protocol/component.go b/components/protocol/component.go index e9b9144ae..90253f9f7 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -11,6 +11,7 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/app" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ierrors" hivedb "github.com/iotaledger/hive.go/kvstore/database" "github.com/iotaledger/hive.go/runtime/workerpool" @@ -139,7 +140,7 @@ func provide(c *dig.Container) error { } return protocol.New( - Component.Logger().Named("Protocol"), + reactive.NewLogger("node"), workerpool.NewGroup("Protocol"), deps.P2PManager, protocol.WithBaseDirectory(ParamsDatabase.Path), diff --git a/go.mod b/go.mod index 0197801fe..bf8154cd0 100644 --- a/go.mod +++ b/go.mod @@ -9,22 +9,23 @@ require ( github.com/google/uuid v1.3.1 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 + github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/log v0.0.0-20230919004516-b5321d9b0e41 + github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b - github.com/iotaledger/iota.go/v4 v4.0.0-20230912141328-810f7e83d265 + github.com/iotaledger/iota.go/v4 v4.0.0-20230919215221-eeec36cf7117 github.com/labstack/echo/v4 v4.11.1 github.com/labstack/gommon v0.4.0 github.com/libp2p/go-libp2p v0.30.0 @@ -58,7 +59,7 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/eclipse/paho.mqtt.golang v1.4.3 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/ethereum/go-ethereum v1.13.0 // indirect + github.com/ethereum/go-ethereum v1.13.1 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/felixge/fgprof v0.9.3 // indirect github.com/fjl/memsize v0.0.2 // indirect @@ -165,7 +166,7 @@ require ( go.opentelemetry.io/otel/trace v1.16.0 // indirect go.uber.org/fx v1.20.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.25.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/image v0.11.0 // indirect golang.org/x/mod v0.12.0 // indirect diff --git a/go.sum b/go.sum index 731b9f063..e9c2cb901 100644 --- a/go.sum +++ b/go.sum @@ -96,8 +96,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.13.0 h1:dZALM0PlDTtNITTECPiqSrFo0iEYVDfby+mSVc0LxIs= -github.com/ethereum/go-ethereum v1.13.0/go.mod h1:0TDsBNJ7j8jR01vKpk4j2zfVKyAbQuKzy6wLwb5ZMuU= +github.com/ethereum/go-ethereum v1.13.1 h1:UF2FaUKPIy5jeZk3X06ait3y2Q4wI+vJ1l7+UARp+60= +github.com/ethereum/go-ethereum v1.13.1/go.mod h1:xHQKzwkHSl0gnSjZK1mWa06XEdm9685AHqhRknOzqGQ= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= @@ -277,38 +277,42 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140 h1:XyiPWn0CQmjmPUuHhnDjBqAuoWRCETu3pE3Z3KHPcxo= -github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 h1:B1XC0lIs+Yz79HgytXN/y9qVDsbhp6N424GRE9W0YqE= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 h1:/GDTCmFXcjDabg8HwfYL78BsN0cfGyd2onhRPWqDY20= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 h1:5vyVnYnC6j1kvRrWrcgq2oLaBYomFvFHUq7R/7mC4Ns= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 h1:Rnor/2Bcy8luSAFO+HBRxoLzPtxJzpLZjRle4OSyjBA= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 h1:HIYMX4qEA8IqM02eOI2ZYVyn01zhCCvJ6YpMzf+P/RM= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 h1:N4Qpd7vCNhuFQ+Wg8k9gInVpHjqLlNrEfEVgYuC/aDs= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140 h1:2sY4S+HbBTb3JiIz1jW11bQ74iR2VqL+/mvEiP7iiSs= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 h1:OhsjldIlatxskIfpEXDyodi1RpV9w9aXUEit9uVLBs8= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 h1:qiCT8nQ1R67YUsp5Xmp0aK1/ggXehdu5VQ//9OYmCNQ= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 h1:XxDIaa6kzWxoQ1Hd22AQJpqhV6ySXO5ysGeI7QjVDCg= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 h1:VFBVUIvYn78TjG8Rjxvovud9KZjfVaS4qmfqAaTzJdI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 h1:ZGeNsbWhWzJMmomjX8UqZJ4493nZ7B4kN/wWUdnyltM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 h1:UeDp3fiD7E8UPTOg8cE3jhsgzR2kunB6BAn/FriDXo8= +github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 h1:FTZJkjTwxa+EuNARD43onziqOA/IA4DIIpGpyUMFAac= +github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 h1:2ee98PEu+ykzsBlXDJvdu0RbjYJCMz7PgWJl/tm3UfE= +github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 h1:+0VtBn7DiZodIE3XaNShbE52cBZCKW9Lvs4hDmqwUOQ= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 h1:kd5bR/uc71qRJ74pG615sEVfmD3kSbaGCojWkCsKu2M= +github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 h1:k9vXjsfJCIjzC86am3hlyGRanSqFtkkXgdgD+RQtwqI= +github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 h1:mFvjTfCINpAlRIy6l/xbqEd3JVmjDuOm1rqXMZFrKEU= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 h1:ip8fP9wy6hvI2EOkGXjNfpGnQc0ysU65U/WZYUT47sM= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 h1:L/jUbsY7eIepslq+PpsMn+gdyQs5yWOFFbdhAY46t20= +github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/log v0.0.0-20230919004516-b5321d9b0e41 h1:fxd1dE0WHLr5DyzlisTMNEDYefPdY3MiDk9y74vlqiA= +github.com/iotaledger/hive.go/log v0.0.0-20230919004516-b5321d9b0e41/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 h1:NeSmmNiWUiVaqZw8e2j/0Gy50Xl/+T2yjTmoEYQ7Xmw= +github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 h1:kNWmidaD1u3zGH4LNC+L3MUcRmY+yigFtgDIg+iZxN0= +github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 h1:BgvsJbeoVVgMzmCWXa5hRecxLp83fLG/d/e5DbGHlww= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 h1:027eC08NrlZ2mU7sRumdM+KrVSYmwOmsSaP3fnuMFsE= +github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 h1:BkDuQxUYo9aZ4XYuh8EbXWtZBdh7WvL7oh2unWNUFMo= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14/go.mod h1:ADBXzdHXTldP0NB2Vf+KbhDxkYciGRjzQVXT6Rdne1g= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b h1:EPB/+iWeSx/WgJlzaXl8yjinxuD8CCOdi2ZPMLeeMVY= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b/go.mod h1:B7gyJP6GshCSlEmY3CxEk5TZdsMs3UNz5U92hkFDdMs= github.com/iotaledger/iota.go/v4 v4.0.0-20230912141328-810f7e83d265 h1:0j8ljlBmo/f5Gxva83mLWqZLB/xSO9PgJFMPfJ7tyRY= github.com/iotaledger/iota.go/v4 v4.0.0-20230912141328-810f7e83d265/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= +github.com/iotaledger/iota.go/v4 v4.0.0-20230919215221-eeec36cf7117 h1:Jc/9TY5R07SBboHtDmnY6h3oPcvW0e59BFLa6HmClhU= +github.com/iotaledger/iota.go/v4 v4.0.0-20230919215221-eeec36cf7117/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= github.com/ipfs/boxo v0.10.0 h1:tdDAxq8jrsbRkYoF+5Rcqyeb91hgWe2hp7iLu7ORZLY= github.com/ipfs/boxo v0.10.0/go.mod h1:Fg+BnfxZ0RPzR0nOodzdIq3A7KgoWAOWsEIImrIQdBM= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= @@ -695,8 +699,8 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= -go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index b08d3d13a..07aa4fea8 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -4,6 +4,7 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" ) @@ -27,9 +28,11 @@ type Chain struct { parentEngine reactive.Variable[*engine.Engine] spawnedEngine reactive.Variable[*engine.Engine] instantiate reactive.Variable[bool] + + log.Logger } -func NewChain() *Chain { +func NewChain(logger log.Logger) *Chain { c := &Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), LatestCommitment: reactive.NewVariable[*Commitment](), @@ -82,6 +85,28 @@ func NewChain() *Chain { }) }) + c.Logger = logger.NewEntityLogger("Chain", c.IsEvicted, func(entityLogger log.Logger) { + logger.LogTrace("created new chain", "name", entityLogger.LogName()) + + c.ForkingPoint.LogUpdates(entityLogger, log.LevelDebug, "ForkingPoint", func(commitment *Commitment) string { + if commitment == nil { + return "nil" + } + + return commitment.ID().String() + }) + c.ClaimedWeight.LogUpdates(entityLogger, log.LevelDebug, "ClaimedWeight") + c.AttestedWeight.LogUpdates(entityLogger, log.LevelDebug, "AttestedWeight") + c.VerifiedWeight.LogUpdates(entityLogger, log.LevelDebug, "VerifiedWeight") + c.LatestCommitment.LogUpdates(entityLogger, log.LevelTrace, "LatestCommitment", func(commitment *Commitment) string { + if commitment == nil { + return "nil" + } + + return commitment.ID().String() + }) + }) + return c } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 752f78ee8..46f783c6c 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -34,7 +34,7 @@ func newChains(protocol *Protocol) *Chains { c := &Chains{ protocol: protocol, EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - MainChain: reactive.NewVariable[*Chain]().Init(NewChain()), + MainChain: reactive.NewVariable[*Chain]().Init(NewChain(protocol.Logger)), HeaviestClaimedCandidate: reactive.NewVariable[*Chain](), HeaviestAttestedCandidate: reactive.NewVariable[*Chain](), HeaviestVerifiedCandidate: reactive.NewVariable[*Chain](), @@ -43,7 +43,7 @@ func newChains(protocol *Protocol) *Chains { ChainCreated: event.New1[*Chain](), engineManager: enginemanager.New( protocol.Workers, - func(err error) { protocol.LogError(err) }, + func(err error) { protocol.LogError("engine error", "err", err) }, protocol.options.BaseDirectory, 3, protocol.options.StorageOptions, @@ -91,7 +91,7 @@ func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMeta return nil, ierrors.Wrapf(requestErr, "failed to request commitment %s", commitment.ID()) } - request.Resolve(NewCommitment(commitment)).OnSuccess(func(resolvedMetadata *Commitment) { + request.Resolve(NewCommitment(commitment, c.protocol.Logger)).OnSuccess(func(resolvedMetadata *Commitment) { commitmentMetadata = resolvedMetadata }) @@ -132,7 +132,7 @@ func (c *Chains) initMainChain() { func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { if _, err := c.requestCommitment(commitment.PrevID(), true, lo.Void(commitment.Parent.Set)); err != nil { - c.protocol.LogDebug(ierrors.Wrapf(err, "failed to request parent commitment %s", commitment.PrevID())) + c.protocol.LogDebug("failed to request previous commitment", "prevId", commitment.PrevID(), "error", err) } slotEvictedEvent.OnTrigger(func() { @@ -162,6 +162,8 @@ func (c *Chains) initChainSwitching() { prevCandidate.instantiate.Set(false) } + fmt.Println("NEW CANDIDATE", newCandidate.ForkingPoint.Get().ID(), newCandidate.ForkingPoint.Get().Index(), newCandidate.AttestedWeight.Get()) + newCandidate.instantiate.Set(true) }) @@ -194,11 +196,32 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { panic(fmt.Sprintf("could not load active engine: %s", err)) } + c.protocol.LogDebug("engine started", "chain", chain.LogName(), "root", mainEngine.RootCommitment.Get().ID()) + chain.spawnedEngine.Set(mainEngine) c.protocol.Network.HookStopped(mainEngine.Shutdown) } else { - fmt.Println("WATT IS HIER LOS? EIN FORK?") + snapshotTargetIndex := chain.ForkingPoint.Get().Index() - 1 + candidateEngineInstance, err := c.engineManager.ForkEngineAtSlot(snapshotTargetIndex) + if err != nil { + panic(ierrors.Wrap(err, "error creating new candidate engine")) + + return + } + + c.protocol.LogDebug("engine started", "chain", chain.LogName(), "root", candidateEngineInstance.RootCommitment.Get().ID()) + + candidateEngineInstance.Ledger.HookInitialized(func() { + c.protocol.LogDebug("engine fully started", "chain", chain.LogName(), "root", candidateEngineInstance.RootCommitment.Get().ID()) + }) + + chain.spawnedEngine.Set(candidateEngineInstance) + + // Set the chain to the correct forking point + fmt.Println("WATT IS HIER LOS? EIN FORK? @", chain.ForkingPoint.Get().Index(), chain) + + c.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) } }) } @@ -244,10 +267,17 @@ func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFrom } func (c *Chains) publishEngineCommitments(chain *Chain) { - chain.Engine.OnUpdateWithContext(func(_, engine *engine.Engine, withinContext func(subscriptionFactory func() (unsubscribe func()))) { + chain.spawnedEngine.OnUpdateWithContext(func(_, engine *engine.Engine, withinContext func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { + chain.LogDebug("spawned engine") + + engine.Ledger.HookInitialized(func() { + chain.LogDebug("ENGINE INITIALIZED") + }) + withinContext(func() (unsubscribe func()) { var latestPublishedIndex iotago.SlotIndex + publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment) { publishedCommitment, err := c.PublishCommitment(commitment) if err != nil { @@ -255,6 +285,7 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { } publishedCommitment.promote(chain) + publishedCommitment.IsAttested.Trigger() publishedCommitment.IsVerified.Trigger() latestPublishedIndex = commitment.Index() @@ -262,18 +293,20 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { return publishedCommitment } - var rootPublished bool - return engine.LatestCommitment.OnUpdate(func(_, latestModelCommitment *model.Commitment) { - if !rootPublished { - chain.ForkingPoint.Compute(func(currentValue *Commitment) *Commitment { - if currentValue != nil { - return currentValue - } + chain.ForkingPoint.Compute(func(currentValue *Commitment) *Commitment { + if currentValue != nil { + latestPublishedIndex = currentValue.Index() - return publishCommitment(engine.RootCommitment.Get()) - }) + return currentValue + } - rootPublished = true + return publishCommitment(engine.RootCommitment.Get()) + }) + + return engine.LatestCommitment.OnUpdate(func(_, latestModelCommitment *model.Commitment) { + if latestModelCommitment == nil { + // TODO: CHECK IF NECESSARY + return } for latestPublishedIndex < latestModelCommitment.Index() { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index d2e5e4ab8..7f914eac9 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -1,9 +1,9 @@ package protocol import ( - "fmt" - "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" @@ -12,82 +12,74 @@ import ( type Commitment struct { *model.Commitment - Parent reactive.Variable[*Commitment] - Children reactive.Set[*Commitment] - MainChild reactive.Variable[*Commitment] - SpawnedChain reactive.Variable[*Chain] - Chain reactive.Variable[*Chain] - Engine reactive.Variable[*engine.Engine] - InSyncRange reactive.Variable[bool] - RequestBlocks reactive.Variable[bool] - RequestAttestations reactive.Variable[bool] - IsSolid reactive.Event - IsAttested reactive.Event - IsVerified reactive.Event - IsRoot reactive.Event - IsEvicted reactive.Event - - isParentAttested reactive.Event - isParentVerified reactive.Event + Parent reactive.Variable[*Commitment] + Children reactive.Set[*Commitment] + MainChild reactive.Variable[*Commitment] + SpawnedChain reactive.Variable[*Chain] + Chain reactive.Variable[*Chain] + Engine reactive.Variable[*engine.Engine] + InSyncRange reactive.Variable[bool] + WarpSyncBlocks reactive.Variable[bool] + RequestAttestations reactive.Variable[bool] + AttestedWeight reactive.Variable[uint64] + CumulativeAttestedWeight reactive.Variable[uint64] + IsSolid reactive.Event + IsAttested reactive.Event + IsVerified reactive.Event + IsRoot reactive.Event + IsEvicted reactive.Event + + protocolLogger log.Logger isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] - isDirectlyAboveLatestVerifiedCommitment reactive.Variable[bool] + isAboveLatestVerifiedCommitment reactive.Variable[bool] isBelowSyncThreshold reactive.Event isBelowWarpSyncThreshold reactive.Event - isParentAboveLatestVerifiedCommitment reactive.Variable[bool] - isAboveLatestVerifiedCommitment reactive.Variable[bool] + + log.Logger } -func NewCommitment(commitment *model.Commitment) *Commitment { +func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment { c := &Commitment{ Commitment: commitment, - Parent: reactive.NewVariable[*Commitment](), - MainChild: reactive.NewVariable[*Commitment](), - Children: reactive.NewSet[*Commitment](), - SpawnedChain: reactive.NewVariable[*Chain](), - Chain: reactive.NewVariable[*Chain](), - Engine: reactive.NewVariable[*engine.Engine](), - RequestAttestations: reactive.NewVariable[bool](), - IsSolid: reactive.NewEvent(), - IsAttested: reactive.NewEvent(), - IsVerified: reactive.NewEvent(), - IsRoot: reactive.NewEvent(), - IsEvicted: reactive.NewEvent(), - - isParentAttested: reactive.NewEvent(), - isParentVerified: reactive.NewEvent(), - isBelowSyncThreshold: reactive.NewEvent(), - isBelowWarpSyncThreshold: reactive.NewEvent(), - isParentAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), + Parent: reactive.NewVariable[*Commitment](), + MainChild: reactive.NewVariable[*Commitment](), + Children: reactive.NewSet[*Commitment](), + SpawnedChain: reactive.NewVariable[*Chain](), + Chain: reactive.NewVariable[*Chain](), + Engine: reactive.NewVariable[*engine.Engine](), + RequestAttestations: reactive.NewVariable[bool](), + AttestedWeight: reactive.NewVariable[uint64](func(current uint64, new uint64) uint64 { return max(current, new) }), + CumulativeAttestedWeight: reactive.NewVariable[uint64](), + IsSolid: reactive.NewEvent(), + IsAttested: reactive.NewEvent(), + IsVerified: reactive.NewEvent(), + IsRoot: reactive.NewEvent(), + IsEvicted: reactive.NewEvent(), + + protocolLogger: logger, + isDirectlyAboveLatestAttestedCommitment: reactive.NewVariable[bool](), + isAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), + isBelowSyncThreshold: reactive.NewEvent(), + isBelowWarpSyncThreshold: reactive.NewEvent(), } - c.isDirectlyAboveLatestAttestedCommitment = reactive.NewDerivedVariable2(func(isParentAttested, isAttested bool) bool { - return isParentAttested && !isAttested - }, c.isParentAttested, c.IsAttested) - - c.isDirectlyAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(isParentVerified, isVerified bool) bool { - return isParentVerified && !isVerified - }, c.isParentVerified, c.IsVerified) - - c.isAboveLatestVerifiedCommitment = reactive.NewDerivedVariable2(func(directlyAboveLatestVerifiedCommitment, parentAboveLatestVerifiedCommitment bool) bool { - return directlyAboveLatestVerifiedCommitment || parentAboveLatestVerifiedCommitment - }, c.isDirectlyAboveLatestVerifiedCommitment, c.isParentAboveLatestVerifiedCommitment) - - c.InSyncRange = reactive.NewDerivedVariable2(func(aboveLatestVerifiedCommitment, belowSyncThreshold bool) bool { - return aboveLatestVerifiedCommitment && belowSyncThreshold - }, c.isAboveLatestVerifiedCommitment, c.isBelowSyncThreshold) - - c.RequestBlocks = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { - return inSyncWindow && belowWarpSyncThreshold - }, c.InSyncRange, c.isBelowWarpSyncThreshold) - c.Parent.OnUpdateOnce(func(_, parent *Commitment) { parent.registerChild(c) c.IsSolid.InheritFrom(parent.IsSolid) - c.isParentAttested.InheritFrom(parent.IsAttested) - c.isParentVerified.InheritFrom(parent.IsVerified) - c.isParentAboveLatestVerifiedCommitment.InheritFrom(parent.isAboveLatestVerifiedCommitment) + + c.CumulativeAttestedWeight.InheritFrom(reactive.NewDerivedVariable2(func(parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { + return parentCumulativeAttestedWeight + attestedWeight + }, parent.CumulativeAttestedWeight, c.AttestedWeight)) + + c.isDirectlyAboveLatestAttestedCommitment.InheritFrom(reactive.NewDerivedVariable2(func(parentIsAttested, isAttested bool) bool { + return parentIsAttested && !isAttested + }, parent.IsAttested, c.IsAttested)) + + c.isAboveLatestVerifiedCommitment.InheritFrom(reactive.NewDerivedVariable3(func(parentIsAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { + return parentIsAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) + }, parent.isAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)) c.triggerEventIfBelowThreshold( func(c *Commitment) reactive.Event { return c.isBelowSyncThreshold }, @@ -101,16 +93,6 @@ func NewCommitment(commitment *model.Commitment) *Commitment { }) c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { - withinContext(func() (unsubscribe func()) { - return chain.registerCommitment(c) - }) - - withinContext(func() (unsubscribe func()) { - return chain.Engine.OnUpdate(func(_, chainEngine *engine.Engine) { - c.Engine.Set(chainEngine) - }) - }) - withinContext(func() (unsubscribe func()) { requestAttestations := reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { return requestAttestations && isDirectlyAboveLatestAttestedCommitment @@ -118,10 +100,26 @@ func NewCommitment(commitment *model.Commitment) *Commitment { c.RequestAttestations.InheritFrom(requestAttestations) - return requestAttestations.Unsubscribe + return lo.Batch( + chain.registerCommitment(c), + + chain.Engine.OnUpdate(func(_, chainEngine *engine.Engine) { + c.Engine.Set(chainEngine) + }), + + requestAttestations.Unsubscribe, + ) }) }) + c.InSyncRange = reactive.NewDerivedVariable2(func(aboveLatestVerifiedCommitment, belowSyncThreshold bool) bool { + return aboveLatestVerifiedCommitment && belowSyncThreshold + }, c.isAboveLatestVerifiedCommitment, c.isBelowSyncThreshold) + + c.WarpSyncBlocks = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { + return inSyncWindow && belowWarpSyncThreshold + }, c.InSyncRange, c.isBelowWarpSyncThreshold) + c.IsRoot.OnTrigger(func() { c.IsSolid.Set(true) c.IsAttested.Set(true) @@ -130,6 +128,10 @@ func NewCommitment(commitment *model.Commitment) *Commitment { c.isBelowSyncThreshold.Set(true) }) + c.Logger = logger.NewEntityLogger("Commitment", c.IsEvicted, func(entityLogger log.Logger) { + c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") + }) + return c } @@ -175,8 +177,10 @@ func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitm unsubscribeFromParent() } - spawnedChain = NewChain() + spawnedChain = NewChain(c.protocolLogger) spawnedChain.ForkingPoint.Set(c) + + c.Chain.Set(spawnedChain) } return spawnedChain @@ -187,8 +191,8 @@ func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitm func (c *Commitment) promote(targetChain *Chain) { c.Chain.Compute(func(currentChain *Chain) *Chain { - if currentChain != nil { - fmt.Println("SHOULD PROMOTE") + if currentChain != nil && currentChain != targetChain { + c.LogTrace("promoting commitment", "from", currentChain.LogName(), "to", targetChain.LogName()) //currentChain.Promote(targetChain) } diff --git a/pkg/protocol/commitment_verifier.go b/pkg/protocol/commitment_verifier.go index f0f5ecdcb..cdea7720b 100644 --- a/pkg/protocol/commitment_verifier.go +++ b/pkg/protocol/commitment_verifier.go @@ -1,6 +1,8 @@ package protocol import ( + "fmt" + "github.com/iotaledger/hive.go/ads" "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ierrors" @@ -35,28 +37,12 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *model.Commitment, atte tree := ads.NewMap(mapdb.NewMapDB(), iotago.Identifier.Bytes, iotago.IdentifierFromBytes, - func(attestation *iotago.Attestation) ([]byte, error) { - apiForVersion, err := c.engine.APIForVersion(attestation.ProtocolVersion) - if err != nil { - return nil, ierrors.Wrapf(err, "failed to get API for version %d", attestation.ProtocolVersion) - } - - return apiForVersion.Encode(attestation) - }, - func(bytes []byte) (*iotago.Attestation, int, error) { - version, _, err := iotago.VersionFromBytes(bytes) - if err != nil { - return nil, 0, ierrors.Wrap(err, "failed to determine version") - } - - a := new(iotago.Attestation) - apiForVersion, err := c.engine.APIForVersion(version) - if err != nil { - return nil, 0, ierrors.Wrapf(err, "failed to get API for version %d", version) - } - n, err := apiForVersion.Decode(bytes, a) + (*iotago.Attestation).Bytes, + func(bytes []byte) (attestation *iotago.Attestation, consumedBytes int, err error) { + attestation = new(iotago.Attestation) + consumedBytes, err = c.engine.Decode(bytes, attestation) - return a, n, err + return }, ) @@ -98,6 +84,9 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *model.Commitment, atte // than it actually is. Nodes might consider to switch to this chain, even though it is invalid which will be discovered // before the candidate chain/engine is activated (it will never get heavier than the current chain). c.cumulativeWeight += seatCount + + fmt.Println("seat count", seatCount) + if c.cumulativeWeight > commitment.CumulativeWeight() { return nil, 0, ierrors.Errorf("invalid cumulative weight for commitment %s: expected %d, got %d", commitment.ID(), commitment.CumulativeWeight(), c.cumulativeWeight) } diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index 733c32aef..c212c5841 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -220,9 +220,6 @@ func New( e.startupAvailableBlocksWindow = e.Storage.Settings().LatestCommitment().Index() + e.CurrentAPI().ProtocolParameters().MaxCommittableAge() } }, - func(e *Engine) { - fmt.Println("Engine Settings", e.Storage.Settings().String()) - }, (*Engine).TriggerInitialized, ) } @@ -304,6 +301,29 @@ func (e *Engine) APIForVersion(version iotago.Version) (iotago.API, error) { return e.Storage.Settings().APIProvider().APIForVersion(version) } +func (e *Engine) Encode(obj any, version iotago.Version) ([]byte, error) { + apiForVersion, err := e.APIForVersion(version) + if err != nil { + return nil, ierrors.Wrapf(err, "failed to get API for version %d", version) + } + + return apiForVersion.Encode(obj) +} + +func (e *Engine) Decode(bytes []byte, obj any) (int, error) { + version, _, err := iotago.VersionFromBytes(bytes) + if err != nil { + return 0, ierrors.Wrap(err, "failed to determine version") + } + + apiForVersion, err := e.APIForVersion(version) + if err != nil { + return 0, ierrors.Wrapf(err, "failed to get API for version %d", version) + } + + return apiForVersion.Decode(bytes, obj) +} + func (e *Engine) LatestAPI() iotago.API { return e.Storage.Settings().APIProvider().LatestAPI() } diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go index 1d90ae8ec..f3bdca811 100644 --- a/pkg/protocol/gossip.go +++ b/pkg/protocol/gossip.go @@ -1,16 +1,16 @@ package protocol import ( - "fmt" - "github.com/libp2p/go-libp2p/core/peer" + "github.com/iotaledger/hive.go/ads" "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore" + "github.com/iotaledger/hive.go/kvstore/mapdb" "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/logger" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" @@ -24,12 +24,13 @@ type Gossip struct { gossip *event.Event1[*model.Block] attestationsRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + warpSyncRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] blockRequestStarted *event.Event2[iotago.BlockID, *engine.Engine] blockRequestStopped *event.Event2[iotago.BlockID, *engine.Engine] blockRequested *event.Event2[iotago.BlockID, *engine.Engine] commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] - *logger.WrappedLogger + log.Logger } func NewGossip(protocol *Protocol) *Gossip { @@ -38,15 +39,16 @@ func NewGossip(protocol *Protocol) *Gossip { gossip: event.New1[*model.Block](), attestationsRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + warpSyncRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), blockRequestStarted: event.New2[iotago.BlockID, *engine.Engine](), blockRequestStopped: event.New2[iotago.BlockID, *engine.Engine](), blockRequested: event.New2[iotago.BlockID, *engine.Engine](), commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), - WrappedLogger: logger.NewWrappedLogger(protocol.WrappedLogger.LoggerNamed("gossip")), } - g.startAttestationsRequester() g.startBlockRequester() + g.startAttestationsRequester() + g.startWarpSyncRequester() for _, gossipEvent := range []*event.Event1[*blocks.Block]{ // TODO: REPLACE WITH REACTIVE VERSION @@ -56,6 +58,14 @@ func NewGossip(protocol *Protocol) *Gossip { gossipEvent.Hook(func(block *blocks.Block) { g.gossip.Trigger(block.ModelBlock()) }) } + g.Logger = func() log.Logger { + logger, shutdownLogger := protocol.Logger.NewChildLogger("Gossip") + + protocol.HookShutdown(shutdownLogger) + + return logger + }() + return g } @@ -68,20 +78,21 @@ func (r *Gossip) IssueBlock(block *model.Block) error { func (r *Gossip) ProcessBlock(block *model.Block, src peer.ID) { commitmentRequest, err := r.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) if err != nil { - r.protocol.LogDebug(ierrors.Wrapf(err, "failed to process block %s from peer %s", block.ID(), src)) + r.protocol.LogDebug("failed to process block", "blockID", block.ID(), "source", src, "err", err) return } if commitmentRequest.WasRejected() { - r.protocol.LogDebug(ierrors.Wrapf(commitmentRequest.Err(), "failed to process block %s from peer %s", block.ID(), src)) + r.protocol.LogDebug("failed to process block", "blockID", block.ID(), "source", src, "err", commitmentRequest.Err()) return } if !commitmentRequest.WasCompleted() { - fmt.Println(r.protocol.MainEngineInstance().Name(), "WARNING3", block.ProtocolBlock().SlotCommitmentID, block.ProtocolBlock().SlotCommitmentID.Index()) + //fmt.Println(r.protocol.MainEngineInstance().Name(), "WARNING3", block.ProtocolBlock().SlotCommitmentID, block.ProtocolBlock().SlotCommitmentID.Index()) // TODO: QUEUE TO UNSOLID COMMITMENT BLOCKS + r.protocol.LogTrace("failed to process block", "blockID", block.ID(), "peer", src, "err", ierrors.New("block still missing")) } else { commitment := commitmentRequest.Result() @@ -94,25 +105,22 @@ func (r *Gossip) ProcessBlock(block *model.Block, src peer.ID) { } func (r *Gossip) ProcessBlockRequest(blockID iotago.BlockID, src peer.ID) { - block, exists := r.protocol.MainEngineInstance().Block(blockID) - if !exists { - r.LogDebug(ierrors.Errorf("requested block %s not found", blockID)) - - return + if block, exists := r.protocol.MainEngineInstance().Block(blockID); !exists { + r.LogDebug("failed to load requested block", "blockID", blockID, "peer", src) + } else { + r.protocol.SendBlock(block, src) } - - r.protocol.SendBlock(block, src) } func (r *Gossip) ProcessCommitment(commitmentModel *model.Commitment, src peer.ID) { if _, err := r.protocol.PublishCommitment(commitmentModel); err != nil { - r.LogDebug(ierrors.Wrapf(err, "failed to publish commitment %s from peer %s", commitmentModel.ID(), src)) + r.LogDebug("failed to publish commitment", "commitmentID", commitmentModel.ID(), "peer", src) } } func (r *Gossip) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src peer.ID) { if commitment, err := r.protocol.Commitment(commitmentID); err != nil { - r.LogDebug(ierrors.Wrapf(err, "failed to process commitment request for commitment %s from peer %s", commitmentID, src)) + r.LogDebug("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) } else { r.protocol.SendSlotCommitment(commitment.Commitment, src) } @@ -121,39 +129,37 @@ func (r *Gossip) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src func (r *Gossip) ProcessAttestations(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { commitment, err := r.protocol.PublishCommitment(commitmentModel) if err != nil { - r.LogDebug(ierrors.Wrapf(err, "failed to publish commitment %s when processing attestations", commitmentModel.ID())) + r.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", source, "error", err) return } chain := commitment.Chain.Get() if chain == nil { - r.LogDebug(ierrors.Errorf("failed to find chain for commitment %s when processing attestations", commitmentModel.ID())) + r.LogDebug("failed to find chain for commitment when processing attestations", "commitmentID", commitmentModel.ID()) return } commitmentVerifier, exists := r.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) if !exists { - r.LogDebug(ierrors.Errorf("failed to find commitment verifier for commitment %s when processing attestations", commitmentModel.ID())) + r.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitmentID", commitmentModel.ID()) return } - blockIDs, actualCumulativeWeight, err := commitmentVerifier.verifyCommitment(commitmentModel, attestations, merkleProof) + _, actualCumulativeWeight, err := commitmentVerifier.verifyCommitment(commitmentModel, attestations, merkleProof) if err != nil { - r.LogError(ierrors.Errorf("failed to verify commitment %s when processing attestations", commitmentModel.ID())) + r.LogError("failed to verify commitment when processing attestations", "commitmentID", commitmentModel.ID(), "error", err) return } - // TODO: publish blockIDs, actualCumulativeWeight to target commitment commitment.IsAttested.Set(true) - - fmt.Println("ATTESTATIONS", blockIDs, actualCumulativeWeight, source) + commitment.AttestedWeight.Set(actualCumulativeWeight) } func (r *Gossip) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) { mainEngine := r.protocol.MainEngineInstance() if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { - r.LogDebug(ierrors.Errorf("requested commitment %s is not available, yet", commitmentID)) + r.LogDebug("requested commitment is not verified, yet", "commitmentID", commitmentID) return } @@ -161,38 +167,38 @@ func (r *Gossip) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, sr commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Index()) if err != nil { if ierrors.Is(err, kvstore.ErrKeyNotFound) { - r.LogDebug(ierrors.Wrapf(err, "failed to load commitment %s", commitmentID)) + r.LogDebug("failed to load commitment", "commitmentID", commitmentID) } else { - r.LogError(ierrors.Wrapf(err, "failed to load commitment %s", commitmentID)) + r.LogError("failed to load commitment", "commitmentID", commitmentID) + panic("here4") } return } if commitment.ID() != commitmentID { - r.LogDebug(ierrors.Errorf("requested commitment is not from the main engine %s", commitmentID)) - + r.LogDebug("requested commitment does not belong to main engine", "requestedCommitmentID", commitmentID, "mainEngineCommitmentID", commitment.ID()) return } attestations, err := mainEngine.Attestations.Get(commitmentID.Index()) if err != nil { - r.LogError(ierrors.Wrapf(err, "failed to load attestations for commitment %s", commitmentID)) - + r.LogError("failed to load attestations", "commitmentID", commitmentID, "error", err) + panic("here") return } rootsStorage, err := mainEngine.Storage.Roots(commitmentID.Index()) if err != nil { - r.LogError(ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID)) - + r.LogError("failed to load roots", "commitmentID", commitmentID, "error", err) + panic("here1") return } roots, err := rootsStorage.Load(commitmentID) if err != nil { - r.LogError(ierrors.Wrapf(err, "failed to load roots for commitment %s", commitmentID)) - + r.LogError("failed to load roots", "commitmentID", commitmentID, "error", err) + panic("here2") return } @@ -200,11 +206,80 @@ func (r *Gossip) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, sr } func (r *Gossip) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], src peer.ID) { - panic("implement me") + if err, logLevel := func() (err error, logLevel log.Level) { + chainCommitment, err := r.protocol.Commitment(commitmentID) + if err != nil { + if !ierrors.Is(err, ErrorCommitmentNotFound) { + return ierrors.Wrapf(err, "unexpected error when loading commitment"), log.LevelError + } + + return ierrors.Wrapf(err, "warp sync response for unknown commitment"), log.LevelDebug + } + + if !chainCommitment.WarpSyncBlocks.Get() { + return ierrors.New("warp sync not requested"), log.LevelDebug + } + + targetEngine := chainCommitment.Engine.Get() + if targetEngine == nil { + return ierrors.New("failed to get engine"), log.LevelDebug + } + + acceptedBlocks := ads.NewSet[iotago.BlockID](mapdb.NewMapDB(), iotago.BlockID.Bytes, iotago.SlotIdentifierFromBytes) + for _, blockID := range blockIDs { + _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error + } + + if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), chainCommitment.RootsID()) { + return ierrors.New("failed to verify merkle proof"), log.LevelError + } + + r.warpSyncRequester.StopTicker(commitmentID) + + for _, blockID := range blockIDs { + targetEngine.BlockDAG.GetOrRequestBlock(blockID) + } + + return + }(); err != nil { + r.Log("failed to process warp sync response", logLevel, "commitmentID", commitmentID, "peer", src, "error", err) + } else { + r.Log("successfully processed warp sync response", log.LevelDebug, "commitmentID", commitmentID, "peer", src) + } } func (r *Gossip) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, src peer.ID) { - panic("implement me") + if err, logLevel := func() (err error, logLevel log.Level) { + committedSlot, err := r.protocol.MainEngineInstance().CommittedSlot(commitmentID) + if err != nil { + return ierrors.Wrap(err, "failed to get slot for commitment"), log.LevelDebug + } + + commitment, err := committedSlot.Commitment() + if err != nil { + return ierrors.Wrap(err, "failed to get commitment from slot"), log.LevelDebug + } else if commitment.ID() != commitmentID { + return ierrors.New("commitment ID mismatch"), log.LevelError + } + + blockIDs, err := committedSlot.BlockIDs() + if err != nil { + return ierrors.Wrap(err, "failed to get block IDs from slot"), log.LevelDebug + } + + roots, err := committedSlot.Roots() + if err != nil { + return ierrors.Wrap(err, "failed to get roots from slot"), log.LevelDebug + } + + r.protocol.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), src) + + return + }(); err != nil { + r.Log("failed to process warp sync request", logLevel, "commitmentID", commitmentID, "peer", src, "error", err) + } else { + r.Log("successfully processed warp sync request", log.LevelDebug, "commitmentID", commitmentID, "peer", src) + } } func (r *Gossip) OnSendBlock(callback func(block *model.Block)) (unsubscribe func()) { @@ -264,7 +339,11 @@ func (r *Gossip) startAttestationsRequester() { r.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { if requestAttestations { - r.attestationsRequester.StartTicker(commitment.ID()) + if commitment.CumulativeWeight() == 0 { + commitment.IsAttested.Set(true) + } else { + r.attestationsRequester.StartTicker(commitment.ID()) + } } else { r.attestationsRequester.StopTicker(commitment.ID()) } @@ -273,6 +352,18 @@ func (r *Gossip) startAttestationsRequester() { }) } +func (r *Gossip) startWarpSyncRequester() { + r.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.WarpSyncBlocks.OnUpdate(func(_, warpSyncBlocks bool) { + if warpSyncBlocks { + r.warpSyncRequester.StartTicker(commitment.ID()) + } else { + r.warpSyncRequester.StopTicker(commitment.ID()) + } + }) + }) +} + func (r *Gossip) startBlockRequester() { startBlockRequester := func(engine *engine.Engine) { unsubscribe := lo.Batch( diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index 9f7e2e975..404b8222a 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -3,7 +3,6 @@ package protocol import ( "github.com/libp2p/go-libp2p/core/peer" - "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/iota-core/pkg/model" @@ -31,7 +30,7 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { protocol.HookInitialized(func() { n.OnError(func(err error, src peer.ID) { - protocol.LogError(ierrors.Wrapf(err, "network error in connection to %s", src)) + protocol.LogError("network error", "peer", src, "error", err) }) unsubscribeFromNetworkEvents = lo.Batch( diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index fdc848372..ced2f86ee 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -3,7 +3,7 @@ package protocol import ( "context" - "github.com/iotaledger/hive.go/logger" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" @@ -22,18 +22,17 @@ type Protocol struct { *Network *Chains *Gossip - - *logger.WrappedLogger + log.Logger module.Module } -func New(loggerInstance *logger.Logger, workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { +func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { return options.Apply(&Protocol{ - Events: NewEvents(), - Workers: workers, - WrappedLogger: logger.NewWrappedLogger(loggerInstance), - error: event.New1[error](), - options: newOptions(), + Events: NewEvents(), + Workers: workers, + Logger: logger, + error: event.New1[error](), + options: newOptions(), }, opts, func(p *Protocol) { p.Network = newNetwork(p, dispatcher) p.Chains = newChains(p) diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index ec495d61a..6a03b95bf 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -9,6 +9,7 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/core/account" @@ -98,6 +99,8 @@ func TestProtocol_EngineSwitching(t *testing.T) { ts.Run(false, nodeOptions) + node6.Protocol.SetLogLevel(log.LevelTrace) + expectedCommittee := []iotago.AccountID{ node0.AccountID, node1.AccountID, diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 89329f33d..3c96589ff 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -18,6 +18,7 @@ import ( "github.com/iotaledger/hive.go/app/configuration" appLogger "github.com/iotaledger/hive.go/app/logger" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/logger" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/syncutils" @@ -115,14 +116,14 @@ func NewNode(t *testing.T, net *Network, partition string, name string, validato func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[protocol.Protocol]) { n.Protocol = protocol.New( - logger.NewLogger("Protocol"), + log.NewLogger(n.Name), n.Workers.CreateGroup("Protocol"), n.Endpoint, opts..., ) n.hookEvents() - n.hookLogging(failOnBlockFiltered) + //n.hookLogging(failOnBlockFiltered) n.blockIssuer = blockfactory.New(n.Protocol, blockfactory.WithTipSelectionTimeout(3*time.Second), blockfactory.WithTipSelectionRetryInterval(time.Millisecond*100)) @@ -149,6 +150,7 @@ func (n *Node) hookEvents() { }) n.Protocol.HeaviestAttestedCandidate.OnUpdate(func(_, newChain *protocol.Chain) { + fmt.Printf("%s > HeaviestAttestedCandidate.OnUpdate\n", n.Name) n.candidateEngineActivatedCount.Add(1) }) @@ -509,7 +511,7 @@ func (n *Node) IssueBlock(ctx context.Context, alias string, opts ...options.Opt require.NoErrorf(n.Testing, n.blockIssuer.IssueBlock(block.ModelBlock()), "%s > failed to issue block with alias %s", n.Name, alias) - fmt.Printf("%s > Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", n.Name, block.ID(), block.ID().Index(), block.SlotCommitmentID(), block.SlotCommitmentID().Index(), block.ProtocolBlock().LatestFinalizedSlot) + // fmt.Printf("%s > Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", n.Name, block.ID(), block.ID().Index(), block.SlotCommitmentID(), block.SlotCommitmentID().Index(), block.ProtocolBlock().LatestFinalizedSlot) return block } @@ -519,7 +521,7 @@ func (n *Node) IssueValidationBlock(ctx context.Context, alias string, opts ...o require.NoError(n.Testing, n.blockIssuer.IssueBlock(block.ModelBlock())) - fmt.Printf("Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", block.ID(), block.ID().Index(), block.SlotCommitmentID(), block.SlotCommitmentID().Index(), block.ProtocolBlock().LatestFinalizedSlot) + //fmt.Printf("Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", block.ID(), block.ID().Index(), block.SlotCommitmentID(), block.SlotCommitmentID().Index(), block.ProtocolBlock().LatestFinalizedSlot) return block } diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index f7212fcfd..1d1ee21c8 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -8,13 +8,13 @@ replace github.com/iotaledger/iota-core/tools/genesis-snapshot => ../genesis-sna require ( github.com/AlecAivazis/survey/v2 v2.3.7 - github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 + github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230912141328-810f7e83d265 @@ -28,7 +28,7 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/eclipse/paho.mqtt.golang v1.4.3 // indirect - github.com/ethereum/go-ethereum v1.13.0 // indirect + github.com/ethereum/go-ethereum v1.13.1 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/google/go-cmp v0.5.9 // indirect @@ -37,12 +37,12 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect @@ -77,7 +77,7 @@ require ( github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98 // indirect github.com/zyedidia/generic v1.2.1 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.25.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.13.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/net v0.15.0 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index e8b1dd7d5..aa15d8bcc 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -27,8 +27,6 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72H github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= -github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= @@ -62,8 +60,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.13.0 h1:dZALM0PlDTtNITTECPiqSrFo0iEYVDfby+mSVc0LxIs= -github.com/ethereum/go-ethereum v1.13.0/go.mod h1:0TDsBNJ7j8jR01vKpk4j2zfVKyAbQuKzy6wLwb5ZMuU= +github.com/ethereum/go-ethereum v1.13.1 h1:UF2FaUKPIy5jeZk3X06ait3y2Q4wI+vJ1l7+UARp+60= +github.com/ethereum/go-ethereum v1.13.1/go.mod h1:xHQKzwkHSl0gnSjZK1mWa06XEdm9685AHqhRknOzqGQ= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= @@ -171,32 +169,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140 h1:XyiPWn0CQmjmPUuHhnDjBqAuoWRCETu3pE3Z3KHPcxo= -github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 h1:B1XC0lIs+Yz79HgytXN/y9qVDsbhp6N424GRE9W0YqE= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 h1:/GDTCmFXcjDabg8HwfYL78BsN0cfGyd2onhRPWqDY20= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 h1:5vyVnYnC6j1kvRrWrcgq2oLaBYomFvFHUq7R/7mC4Ns= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 h1:Rnor/2Bcy8luSAFO+HBRxoLzPtxJzpLZjRle4OSyjBA= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 h1:HIYMX4qEA8IqM02eOI2ZYVyn01zhCCvJ6YpMzf+P/RM= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 h1:N4Qpd7vCNhuFQ+Wg8k9gInVpHjqLlNrEfEVgYuC/aDs= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140 h1:2sY4S+HbBTb3JiIz1jW11bQ74iR2VqL+/mvEiP7iiSs= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 h1:OhsjldIlatxskIfpEXDyodi1RpV9w9aXUEit9uVLBs8= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 h1:qiCT8nQ1R67YUsp5Xmp0aK1/ggXehdu5VQ//9OYmCNQ= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 h1:XxDIaa6kzWxoQ1Hd22AQJpqhV6ySXO5ysGeI7QjVDCg= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 h1:VFBVUIvYn78TjG8Rjxvovud9KZjfVaS4qmfqAaTzJdI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 h1:ZGeNsbWhWzJMmomjX8UqZJ4493nZ7B4kN/wWUdnyltM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 h1:UeDp3fiD7E8UPTOg8cE3jhsgzR2kunB6BAn/FriDXo8= +github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 h1:FTZJkjTwxa+EuNARD43onziqOA/IA4DIIpGpyUMFAac= +github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 h1:2ee98PEu+ykzsBlXDJvdu0RbjYJCMz7PgWJl/tm3UfE= +github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 h1:+0VtBn7DiZodIE3XaNShbE52cBZCKW9Lvs4hDmqwUOQ= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 h1:kd5bR/uc71qRJ74pG615sEVfmD3kSbaGCojWkCsKu2M= +github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 h1:k9vXjsfJCIjzC86am3hlyGRanSqFtkkXgdgD+RQtwqI= +github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 h1:mFvjTfCINpAlRIy6l/xbqEd3JVmjDuOm1rqXMZFrKEU= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 h1:ip8fP9wy6hvI2EOkGXjNfpGnQc0ysU65U/WZYUT47sM= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 h1:L/jUbsY7eIepslq+PpsMn+gdyQs5yWOFFbdhAY46t20= +github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 h1:NeSmmNiWUiVaqZw8e2j/0Gy50Xl/+T2yjTmoEYQ7Xmw= +github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 h1:kNWmidaD1u3zGH4LNC+L3MUcRmY+yigFtgDIg+iZxN0= +github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 h1:BgvsJbeoVVgMzmCWXa5hRecxLp83fLG/d/e5DbGHlww= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 h1:027eC08NrlZ2mU7sRumdM+KrVSYmwOmsSaP3fnuMFsE= +github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20230912141328-810f7e83d265 h1:0j8ljlBmo/f5Gxva83mLWqZLB/xSO9PgJFMPfJ7tyRY= github.com/iotaledger/iota.go/v4 v4.0.0-20230912141328-810f7e83d265/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= @@ -387,8 +385,8 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= -go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index d17e8b090..2d3b14d11 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 + github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -24,7 +24,7 @@ require ( github.com/dustin/go-humanize v1.0.1 // indirect github.com/eclipse/paho.mqtt.golang v1.4.3 // indirect github.com/elastic/gosigar v0.14.2 // indirect - github.com/ethereum/go-ethereum v1.13.0 // indirect + github.com/ethereum/go-ethereum v1.13.1 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/fbiville/markdown-table-formatter v0.3.0 // indirect github.com/felixge/fgprof v0.9.3 // indirect @@ -57,18 +57,18 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20230912141328-810f7e83d265 // indirect @@ -160,7 +160,7 @@ require ( go.uber.org/dig v1.17.0 // indirect go.uber.org/fx v1.20.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.25.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/crypto v0.13.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/image v0.11.0 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 6406e9333..8998fe6d9 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -96,8 +96,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.13.0 h1:dZALM0PlDTtNITTECPiqSrFo0iEYVDfby+mSVc0LxIs= -github.com/ethereum/go-ethereum v1.13.0/go.mod h1:0TDsBNJ7j8jR01vKpk4j2zfVKyAbQuKzy6wLwb5ZMuU= +github.com/ethereum/go-ethereum v1.13.1 h1:UF2FaUKPIy5jeZk3X06ait3y2Q4wI+vJ1l7+UARp+60= +github.com/ethereum/go-ethereum v1.13.1/go.mod h1:xHQKzwkHSl0gnSjZK1mWa06XEdm9685AHqhRknOzqGQ= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= @@ -279,34 +279,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140 h1:XyiPWn0CQmjmPUuHhnDjBqAuoWRCETu3pE3Z3KHPcxo= -github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 h1:B1XC0lIs+Yz79HgytXN/y9qVDsbhp6N424GRE9W0YqE= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 h1:UeDp3fiD7E8UPTOg8cE3jhsgzR2kunB6BAn/FriDXo8= +github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 h1:FTZJkjTwxa+EuNARD43onziqOA/IA4DIIpGpyUMFAac= +github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 h1:/GDTCmFXcjDabg8HwfYL78BsN0cfGyd2onhRPWqDY20= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 h1:5vyVnYnC6j1kvRrWrcgq2oLaBYomFvFHUq7R/7mC4Ns= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 h1:Rnor/2Bcy8luSAFO+HBRxoLzPtxJzpLZjRle4OSyjBA= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 h1:HIYMX4qEA8IqM02eOI2ZYVyn01zhCCvJ6YpMzf+P/RM= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 h1:N4Qpd7vCNhuFQ+Wg8k9gInVpHjqLlNrEfEVgYuC/aDs= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140 h1:2sY4S+HbBTb3JiIz1jW11bQ74iR2VqL+/mvEiP7iiSs= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 h1:OhsjldIlatxskIfpEXDyodi1RpV9w9aXUEit9uVLBs8= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 h1:qiCT8nQ1R67YUsp5Xmp0aK1/ggXehdu5VQ//9OYmCNQ= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 h1:XxDIaa6kzWxoQ1Hd22AQJpqhV6ySXO5ysGeI7QjVDCg= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 h1:VFBVUIvYn78TjG8Rjxvovud9KZjfVaS4qmfqAaTzJdI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 h1:ZGeNsbWhWzJMmomjX8UqZJ4493nZ7B4kN/wWUdnyltM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 h1:2ee98PEu+ykzsBlXDJvdu0RbjYJCMz7PgWJl/tm3UfE= +github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 h1:+0VtBn7DiZodIE3XaNShbE52cBZCKW9Lvs4hDmqwUOQ= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 h1:kd5bR/uc71qRJ74pG615sEVfmD3kSbaGCojWkCsKu2M= +github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 h1:k9vXjsfJCIjzC86am3hlyGRanSqFtkkXgdgD+RQtwqI= +github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 h1:mFvjTfCINpAlRIy6l/xbqEd3JVmjDuOm1rqXMZFrKEU= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 h1:ip8fP9wy6hvI2EOkGXjNfpGnQc0ysU65U/WZYUT47sM= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 h1:L/jUbsY7eIepslq+PpsMn+gdyQs5yWOFFbdhAY46t20= +github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 h1:NeSmmNiWUiVaqZw8e2j/0Gy50Xl/+T2yjTmoEYQ7Xmw= +github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 h1:kNWmidaD1u3zGH4LNC+L3MUcRmY+yigFtgDIg+iZxN0= +github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 h1:BgvsJbeoVVgMzmCWXa5hRecxLp83fLG/d/e5DbGHlww= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 h1:027eC08NrlZ2mU7sRumdM+KrVSYmwOmsSaP3fnuMFsE= +github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 h1:BkDuQxUYo9aZ4XYuh8EbXWtZBdh7WvL7oh2unWNUFMo= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14/go.mod h1:ADBXzdHXTldP0NB2Vf+KbhDxkYciGRjzQVXT6Rdne1g= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b h1:EPB/+iWeSx/WgJlzaXl8yjinxuD8CCOdi2ZPMLeeMVY= @@ -697,8 +697,8 @@ go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9E go.uber.org/zap v1.16.0/go.mod h1:MA8QOfq0BHJwdXa996Y4dYkAqRKB8/1K1QMMZVaNZjQ= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI= -go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= -go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 338f5ecb4..059f363d0 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 + github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230912141328-810f7e83d265 github.com/mr-tron/base58 v1.2.0 @@ -21,7 +21,7 @@ require ( github.com/btcsuite/btcd/btcec/v2 v2.3.2 // indirect github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect - github.com/ethereum/go-ethereum v1.13.0 // indirect + github.com/ethereum/go-ethereum v1.13.1 // indirect github.com/fatih/structs v1.1.0 // indirect github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/google/go-cmp v0.5.9 // indirect @@ -29,15 +29,15 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/knadh/koanf v1.5.0 // indirect @@ -68,7 +68,7 @@ require ( github.com/zyedidia/generic v1.2.1 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - go.uber.org/zap v1.25.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/sys v0.12.0 // indirect google.golang.org/protobuf v1.31.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 6d157bad0..168306122 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -23,8 +23,6 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72H github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/benbjohnson/clock v1.3.5 h1:VvXlSJBzZpA/zum6Sj74hxwYI2DIxRWuNIoXAzHZz5o= -github.com/benbjohnson/clock v1.3.5/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= @@ -54,8 +52,8 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= -github.com/ethereum/go-ethereum v1.13.0 h1:dZALM0PlDTtNITTECPiqSrFo0iEYVDfby+mSVc0LxIs= -github.com/ethereum/go-ethereum v1.13.0/go.mod h1:0TDsBNJ7j8jR01vKpk4j2zfVKyAbQuKzy6wLwb5ZMuU= +github.com/ethereum/go-ethereum v1.13.1 h1:UF2FaUKPIy5jeZk3X06ait3y2Q4wI+vJ1l7+UARp+60= +github.com/ethereum/go-ethereum v1.13.1/go.mod h1:xHQKzwkHSl0gnSjZK1mWa06XEdm9685AHqhRknOzqGQ= github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= @@ -157,32 +155,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140 h1:XyiPWn0CQmjmPUuHhnDjBqAuoWRCETu3pE3Z3KHPcxo= -github.com/iotaledger/hive.go/ads v0.0.0-20230912172434-dc477e1f5140/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 h1:B1XC0lIs+Yz79HgytXN/y9qVDsbhp6N424GRE9W0YqE= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 h1:/GDTCmFXcjDabg8HwfYL78BsN0cfGyd2onhRPWqDY20= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 h1:5vyVnYnC6j1kvRrWrcgq2oLaBYomFvFHUq7R/7mC4Ns= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 h1:Rnor/2Bcy8luSAFO+HBRxoLzPtxJzpLZjRle4OSyjBA= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 h1:HIYMX4qEA8IqM02eOI2ZYVyn01zhCCvJ6YpMzf+P/RM= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 h1:N4Qpd7vCNhuFQ+Wg8k9gInVpHjqLlNrEfEVgYuC/aDs= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140 h1:2sY4S+HbBTb3JiIz1jW11bQ74iR2VqL+/mvEiP7iiSs= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230912172434-dc477e1f5140/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 h1:OhsjldIlatxskIfpEXDyodi1RpV9w9aXUEit9uVLBs8= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 h1:qiCT8nQ1R67YUsp5Xmp0aK1/ggXehdu5VQ//9OYmCNQ= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 h1:XxDIaa6kzWxoQ1Hd22AQJpqhV6ySXO5ysGeI7QjVDCg= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 h1:VFBVUIvYn78TjG8Rjxvovud9KZjfVaS4qmfqAaTzJdI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 h1:ZGeNsbWhWzJMmomjX8UqZJ4493nZ7B4kN/wWUdnyltM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 h1:UeDp3fiD7E8UPTOg8cE3jhsgzR2kunB6BAn/FriDXo8= +github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 h1:FTZJkjTwxa+EuNARD43onziqOA/IA4DIIpGpyUMFAac= +github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 h1:2ee98PEu+ykzsBlXDJvdu0RbjYJCMz7PgWJl/tm3UfE= +github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 h1:+0VtBn7DiZodIE3XaNShbE52cBZCKW9Lvs4hDmqwUOQ= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 h1:kd5bR/uc71qRJ74pG615sEVfmD3kSbaGCojWkCsKu2M= +github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 h1:k9vXjsfJCIjzC86am3hlyGRanSqFtkkXgdgD+RQtwqI= +github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 h1:mFvjTfCINpAlRIy6l/xbqEd3JVmjDuOm1rqXMZFrKEU= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 h1:ip8fP9wy6hvI2EOkGXjNfpGnQc0ysU65U/WZYUT47sM= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 h1:L/jUbsY7eIepslq+PpsMn+gdyQs5yWOFFbdhAY46t20= +github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 h1:NeSmmNiWUiVaqZw8e2j/0Gy50Xl/+T2yjTmoEYQ7Xmw= +github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 h1:kNWmidaD1u3zGH4LNC+L3MUcRmY+yigFtgDIg+iZxN0= +github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 h1:BgvsJbeoVVgMzmCWXa5hRecxLp83fLG/d/e5DbGHlww= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 h1:027eC08NrlZ2mU7sRumdM+KrVSYmwOmsSaP3fnuMFsE= +github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20230912141328-810f7e83d265 h1:0j8ljlBmo/f5Gxva83mLWqZLB/xSO9PgJFMPfJ7tyRY= github.com/iotaledger/iota.go/v4 v4.0.0-20230912141328-810f7e83d265/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= @@ -361,8 +359,8 @@ go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9i go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= -go.uber.org/zap v1.25.0 h1:4Hvk6GtkucQ790dqmj7l1eEnRdKm3k3ZUrUMS2d5+5c= -go.uber.org/zap v1.25.0/go.mod h1:JIAUzQIH94IC4fOJQm7gMmBJP5k7wQfdcnYdPoEXJYk= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= From 217179d5a8e45f07abd13213571f2affe3fd225f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 20 Sep 2023 12:39:33 +0200 Subject: [PATCH 135/356] Feat: uncommented broken test --- pkg/storage/prunable/prunable.go | 2 +- pkg/tests/protocol_engine_rollback_test.go | 1559 ++++++++++---------- 2 files changed, 781 insertions(+), 780 deletions(-) diff --git a/pkg/storage/prunable/prunable.go b/pkg/storage/prunable/prunable.go index 2e6afd849..eeeafa43f 100644 --- a/pkg/storage/prunable/prunable.go +++ b/pkg/storage/prunable/prunable.go @@ -50,7 +50,7 @@ func New(dbConfig database.Config, apiProvider iotago.APIProvider, errorHandler } } -func Clone(source *Prunable, dbConfig database.Config, apiProvider api.Provider, errorHandler func(error), opts ...options.Option[BucketManager]) (*Prunable, error) { +func Clone(source *Prunable, dbConfig database.Config, apiProvider iotago.APIProvider, errorHandler func(error), opts ...options.Option[BucketManager]) (*Prunable, error) { // Lock semi-permanent DB and prunable slot store so that nobody can try to use or open them while cloning. source.semiPermanentDB.Lock() defer source.semiPermanentDB.Unlock() diff --git a/pkg/tests/protocol_engine_rollback_test.go b/pkg/tests/protocol_engine_rollback_test.go index 940de5d6c..bacc11b8e 100644 --- a/pkg/tests/protocol_engine_rollback_test.go +++ b/pkg/tests/protocol_engine_rollback_test.go @@ -1,781 +1,782 @@ package tests -import ( - "fmt" - "testing" - "time" - - "github.com/stretchr/testify/require" - - "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/iota-core/pkg/core/account" - "github.com/iotaledger/iota-core/pkg/protocol" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager/mock" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" - "github.com/iotaledger/iota-core/pkg/storage" - "github.com/iotaledger/iota-core/pkg/testsuite" - mock2 "github.com/iotaledger/iota-core/pkg/testsuite/mock" - iotago "github.com/iotaledger/iota.go/v4" -) - -func TestProtocol_EngineRollbackFinalization(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThreshold(1), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.RMC = ts.API.ProtocolParameters().CongestionControlParameters().RMCMin - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(13), - testsuite.WithLatestCommitmentSlotIndex(14), - testsuite.WithEqualStoredCommitmentAtIndex(14), - testsuite.WithLatestCommitmentCumulativeWeight(48), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(14, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(14), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Index()) - require.EqualValues(t, 13, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) - - for epochIndex := 0; epochIndex <= 2; epochIndex++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch3, err := newEngine.Storage.Committee().Load(3) - require.NoError(t, err) - require.Nil(t, committeeEpoch3) - - for slotIndex := 1; slotIndex <= 13; slotIndex++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) - require.Error(t, err) - } -} - -func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThreshold(1), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.RMC = ts.API.ProtocolParameters().CongestionControlParameters().RMCMin - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - // Update online committee. - for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) - manualPOA.SetOnline("node0", "node1") - manualPOA.SetOffline("node2", "node3") - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(14), - testsuite.WithEqualStoredCommitmentAtIndex(14), - testsuite.WithLatestCommitmentCumulativeWeight(44), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(14, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), - testsuite.WithEvictedSlot(14), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Index()) - require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) - - for epochIndex := 0; epochIndex <= 2; epochIndex++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch3, err := newEngine.Storage.Committee().Load(3) - require.NoError(t, err) - require.Nil(t, committeeEpoch3) - - for slotIndex := 1; slotIndex <= 13; slotIndex++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) - require.Error(t, err) - } -} - -func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThreshold(1), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.RMC = ts.API.ProtocolParameters().CongestionControlParameters().RMCMin - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - // Update online committee. - for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) - manualPOA.SetOnline("node0", "node1") - manualPOA.SetOffline("node2", "node3") - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16, 17, 18, 19}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(17), - testsuite.WithEqualStoredCommitmentAtIndex(17), - testsuite.WithLatestCommitmentCumulativeWeight(50), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(17, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), - testsuite.WithEvictedSlot(17), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(15) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 15, newEngine.Storage.Settings().LatestCommitment().Index()) - require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 15, newEngine.EvictionState.LastEvictedSlot()) - - for epochIndex := 0; epochIndex <= 2; epochIndex++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch3, err := newEngine.Storage.Committee().Load(3) - require.NoError(t, err) - require.Nil(t, committeeEpoch3) - - for slotIndex := 1; slotIndex <= 15; slotIndex++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(16)) - require.Error(t, err) - } -} - -func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThreshold(1), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.RMC = ts.API.ProtocolParameters().CongestionControlParameters().RMCMin - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - // Update online committee. - for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) - manualPOA.SetOnline("node0", "node1") - manualPOA.SetOffline("node2", "node3") - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(13), - testsuite.WithEqualStoredCommitmentAtIndex(13), - testsuite.WithLatestCommitmentCumulativeWeight(42), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(13, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), - testsuite.WithEvictedSlot(13), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(9) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 9, newEngine.Storage.Settings().LatestCommitment().Index()) - require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 9, newEngine.EvictionState.LastEvictedSlot()) - - for epochIndex := 0; epochIndex <= 1; epochIndex++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch2, err := newEngine.Storage.Committee().Load(2) - require.NoError(t, err) - require.Nil(t, committeeEpoch2) - - for slotIndex := 1; slotIndex <= 9; slotIndex++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(10)) - require.Error(t, err) - } -} - -// TODO: test fork before point of no return (slot 12) -// TODO: test fork on last slot of an epoch (slot 15) +// +//import ( +// "fmt" +// "testing" +// "time" +// +// "github.com/stretchr/testify/require" +// +// "github.com/iotaledger/hive.go/core/eventticker" +// "github.com/iotaledger/hive.go/lo" +// "github.com/iotaledger/hive.go/runtime/module" +// "github.com/iotaledger/hive.go/runtime/options" +// "github.com/iotaledger/iota-core/pkg/core/account" +// "github.com/iotaledger/iota-core/pkg/protocol" +// "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" +// "github.com/iotaledger/iota-core/pkg/protocol/engine" +// "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" +// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager" +// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager/mock" +// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" +// "github.com/iotaledger/iota-core/pkg/storage" +// "github.com/iotaledger/iota-core/pkg/testsuite" +// mock2 "github.com/iotaledger/iota-core/pkg/testsuite/mock" +// iotago "github.com/iotaledger/iota.go/v4" +//) +// +//func TestProtocol_EngineRollbackFinalization(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThreshold(1), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.RMC = ts.API.ProtocolParameters().CongestionControlParameters().RMCMin +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(13), +// testsuite.WithLatestCommitmentSlotIndex(14), +// testsuite.WithEqualStoredCommitmentAtIndex(14), +// testsuite.WithLatestCommitmentCumulativeWeight(48), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(14, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(14), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Index()) +// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) +// +// for epochIndex := 0; epochIndex <= 2; epochIndex++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch3) +// +// for slotIndex := 1; slotIndex <= 13; slotIndex++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) +// require.Error(t, err) +// } +//} +// +//func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThreshold(1), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// expectedOnlineCommitteeHalf := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.RMC = ts.API.ProtocolParameters().CongestionControlParameters().RMCMin +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// // Update online committee. +// for _, node := range ts.Nodes() { +// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) +// manualPOA.SetOnline("node0", "node1") +// manualPOA.SetOffline("node2", "node3") +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(14), +// testsuite.WithEqualStoredCommitmentAtIndex(14), +// testsuite.WithLatestCommitmentCumulativeWeight(44), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(14, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), +// testsuite.WithEvictedSlot(14), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Index()) +// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) +// +// for epochIndex := 0; epochIndex <= 2; epochIndex++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch3) +// +// for slotIndex := 1; slotIndex <= 13; slotIndex++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) +// require.Error(t, err) +// } +//} +// +//func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThreshold(1), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// expectedOnlineCommitteeHalf := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.RMC = ts.API.ProtocolParameters().CongestionControlParameters().RMCMin +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// // Update online committee. +// for _, node := range ts.Nodes() { +// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) +// manualPOA.SetOnline("node0", "node1") +// manualPOA.SetOffline("node2", "node3") +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16, 17, 18, 19}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(17), +// testsuite.WithEqualStoredCommitmentAtIndex(17), +// testsuite.WithLatestCommitmentCumulativeWeight(50), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(17, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), +// testsuite.WithEvictedSlot(17), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(15) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 15, newEngine.Storage.Settings().LatestCommitment().Index()) +// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 15, newEngine.EvictionState.LastEvictedSlot()) +// +// for epochIndex := 0; epochIndex <= 2; epochIndex++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch3) +// +// for slotIndex := 1; slotIndex <= 15; slotIndex++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(16)) +// require.Error(t, err) +// } +//} +// +//func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThreshold(1), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// expectedOnlineCommitteeHalf := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.RMC = ts.API.ProtocolParameters().CongestionControlParameters().RMCMin +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// // Update online committee. +// for _, node := range ts.Nodes() { +// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) +// manualPOA.SetOnline("node0", "node1") +// manualPOA.SetOffline("node2", "node3") +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(13), +// testsuite.WithEqualStoredCommitmentAtIndex(13), +// testsuite.WithLatestCommitmentCumulativeWeight(42), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(13, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), +// testsuite.WithEvictedSlot(13), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(9) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 9, newEngine.Storage.Settings().LatestCommitment().Index()) +// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 9, newEngine.EvictionState.LastEvictedSlot()) +// +// for epochIndex := 0; epochIndex <= 1; epochIndex++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch2, err := newEngine.Storage.Committee().Load(2) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch2) +// +// for slotIndex := 1; slotIndex <= 9; slotIndex++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(10)) +// require.Error(t, err) +// } +//} +// +//// TODO: test fork before point of no return (slot 12) +//// TODO: test fork on last slot of an epoch (slot 15) From 4ca41045059e644fff706dc3d14539789725d524 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 20 Sep 2023 19:43:39 +0200 Subject: [PATCH 136/356] Refactor: refactored more code - it almost works :P --- go.mod | 30 +- go.sum | 70 ++- pkg/protocol/chain.go | 40 +- pkg/protocol/chains.go | 24 +- pkg/protocol/commitment.go | 24 +- pkg/protocol/commitment_verifier.go | 40 +- pkg/protocol/engine/engine.go | 23 - pkg/protocol/gossip.go | 12 +- .../sybilprotectionv1/sybilprotection.go | 6 +- pkg/storage/prunable/prunable.go | 4 +- pkg/tests/protocol_engine_switching_test.go | 10 +- pkg/testsuite/mock/node.go | 11 - tools/evil-spammer/go.mod | 28 +- tools/evil-spammer/go.sum | 65 +-- tools/gendoc/go.mod | 28 +- tools/gendoc/go.sum | 65 +-- tools/genesis-snapshot/go.mod | 36 +- tools/genesis-snapshot/go.sum | 437 ++---------------- 18 files changed, 259 insertions(+), 694 deletions(-) diff --git a/go.mod b/go.mod index 7cc8f5b3f..011de024d 100644 --- a/go.mod +++ b/go.mod @@ -9,20 +9,20 @@ require ( github.com/google/uuid v1.3.1 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/log v0.0.0-20230919004516-b5321d9b0e41 - github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e @@ -33,6 +33,7 @@ require ( github.com/multiformats/go-multiaddr v0.11.0 github.com/multiformats/go-varint v0.0.7 github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e + github.com/otiai10/copy v1.12.0 github.com/prometheus/client_golang v1.16.0 github.com/stretchr/testify v1.8.4 github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98 @@ -135,7 +136,6 @@ require ( github.com/multiformats/go-multistream v0.4.1 // indirect github.com/onsi/ginkgo/v2 v2.12.0 // indirect github.com/opencontainers/runtime-spec v1.1.0 // indirect - github.com/otiai10/copy v1.12.0 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect diff --git a/go.sum b/go.sum index 3bcee9f2d..f31aad62e 100644 --- a/go.sum +++ b/go.sum @@ -277,50 +277,38 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 h1:UeDp3fiD7E8UPTOg8cE3jhsgzR2kunB6BAn/FriDXo8= -github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 h1:FTZJkjTwxa+EuNARD43onziqOA/IA4DIIpGpyUMFAac= -github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 h1:2ee98PEu+ykzsBlXDJvdu0RbjYJCMz7PgWJl/tm3UfE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 h1:+0VtBn7DiZodIE3XaNShbE52cBZCKW9Lvs4hDmqwUOQ= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 h1:kd5bR/uc71qRJ74pG615sEVfmD3kSbaGCojWkCsKu2M= -github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 h1:k9vXjsfJCIjzC86am3hlyGRanSqFtkkXgdgD+RQtwqI= -github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 h1:mFvjTfCINpAlRIy6l/xbqEd3JVmjDuOm1rqXMZFrKEU= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 h1:ip8fP9wy6hvI2EOkGXjNfpGnQc0ysU65U/WZYUT47sM= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 h1:L/jUbsY7eIepslq+PpsMn+gdyQs5yWOFFbdhAY46t20= -github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/log v0.0.0-20230919004516-b5321d9b0e41 h1:fxd1dE0WHLr5DyzlisTMNEDYefPdY3MiDk9y74vlqiA= -github.com/iotaledger/hive.go/log v0.0.0-20230919004516-b5321d9b0e41/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= -github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 h1:NeSmmNiWUiVaqZw8e2j/0Gy50Xl/+T2yjTmoEYQ7Xmw= -github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 h1:kNWmidaD1u3zGH4LNC+L3MUcRmY+yigFtgDIg+iZxN0= -github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 h1:BgvsJbeoVVgMzmCWXa5hRecxLp83fLG/d/e5DbGHlww= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 h1:027eC08NrlZ2mU7sRumdM+KrVSYmwOmsSaP3fnuMFsE= -github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 h1:z0fEoRChNtzcXXDT9hgp+huFPQ95woj3ELvcbli3onE= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 h1:CMwjk8c4w1V9Sa1lbkzE2HJ7a6qRssJeoSY0a4r6v1c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 h1:xOKMuDJpCw/l6j4ErSDGbQeUBgHVvB6CyDFNMEeFAYg= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 h1:MwG8Va/s1Yfq7t2TM1ryRUDs57PFlfOEXHZpsqJoDYY= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 h1:dp1TsIluPYRgF27pirjg07Dy2GKl0SJ09rPNABAnb/s= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 h1:KouSXgbUi8jNcOIziyXYeI100ZluWPZOgosylgcuorg= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 h1:iMztR/DKbLThx8YJDINo1QcVHro3mYjXbR/8deaF2so= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 h1:8s/yUTnYm9qnkV+TtYFqeHGqFbBvUSuknZoktOGBADA= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 h1:BDjTbHY1SoV1VbD+8wkwQJ7qgdnn+06Ej2grC7Ewhbw= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 h1:cHirIu4irFBY7Vj+lZn9aPRCWHF68B5ffvYQJagOq9g= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 h1:R+YQ2gzJKnWu6gQM4Bu08f2sPV92fq1D0G8t1JG4loQ= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 h1:3/t+WtmCR1ReZaiwfSqXTb9hsJ87V/tHgIWZAhnx92I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 h1:eyjhY40ze7rByTuiFCUQytuHLe6+L32em74Pcl+XJXo= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 h1:bokn2GkH93w7+jpZ36nADCaNwYYfzbzLXZ3CCsx+8lM= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 h1:BkDuQxUYo9aZ4XYuh8EbXWtZBdh7WvL7oh2unWNUFMo= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14/go.mod h1:ADBXzdHXTldP0NB2Vf+KbhDxkYciGRjzQVXT6Rdne1g= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b h1:EPB/+iWeSx/WgJlzaXl8yjinxuD8CCOdi2ZPMLeeMVY= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b/go.mod h1:B7gyJP6GshCSlEmY3CxEk5TZdsMs3UNz5U92hkFDdMs= -github.com/iotaledger/iota.go/v4 v4.0.0-20230913143616-917572c7752d h1:p9IchKq6kft758XDlnN/tAEXJMXGlmQPmbdxolba1gs= -github.com/iotaledger/iota.go/v4 v4.0.0-20230913143616-917572c7752d/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230919215221-eeec36cf7117 h1:Jc/9TY5R07SBboHtDmnY6h3oPcvW0e59BFLa6HmClhU= -github.com/iotaledger/iota.go/v4 v4.0.0-20230919215221-eeec36cf7117/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230919235911-a077a439fe3d h1:6A3WWaQdISrzvkeWdnIxM35irQu7hR61JVj2G7vczEo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230919235911-a077a439fe3d/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920070952-0235aaf2c33c h1:j8J3sk6uLCfYzfjVnFUxmp1Rcomi27+cpBMaCuWupGs= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920070952-0235aaf2c33c/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920075840-db0cec873de7 h1:EkcFxLPZuh/1oWZ3GVLi4fPnj/yW5w0gCCFvdTwLPAc= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920075840-db0cec873de7/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920092155-34a72418974a h1:Bbz8yhYKr5TdfeGty7VSJdBFNYOfG9hDOlWo2LINNP0= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920092155-34a72418974a/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e h1:oJro53z056BZUWBFE1dZcsc2CrFZnqecGBiZqTd9/dw= github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= github.com/ipfs/boxo v0.10.0 h1:tdDAxq8jrsbRkYoF+5Rcqyeb91hgWe2hp7iLu7ORZLY= @@ -525,6 +513,8 @@ github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e h1:s2RNOM/IGd github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e/go.mod h1:nBdnFKj15wFbf94Rwfq4m30eAcyY9V/IyKAGQFtqkW0= github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c h1:Gcce/r5tSQeprxswXXOwQ/RBU1bjQWVd9dB7QKoPXBE= diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 07aa4fea8..1bb840624 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -20,6 +20,7 @@ type Chain struct { SyncThreshold reactive.Variable[iotago.SlotIndex] WarpSyncThreshold reactive.Variable[iotago.SlotIndex] RequestAttestations reactive.Variable[bool] + InstantiateEngine reactive.Variable[bool] Engine reactive.Variable[*engine.Engine] IsSolid reactive.Event IsEvicted reactive.Event @@ -27,7 +28,6 @@ type Chain struct { commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] parentEngine reactive.Variable[*engine.Engine] spawnedEngine reactive.Variable[*engine.Engine] - instantiate reactive.Variable[bool] log.Logger } @@ -41,14 +41,14 @@ func NewChain(logger log.Logger) *Chain { RequestAttestations: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), - commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), - parentEngine: reactive.NewVariable[*engine.Engine](), - instantiate: reactive.NewVariable[bool](), - spawnedEngine: reactive.NewVariable[*engine.Engine](), + commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), + parentEngine: reactive.NewVariable[*engine.Engine](), + InstantiateEngine: reactive.NewVariable[bool](), + spawnedEngine: reactive.NewVariable[*engine.Engine](), } c.ClaimedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestCommitment) - c.AttestedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestAttestedCommitment) + c.AttestedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeAttestedWeight, c.LatestAttestedCommitment) c.VerifiedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestVerifiedCommitment) c.WarpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { @@ -86,25 +86,15 @@ func NewChain(logger log.Logger) *Chain { }) c.Logger = logger.NewEntityLogger("Chain", c.IsEvicted, func(entityLogger log.Logger) { - logger.LogTrace("created new chain", "name", entityLogger.LogName()) - - c.ForkingPoint.LogUpdates(entityLogger, log.LevelDebug, "ForkingPoint", func(commitment *Commitment) string { - if commitment == nil { - return "nil" - } - - return commitment.ID().String() - }) - c.ClaimedWeight.LogUpdates(entityLogger, log.LevelDebug, "ClaimedWeight") - c.AttestedWeight.LogUpdates(entityLogger, log.LevelDebug, "AttestedWeight") - c.VerifiedWeight.LogUpdates(entityLogger, log.LevelDebug, "VerifiedWeight") - c.LatestCommitment.LogUpdates(entityLogger, log.LevelTrace, "LatestCommitment", func(commitment *Commitment) string { - if commitment == nil { - return "nil" - } - - return commitment.ID().String() - }) + logger.LogDebug("chain created", "name", entityLogger.LogName()) + + c.ForkingPoint.LogUpdates(entityLogger, log.LevelDebug, "ForkingPoint", (*Commitment).LogName) + c.ClaimedWeight.LogUpdates(entityLogger, log.LevelTrace, "ClaimedWeight") + c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") + c.VerifiedWeight.LogUpdates(entityLogger, log.LevelTrace, "VerifiedWeight") + c.LatestCommitment.LogUpdates(entityLogger, log.LevelDebug, "LatestCommitment", (*Commitment).LogName) + c.RequestAttestations.LogUpdates(entityLogger, log.LevelDebug, "RequestAttestations") + c.InstantiateEngine.LogUpdates(entityLogger, log.LevelDebug, "InstantiateEngine") }) return c diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 46f783c6c..82bbd52f5 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -7,6 +7,7 @@ import ( "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/core/promise" "github.com/iotaledger/iota-core/pkg/model" @@ -82,6 +83,9 @@ func newChains(protocol *Protocol) *Chains { // TODO: trigger initialized }) + c.HeaviestClaimedCandidate.LogUpdates(c.protocol, log.LevelInfo, "Unchecked Heavier Chain", (*Chain).LogName) + c.HeaviestAttestedCandidate.LogUpdates(c.protocol, log.LevelInfo, "Attested Heavier Chain", (*Chain).LogName) + return c } @@ -123,7 +127,7 @@ func (c *Chains) MainEngineInstance() *engine.Engine { func (c *Chains) initMainChain() { mainChain := c.MainChain.Get() - mainChain.instantiate.Set(true) + mainChain.InstantiateEngine.Set(true) mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) @@ -159,12 +163,10 @@ func (c *Chains) initChainSwitching() { c.HeaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { - prevCandidate.instantiate.Set(false) + prevCandidate.InstantiateEngine.Set(false) } - fmt.Println("NEW CANDIDATE", newCandidate.ForkingPoint.Get().ID(), newCandidate.ForkingPoint.Get().Index(), newCandidate.AttestedWeight.Get()) - - newCandidate.instantiate.Set(true) + newCandidate.InstantiateEngine.Set(true) }) c.ChainCreated.Hook(func(chain *Chain) { @@ -183,7 +185,7 @@ func (c *Chains) initChainSwitching() { } func (c *Chains) provideEngineIfRequested(chain *Chain) func() { - return chain.instantiate.OnUpdate(func(_, instantiate bool) { + return chain.InstantiateEngine.OnUpdate(func(_, instantiate bool) { if !instantiate { chain.spawnedEngine.Set(nil) @@ -210,17 +212,8 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { return } - c.protocol.LogDebug("engine started", "chain", chain.LogName(), "root", candidateEngineInstance.RootCommitment.Get().ID()) - - candidateEngineInstance.Ledger.HookInitialized(func() { - c.protocol.LogDebug("engine fully started", "chain", chain.LogName(), "root", candidateEngineInstance.RootCommitment.Get().ID()) - }) - chain.spawnedEngine.Set(candidateEngineInstance) - // Set the chain to the correct forking point - fmt.Println("WATT IS HIER LOS? EIN FORK? @", chain.ForkingPoint.Get().Index(), chain) - c.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) } }) @@ -285,6 +278,7 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { } publishedCommitment.promote(chain) + publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) publishedCommitment.IsAttested.Trigger() publishedCommitment.IsVerified.Trigger() diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 7f914eac9..a57d30f21 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -21,6 +21,7 @@ type Commitment struct { InSyncRange reactive.Variable[bool] WarpSyncBlocks reactive.Variable[bool] RequestAttestations reactive.Variable[bool] + Weight reactive.Variable[uint64] AttestedWeight reactive.Variable[uint64] CumulativeAttestedWeight reactive.Variable[uint64] IsSolid reactive.Event @@ -49,6 +50,7 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment Chain: reactive.NewVariable[*Chain](), Engine: reactive.NewVariable[*engine.Engine](), RequestAttestations: reactive.NewVariable[bool](), + Weight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](func(current uint64, new uint64) uint64 { return max(current, new) }), CumulativeAttestedWeight: reactive.NewVariable[uint64](), IsSolid: reactive.NewEvent(), @@ -69,9 +71,15 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment c.IsSolid.InheritFrom(parent.IsSolid) - c.CumulativeAttestedWeight.InheritFrom(reactive.NewDerivedVariable2(func(parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { - return parentCumulativeAttestedWeight + attestedWeight - }, parent.CumulativeAttestedWeight, c.AttestedWeight)) + c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) + + c.IsAttested.OnTrigger(func() { + parent.IsAttested.OnTrigger(func() { + c.CumulativeAttestedWeight.InheritFrom(reactive.NewDerivedVariable2(func(parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { + return parentCumulativeAttestedWeight + attestedWeight + }, parent.CumulativeAttestedWeight, c.AttestedWeight)) + }) + }) c.isDirectlyAboveLatestAttestedCommitment.InheritFrom(reactive.NewDerivedVariable2(func(parentIsAttested, isAttested bool) bool { return parentIsAttested && !isAttested @@ -129,7 +137,9 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment }) c.Logger = logger.NewEntityLogger("Commitment", c.IsEvicted, func(entityLogger log.Logger) { + c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") + c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") }) return c @@ -224,3 +234,11 @@ func (c *Commitment) cumulativeWeight() uint64 { return c.CumulativeWeight() } + +func (c *Commitment) cumulativeAttestedWeight() uint64 { + if c == nil { + return 0 + } + + return c.CumulativeAttestedWeight.Get() +} diff --git a/pkg/protocol/commitment_verifier.go b/pkg/protocol/commitment_verifier.go index 09edc632e..73729e5a3 100644 --- a/pkg/protocol/commitment_verifier.go +++ b/pkg/protocol/commitment_verifier.go @@ -1,8 +1,6 @@ package protocol import ( - "fmt" - "github.com/iotaledger/hive.go/ads" "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ierrors" @@ -17,7 +15,6 @@ import ( type CommitmentVerifier struct { engine *engine.Engine - cumulativeWeight uint64 validatorAccountsAtFork map[iotago.AccountID]*accounts.AccountData } @@ -26,14 +23,12 @@ func NewCommitmentVerifier(mainEngine *engine.Engine, lastCommonCommitmentBefore return &CommitmentVerifier{ engine: mainEngine, - cumulativeWeight: lastCommonCommitmentBeforeFork.CumulativeWeight(), validatorAccountsAtFork: lo.PanicOnErr(mainEngine.Ledger.PastAccounts(committeeAtForkingPoint, lastCommonCommitmentBeforeFork.Index())), // TODO: what happens if the committee rotated after the fork? } } -func (c *CommitmentVerifier) verifyCommitment(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier]) (blockIDsFromAttestations iotago.BlockIDs, cumulativeWeight uint64, err error) { - // 1. Verify that the provided attestations are indeed the ones that were included in the commitment. +func (c *CommitmentVerifier) verifyCommitment(commitment *Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier]) (blockIDsFromAttestations iotago.BlockIDs, cumulativeWeight uint64, err error) { tree := ads.NewMap(mapdb.NewMapDB(), iotago.Identifier.Bytes, iotago.IdentifierFromBytes, (*iotago.Attestation).Bytes, iotago.AttestationFromBytes(c.engine)) for _, att := range attestations { @@ -46,43 +41,16 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *model.Commitment, atte return nil, 0, ierrors.Errorf("invalid merkle proof for attestations for commitment %s", commitment.ID()) } - // 2. Verify attestations. blockIDs, seatCount, err := c.verifyAttestations(attestations) if err != nil { return nil, 0, ierrors.Wrapf(err, "error validating attestations for commitment %s", commitment.ID()) } - // 3. Verify that calculated cumulative weight from attestations is lower or equal to cumulative weight of commitment. - // This is necessary due to public key changes of validators in the window of forking point and the current state of - // the other chain (as validators could have added/removed public keys that we don't know about yet). - // - // 1. The weight should be equal if all public keys are known and unchanged. - // - // 2. A public key is added to an account. - // We do not count a seat for the issuer for this slot and the computed CW will be lower than the CW in - // the commitment. This is fine, since this is a rare occasion and a heavier chain will become heavier anyway, eventually. - // It will simply take a bit longer to accumulate enough CW so that the chain-switch rule kicks in. - // Note: In an extreme scenario where all validators add and use a new public key, the chain will never become heavier. - // This can only be prevented by adding such key changes provably to the commitments so that these changes - // can be reconstructed and verified by nodes that do not have the latest ledger state. - // - // 3. A public key is removed from an account. - // We count the seat for the issuer for this slot even though we shouldn't have. According to the protocol, a valid - // chain with such a block can never exist because the block itself (here provided as an attestation) would be invalid. - // However, we do not know about this yet since we do not have the latest ledger state. - // In a rare and elaborate scenario, an attacker might have acquired such removed (private) keys and could - // fabricate attestations and thus a theoretically heavier chain (solely when looking on the chain backed by attestations) - // than it actually is. Nodes might consider to switch to this chain, even though it is invalid which will be discovered - // before the candidate chain/engine is activated (it will never get heavier than the current chain). - c.cumulativeWeight += seatCount - - fmt.Println("seat count", seatCount) - - if c.cumulativeWeight > commitment.CumulativeWeight() { - return nil, 0, ierrors.Errorf("invalid cumulative weight for commitment %s: expected %d, got %d", commitment.ID(), commitment.CumulativeWeight(), c.cumulativeWeight) + if seatCount > commitment.Weight.Get() { + return nil, 0, ierrors.Errorf("attestations for commitment %s have more seats (%d) than the commitment weight (%d)", commitment.ID(), seatCount, commitment.Weight.Get()) } - return blockIDs, c.cumulativeWeight, nil + return blockIDs, seatCount, nil } func (c *CommitmentVerifier) verifyAttestations(attestations []*iotago.Attestation) (iotago.BlockIDs, uint64, error) { diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index c212c5841..848ade5b2 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -301,29 +301,6 @@ func (e *Engine) APIForVersion(version iotago.Version) (iotago.API, error) { return e.Storage.Settings().APIProvider().APIForVersion(version) } -func (e *Engine) Encode(obj any, version iotago.Version) ([]byte, error) { - apiForVersion, err := e.APIForVersion(version) - if err != nil { - return nil, ierrors.Wrapf(err, "failed to get API for version %d", version) - } - - return apiForVersion.Encode(obj) -} - -func (e *Engine) Decode(bytes []byte, obj any) (int, error) { - version, _, err := iotago.VersionFromBytes(bytes) - if err != nil { - return 0, ierrors.Wrap(err, "failed to determine version") - } - - apiForVersion, err := e.APIForVersion(version) - if err != nil { - return 0, ierrors.Wrapf(err, "failed to get API for version %d", version) - } - - return apiForVersion.Decode(bytes, obj) -} - func (e *Engine) LatestAPI() iotago.API { return e.Storage.Settings().APIProvider().LatestAPI() } diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go index f3bdca811..b4f14c890 100644 --- a/pkg/protocol/gossip.go +++ b/pkg/protocol/gossip.go @@ -120,7 +120,11 @@ func (r *Gossip) ProcessCommitment(commitmentModel *model.Commitment, src peer.I func (r *Gossip) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src peer.ID) { if commitment, err := r.protocol.Commitment(commitmentID); err != nil { - r.LogDebug("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) + if !ierrors.Is(err, ErrorCommitmentNotFound) { + r.LogDebug("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) + } else { + r.LogTrace("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) + } } else { r.protocol.SendSlotCommitment(commitment.Commitment, src) } @@ -145,14 +149,14 @@ func (r *Gossip) ProcessAttestations(commitmentModel *model.Commitment, attestat return } - _, actualCumulativeWeight, err := commitmentVerifier.verifyCommitment(commitmentModel, attestations, merkleProof) + _, actualWeight, err := commitmentVerifier.verifyCommitment(commitment, attestations, merkleProof) if err != nil { r.LogError("failed to verify commitment when processing attestations", "commitmentID", commitmentModel.ID(), "error", err) return } + commitment.AttestedWeight.Set(actualWeight) commitment.IsAttested.Set(true) - commitment.AttestedWeight.Set(actualCumulativeWeight) } func (r *Gossip) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) { @@ -177,7 +181,7 @@ func (r *Gossip) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, sr } if commitment.ID() != commitmentID { - r.LogDebug("requested commitment does not belong to main engine", "requestedCommitmentID", commitmentID, "mainEngineCommitmentID", commitment.ID()) + r.LogTrace("requested commitment does not belong to main engine", "requestedCommitmentID", commitmentID, "mainEngineCommitmentID", commitment.ID()) return } diff --git a/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go b/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go index 0e78a057e..1a734aebc 100644 --- a/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go +++ b/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go @@ -86,10 +86,10 @@ func NewProvider(opts ...options.Option[SybilProtection]) module.Provider[*engin panic("failed to load committee for last finalized slot to initialize sybil protection") } o.seatManager.ImportCommittee(currentEpoch, committee) - fmt.Println("committee import", committee.TotalStake(), currentEpoch) + // TODO: REPLACE WITH LOG: fmt.Println("committee import", committee.TotalStake(), currentEpoch) if nextCommittee, nextCommitteeExists := o.performanceTracker.LoadCommitteeForEpoch(currentEpoch + 1); nextCommitteeExists { o.seatManager.ImportCommittee(currentEpoch+1, nextCommittee) - fmt.Println("next committee", nextCommittee.TotalStake(), currentEpoch+1) + // TODO: REPLACE WITH LOG: fmt.Println("next committee", nextCommittee.TotalStake(), currentEpoch+1) } o.TriggerInitialized() @@ -135,7 +135,7 @@ func (o *SybilProtection) CommitSlot(slot iotago.SlotIndex) (committeeRoot, rewa } committee.SetReused() - fmt.Println("reuse committee", currentEpoch, "stake", committee.TotalValidatorStake()) + // TODO: REPLACE WITH LOG: fmt.Println("reuse committee", currentEpoch, "stake", committee.TotalValidatorStake()) o.seatManager.SetCommittee(nextEpoch, committee) o.events.CommitteeSelected.Trigger(committee, nextEpoch) diff --git a/pkg/storage/prunable/prunable.go b/pkg/storage/prunable/prunable.go index eeeafa43f..da77b44d2 100644 --- a/pkg/storage/prunable/prunable.go +++ b/pkg/storage/prunable/prunable.go @@ -1,8 +1,6 @@ package prunable import ( - "fmt" - copydir "github.com/otiai10/copy" "github.com/iotaledger/hive.go/ierrors" @@ -168,7 +166,7 @@ func (p *Prunable) Rollback(targetSlotIndex iotago.SlotIndex) error { return ierrors.Wrapf(err, "error while checking if committee for epoch %d should be rolled back", epochIdx) } - fmt.Println("rollback committee", shouldRollback, "epochIdx", epochIdx, "lastCommittedEpoch", lastCommittedEpoch, "targetSlotEpoch", targetSlotEpoch) + // TODO: REPLACE WITH TRACE LOG fmt.Println("rollback committee", shouldRollback, "epochIdx", epochIdx, "lastCommittedEpoch", lastCommittedEpoch, "targetSlotEpoch", targetSlotEpoch) if shouldRollback { if err := p.committee.DeleteEpoch(epochIdx); err != nil { return ierrors.Wrapf(err, "error while deleting committee for epoch %d", epochIdx) diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 2d4c10b60..eccfb9d61 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -99,7 +99,15 @@ func TestProtocol_EngineSwitching(t *testing.T) { ts.Run(false, nodeOptions) - node6.Protocol.SetLogLevel(log.LevelTrace) + node0.Protocol.SetLogLevel(log.LevelError) + node1.Protocol.SetLogLevel(log.LevelError) + node2.Protocol.SetLogLevel(log.LevelError) + node3.Protocol.SetLogLevel(log.LevelError) + node4.Protocol.SetLogLevel(log.LevelError) + node5.Protocol.SetLogLevel(log.LevelError) + node6.Protocol.SetLogLevel(log.LevelDebug) + node7.Protocol.SetLogLevel(log.LevelError) + node8.Protocol.SetLogLevel(log.LevelError) expectedCommittee := []iotago.AccountID{ node0.AccountID, diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index d78d65c45..434f8ee20 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -15,11 +15,8 @@ import ( "github.com/stretchr/testify/require" "golang.org/x/crypto/blake2b" - "github.com/iotaledger/hive.go/app/configuration" - appLogger "github.com/iotaledger/hive.go/app/logger" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/hive.go/logger" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/syncutils" "github.com/iotaledger/hive.go/runtime/workerpool" @@ -573,11 +570,3 @@ func (n *Node) AttachedBlocks() []*blocks.Block { return n.attachedBlocks } - -func init() { - if err := appLogger.InitGlobalLogger(configuration.New()); err != nil { - panic(err) - } - - logger.SetLevel(logger.LevelDebug) -} diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index 8037742ec..3e3de9434 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -8,13 +8,13 @@ replace github.com/iotaledger/iota-core/tools/genesis-snapshot => ../genesis-sna require ( github.com/AlecAivazis/survey/v2 v2.3.7 - github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e @@ -37,12 +37,13 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect @@ -64,6 +65,7 @@ require ( github.com/multiformats/go-multicodec v0.9.0 // indirect github.com/multiformats/go-multihash v0.2.3 // indirect github.com/multiformats/go-varint v0.0.7 // indirect + github.com/otiai10/copy v1.12.0 // indirect github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index 891c60de9..73a06b75f 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -169,38 +169,35 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 h1:UeDp3fiD7E8UPTOg8cE3jhsgzR2kunB6BAn/FriDXo8= -github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 h1:FTZJkjTwxa+EuNARD43onziqOA/IA4DIIpGpyUMFAac= -github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 h1:2ee98PEu+ykzsBlXDJvdu0RbjYJCMz7PgWJl/tm3UfE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 h1:+0VtBn7DiZodIE3XaNShbE52cBZCKW9Lvs4hDmqwUOQ= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 h1:kd5bR/uc71qRJ74pG615sEVfmD3kSbaGCojWkCsKu2M= -github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 h1:k9vXjsfJCIjzC86am3hlyGRanSqFtkkXgdgD+RQtwqI= -github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 h1:mFvjTfCINpAlRIy6l/xbqEd3JVmjDuOm1rqXMZFrKEU= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 h1:ip8fP9wy6hvI2EOkGXjNfpGnQc0ysU65U/WZYUT47sM= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 h1:L/jUbsY7eIepslq+PpsMn+gdyQs5yWOFFbdhAY46t20= -github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 h1:NeSmmNiWUiVaqZw8e2j/0Gy50Xl/+T2yjTmoEYQ7Xmw= -github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 h1:kNWmidaD1u3zGH4LNC+L3MUcRmY+yigFtgDIg+iZxN0= -github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 h1:BgvsJbeoVVgMzmCWXa5hRecxLp83fLG/d/e5DbGHlww= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 h1:027eC08NrlZ2mU7sRumdM+KrVSYmwOmsSaP3fnuMFsE= -github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= -github.com/iotaledger/iota.go/v4 v4.0.0-20230913143616-917572c7752d h1:p9IchKq6kft758XDlnN/tAEXJMXGlmQPmbdxolba1gs= -github.com/iotaledger/iota.go/v4 v4.0.0-20230913143616-917572c7752d/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230919215221-eeec36cf7117/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230919235911-a077a439fe3d/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920070952-0235aaf2c33c/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920092155-34a72418974a/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 h1:z0fEoRChNtzcXXDT9hgp+huFPQ95woj3ELvcbli3onE= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 h1:CMwjk8c4w1V9Sa1lbkzE2HJ7a6qRssJeoSY0a4r6v1c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 h1:xOKMuDJpCw/l6j4ErSDGbQeUBgHVvB6CyDFNMEeFAYg= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 h1:MwG8Va/s1Yfq7t2TM1ryRUDs57PFlfOEXHZpsqJoDYY= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 h1:dp1TsIluPYRgF27pirjg07Dy2GKl0SJ09rPNABAnb/s= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 h1:KouSXgbUi8jNcOIziyXYeI100ZluWPZOgosylgcuorg= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 h1:iMztR/DKbLThx8YJDINo1QcVHro3mYjXbR/8deaF2so= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 h1:8s/yUTnYm9qnkV+TtYFqeHGqFbBvUSuknZoktOGBADA= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 h1:BDjTbHY1SoV1VbD+8wkwQJ7qgdnn+06Ej2grC7Ewhbw= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 h1:cHirIu4irFBY7Vj+lZn9aPRCWHF68B5ffvYQJagOq9g= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 h1:R+YQ2gzJKnWu6gQM4Bu08f2sPV92fq1D0G8t1JG4loQ= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 h1:3/t+WtmCR1ReZaiwfSqXTb9hsJ87V/tHgIWZAhnx92I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 h1:eyjhY40ze7rByTuiFCUQytuHLe6+L32em74Pcl+XJXo= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 h1:bokn2GkH93w7+jpZ36nADCaNwYYfzbzLXZ3CCsx+8lM= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e h1:oJro53z056BZUWBFE1dZcsc2CrFZnqecGBiZqTd9/dw= github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= @@ -300,6 +297,10 @@ github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnu github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e h1:s2RNOM/IGdY0Y6qfTeUKhDawdHDpK9RGBdx80qN4Ttw= github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e/go.mod h1:nBdnFKj15wFbf94Rwfq4m30eAcyY9V/IyKAGQFtqkW0= +github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= +github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c h1:Gcce/r5tSQeprxswXXOwQ/RBU1bjQWVd9dB7QKoPXBE= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 9b452427a..ab48dc377 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -57,18 +57,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e // indirect @@ -127,6 +128,7 @@ require ( github.com/onsi/ginkgo/v2 v2.12.0 // indirect github.com/opencontainers/runtime-spec v1.1.0 // indirect github.com/opentracing/opentracing-go v1.2.0 // indirect + github.com/otiai10/copy v1.12.0 // indirect github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c // indirect github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 517061054..a5ad6f11f 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -279,44 +279,41 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 h1:UeDp3fiD7E8UPTOg8cE3jhsgzR2kunB6BAn/FriDXo8= -github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 h1:FTZJkjTwxa+EuNARD43onziqOA/IA4DIIpGpyUMFAac= -github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 h1:z0fEoRChNtzcXXDT9hgp+huFPQ95woj3ELvcbli3onE= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 h1:CMwjk8c4w1V9Sa1lbkzE2HJ7a6qRssJeoSY0a4r6v1c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 h1:2ee98PEu+ykzsBlXDJvdu0RbjYJCMz7PgWJl/tm3UfE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 h1:+0VtBn7DiZodIE3XaNShbE52cBZCKW9Lvs4hDmqwUOQ= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 h1:kd5bR/uc71qRJ74pG615sEVfmD3kSbaGCojWkCsKu2M= -github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 h1:k9vXjsfJCIjzC86am3hlyGRanSqFtkkXgdgD+RQtwqI= -github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 h1:mFvjTfCINpAlRIy6l/xbqEd3JVmjDuOm1rqXMZFrKEU= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 h1:ip8fP9wy6hvI2EOkGXjNfpGnQc0ysU65U/WZYUT47sM= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 h1:L/jUbsY7eIepslq+PpsMn+gdyQs5yWOFFbdhAY46t20= -github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 h1:NeSmmNiWUiVaqZw8e2j/0Gy50Xl/+T2yjTmoEYQ7Xmw= -github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 h1:kNWmidaD1u3zGH4LNC+L3MUcRmY+yigFtgDIg+iZxN0= -github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 h1:BgvsJbeoVVgMzmCWXa5hRecxLp83fLG/d/e5DbGHlww= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 h1:027eC08NrlZ2mU7sRumdM+KrVSYmwOmsSaP3fnuMFsE= -github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 h1:xOKMuDJpCw/l6j4ErSDGbQeUBgHVvB6CyDFNMEeFAYg= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 h1:MwG8Va/s1Yfq7t2TM1ryRUDs57PFlfOEXHZpsqJoDYY= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 h1:dp1TsIluPYRgF27pirjg07Dy2GKl0SJ09rPNABAnb/s= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 h1:KouSXgbUi8jNcOIziyXYeI100ZluWPZOgosylgcuorg= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 h1:iMztR/DKbLThx8YJDINo1QcVHro3mYjXbR/8deaF2so= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 h1:8s/yUTnYm9qnkV+TtYFqeHGqFbBvUSuknZoktOGBADA= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 h1:BDjTbHY1SoV1VbD+8wkwQJ7qgdnn+06Ej2grC7Ewhbw= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 h1:cHirIu4irFBY7Vj+lZn9aPRCWHF68B5ffvYQJagOq9g= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 h1:R+YQ2gzJKnWu6gQM4Bu08f2sPV92fq1D0G8t1JG4loQ= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 h1:3/t+WtmCR1ReZaiwfSqXTb9hsJ87V/tHgIWZAhnx92I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 h1:eyjhY40ze7rByTuiFCUQytuHLe6+L32em74Pcl+XJXo= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 h1:bokn2GkH93w7+jpZ36nADCaNwYYfzbzLXZ3CCsx+8lM= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14 h1:BkDuQxUYo9aZ4XYuh8EbXWtZBdh7WvL7oh2unWNUFMo= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230829161228-3f4eb50a4d14/go.mod h1:ADBXzdHXTldP0NB2Vf+KbhDxkYciGRjzQVXT6Rdne1g= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b h1:EPB/+iWeSx/WgJlzaXl8yjinxuD8CCOdi2ZPMLeeMVY= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230829160617-69b96c7c9f9b/go.mod h1:B7gyJP6GshCSlEmY3CxEk5TZdsMs3UNz5U92hkFDdMs= -github.com/iotaledger/iota.go/v4 v4.0.0-20230913143616-917572c7752d h1:p9IchKq6kft758XDlnN/tAEXJMXGlmQPmbdxolba1gs= -github.com/iotaledger/iota.go/v4 v4.0.0-20230913143616-917572c7752d/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230919215221-eeec36cf7117/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230919235911-a077a439fe3d/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920070952-0235aaf2c33c/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920092155-34a72418974a/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= +github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e h1:oJro53z056BZUWBFE1dZcsc2CrFZnqecGBiZqTd9/dw= github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= github.com/ipfs/boxo v0.10.0 h1:tdDAxq8jrsbRkYoF+5Rcqyeb91hgWe2hp7iLu7ORZLY= github.com/ipfs/boxo v0.10.0/go.mod h1:Fg+BnfxZ0RPzR0nOodzdIq3A7KgoWAOWsEIImrIQdBM= @@ -518,6 +515,10 @@ github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYr github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e h1:s2RNOM/IGdY0Y6qfTeUKhDawdHDpK9RGBdx80qN4Ttw= github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e/go.mod h1:nBdnFKj15wFbf94Rwfq4m30eAcyY9V/IyKAGQFtqkW0= +github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= +github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c h1:Gcce/r5tSQeprxswXXOwQ/RBU1bjQWVd9dB7QKoPXBE= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index dcaa52982..13239fc96 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 - github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 + github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e github.com/mr-tron/base58 v1.2.0 @@ -22,32 +22,27 @@ require ( github.com/davecgh/go-spew v1.1.1 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/ethereum/go-ethereum v1.13.1 // indirect - github.com/fatih/structs v1.1.0 // indirect - github.com/fsnotify/fsnotify v1.6.0 // indirect github.com/google/go-cmp v0.5.9 // indirect github.com/google/uuid v1.3.1 // indirect github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect - github.com/knadh/koanf v1.5.0 // indirect + github.com/kr/pretty v0.3.1 // indirect github.com/kr/text v0.2.0 // indirect github.com/libp2p/go-buffer-pool v0.1.0 // indirect github.com/libp2p/go-libp2p v0.30.0 // indirect github.com/minio/sha256-simd v1.0.1 // indirect - github.com/mitchellh/copystructure v1.2.0 // indirect - github.com/mitchellh/mapstructure v1.5.0 // indirect - github.com/mitchellh/reflectwalk v1.0.2 // indirect github.com/multiformats/go-base32 v0.1.0 // indirect github.com/multiformats/go-base36 v0.2.0 // indirect github.com/multiformats/go-multiaddr v0.11.0 // indirect @@ -55,6 +50,7 @@ require ( github.com/multiformats/go-multicodec v0.9.0 // indirect github.com/multiformats/go-multihash v0.2.3 // indirect github.com/multiformats/go-varint v0.0.7 // indirect + github.com/otiai10/copy v1.12.0 // indirect github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c // indirect github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect @@ -62,7 +58,6 @@ require ( github.com/pokt-network/smt v0.6.1 // indirect github.com/sasha-s/go-deadlock v0.3.1 // indirect github.com/spaolacci/murmur3 v1.1.0 // indirect - github.com/spf13/cast v1.5.1 // indirect github.com/stretchr/testify v1.8.4 // indirect github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98 // indirect github.com/zyedidia/generic v1.2.1 // indirect @@ -72,7 +67,6 @@ require ( golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/sys v0.12.0 // indirect google.golang.org/protobuf v1.31.0 // indirect - gopkg.in/yaml.v2 v2.4.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index a2c92015a..afc67b4e1 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -1,43 +1,9 @@ -cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= -cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= filippo.io/edwards25519 v1.0.0 h1:0wAIcmJUqRdI8IJ/3eGi5/HwXZWPujYXXlkrQogz0Ek= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= -github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= -github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= -github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= -github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= -github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= -github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= -github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= -github.com/aws/aws-sdk-go-v2 v1.9.2/go.mod h1:cK/D0BBs0b/oWPIcX/Z/obahJK1TT7IPVjy53i/mX/4= -github.com/aws/aws-sdk-go-v2/config v1.8.3/go.mod h1:4AEiLtAb8kLs7vgw2ZV3p2VZ1+hBavOc84hqxVNpCyw= -github.com/aws/aws-sdk-go-v2/credentials v1.4.3/go.mod h1:FNNC6nQZQUuyhq5aE5c7ata8o9e4ECGmS4lAXC7o1mQ= -github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.6.0/go.mod h1:gqlclDEZp4aqJOancXK6TN24aKhT0W0Ae9MHk3wzTMM= -github.com/aws/aws-sdk-go-v2/internal/ini v1.2.4/go.mod h1:ZcBrrI3zBKlhGFNYWvju0I3TR93I7YIgAfy82Fh4lcQ= -github.com/aws/aws-sdk-go-v2/service/appconfig v1.4.2/go.mod h1:FZ3HkCe+b10uFZZkFdvf98LHW21k49W8o8J366lqVKY= -github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.3.2/go.mod h1:72HRZDLMtmVQiLG2tLfQcaWLCssELvGl+Zf2WVxMmR8= -github.com/aws/aws-sdk-go-v2/service/sso v1.4.2/go.mod h1:NBvT9R1MEF+Ud6ApJKM0G+IkPchKS7p7c2YPKwHmBOk= -github.com/aws/aws-sdk-go-v2/service/sts v1.7.2/go.mod h1:8EzeIqfWt2wWT4rJVu3f21TfrhJ8AEMzVybRNSb/b4g= -github.com/aws/smithy-go v1.8.0/go.mod h1:SObp3lf9smib00L/v3U2eAKG8FyQ7iLrJnQiAmR5n+E= -github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= -github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= -github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= -github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= github.com/btcsuite/btcd/btcec/v2 v2.3.2 h1:5n0X6hX0Zk+6omWcihdYvdAlGf2DfasC0GMf7DClJ3U= github.com/btcsuite/btcd/btcec/v2 v2.3.2/go.mod h1:zYzJ8etWJQIv1Ogk7OzpWjowwOdXY1W/17j2MW85J04= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1 h1:q0rUy8C/TYNBQS1+CGKw68tLOFYSNEs0TFnxxnS9+4U= github.com/btcsuite/btcd/chaincfg/chainhash v1.0.1/go.mod h1:7SFka0XMvUgj3hfZtydOrQY2mwhPclbT2snogU7SQQc= -github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= -github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= -github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= -github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= -github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= -github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= -github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -46,214 +12,64 @@ github.com/decred/dcrd/crypto/blake256 v1.0.1 h1:7PltbUIQB7u/FfZ39+DGa/ShuMyJ5il github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= -github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= -github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= -github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98= -github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= -github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ethereum/go-ethereum v1.13.1 h1:UF2FaUKPIy5jeZk3X06ait3y2Q4wI+vJ1l7+UARp+60= github.com/ethereum/go-ethereum v1.13.1/go.mod h1:xHQKzwkHSl0gnSjZK1mWa06XEdm9685AHqhRknOzqGQ= -github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= -github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= -github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= -github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/fjl/memsize v0.0.2 h1:27txuSD9or+NZlnOWdKUxeBzTAUkWCVh+4Gf2dWFOzA= github.com/fjl/memsize v0.0.2/go.mod h1:VvhXpOYNQvB+uIk2RvXzuaQtkQJzzIx6lSBe1xv7hi0= -github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= -github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= -github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= -github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= -github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= -github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= -github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= -github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= -github.com/go-ldap/ldap v3.0.2+incompatible/go.mod h1:qfd9rJvER9Q0/D/Sqn1DfHRoBp40uXYvFoEVrNEPqRc= -github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE= -github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk= -github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-test/deep v1.0.2-0.20181118220953-042da051cf31/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= -github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= -github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ= -github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= -github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= -github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= -github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= -github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= -github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= -github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= -github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= -github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w= -github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= -github.com/golang/protobuf v1.4.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= -github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= -github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= -github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= -github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= -github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ= -github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= -github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= -github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= -github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= -github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= -github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= -github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= -github.com/hashicorp/consul/api v1.13.0/go.mod h1:ZlVrynguJKcYr54zGaDbaL3fOvKC9m72FhPvA8T35KQ= -github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= -github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= -github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= -github.com/hashicorp/go-hclog v0.0.0-20180709165350-ff2cf002a8dd/go.mod h1:9bjs9uLqI8l75knNv3lV1kA55veR+WUPSiKIWcQHudI= -github.com/hashicorp/go-hclog v0.8.0/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= -github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= -github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= -github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= -github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= -github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= -github.com/hashicorp/go-plugin v1.0.1/go.mod h1:++UyYGoz3o5w9ZzAdZxtQKrWWP+iqPBn3cQptSMzBuY= -github.com/hashicorp/go-retryablehttp v0.5.4/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= -github.com/hashicorp/go-rootcerts v1.0.1/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= -github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= -github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= -github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= -github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= -github.com/hashicorp/go-version v1.1.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= -github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= -github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= -github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64= -github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= -github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= -github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= -github.com/hashicorp/vault/api v1.0.4/go.mod h1:gDcqh3WGcR1cpF5AJz/B1UFheUEneMoIospckxBxk6Q= -github.com/hashicorp/vault/sdk v0.1.13/go.mod h1:B+hVj7TpuQY1Y/GPbCpffmgd+tSEwvhkWnjtSYCaS2M= -github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hashicorp/yamux v0.0.0-20181012175058-2f1d1f20f75d/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= -github.com/hjson/hjson-go/v4 v4.0.0 h1:wlm6IYYqHjOdXH1gHev4VoXCaW20HdQAGCxdOEEg2cs= -github.com/hjson/hjson-go/v4 v4.0.0/go.mod h1:KaYt3bTw3zhBjYqnXkYywcYctk0A2nxeEFTse3rH13E= github.com/holiman/uint256 v1.2.3 h1:K8UWO1HUJpRMXBxbmaY1Y8IAMZC/RsKB+ArEnnK4l5o= github.com/holiman/uint256 v1.2.3/go.mod h1:SC8Ryt4n+UBbPbIBKaG9zbbDlp4jOru9xFZmPzLUTxw= github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0 h1:UeDp3fiD7E8UPTOg8cE3jhsgzR2kunB6BAn/FriDXo8= -github.com/iotaledger/hive.go/ads v0.0.0-20230919003240-77049a6f29a0/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0 h1:FTZJkjTwxa+EuNARD43onziqOA/IA4DIIpGpyUMFAac= -github.com/iotaledger/hive.go/app v0.0.0-20230919003240-77049a6f29a0/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0 h1:2ee98PEu+ykzsBlXDJvdu0RbjYJCMz7PgWJl/tm3UfE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230919003240-77049a6f29a0/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0 h1:+0VtBn7DiZodIE3XaNShbE52cBZCKW9Lvs4hDmqwUOQ= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230919003240-77049a6f29a0/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0 h1:kd5bR/uc71qRJ74pG615sEVfmD3kSbaGCojWkCsKu2M= -github.com/iotaledger/hive.go/crypto v0.0.0-20230919003240-77049a6f29a0/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0 h1:k9vXjsfJCIjzC86am3hlyGRanSqFtkkXgdgD+RQtwqI= -github.com/iotaledger/hive.go/ds v0.0.0-20230919003240-77049a6f29a0/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0 h1:mFvjTfCINpAlRIy6l/xbqEd3JVmjDuOm1rqXMZFrKEU= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230919003240-77049a6f29a0/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0 h1:ip8fP9wy6hvI2EOkGXjNfpGnQc0ysU65U/WZYUT47sM= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230919003240-77049a6f29a0/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0 h1:L/jUbsY7eIepslq+PpsMn+gdyQs5yWOFFbdhAY46t20= -github.com/iotaledger/hive.go/lo v0.0.0-20230919003240-77049a6f29a0/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0 h1:NeSmmNiWUiVaqZw8e2j/0Gy50Xl/+T2yjTmoEYQ7Xmw= -github.com/iotaledger/hive.go/logger v0.0.0-20230919003240-77049a6f29a0/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0 h1:kNWmidaD1u3zGH4LNC+L3MUcRmY+yigFtgDIg+iZxN0= -github.com/iotaledger/hive.go/runtime v0.0.0-20230919003240-77049a6f29a0/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0 h1:BgvsJbeoVVgMzmCWXa5hRecxLp83fLG/d/e5DbGHlww= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230919003240-77049a6f29a0/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0 h1:027eC08NrlZ2mU7sRumdM+KrVSYmwOmsSaP3fnuMFsE= -github.com/iotaledger/hive.go/stringify v0.0.0-20230919003240-77049a6f29a0/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= -github.com/iotaledger/iota.go/v4 v4.0.0-20230913143616-917572c7752d h1:p9IchKq6kft758XDlnN/tAEXJMXGlmQPmbdxolba1gs= -github.com/iotaledger/iota.go/v4 v4.0.0-20230913143616-917572c7752d/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230919215221-eeec36cf7117/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230919235911-a077a439fe3d/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920070952-0235aaf2c33c/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= -github.com/iotaledger/iota.go/v4 v4.0.0-20230920092155-34a72418974a/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 h1:z0fEoRChNtzcXXDT9hgp+huFPQ95woj3ELvcbli3onE= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 h1:xOKMuDJpCw/l6j4ErSDGbQeUBgHVvB6CyDFNMEeFAYg= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 h1:MwG8Va/s1Yfq7t2TM1ryRUDs57PFlfOEXHZpsqJoDYY= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 h1:dp1TsIluPYRgF27pirjg07Dy2GKl0SJ09rPNABAnb/s= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 h1:KouSXgbUi8jNcOIziyXYeI100ZluWPZOgosylgcuorg= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 h1:iMztR/DKbLThx8YJDINo1QcVHro3mYjXbR/8deaF2so= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 h1:8s/yUTnYm9qnkV+TtYFqeHGqFbBvUSuknZoktOGBADA= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 h1:BDjTbHY1SoV1VbD+8wkwQJ7qgdnn+06Ej2grC7Ewhbw= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 h1:cHirIu4irFBY7Vj+lZn9aPRCWHF68B5ffvYQJagOq9g= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 h1:R+YQ2gzJKnWu6gQM4Bu08f2sPV92fq1D0G8t1JG4loQ= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 h1:3/t+WtmCR1ReZaiwfSqXTb9hsJ87V/tHgIWZAhnx92I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 h1:eyjhY40ze7rByTuiFCUQytuHLe6+L32em74Pcl+XJXo= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 h1:bokn2GkH93w7+jpZ36nADCaNwYYfzbzLXZ3CCsx+8lM= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e h1:oJro53z056BZUWBFE1dZcsc2CrFZnqecGBiZqTd9/dw= github.com/iotaledger/iota.go/v4 v4.0.0-20230920100818-fef1d2f39b5e/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= -github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= -github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= -github.com/joho/godotenv v1.3.0 h1:Zjp+RcGpHhGlrMbJzXTrZZPrWj+1vfm90La1wgB6Bhc= -github.com/joho/godotenv v1.3.0/go.mod h1:7hK45KPybAkOC6peb+G5yklZfMxEjkZhHbwpqxOKXbg= -github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= -github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= -github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= -github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= -github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= -github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= -github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= github.com/klauspost/cpuid/v2 v2.2.5/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= -github.com/knadh/koanf v1.5.0 h1:q2TSd/3Pyc/5yP9ldIrSdIz26MCcyNQzW0pEAugLPNs= -github.com/knadh/koanf v1.5.0/go.mod h1:Hgyjp4y8v44hpZtPzs7JZfRAW5AhN7KfZcwv1RYggDs= -github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= -github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= github.com/libp2p/go-buffer-pool v0.1.0 h1:oK4mSFcQz7cTQIfqbe4MIj9gLW+mnanjyFtc6cdF0Y8= github.com/libp2p/go-buffer-pool v0.1.0/go.mod h1:N+vh8gMqimBzdKkSMVuydVDq+UV5QTWy5HSiZacSbPg= github.com/libp2p/go-libp2p v0.30.0 h1:9EZwFtJPFBcs/yJTnP90TpN1hgrT/EsFfM+OZuwV87U= github.com/libp2p/go-libp2p v0.30.0/go.mod h1:nr2g5V7lfftwgiJ78/HrID+pwvayLyqKCEirT2Y3Byg= -github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= -github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= -github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= -github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= -github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= -github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84= -github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= -github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= -github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= -github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= -github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= github.com/minio/sha256-simd v1.0.1 h1:6kaan5IFmwTNynnKKpDHe6FWHohJOHhCPchzK49dzMM= github.com/minio/sha256-simd v1.0.1/go.mod h1:Pz6AKMiUdngCLpeTL/RJY1M9rUuPMYujV5xJjtbRSN8= -github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= -github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= -github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= -github.com/mitchellh/copystructure v1.2.0 h1:vpKXTN4ewci03Vljg/q9QvCGUDttBOGBIa15WveJJGw= -github.com/mitchellh/copystructure v1.2.0/go.mod h1:qLl+cE2AmVv+CoeAwDPye/v+N2HKCj9FbZEVFJRxO9s= -github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= -github.com/mitchellh/go-testing-interface v0.0.0-20171004221916-a61a99592b77/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= -github.com/mitchellh/go-wordwrap v1.0.0/go.mod h1:ZXFpozHsX6DPmq2I0TCekCxypsnAUbP2oI0UX1GXzOo= -github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= -github.com/mitchellh/mapstructure v1.5.0 h1:jeMsZIYE/09sWLaz43PL7Gy6RuMjD2eJVyuac5Z2hdY= -github.com/mitchellh/mapstructure v1.5.0/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= -github.com/mitchellh/reflectwalk v1.0.0/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/mitchellh/reflectwalk v1.0.2 h1:G2LzWKi524PWgd3mLHV8Y5k7s6XUvT0Gef6zxSIeXaQ= -github.com/mitchellh/reflectwalk v1.0.2/go.mod h1:mSTlrgnPZtwu0c4WaC2kGObEpuNDbx0jmZXqmk4esnw= -github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q= -github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= -github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0= github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o= github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= github.com/multiformats/go-base32 v0.1.0 h1:pVx9xoSPqEIQG8o+UbAe7DNi51oej1NtK+aGkbLYxPE= @@ -270,256 +86,69 @@ github.com/multiformats/go-multihash v0.2.3 h1:7Lyc8XfX/IY2jWb/gI7JP+o7JEq9hOa7B github.com/multiformats/go-multihash v0.2.3/go.mod h1:dXgKXCXjBzdscBLk9JkjINiEsCKRVch90MdaGiKsvSM= github.com/multiformats/go-varint v0.0.7 h1:sWSGR+f/eu5ABZA2ZpYKBILXTTs9JWpdEM/nEGOHFS8= github.com/multiformats/go-varint v0.0.7/go.mod h1:r8PUYw/fD/SjBCiKOoDlGF6QawOELpZAu9eioSos/OU= -github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= -github.com/npillmayer/nestext v0.1.3/go.mod h1:h2lrijH8jpicr25dFY+oAJLyzlya6jhnuG+zWp9L0Uk= -github.com/oklog/run v1.0.0/go.mod h1:dlhp/R75TPv97u0XWUtDeV/lRKWPKSdTuV0TZvrmrQA= github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e h1:s2RNOM/IGdY0Y6qfTeUKhDawdHDpK9RGBdx80qN4Ttw= github.com/orcaman/writerseeker v0.0.0-20200621085525-1d3f536ff85e/go.mod h1:nBdnFKj15wFbf94Rwfq4m30eAcyY9V/IyKAGQFtqkW0= -github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= -github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/otiai10/copy v1.12.0 h1:cLMgSQnXBs1eehF0Wy/FAGsgDTDmAqFR7rQylBb1nDY= +github.com/otiai10/copy v1.12.0/go.mod h1:rSaLseMUsZFFbsFGc7wCJnnkTAvdc5L6VWxPE4308Ww= +github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks= +github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM= github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c h1:Gcce/r5tSQeprxswXXOwQ/RBU1bjQWVd9dB7QKoPXBE= github.com/pasztorpisti/qs v0.0.0-20171216220353-8d6c33ee906c/go.mod h1:1iCZ0433JJMecYqCa+TdWA9Pax8MGl4ByuNDZ7eSnQY= -github.com/pelletier/go-toml v1.7.0 h1:7utD74fnzVc/cpcyy8sjrlFr5vYpypUixARcHIMIGuI= -github.com/pelletier/go-toml v1.7.0/go.mod h1:vwGMzjaWMwyfHwgIBhI2YUM4fB6nL6lVAvS1LBMMhTE= github.com/pelletier/go-toml/v2 v2.1.0 h1:FnwAJ4oYMvbT/34k9zzHuZNrhlz48GB3/s6at6/MHO4= github.com/pelletier/go-toml/v2 v2.1.0/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/petermattis/goid v0.0.0-20180202154549-b0b1615b78e5/go.mod h1:jvVRKCrJTQWu0XVbaOlby/2lO20uSCHEMzzplHXte1o= github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc h1:8bQZVK1X6BJR/6nYUPxQEP+ReTsceJTKizeuwjWOPUA= github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc/go.mod h1:pxMtw7cyUw6B2bRH0ZBANSPg+AoSud1I1iyJHI69jH4= -github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY= -github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= -github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pokt-network/smt v0.6.1 h1:u5yTGNNND6edXv3vMQrAcjku1Ig4osehdu+EMYSXHUU= github.com/pokt-network/smt v0.6.1/go.mod h1:CWgC9UzDxXJNkL7TEADnJXutZVMYzK/+dmBb37RWkeQ= -github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= -github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= -github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= -github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= -github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= -github.com/prometheus/client_golang v1.11.1/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= -github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= -github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= -github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= -github.com/prometheus/common v0.10.0/go.mod h1:Tlit/dnDKsSWFlCLTWaA1cyBgKHSMdTB80sz/V91rCo= -github.com/prometheus/common v0.26.0/go.mod h1:M7rCNAaPfAosfx8veZJCuw84e35h3Cfd9VFqTh1DIvc= -github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= -github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= -github.com/prometheus/procfs v0.1.3/go.mod h1:lV6e/gmhEcM9IjHGsFOCxxuZ+z1YqCvr4OA4YeYWdaU= -github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= -github.com/rhnvrm/simples3 v0.6.1/go.mod h1:Y+3vYm2V7Y4VijFoJHHTrja6OgPrJ2cBti8dPGkC3sA= -github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M= github.com/rogpeppe/go-internal v1.11.0/go.mod h1:ddIwULY96R17DhadqLgMfk9H9tvdUzkipdSkR5nkCZA= -github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/columnize v2.1.0+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= -github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/sasha-s/go-deadlock v0.3.1 h1:sqv7fDNShgjcaxkO0JNcOAlr8B9+cV5Ey/OB71efZx0= github.com/sasha-s/go-deadlock v0.3.1/go.mod h1:F73l+cr82YSh10GxyRI6qZiCgK64VaZjwesgfQ1/iLM= -github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= -github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= -github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= -github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI= github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= -github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= -github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= -github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI= -github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98 h1:i7k63xHOX2ntuHrhHewfKro67c834jug2DIk599fqAA= github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98/go.mod h1:Knu2XMRWe8SkwTlHc/+ghP+O9DEaZRQQEyTjvLJ5Cck= -github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XDc= github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= -go.etcd.io/etcd/api/v3 v3.5.4/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= -go.etcd.io/etcd/client/pkg/v3 v3.5.4/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= -go.etcd.io/etcd/client/v3 v3.5.4/go.mod h1:ZaRkVgBZC+L+dLCjTcF1hRXpgZXQPOvnA/Ak/gq3kiY= -go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= -go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= -go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= -golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= -golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63/go.mod h1:0v4NqG35kSWCMzLaMeX+IQrlSnVE/bqGSyC2cz/9Le8= -golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= -golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= -golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg= -golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= -golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= -golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= -golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= -golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190129075346-302c3dd5f1cc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.1-0.20181227161524-e6919f6577db/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= -golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= -golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= -golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= -golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= -google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= -google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= -google.golang.org/genproto v0.0.0-20190404172233-64821d5d2107/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= -google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= -google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= -google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= -google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= -google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= -google.golang.org/grpc v1.22.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg= -google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY= -google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= -google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= -google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= -google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= -google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= -google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= -google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= -google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= -google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= -google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= -google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw= -gopkg.in/asn1-ber.v1 v1.0.0-20181015200546-f715ec2f112d/go.mod h1:cuepJuh7vyXfUyUwEgHQXw849cJrilpS5NeIjOWESAw= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/square/go-jose.v2 v2.3.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= -gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.5/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= -gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= -honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= lukechampine.com/blake3 v1.2.1 h1:YuqqRuaqsGV71BV/nm9xlI0MKUv4QC54jQnBChWbGnI= lukechampine.com/blake3 v1.2.1/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= -sigs.k8s.io/yaml v1.2.0/go.mod h1:yfXDCHCao9+ENCvLSE62v9VSji2MKu5jeNfTrofGhJc= From cac704460094982725da741bceb88ba0fa427ed8 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 21 Sep 2023 11:09:24 +0200 Subject: [PATCH 137/356] Feat: WIP WIP SWITCHING BRANCHES --- pkg/protocol/chains.go | 28 +-- pkg/protocol/gossip.go | 397 ----------------------------------- pkg/protocol/network.go | 443 ++++++++++++++++++++++++++++++++++++--- pkg/protocol/protocol.go | 7 +- 4 files changed, 432 insertions(+), 443 deletions(-) delete mode 100644 pkg/protocol/gossip.go diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 82bbd52f5..3ebc25ef1 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -90,9 +90,9 @@ func newChains(protocol *Protocol) *Chains { } func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment, err error) { - request, requestErr := c.requestCommitment(commitment.ID(), false) - if requestErr != nil { - return nil, ierrors.Wrapf(requestErr, "failed to request commitment %s", commitment.ID()) + request := c.requestCommitment(commitment.ID(), false) + if request.WasRejected() { + return nil, ierrors.Wrapf(request.Err(), "failed to request commitment %s", commitment.ID()) } request.Resolve(NewCommitment(commitment, c.protocol.Logger)).OnSuccess(func(resolvedMetadata *Commitment) { @@ -105,8 +105,8 @@ func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMeta func (c *Chains) Commitment(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { commitmentRequest, exists := c.commitments.Get(commitmentID) if !exists && lo.First(requestMissing) { - if commitmentRequest, err = c.requestCommitment(commitmentID, true); err != nil { - return nil, ierrors.Wrapf(err, "failed to request commitment %s", commitmentID) + if commitmentRequest = c.requestCommitment(commitmentID, true); commitmentRequest.WasRejected() { + return nil, ierrors.Wrapf(commitmentRequest.Err(), "failed to request commitment %s", commitmentID) } } @@ -135,9 +135,9 @@ func (c *Chains) initMainChain() { } func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { - if _, err := c.requestCommitment(commitment.PrevID(), true, lo.Void(commitment.Parent.Set)); err != nil { + c.requestCommitment(commitment.PrevID(), true, lo.Void(commitment.Parent.Set)).OnError(func(err error) { c.protocol.LogDebug("failed to request previous commitment", "prevId", commitment.PrevID(), "error", err) - } + }) slotEvictedEvent.OnTrigger(func() { commitment.IsEvicted.Trigger() @@ -219,20 +219,20 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { }) } -func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment], err error) { +func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { slotEvicted := c.EvictionEvent(commitmentID.Index()) if slotEvicted.WasTriggered() && c.LastEvictedSlot().Get() != 0 { forkingPoint := c.MainChain.Get().ForkingPoint.Get() if forkingPoint == nil || commitmentID != forkingPoint.ID() { - return nil, ErrorSlotEvicted + return promise.New[*Commitment]().Reject(ErrorSlotEvicted) } for _, successCallback := range optSuccessCallbacks { successCallback(forkingPoint) } - return promise.New[*Commitment]().Resolve(forkingPoint), nil + return promise.New[*Commitment]().Resolve(forkingPoint) } commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) @@ -256,18 +256,12 @@ func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFrom commitmentRequest.OnSuccess(successCallback) } - return commitmentRequest, nil + return commitmentRequest } func (c *Chains) publishEngineCommitments(chain *Chain) { chain.spawnedEngine.OnUpdateWithContext(func(_, engine *engine.Engine, withinContext func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { - chain.LogDebug("spawned engine") - - engine.Ledger.HookInitialized(func() { - chain.LogDebug("ENGINE INITIALIZED") - }) - withinContext(func() (unsubscribe func()) { var latestPublishedIndex iotago.SlotIndex diff --git a/pkg/protocol/gossip.go b/pkg/protocol/gossip.go deleted file mode 100644 index b4f14c890..000000000 --- a/pkg/protocol/gossip.go +++ /dev/null @@ -1,397 +0,0 @@ -package protocol - -import ( - "github.com/libp2p/go-libp2p/core/peer" - - "github.com/iotaledger/hive.go/ads" - "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/kvstore" - "github.com/iotaledger/hive.go/kvstore/mapdb" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/hive.go/runtime/event" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/merklehasher" -) - -type Gossip struct { - protocol *Protocol - gossip *event.Event1[*model.Block] - attestationsRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - warpSyncRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - blockRequestStarted *event.Event2[iotago.BlockID, *engine.Engine] - blockRequestStopped *event.Event2[iotago.BlockID, *engine.Engine] - blockRequested *event.Event2[iotago.BlockID, *engine.Engine] - commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] - - log.Logger -} - -func NewGossip(protocol *Protocol) *Gossip { - g := &Gossip{ - protocol: protocol, - gossip: event.New1[*model.Block](), - attestationsRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - warpSyncRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - blockRequestStarted: event.New2[iotago.BlockID, *engine.Engine](), - blockRequestStopped: event.New2[iotago.BlockID, *engine.Engine](), - blockRequested: event.New2[iotago.BlockID, *engine.Engine](), - commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), - } - - g.startBlockRequester() - g.startAttestationsRequester() - g.startWarpSyncRequester() - - for _, gossipEvent := range []*event.Event1[*blocks.Block]{ - // TODO: REPLACE WITH REACTIVE VERSION - protocol.Events.Engine.Scheduler.BlockScheduled, - protocol.Events.Engine.Scheduler.BlockSkipped, - } { - gossipEvent.Hook(func(block *blocks.Block) { g.gossip.Trigger(block.ModelBlock()) }) - } - - g.Logger = func() log.Logger { - logger, shutdownLogger := protocol.Logger.NewChildLogger("Gossip") - - protocol.HookShutdown(shutdownLogger) - - return logger - }() - - return g -} - -func (r *Gossip) IssueBlock(block *model.Block) error { - r.protocol.MainEngineInstance().ProcessBlockFromPeer(block, "self") - - return nil -} - -func (r *Gossip) ProcessBlock(block *model.Block, src peer.ID) { - commitmentRequest, err := r.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) - if err != nil { - r.protocol.LogDebug("failed to process block", "blockID", block.ID(), "source", src, "err", err) - - return - } - - if commitmentRequest.WasRejected() { - r.protocol.LogDebug("failed to process block", "blockID", block.ID(), "source", src, "err", commitmentRequest.Err()) - - return - } - - if !commitmentRequest.WasCompleted() { - //fmt.Println(r.protocol.MainEngineInstance().Name(), "WARNING3", block.ProtocolBlock().SlotCommitmentID, block.ProtocolBlock().SlotCommitmentID.Index()) - // TODO: QUEUE TO UNSOLID COMMITMENT BLOCKS - r.protocol.LogTrace("failed to process block", "blockID", block.ID(), "peer", src, "err", ierrors.New("block still missing")) - } else { - commitment := commitmentRequest.Result() - - if chain := commitment.Chain.Get(); chain != nil && chain.InSyncRange(block.ID().Index()) { - if engine := commitment.Engine.Get(); engine != nil { - engine.ProcessBlockFromPeer(block, src) - } - } - } -} - -func (r *Gossip) ProcessBlockRequest(blockID iotago.BlockID, src peer.ID) { - if block, exists := r.protocol.MainEngineInstance().Block(blockID); !exists { - r.LogDebug("failed to load requested block", "blockID", blockID, "peer", src) - } else { - r.protocol.SendBlock(block, src) - } -} - -func (r *Gossip) ProcessCommitment(commitmentModel *model.Commitment, src peer.ID) { - if _, err := r.protocol.PublishCommitment(commitmentModel); err != nil { - r.LogDebug("failed to publish commitment", "commitmentID", commitmentModel.ID(), "peer", src) - } -} - -func (r *Gossip) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src peer.ID) { - if commitment, err := r.protocol.Commitment(commitmentID); err != nil { - if !ierrors.Is(err, ErrorCommitmentNotFound) { - r.LogDebug("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) - } else { - r.LogTrace("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) - } - } else { - r.protocol.SendSlotCommitment(commitment.Commitment, src) - } -} - -func (r *Gossip) ProcessAttestations(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { - commitment, err := r.protocol.PublishCommitment(commitmentModel) - if err != nil { - r.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", source, "error", err) - return - } - - chain := commitment.Chain.Get() - if chain == nil { - r.LogDebug("failed to find chain for commitment when processing attestations", "commitmentID", commitmentModel.ID()) - return - } - - commitmentVerifier, exists := r.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) - if !exists { - r.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitmentID", commitmentModel.ID()) - return - } - - _, actualWeight, err := commitmentVerifier.verifyCommitment(commitment, attestations, merkleProof) - if err != nil { - r.LogError("failed to verify commitment when processing attestations", "commitmentID", commitmentModel.ID(), "error", err) - return - } - - commitment.AttestedWeight.Set(actualWeight) - commitment.IsAttested.Set(true) -} - -func (r *Gossip) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) { - mainEngine := r.protocol.MainEngineInstance() - - if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { - r.LogDebug("requested commitment is not verified, yet", "commitmentID", commitmentID) - - return - } - - commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Index()) - if err != nil { - if ierrors.Is(err, kvstore.ErrKeyNotFound) { - r.LogDebug("failed to load commitment", "commitmentID", commitmentID) - } else { - r.LogError("failed to load commitment", "commitmentID", commitmentID) - panic("here4") - } - - return - } - - if commitment.ID() != commitmentID { - r.LogTrace("requested commitment does not belong to main engine", "requestedCommitmentID", commitmentID, "mainEngineCommitmentID", commitment.ID()) - return - } - - attestations, err := mainEngine.Attestations.Get(commitmentID.Index()) - if err != nil { - r.LogError("failed to load attestations", "commitmentID", commitmentID, "error", err) - panic("here") - return - } - - rootsStorage, err := mainEngine.Storage.Roots(commitmentID.Index()) - if err != nil { - r.LogError("failed to load roots", "commitmentID", commitmentID, "error", err) - panic("here1") - return - } - - roots, err := rootsStorage.Load(commitmentID) - if err != nil { - r.LogError("failed to load roots", "commitmentID", commitmentID, "error", err) - panic("here2") - return - } - - r.protocol.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) -} - -func (r *Gossip) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], src peer.ID) { - if err, logLevel := func() (err error, logLevel log.Level) { - chainCommitment, err := r.protocol.Commitment(commitmentID) - if err != nil { - if !ierrors.Is(err, ErrorCommitmentNotFound) { - return ierrors.Wrapf(err, "unexpected error when loading commitment"), log.LevelError - } - - return ierrors.Wrapf(err, "warp sync response for unknown commitment"), log.LevelDebug - } - - if !chainCommitment.WarpSyncBlocks.Get() { - return ierrors.New("warp sync not requested"), log.LevelDebug - } - - targetEngine := chainCommitment.Engine.Get() - if targetEngine == nil { - return ierrors.New("failed to get engine"), log.LevelDebug - } - - acceptedBlocks := ads.NewSet[iotago.BlockID](mapdb.NewMapDB(), iotago.BlockID.Bytes, iotago.SlotIdentifierFromBytes) - for _, blockID := range blockIDs { - _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error - } - - if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), chainCommitment.RootsID()) { - return ierrors.New("failed to verify merkle proof"), log.LevelError - } - - r.warpSyncRequester.StopTicker(commitmentID) - - for _, blockID := range blockIDs { - targetEngine.BlockDAG.GetOrRequestBlock(blockID) - } - - return - }(); err != nil { - r.Log("failed to process warp sync response", logLevel, "commitmentID", commitmentID, "peer", src, "error", err) - } else { - r.Log("successfully processed warp sync response", log.LevelDebug, "commitmentID", commitmentID, "peer", src) - } -} - -func (r *Gossip) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, src peer.ID) { - if err, logLevel := func() (err error, logLevel log.Level) { - committedSlot, err := r.protocol.MainEngineInstance().CommittedSlot(commitmentID) - if err != nil { - return ierrors.Wrap(err, "failed to get slot for commitment"), log.LevelDebug - } - - commitment, err := committedSlot.Commitment() - if err != nil { - return ierrors.Wrap(err, "failed to get commitment from slot"), log.LevelDebug - } else if commitment.ID() != commitmentID { - return ierrors.New("commitment ID mismatch"), log.LevelError - } - - blockIDs, err := committedSlot.BlockIDs() - if err != nil { - return ierrors.Wrap(err, "failed to get block IDs from slot"), log.LevelDebug - } - - roots, err := committedSlot.Roots() - if err != nil { - return ierrors.Wrap(err, "failed to get roots from slot"), log.LevelDebug - } - - r.protocol.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), src) - - return - }(); err != nil { - r.Log("failed to process warp sync request", logLevel, "commitmentID", commitmentID, "peer", src, "error", err) - } else { - r.Log("successfully processed warp sync request", log.LevelDebug, "commitmentID", commitmentID, "peer", src) - } -} - -func (r *Gossip) OnSendBlock(callback func(block *model.Block)) (unsubscribe func()) { - return r.gossip.Hook(callback).Unhook -} - -func (r *Gossip) OnBlockRequested(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { - return r.blockRequested.Hook(callback).Unhook -} - -func (r *Gossip) OnBlockRequestStarted(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { - return r.blockRequestStarted.Hook(callback).Unhook -} - -func (r *Gossip) OnBlockRequestStopped(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { - return r.blockRequestStopped.Hook(callback).Unhook -} - -func (r *Gossip) OnCommitmentRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return r.commitmentRequester.Events.TickerStarted.Hook(callback).Unhook -} - -func (r *Gossip) OnCommitmentRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return r.commitmentRequester.Events.TickerStopped.Hook(callback).Unhook -} - -func (r *Gossip) OnCommitmentRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return r.commitmentRequester.Events.Tick.Hook(callback).Unhook -} - -func (r *Gossip) OnAttestationsRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return r.attestationsRequester.Events.TickerStarted.Hook(callback).Unhook -} - -func (r *Gossip) OnAttestationsRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return r.attestationsRequester.Events.TickerStopped.Hook(callback).Unhook -} - -func (r *Gossip) OnAttestationsRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return r.attestationsRequester.Events.Tick.Hook(callback).Unhook -} - -func (r *Gossip) startAttestationsRequester() { - r.protocol.HookConstructed(func() { - r.protocol.ChainCreated.Hook(func(chain *Chain) { - chain.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { - if requestAttestations { - r.commitmentVerifiers.GetOrCreate(chain.ForkingPoint.Get().ID(), func() *CommitmentVerifier { - return NewCommitmentVerifier(chain.Engine.Get(), chain.ForkingPoint.Get().Parent.Get().Commitment) - }) - } else { - r.commitmentVerifiers.Delete(chain.ForkingPoint.Get().ID()) - } - }) - }) - - r.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { - if requestAttestations { - if commitment.CumulativeWeight() == 0 { - commitment.IsAttested.Set(true) - } else { - r.attestationsRequester.StartTicker(commitment.ID()) - } - } else { - r.attestationsRequester.StopTicker(commitment.ID()) - } - }) - }) - }) -} - -func (r *Gossip) startWarpSyncRequester() { - r.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.WarpSyncBlocks.OnUpdate(func(_, warpSyncBlocks bool) { - if warpSyncBlocks { - r.warpSyncRequester.StartTicker(commitment.ID()) - } else { - r.warpSyncRequester.StopTicker(commitment.ID()) - } - }) - }) -} - -func (r *Gossip) startBlockRequester() { - startBlockRequester := func(engine *engine.Engine) { - unsubscribe := lo.Batch( - engine.Events.BlockRequester.Tick.Hook(func(id iotago.BlockID) { - r.blockRequested.Trigger(id, engine) - }).Unhook, - - engine.Events.BlockRequester.TickerStarted.Hook(func(id iotago.BlockID) { - r.blockRequestStarted.Trigger(id, engine) - }).Unhook, - - engine.Events.BlockRequester.TickerStopped.Hook(func(id iotago.BlockID) { - r.blockRequestStopped.Trigger(id, engine) - }).Unhook, - ) - - engine.HookShutdown(unsubscribe) - } - - r.protocol.MainChain.Get().Engine.OnUpdate(func(_, engine *engine.Engine) { - startBlockRequester(engine) - }) - - r.protocol.ChainCreated.Hook(func(chain *Chain) { - chain.Engine.OnUpdate(func(_, engine *engine.Engine) { startBlockRequester(engine) }) - }) -} diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index 404b8222a..b06737e35 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -3,13 +3,23 @@ package protocol import ( "github.com/libp2p/go-libp2p/core/peer" + "github.com/iotaledger/hive.go/ads" + "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/kvstore" + "github.com/iotaledger/hive.go/kvstore/mapdb" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/network/protocols/core" "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/merklehasher" ) type Network struct { @@ -17,54 +27,439 @@ type Network struct { *core.Protocol + gossip *event.Event1[*model.Block] + attestationsRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + warpSyncRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + blockRequestStarted *event.Event2[iotago.BlockID, *engine.Engine] + blockRequestStopped *event.Event2[iotago.BlockID, *engine.Engine] + blockRequested *event.Event2[iotago.BlockID, *engine.Engine] + commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] + + log.Logger + module.Module } func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { n := &Network{ - protocol: protocol, - Protocol: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), + protocol: protocol, + Protocol: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), + gossip: event.New1[*model.Block](), + attestationsRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + warpSyncRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + blockRequestStarted: event.New2[iotago.BlockID, *engine.Engine](), + blockRequestStopped: event.New2[iotago.BlockID, *engine.Engine](), + blockRequested: event.New2[iotago.BlockID, *engine.Engine](), + commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), + } + + n.Logger = func() log.Logger { + logger, shutdownLogger := protocol.Logger.NewChildLogger("Gossip") + + protocol.HookShutdown(shutdownLogger) + + return logger + }() + + n.TriggerConstructed() + + n.startBlockRequester() + n.startAttestationsRequester() + n.startWarpSyncRequester() + + for _, gossipEvent := range []*event.Event1[*blocks.Block]{ + // TODO: REPLACE WITH REACTIVE VERSION + protocol.Events.Engine.Scheduler.BlockScheduled, + protocol.Events.Engine.Scheduler.BlockSkipped, + } { + gossipEvent.Hook(func(block *blocks.Block) { n.gossip.Trigger(block.ModelBlock()) }) } var unsubscribeFromNetworkEvents func() protocol.HookInitialized(func() { - n.OnError(func(err error, src peer.ID) { - protocol.LogError("network error", "peer", src, "error", err) + n.OnError(func(err error, peer peer.ID) { + n.LogError("network error", "peer", peer, "error", err) }) unsubscribeFromNetworkEvents = lo.Batch( - n.OnBlockReceived(protocol.ProcessBlock), - n.OnBlockRequestReceived(protocol.ProcessBlockRequest), - n.OnCommitmentReceived(protocol.ProcessCommitment), - n.OnCommitmentRequestReceived(protocol.ProcessCommitmentRequest), - n.OnAttestationsReceived(protocol.ProcessAttestations), - n.OnAttestationsRequestReceived(protocol.ProcessAttestationsRequest), - n.OnWarpSyncResponseReceived(protocol.ProcessWarpSyncResponse), - n.OnWarpSyncRequestReceived(protocol.ProcessWarpSyncRequest), - - protocol.OnSendBlock(func(block *model.Block) { n.SendBlock(block) }), - protocol.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { n.RequestBlock(blockID) }), - protocol.OnCommitmentRequested(func(id iotago.CommitmentID) { n.RequestSlotCommitment(id) }), - protocol.OnAttestationsRequested(func(commitmentID iotago.CommitmentID) { n.RequestAttestations(commitmentID) }), + n.OnBlockReceived(n.ProcessReceivedBlock), + n.OnBlockRequestReceived(n.ProcessBlockRequest), + n.OnCommitmentReceived(n.ProcessCommitment), + n.OnCommitmentRequestReceived(n.ProcessCommitmentRequest), + n.OnAttestationsReceived(n.ProcessAttestations), + n.OnAttestationsRequestReceived(n.ProcessAttestationsRequest), + n.OnWarpSyncResponseReceived(n.ProcessWarpSyncResponse), + n.OnWarpSyncRequestReceived(n.ProcessWarpSyncRequest), + + n.warpSyncRequester.Events.Tick.Hook(func(id iotago.CommitmentID) { + n.LogDebug("request warp sync", "commitmentID", id) + + n.SendWarpSyncRequest(id) + }).Unhook, + n.OnSendBlock(func(block *model.Block) { n.SendBlock(block) }), + n.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { n.RequestBlock(blockID) }), + n.OnCommitmentRequested(func(id iotago.CommitmentID) { + n.LogInfo("commitment requested", "commitmentID", id) + + n.RequestSlotCommitment(id) + }), + n.OnAttestationsRequested(func(commitmentID iotago.CommitmentID) { n.RequestAttestations(commitmentID) }), ) n.TriggerInitialized() + + protocol.HookShutdown(func() { + n.TriggerShutdown() + + unsubscribeFromNetworkEvents() + + n.Protocol.Shutdown() + + n.TriggerStopped() + }) }) - protocol.HookShutdown(func() { - n.TriggerShutdown() + return n +} + +func (n *Network) IssueBlock(block *model.Block) error { + n.protocol.MainEngineInstance().ProcessBlockFromPeer(block, "self") + + return nil +} + +func (n *Network) ProcessReceivedBlock(block *model.Block, src peer.ID) { + n.processTask("received block", func() (err error, logLevel log.Level) { + commitmentRequest := n.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) + if !commitmentRequest.WasCompleted() { + return ierrors.Errorf("UNSOLID COMMITMENT WITH %s", block.ProtocolBlock().SlotCommitmentID), log.LevelDebug + } - unsubscribeFromNetworkEvents() + if commitmentRequest.WasRejected() { + return commitmentRequest.Err(), log.LevelDebug + } - n.Protocol.Shutdown() + commitment := commitmentRequest.Result() + chain := commitment.Chain.Get() - n.TriggerStopped() + if chain == nil { + return ierrors.Errorf("UNSOLID CHAIN FOR %s", block.ProtocolBlock().SlotCommitmentID), log.LevelDebug + } + + if !chain.InSyncRange(block.ID().Index()) { + return ierrors.Errorf("NOT IN SYNC RANGE %s", block.ProtocolBlock().SlotCommitmentID), log.LevelDebug + } + + engine := commitment.Engine.Get() + if engine == nil { + return ierrors.Errorf("ENGINE NOT KNOWN FOR %s", block.ProtocolBlock().SlotCommitmentID), log.LevelDebug + } + + engine.ProcessBlockFromPeer(block, src) + + return nil, log.LevelTrace }) +} - n.TriggerConstructed() +func (n *Network) ProcessBlockRequest(blockID iotago.BlockID, src peer.ID) { + if block, exists := n.protocol.MainEngineInstance().Block(blockID); !exists { + n.LogDebug("failed to load requested block", "blockID", blockID, "peer", src) + } else { + n.protocol.SendBlock(block, src) + } +} - return n +func (n *Network) ProcessCommitment(commitmentModel *model.Commitment, src peer.ID) { + if _, err := n.protocol.PublishCommitment(commitmentModel); err != nil { + n.LogDebug("failed to publish commitment", "commitmentID", commitmentModel.ID(), "peer", src) + } else { + n.LogDebug("successfully published commitment", "commitmentID", commitmentModel.ID(), "peer", src) + } +} + +func (n *Network) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src peer.ID) { + n.LogTrace("commitment request received", "commitmentID", commitmentID, "peer", src) + + if commitment, err := n.protocol.Commitment(commitmentID); err != nil { + if !ierrors.Is(err, ErrorCommitmentNotFound) { + n.LogDebug("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) + } else { + n.LogTrace("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) + } + } else { + n.LogDebug("sending commitment", "commitmentID", commitmentID, "peer", src) + + n.protocol.SendSlotCommitment(commitment.Commitment, src) + } +} + +func (n *Network) ProcessAttestations(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { + commitment, err := n.protocol.PublishCommitment(commitmentModel) + if err != nil { + n.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", source, "error", err) + return + } + + chain := commitment.Chain.Get() + if chain == nil { + n.LogDebug("failed to find chain for commitment when processing attestations", "commitmentID", commitmentModel.ID()) + return + } + + commitmentVerifier, exists := n.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) + if !exists { + n.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitmentID", commitmentModel.ID()) + return + } + + _, actualWeight, err := commitmentVerifier.verifyCommitment(commitment, attestations, merkleProof) + if err != nil { + n.LogError("failed to verify commitment when processing attestations", "commitmentID", commitmentModel.ID(), "error", err) + return + } + + commitment.AttestedWeight.Set(actualWeight) + commitment.IsAttested.Set(true) +} + +func (n *Network) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) { + mainEngine := n.protocol.MainEngineInstance() + + if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { + n.LogDebug("requested commitment is not verified, yet", "commitmentID", commitmentID) + + return + } + + commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Index()) + if err != nil { + if ierrors.Is(err, kvstore.ErrKeyNotFound) { + n.LogDebug("failed to load commitment", "commitmentID", commitmentID) + } else { + n.LogError("failed to load commitment", "commitmentID", commitmentID) + panic("here4") + } + + return + } + + if commitment.ID() != commitmentID { + n.LogTrace("requested commitment does not belong to main engine", "requestedCommitmentID", commitmentID, "mainEngineCommitmentID", commitment.ID()) + return + } + + attestations, err := mainEngine.Attestations.Get(commitmentID.Index()) + if err != nil { + n.LogError("failed to load attestations", "commitmentID", commitmentID, "error", err) + panic("here") + return + } + + rootsStorage, err := mainEngine.Storage.Roots(commitmentID.Index()) + if err != nil { + n.LogError("failed to load roots", "commitmentID", commitmentID, "error", err) + panic("here1") + return + } + + roots, err := rootsStorage.Load(commitmentID) + if err != nil { + n.LogError("failed to load roots", "commitmentID", commitmentID, "error", err) + panic("here2") + return + } + + n.protocol.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) +} + +func (n *Network) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], peer peer.ID) { + n.processTask("warp sync response", func() (err error, logLevel log.Level) { + chainCommitment, err := n.protocol.Commitment(commitmentID) + if err != nil { + if !ierrors.Is(err, ErrorCommitmentNotFound) { + return ierrors.Wrapf(err, "unexpected error when loading commitment"), log.LevelError + } + + return ierrors.Wrapf(err, "warp sync response for unknown commitment"), log.LevelDebug + } + + if !chainCommitment.WarpSyncBlocks.Get() { + return ierrors.New("warp sync not requested"), log.LevelDebug + } + + targetEngine := chainCommitment.Engine.Get() + if targetEngine == nil { + return ierrors.New("failed to get engine"), log.LevelDebug + } + + acceptedBlocks := ads.NewSet[iotago.BlockID](mapdb.NewMapDB(), iotago.BlockID.Bytes, iotago.SlotIdentifierFromBytes) + for _, blockID := range blockIDs { + _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error + } + + if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), chainCommitment.RootsID()) { + return ierrors.New("failed to verify merkle proof"), log.LevelError + } + + n.warpSyncRequester.StopTicker(commitmentID) + + for _, blockID := range blockIDs { + targetEngine.BlockDAG.GetOrRequestBlock(blockID) + } + + return nil, log.LevelDebug + }, "commitmentID", commitmentID, "blockIDs", blockIDs, "proof", proof, "peer", peer) +} + +func (n *Network) processTask(taskName string, task func() (err error, logLevel log.Level), args ...any) { + if err, logLevel := task(); err != nil { + n.Log("failed to process "+taskName, logLevel, append(args, "error", err)...) + } else { + n.Log("successfully processed "+taskName, logLevel, args...) + } +} + +func (n *Network) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, src peer.ID) { + n.processTask("warp sync request", func() (err error, logLevel log.Level) { + committedSlot, err := n.protocol.MainEngineInstance().CommittedSlot(commitmentID) + if err != nil { + return ierrors.Wrap(err, "failed to get slot for commitment"), log.LevelDebug + } + + commitment, err := committedSlot.Commitment() + if err != nil { + return ierrors.Wrap(err, "failed to get commitment from slot"), log.LevelDebug + } else if commitment.ID() != commitmentID { + return ierrors.Errorf("commitment ID mismatch: %s != %s", commitment.ID(), commitmentID), log.LevelDebug + } + + blockIDs, err := committedSlot.BlockIDs() + if err != nil { + return ierrors.Wrap(err, "failed to get block IDs from slot"), log.LevelDebug + } + + roots, err := committedSlot.Roots() + if err != nil { + return ierrors.Wrap(err, "failed to get roots from slot"), log.LevelDebug + } + + n.protocol.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), src) + + return + }, "commitmentID", commitmentID, "peer", src) +} + +func (n *Network) OnSendBlock(callback func(block *model.Block)) (unsubscribe func()) { + return n.gossip.Hook(callback).Unhook +} + +func (n *Network) OnBlockRequested(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { + return n.blockRequested.Hook(callback).Unhook +} + +func (n *Network) OnBlockRequestStarted(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { + return n.blockRequestStarted.Hook(callback).Unhook +} + +func (n *Network) OnBlockRequestStopped(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { + return n.blockRequestStopped.Hook(callback).Unhook +} + +func (n *Network) OnCommitmentRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return n.commitmentRequester.Events.TickerStarted.Hook(callback).Unhook +} + +func (n *Network) OnCommitmentRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return n.commitmentRequester.Events.TickerStopped.Hook(callback).Unhook +} + +func (n *Network) OnCommitmentRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return n.commitmentRequester.Events.Tick.Hook(callback).Unhook +} + +func (n *Network) OnAttestationsRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return n.attestationsRequester.Events.TickerStarted.Hook(callback).Unhook +} + +func (n *Network) OnAttestationsRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return n.attestationsRequester.Events.TickerStopped.Hook(callback).Unhook +} + +func (n *Network) OnAttestationsRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { + return n.attestationsRequester.Events.Tick.Hook(callback).Unhook } func (n *Network) Shutdown() {} + +func (n *Network) startAttestationsRequester() { + n.protocol.HookConstructed(func() { + n.protocol.ChainCreated.Hook(func(chain *Chain) { + chain.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { + if requestAttestations { + n.commitmentVerifiers.GetOrCreate(chain.ForkingPoint.Get().ID(), func() *CommitmentVerifier { + return NewCommitmentVerifier(chain.Engine.Get(), chain.ForkingPoint.Get().Parent.Get().Commitment) + }) + } else { + n.commitmentVerifiers.Delete(chain.ForkingPoint.Get().ID()) + } + }) + }) + + n.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { + if requestAttestations { + if commitment.CumulativeWeight() == 0 { + commitment.IsAttested.Set(true) + } else { + n.attestationsRequester.StartTicker(commitment.ID()) + } + } else { + n.attestationsRequester.StopTicker(commitment.ID()) + } + }) + }) + }) +} + +func (n *Network) startWarpSyncRequester() { + n.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.WarpSyncBlocks.OnUpdate(func(_, warpSyncBlocks bool) { + if warpSyncBlocks { + n.warpSyncRequester.StartTicker(commitment.ID()) + } else { + n.warpSyncRequester.StopTicker(commitment.ID()) + } + }) + }) +} + +func (n *Network) startBlockRequester() { + startBlockRequester := func(engine *engine.Engine) { + unsubscribe := lo.Batch( + engine.Events.BlockRequester.Tick.Hook(func(id iotago.BlockID) { + n.blockRequested.Trigger(id, engine) + }).Unhook, + + engine.Events.BlockRequester.TickerStarted.Hook(func(id iotago.BlockID) { + n.blockRequestStarted.Trigger(id, engine) + }).Unhook, + + engine.Events.BlockRequester.TickerStopped.Hook(func(id iotago.BlockID) { + n.blockRequestStopped.Trigger(id, engine) + }).Unhook, + ) + + engine.HookShutdown(unsubscribe) + } + + n.protocol.MainChain.Get().Engine.OnUpdate(func(_, engine *engine.Engine) { + startBlockRequester(engine) + }) + + n.protocol.ChainCreated.Hook(func(chain *Chain) { + chain.Engine.OnUpdate(func(_, engine *engine.Engine) { startBlockRequester(engine) }) + }) +} diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index ced2f86ee..40d515cff 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -13,15 +13,13 @@ import ( ) type Protocol struct { - Events *Events - + Events *Events Workers *workerpool.Group error *event.Event1[error] options *Options *Network *Chains - *Gossip log.Logger module.Module } @@ -34,9 +32,8 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi error: event.New1[error](), options: newOptions(), }, opts, func(p *Protocol) { - p.Network = newNetwork(p, dispatcher) p.Chains = newChains(p) - p.Gossip = NewGossip(p) + p.Network = newNetwork(p, dispatcher) }, (*Protocol).TriggerConstructed) } From 25f1ea8aaaa846eee9f9201d3e8d72cdf54b4e9b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 21 Sep 2023 13:46:52 +0200 Subject: [PATCH 138/356] Feat: upgraded to latest hive.go --- go.mod | 27 +- go.sum | 54 +- pkg/tests/protocol_engine_rollback_test.go | 1559 ++++++++++---------- tools/evil-spammer/go.mod | 27 +- tools/evil-spammer/go.sum | 54 +- tools/gendoc/go.mod | 31 +- tools/gendoc/go.sum | 54 +- tools/genesis-snapshot/go.mod | 26 +- tools/genesis-snapshot/go.sum | 55 +- 9 files changed, 954 insertions(+), 933 deletions(-) diff --git a/go.mod b/go.mod index fb4f6ef52..da034fc01 100644 --- a/go.mod +++ b/go.mod @@ -9,19 +9,20 @@ require ( github.com/google/uuid v1.3.1 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 - github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 + github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230919065227-618931c246c5 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230918132810-48814818bff9 github.com/iotaledger/iota.go/v4 v4.0.0-20230921110244-f4f25eb27e05 diff --git a/go.sum b/go.sum index 2e9bd69a4..9059825f5 100644 --- a/go.sum +++ b/go.sum @@ -277,32 +277,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 h1:C8oOO8iHniK2yiQiphft8MXT/x97InWgUww+moQh2DU= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 h1:B1XC0lIs+Yz79HgytXN/y9qVDsbhp6N424GRE9W0YqE= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 h1:/GDTCmFXcjDabg8HwfYL78BsN0cfGyd2onhRPWqDY20= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 h1:5vyVnYnC6j1kvRrWrcgq2oLaBYomFvFHUq7R/7mC4Ns= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 h1:Rnor/2Bcy8luSAFO+HBRxoLzPtxJzpLZjRle4OSyjBA= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 h1:HIYMX4qEA8IqM02eOI2ZYVyn01zhCCvJ6YpMzf+P/RM= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 h1:N4Qpd7vCNhuFQ+Wg8k9gInVpHjqLlNrEfEVgYuC/aDs= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 h1:PBc7/OrBkfXV70odqXdGJzKqvImx/R46R65OO9RMRpw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 h1:OhsjldIlatxskIfpEXDyodi1RpV9w9aXUEit9uVLBs8= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 h1:qiCT8nQ1R67YUsp5Xmp0aK1/ggXehdu5VQ//9OYmCNQ= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 h1:XxDIaa6kzWxoQ1Hd22AQJpqhV6ySXO5ysGeI7QjVDCg= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 h1:VFBVUIvYn78TjG8Rjxvovud9KZjfVaS4qmfqAaTzJdI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 h1:ZGeNsbWhWzJMmomjX8UqZJ4493nZ7B4kN/wWUdnyltM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 h1:z0fEoRChNtzcXXDT9hgp+huFPQ95woj3ELvcbli3onE= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 h1:CMwjk8c4w1V9Sa1lbkzE2HJ7a6qRssJeoSY0a4r6v1c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 h1:xOKMuDJpCw/l6j4ErSDGbQeUBgHVvB6CyDFNMEeFAYg= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 h1:MwG8Va/s1Yfq7t2TM1ryRUDs57PFlfOEXHZpsqJoDYY= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 h1:dp1TsIluPYRgF27pirjg07Dy2GKl0SJ09rPNABAnb/s= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 h1:KouSXgbUi8jNcOIziyXYeI100ZluWPZOgosylgcuorg= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 h1:iMztR/DKbLThx8YJDINo1QcVHro3mYjXbR/8deaF2so= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 h1:8s/yUTnYm9qnkV+TtYFqeHGqFbBvUSuknZoktOGBADA= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 h1:BDjTbHY1SoV1VbD+8wkwQJ7qgdnn+06Ej2grC7Ewhbw= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 h1:cHirIu4irFBY7Vj+lZn9aPRCWHF68B5ffvYQJagOq9g= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 h1:R+YQ2gzJKnWu6gQM4Bu08f2sPV92fq1D0G8t1JG4loQ= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 h1:3/t+WtmCR1ReZaiwfSqXTb9hsJ87V/tHgIWZAhnx92I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 h1:eyjhY40ze7rByTuiFCUQytuHLe6+L32em74Pcl+XJXo= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 h1:bokn2GkH93w7+jpZ36nADCaNwYYfzbzLXZ3CCsx+8lM= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230919065227-618931c246c5 h1:7GuYO/SI/mZnXwv7QBYwn2NWjr4OF/Re+aSzmwx+CT0= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230919065227-618931c246c5/go.mod h1:luLlwdZT26MqUWBbiEOYxBwYLVrfz+65D+Tme84+Slw= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230918132810-48814818bff9 h1:BJb6+fF7zTyrbKQY3JG1Hiw6klONR4anwCFOcNdWu9o= diff --git a/pkg/tests/protocol_engine_rollback_test.go b/pkg/tests/protocol_engine_rollback_test.go index f8b3e9cc0..4d4143495 100644 --- a/pkg/tests/protocol_engine_rollback_test.go +++ b/pkg/tests/protocol_engine_rollback_test.go @@ -1,781 +1,782 @@ package tests -import ( - "fmt" - "testing" - "time" - - "github.com/stretchr/testify/require" - - "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/iota-core/pkg/core/account" - "github.com/iotaledger/iota-core/pkg/protocol" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager/mock" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" - "github.com/iotaledger/iota-core/pkg/storage" - "github.com/iotaledger/iota-core/pkg/testsuite" - mock2 "github.com/iotaledger/iota-core/pkg/testsuite/mock" - iotago "github.com/iotaledger/iota.go/v4" -) - -func TestProtocol_EngineRollbackFinalization(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThreshold(1), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(13), - testsuite.WithLatestCommitmentSlotIndex(14), - testsuite.WithEqualStoredCommitmentAtIndex(14), - testsuite.WithLatestCommitmentCumulativeWeight(48), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(14, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(14), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Index()) - require.EqualValues(t, 13, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) - - for epochIndex := 0; epochIndex <= 2; epochIndex++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch3, err := newEngine.Storage.Committee().Load(3) - require.NoError(t, err) - require.Nil(t, committeeEpoch3) - - for slotIndex := 1; slotIndex <= 13; slotIndex++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) - require.Error(t, err) - } -} - -func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThreshold(1), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - // Update online committee. - for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) - manualPOA.SetOnline("node0", "node1") - manualPOA.SetOffline("node2", "node3") - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(14), - testsuite.WithEqualStoredCommitmentAtIndex(14), - testsuite.WithLatestCommitmentCumulativeWeight(44), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(14, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), - testsuite.WithEvictedSlot(14), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Index()) - require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) - - for epochIndex := 0; epochIndex <= 2; epochIndex++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch3, err := newEngine.Storage.Committee().Load(3) - require.NoError(t, err) - require.Nil(t, committeeEpoch3) - - for slotIndex := 1; slotIndex <= 13; slotIndex++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) - require.Error(t, err) - } -} - -func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThreshold(1), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - // Update online committee. - for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) - manualPOA.SetOnline("node0", "node1") - manualPOA.SetOffline("node2", "node3") - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16, 17, 18, 19}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(17), - testsuite.WithEqualStoredCommitmentAtIndex(17), - testsuite.WithLatestCommitmentCumulativeWeight(50), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(17, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), - testsuite.WithEvictedSlot(17), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(15) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 15, newEngine.Storage.Settings().LatestCommitment().Index()) - require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 15, newEngine.EvictionState.LastEvictedSlot()) - - for epochIndex := 0; epochIndex <= 2; epochIndex++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch3, err := newEngine.Storage.Committee().Load(3) - require.NoError(t, err) - require.Nil(t, committeeEpoch3) - - for slotIndex := 1; slotIndex <= 15; slotIndex++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(16)) - require.Error(t, err) - } -} - -func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThreshold(1), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - // Update online committee. - for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) - manualPOA.SetOnline("node0", "node1") - manualPOA.SetOffline("node2", "node3") - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(13), - testsuite.WithEqualStoredCommitmentAtIndex(13), - testsuite.WithLatestCommitmentCumulativeWeight(42), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(13, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), - testsuite.WithEvictedSlot(13), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(9) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 9, newEngine.Storage.Settings().LatestCommitment().Index()) - require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 9, newEngine.EvictionState.LastEvictedSlot()) - - for epochIndex := 0; epochIndex <= 1; epochIndex++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch2, err := newEngine.Storage.Committee().Load(2) - require.NoError(t, err) - require.Nil(t, committeeEpoch2) - - for slotIndex := 1; slotIndex <= 9; slotIndex++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(10)) - require.Error(t, err) - } -} - -// TODO: test fork before point of no return (slot 12) -// TODO: test fork on last slot of an epoch (slot 15) +// +//import ( +// "fmt" +// "testing" +// "time" +// +// "github.com/stretchr/testify/require" +// +// "github.com/iotaledger/hive.go/core/eventticker" +// "github.com/iotaledger/hive.go/lo" +// "github.com/iotaledger/hive.go/runtime/module" +// "github.com/iotaledger/hive.go/runtime/options" +// "github.com/iotaledger/iota-core/pkg/core/account" +// "github.com/iotaledger/iota-core/pkg/protocol" +// "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" +// "github.com/iotaledger/iota-core/pkg/protocol/engine" +// "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" +// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager" +// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager/mock" +// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" +// "github.com/iotaledger/iota-core/pkg/storage" +// "github.com/iotaledger/iota-core/pkg/testsuite" +// mock2 "github.com/iotaledger/iota-core/pkg/testsuite/mock" +// iotago "github.com/iotaledger/iota.go/v4" +//) +// +//func TestProtocol_EngineRollbackFinalization(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThreshold(1), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(13), +// testsuite.WithLatestCommitmentSlotIndex(14), +// testsuite.WithEqualStoredCommitmentAtIndex(14), +// testsuite.WithLatestCommitmentCumulativeWeight(48), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(14, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(14), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Index()) +// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) +// +// for epochIndex := 0; epochIndex <= 2; epochIndex++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch3) +// +// for slotIndex := 1; slotIndex <= 13; slotIndex++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) +// require.Error(t, err) +// } +//} +// +//func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThreshold(1), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// expectedOnlineCommitteeHalf := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// // Update online committee. +// for _, node := range ts.Nodes() { +// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) +// manualPOA.SetOnline("node0", "node1") +// manualPOA.SetOffline("node2", "node3") +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(14), +// testsuite.WithEqualStoredCommitmentAtIndex(14), +// testsuite.WithLatestCommitmentCumulativeWeight(44), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(14, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), +// testsuite.WithEvictedSlot(14), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Index()) +// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) +// +// for epochIndex := 0; epochIndex <= 2; epochIndex++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch3) +// +// for slotIndex := 1; slotIndex <= 13; slotIndex++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) +// require.Error(t, err) +// } +//} +// +//func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThreshold(1), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// expectedOnlineCommitteeHalf := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// // Update online committee. +// for _, node := range ts.Nodes() { +// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) +// manualPOA.SetOnline("node0", "node1") +// manualPOA.SetOffline("node2", "node3") +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16, 17, 18, 19}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(17), +// testsuite.WithEqualStoredCommitmentAtIndex(17), +// testsuite.WithLatestCommitmentCumulativeWeight(50), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(17, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), +// testsuite.WithEvictedSlot(17), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(15) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 15, newEngine.Storage.Settings().LatestCommitment().Index()) +// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 15, newEngine.EvictionState.LastEvictedSlot()) +// +// for epochIndex := 0; epochIndex <= 2; epochIndex++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch3) +// +// for slotIndex := 1; slotIndex <= 15; slotIndex++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(16)) +// require.Error(t, err) +// } +//} +// +//func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThreshold(1), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// expectedOnlineCommitteeHalf := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// // Update online committee. +// for _, node := range ts.Nodes() { +// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) +// manualPOA.SetOnline("node0", "node1") +// manualPOA.SetOffline("node2", "node3") +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(13), +// testsuite.WithEqualStoredCommitmentAtIndex(13), +// testsuite.WithLatestCommitmentCumulativeWeight(42), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(13, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), +// testsuite.WithEvictedSlot(13), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(9) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 9, newEngine.Storage.Settings().LatestCommitment().Index()) +// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 9, newEngine.EvictionState.LastEvictedSlot()) +// +// for epochIndex := 0; epochIndex <= 1; epochIndex++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epochIndex)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch2, err := newEngine.Storage.Committee().Load(2) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch2) +// +// for slotIndex := 1; slotIndex <= 9; slotIndex++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slotIndex)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(10)) +// require.Error(t, err) +// } +//} +// +//// TODO: test fork before point of no return (slot 12) +//// TODO: test fork on last slot of an epoch (slot 15) diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index 8ec19e9fd..bff112f3f 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -8,13 +8,13 @@ replace github.com/iotaledger/iota-core/tools/genesis-snapshot => ../genesis-sna require ( github.com/AlecAivazis/survey/v2 v2.3.7 - github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 + github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230921110244-f4f25eb27e05 @@ -37,12 +37,13 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index 826933505..e9a51cd88 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -169,32 +169,34 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 h1:C8oOO8iHniK2yiQiphft8MXT/x97InWgUww+moQh2DU= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 h1:B1XC0lIs+Yz79HgytXN/y9qVDsbhp6N424GRE9W0YqE= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 h1:/GDTCmFXcjDabg8HwfYL78BsN0cfGyd2onhRPWqDY20= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 h1:5vyVnYnC6j1kvRrWrcgq2oLaBYomFvFHUq7R/7mC4Ns= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 h1:Rnor/2Bcy8luSAFO+HBRxoLzPtxJzpLZjRle4OSyjBA= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 h1:HIYMX4qEA8IqM02eOI2ZYVyn01zhCCvJ6YpMzf+P/RM= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 h1:N4Qpd7vCNhuFQ+Wg8k9gInVpHjqLlNrEfEVgYuC/aDs= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 h1:PBc7/OrBkfXV70odqXdGJzKqvImx/R46R65OO9RMRpw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 h1:OhsjldIlatxskIfpEXDyodi1RpV9w9aXUEit9uVLBs8= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 h1:qiCT8nQ1R67YUsp5Xmp0aK1/ggXehdu5VQ//9OYmCNQ= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 h1:XxDIaa6kzWxoQ1Hd22AQJpqhV6ySXO5ysGeI7QjVDCg= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 h1:VFBVUIvYn78TjG8Rjxvovud9KZjfVaS4qmfqAaTzJdI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 h1:ZGeNsbWhWzJMmomjX8UqZJ4493nZ7B4kN/wWUdnyltM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 h1:z0fEoRChNtzcXXDT9hgp+huFPQ95woj3ELvcbli3onE= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 h1:CMwjk8c4w1V9Sa1lbkzE2HJ7a6qRssJeoSY0a4r6v1c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 h1:xOKMuDJpCw/l6j4ErSDGbQeUBgHVvB6CyDFNMEeFAYg= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 h1:MwG8Va/s1Yfq7t2TM1ryRUDs57PFlfOEXHZpsqJoDYY= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 h1:dp1TsIluPYRgF27pirjg07Dy2GKl0SJ09rPNABAnb/s= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 h1:KouSXgbUi8jNcOIziyXYeI100ZluWPZOgosylgcuorg= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 h1:iMztR/DKbLThx8YJDINo1QcVHro3mYjXbR/8deaF2so= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 h1:8s/yUTnYm9qnkV+TtYFqeHGqFbBvUSuknZoktOGBADA= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 h1:BDjTbHY1SoV1VbD+8wkwQJ7qgdnn+06Ej2grC7Ewhbw= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 h1:cHirIu4irFBY7Vj+lZn9aPRCWHF68B5ffvYQJagOq9g= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 h1:R+YQ2gzJKnWu6gQM4Bu08f2sPV92fq1D0G8t1JG4loQ= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 h1:3/t+WtmCR1ReZaiwfSqXTb9hsJ87V/tHgIWZAhnx92I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 h1:eyjhY40ze7rByTuiFCUQytuHLe6+L32em74Pcl+XJXo= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 h1:bokn2GkH93w7+jpZ36nADCaNwYYfzbzLXZ3CCsx+8lM= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20230921110244-f4f25eb27e05 h1:arct4Q+cCFs6xaUS6lYt8hd1NFT+w1L5qoXGPC5ZYtU= github.com/iotaledger/iota.go/v4 v4.0.0-20230921110244-f4f25eb27e05/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index c289bf191..e7162be7b 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 + github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -18,7 +18,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect @@ -58,18 +57,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230919065227-618931c246c5 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230918132810-48814818bff9 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20230921110244-f4f25eb27e05 // indirect @@ -134,7 +134,6 @@ require ( github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pokt-network/smt v0.6.1 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/prometheus/client_golang v1.16.0 // indirect @@ -150,7 +149,6 @@ require ( github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.8.4 // indirect github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect @@ -180,6 +178,5 @@ require ( google.golang.org/grpc v1.57.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 322204e16..12029f1ac 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -279,34 +279,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 h1:C8oOO8iHniK2yiQiphft8MXT/x97InWgUww+moQh2DU= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140 h1:B1XC0lIs+Yz79HgytXN/y9qVDsbhp6N424GRE9W0YqE= -github.com/iotaledger/hive.go/app v0.0.0-20230912172434-dc477e1f5140/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 h1:z0fEoRChNtzcXXDT9hgp+huFPQ95woj3ELvcbli3onE= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893 h1:CMwjk8c4w1V9Sa1lbkzE2HJ7a6qRssJeoSY0a4r6v1c= +github.com/iotaledger/hive.go/app v0.0.0-20230920162359-e3bef5e25893/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 h1:/GDTCmFXcjDabg8HwfYL78BsN0cfGyd2onhRPWqDY20= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 h1:5vyVnYnC6j1kvRrWrcgq2oLaBYomFvFHUq7R/7mC4Ns= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 h1:Rnor/2Bcy8luSAFO+HBRxoLzPtxJzpLZjRle4OSyjBA= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 h1:HIYMX4qEA8IqM02eOI2ZYVyn01zhCCvJ6YpMzf+P/RM= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 h1:N4Qpd7vCNhuFQ+Wg8k9gInVpHjqLlNrEfEVgYuC/aDs= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 h1:PBc7/OrBkfXV70odqXdGJzKqvImx/R46R65OO9RMRpw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 h1:OhsjldIlatxskIfpEXDyodi1RpV9w9aXUEit9uVLBs8= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140 h1:qiCT8nQ1R67YUsp5Xmp0aK1/ggXehdu5VQ//9OYmCNQ= -github.com/iotaledger/hive.go/logger v0.0.0-20230912172434-dc477e1f5140/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 h1:XxDIaa6kzWxoQ1Hd22AQJpqhV6ySXO5ysGeI7QjVDCg= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 h1:VFBVUIvYn78TjG8Rjxvovud9KZjfVaS4qmfqAaTzJdI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 h1:ZGeNsbWhWzJMmomjX8UqZJ4493nZ7B4kN/wWUdnyltM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 h1:xOKMuDJpCw/l6j4ErSDGbQeUBgHVvB6CyDFNMEeFAYg= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 h1:MwG8Va/s1Yfq7t2TM1ryRUDs57PFlfOEXHZpsqJoDYY= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 h1:dp1TsIluPYRgF27pirjg07Dy2GKl0SJ09rPNABAnb/s= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 h1:KouSXgbUi8jNcOIziyXYeI100ZluWPZOgosylgcuorg= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 h1:iMztR/DKbLThx8YJDINo1QcVHro3mYjXbR/8deaF2so= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 h1:8s/yUTnYm9qnkV+TtYFqeHGqFbBvUSuknZoktOGBADA= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 h1:BDjTbHY1SoV1VbD+8wkwQJ7qgdnn+06Ej2grC7Ewhbw= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 h1:cHirIu4irFBY7Vj+lZn9aPRCWHF68B5ffvYQJagOq9g= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 h1:R+YQ2gzJKnWu6gQM4Bu08f2sPV92fq1D0G8t1JG4loQ= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 h1:3/t+WtmCR1ReZaiwfSqXTb9hsJ87V/tHgIWZAhnx92I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 h1:eyjhY40ze7rByTuiFCUQytuHLe6+L32em74Pcl+XJXo= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 h1:bokn2GkH93w7+jpZ36nADCaNwYYfzbzLXZ3CCsx+8lM= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230919065227-618931c246c5 h1:7GuYO/SI/mZnXwv7QBYwn2NWjr4OF/Re+aSzmwx+CT0= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230919065227-618931c246c5/go.mod h1:luLlwdZT26MqUWBbiEOYxBwYLVrfz+65D+Tme84+Slw= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230918132810-48814818bff9 h1:BJb6+fF7zTyrbKQY3JG1Hiw6klONR4anwCFOcNdWu9o= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 9ce97cc49..33e3fc95a 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 - github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 + github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 + github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230921110244-f4f25eb27e05 github.com/mr-tron/base58 v1.2.0 @@ -27,13 +27,15 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect @@ -59,6 +61,8 @@ require ( github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98 // indirect github.com/zyedidia/generic v1.2.1 // indirect go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/sys v0.12.0 // indirect google.golang.org/protobuf v1.31.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 5b94ba95f..5d420a178 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,28 +28,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2 h1:C8oOO8iHniK2yiQiphft8MXT/x97InWgUww+moQh2DU= -github.com/iotaledger/hive.go/ads v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140 h1:/GDTCmFXcjDabg8HwfYL78BsN0cfGyd2onhRPWqDY20= -github.com/iotaledger/hive.go/constraints v0.0.0-20230912172434-dc477e1f5140/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140 h1:5vyVnYnC6j1kvRrWrcgq2oLaBYomFvFHUq7R/7mC4Ns= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230912172434-dc477e1f5140/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140 h1:Rnor/2Bcy8luSAFO+HBRxoLzPtxJzpLZjRle4OSyjBA= -github.com/iotaledger/hive.go/crypto v0.0.0-20230912172434-dc477e1f5140/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140 h1:HIYMX4qEA8IqM02eOI2ZYVyn01zhCCvJ6YpMzf+P/RM= -github.com/iotaledger/hive.go/ds v0.0.0-20230912172434-dc477e1f5140/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140 h1:N4Qpd7vCNhuFQ+Wg8k9gInVpHjqLlNrEfEVgYuC/aDs= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230912172434-dc477e1f5140/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2 h1:PBc7/OrBkfXV70odqXdGJzKqvImx/R46R65OO9RMRpw= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230906114834-b50190b9f9c2/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140 h1:OhsjldIlatxskIfpEXDyodi1RpV9w9aXUEit9uVLBs8= -github.com/iotaledger/hive.go/lo v0.0.0-20230912172434-dc477e1f5140/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140 h1:XxDIaa6kzWxoQ1Hd22AQJpqhV6ySXO5ysGeI7QjVDCg= -github.com/iotaledger/hive.go/runtime v0.0.0-20230912172434-dc477e1f5140/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140 h1:VFBVUIvYn78TjG8Rjxvovud9KZjfVaS4qmfqAaTzJdI= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230912172434-dc477e1f5140/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140 h1:ZGeNsbWhWzJMmomjX8UqZJ4493nZ7B4kN/wWUdnyltM= -github.com/iotaledger/hive.go/stringify v0.0.0-20230912172434-dc477e1f5140/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893 h1:z0fEoRChNtzcXXDT9hgp+huFPQ95woj3ELvcbli3onE= +github.com/iotaledger/hive.go/ads v0.0.0-20230920162359-e3bef5e25893/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893 h1:xOKMuDJpCw/l6j4ErSDGbQeUBgHVvB6CyDFNMEeFAYg= +github.com/iotaledger/hive.go/constraints v0.0.0-20230920162359-e3bef5e25893/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893 h1:MwG8Va/s1Yfq7t2TM1ryRUDs57PFlfOEXHZpsqJoDYY= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230920162359-e3bef5e25893/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893 h1:dp1TsIluPYRgF27pirjg07Dy2GKl0SJ09rPNABAnb/s= +github.com/iotaledger/hive.go/crypto v0.0.0-20230920162359-e3bef5e25893/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893 h1:KouSXgbUi8jNcOIziyXYeI100ZluWPZOgosylgcuorg= +github.com/iotaledger/hive.go/ds v0.0.0-20230920162359-e3bef5e25893/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893 h1:iMztR/DKbLThx8YJDINo1QcVHro3mYjXbR/8deaF2so= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230920162359-e3bef5e25893/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893 h1:8s/yUTnYm9qnkV+TtYFqeHGqFbBvUSuknZoktOGBADA= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230920162359-e3bef5e25893/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893 h1:BDjTbHY1SoV1VbD+8wkwQJ7qgdnn+06Ej2grC7Ewhbw= +github.com/iotaledger/hive.go/lo v0.0.0-20230920162359-e3bef5e25893/go.mod h1:/LERu5vqcessCqr40Wxmbx4x0bbymsK7GuL+TK/ckKo= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893 h1:cHirIu4irFBY7Vj+lZn9aPRCWHF68B5ffvYQJagOq9g= +github.com/iotaledger/hive.go/log v0.0.0-20230920162359-e3bef5e25893/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893 h1:R+YQ2gzJKnWu6gQM4Bu08f2sPV92fq1D0G8t1JG4loQ= +github.com/iotaledger/hive.go/logger v0.0.0-20230920162359-e3bef5e25893/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893 h1:3/t+WtmCR1ReZaiwfSqXTb9hsJ87V/tHgIWZAhnx92I= +github.com/iotaledger/hive.go/runtime v0.0.0-20230920162359-e3bef5e25893/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893 h1:eyjhY40ze7rByTuiFCUQytuHLe6+L32em74Pcl+XJXo= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230920162359-e3bef5e25893/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893 h1:bokn2GkH93w7+jpZ36nADCaNwYYfzbzLXZ3CCsx+8lM= +github.com/iotaledger/hive.go/stringify v0.0.0-20230920162359-e3bef5e25893/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20230921110244-f4f25eb27e05 h1:arct4Q+cCFs6xaUS6lYt8hd1NFT+w1L5qoXGPC5ZYtU= github.com/iotaledger/iota.go/v4 v4.0.0-20230921110244-f4f25eb27e05/go.mod h1:DWCa+mXRTGWBV0EHVuvToUxAEcICe2Pab9hBlxBamKo= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= @@ -109,6 +113,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -120,6 +125,12 @@ github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XD github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= From eabdd2fe6c778c512406a5f0d102f644627c41a6 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 21 Sep 2023 13:58:00 +0200 Subject: [PATCH 139/356] Fix: fixed some issues --- components/protocol/component.go | 4 ++-- pkg/protocol/chains.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/components/protocol/component.go b/components/protocol/component.go index 90253f9f7..872d41dbf 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -11,9 +11,9 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/app" - "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ierrors" hivedb "github.com/iotaledger/hive.go/kvstore/database" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/core/account" "github.com/iotaledger/iota-core/pkg/daemon" @@ -140,7 +140,7 @@ func provide(c *dig.Container) error { } return protocol.New( - reactive.NewLogger("node"), + log.NewLogger("node"), workerpool.NewGroup("Protocol"), deps.P2PManager, protocol.WithBaseDirectory(ParamsDatabase.Path), diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 3ebc25ef1..55fa99b73 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -135,8 +135,8 @@ func (c *Chains) initMainChain() { } func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { - c.requestCommitment(commitment.PrevID(), true, lo.Void(commitment.Parent.Set)).OnError(func(err error) { - c.protocol.LogDebug("failed to request previous commitment", "prevId", commitment.PrevID(), "error", err) + c.requestCommitment(commitment.PreviousCommitmentID(), true, lo.Void(commitment.Parent.Set)).OnError(func(err error) { + c.protocol.LogDebug("failed to request previous commitment", "prevId", commitment.PreviousCommitmentID(), "error", err) }) slotEvictedEvent.OnTrigger(func() { From 1b53d630de130d867f1c5885ec3ca9e2151d14bb Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 23 Sep 2023 04:05:45 +0200 Subject: [PATCH 140/356] Feat: WIP WIP --- pkg/protocol/chain.go | 92 +++++++- pkg/protocol/chains.go | 49 ++-- pkg/protocol/commitment.go | 25 +- pkg/protocol/engine/committed_slot_api.go | 2 + pkg/protocol/network.go | 276 ++++++++++++---------- pkg/testsuite/mock/node.go | 104 ++++---- 6 files changed, 321 insertions(+), 227 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 1bb840624..fc91d9493 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -1,16 +1,27 @@ package protocol import ( + "fmt" + "time" + + "github.com/libp2p/go-libp2p/core/peer" + "go.uber.org/atomic" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/hive.go/runtime/debug" + "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" ) type Chain struct { ForkingPoint reactive.Variable[*Commitment] + ParentChain reactive.Variable[*Chain] + ChildChains reactive.Set[*Chain] LatestCommitment reactive.Variable[*Commitment] LatestAttestedCommitment reactive.Variable[*Commitment] LatestVerifiedCommitment reactive.Variable[*Commitment] @@ -27,7 +38,7 @@ type Chain struct { commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] parentEngine reactive.Variable[*engine.Engine] - spawnedEngine reactive.Variable[*engine.Engine] + SpawnedEngine reactive.Variable[*engine.Engine] log.Logger } @@ -35,6 +46,8 @@ type Chain struct { func NewChain(logger log.Logger) *Chain { c := &Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), + ParentChain: reactive.NewVariable[*Chain](), + ChildChains: reactive.NewSet[*Chain](), LatestCommitment: reactive.NewVariable[*Commitment](), LatestAttestedCommitment: reactive.NewVariable[*Commitment](), LatestVerifiedCommitment: reactive.NewVariable[*Commitment](), @@ -44,7 +57,7 @@ func NewChain(logger log.Logger) *Chain { commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), parentEngine: reactive.NewVariable[*engine.Engine](), InstantiateEngine: reactive.NewVariable[bool](), - spawnedEngine: reactive.NewVariable[*engine.Engine](), + SpawnedEngine: reactive.NewVariable[*engine.Engine](), } c.ClaimedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestCommitment) @@ -59,13 +72,17 @@ func NewChain(logger log.Logger) *Chain { return latestCommitment.Index() - WarpSyncOffset }, c.LatestCommitment) - c.SyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestVerifiedCommitment *Commitment) iotago.SlotIndex { - if latestVerifiedCommitment == nil { + c.SyncThreshold = reactive.NewDerivedVariable2[iotago.SlotIndex](func(forkingPoint, latestVerifiedCommitment *Commitment) iotago.SlotIndex { + if forkingPoint == nil { return SyncWindow + 1 } + if latestVerifiedCommitment == nil { + return forkingPoint.Index() + SyncWindow + 1 + } + return latestVerifiedCommitment.Index() + SyncWindow + 1 - }, c.LatestVerifiedCommitment) + }, c.ForkingPoint, c.LatestVerifiedCommitment) c.Engine = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { if spawnedEngine != nil { @@ -73,13 +90,26 @@ func NewChain(logger log.Logger) *Chain { } return parentEngine - }, c.spawnedEngine, c.parentEngine) + }, c.SpawnedEngine, c.parentEngine) + + c.ParentChain.OnUpdate(func(prevParent, newParent *Chain) { + if prevParent != nil { + prevParent.ChildChains.Delete(c) + } + + if newParent != nil { + newParent.ChildChains.Add(c) + } + }) - c.ForkingPoint.OnUpdateWithContext(func(_, forkingPoint *Commitment, withinContext func(subscriptionFactory func() (unsubscribe func()))) { - withinContext(func() func() { + c.ForkingPoint.OnUpdateWithContext(func(_, forkingPoint *Commitment, forkingPointContext func(subscriptionFactory func() (unsubscribe func()))) { + forkingPointContext(func() func() { return forkingPoint.Parent.OnUpdate(func(_, parent *Commitment) { - withinContext(func() func() { - return c.parentEngine.InheritFrom(parent.Engine) + forkingPointContext(func() func() { + return lo.Batch( + c.ParentChain.InheritFrom(parent.Chain), + c.parentEngine.InheritFrom(parent.Engine), + ) }) }) }) @@ -93,6 +123,7 @@ func NewChain(logger log.Logger) *Chain { c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") c.VerifiedWeight.LogUpdates(entityLogger, log.LevelTrace, "VerifiedWeight") c.LatestCommitment.LogUpdates(entityLogger, log.LevelDebug, "LatestCommitment", (*Commitment).LogName) + c.LatestVerifiedCommitment.LogUpdates(entityLogger, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName) c.RequestAttestations.LogUpdates(entityLogger, log.LevelDebug, "RequestAttestations") c.InstantiateEngine.LogUpdates(entityLogger, log.LevelDebug, "InstantiateEngine") }) @@ -122,12 +153,31 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exis return nil, false } +func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (err error) { + if !c.InSyncRange(block.ID().Index()) { + return ierrors.Errorf("received block is not in sync range of %s", c.LogName()) + } + + engine := c.SpawnedEngine.Get() + if engine == nil { + return ierrors.Errorf("received block for %s without engine", c.LogName()) + } + + engine.ProcessBlockFromPeer(block, src) + + c.LogTrace("dispatched block", "block", block.ID(), "src", src) + + return nil +} + func (c *Chain) InSyncRange(index iotago.SlotIndex) bool { if latestVerifiedCommitment := c.LatestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { return index > c.LatestVerifiedCommitment.Get().Index() && index < c.SyncThreshold.Get() } - return false + forkingPoint := c.ForkingPoint.Get() + + return forkingPoint != nil && (index > forkingPoint.Index()-1 && index < c.SyncThreshold.Get()) } func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { @@ -144,11 +194,29 @@ func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { c.LatestCommitment.Compute(maxCommitment) + var triggered atomic.Int64 + + stackTrace := debug.StackTrace(false, 0) + + go func() { + time.Sleep(5 * time.Second) + + if triggered.Load() == 0 { + c.LogError("commitment not triggered after 2 seconds", "index", commitment.Index()) + + fmt.Println(stackTrace) + } + }() + unsubscribe := lo.Batch( - commitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Compute(maxCommitment) }), + commitment.IsAttested.OnTrigger(func() { + c.LatestAttestedCommitment.Compute(maxCommitment) + }), commitment.IsVerified.OnTrigger(func() { c.LatestVerifiedCommitment.Compute(maxCommitment) }), ) + triggered.Store(1) + return func() { unsubscribe() diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 55fa99b73..507d57af9 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -89,17 +89,18 @@ func newChains(protocol *Protocol) *Chains { return c } -func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment, err error) { +func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment, published bool, err error) { request := c.requestCommitment(commitment.ID(), false) if request.WasRejected() { - return nil, ierrors.Wrapf(request.Err(), "failed to request commitment %s", commitment.ID()) + return nil, false, ierrors.Wrapf(request.Err(), "failed to request commitment %s", commitment.ID()) } - request.Resolve(NewCommitment(commitment, c.protocol.Logger)).OnSuccess(func(resolvedMetadata *Commitment) { + publishedCommitmentMetadata := NewCommitment(commitment, c.protocol.Logger) + request.Resolve(publishedCommitmentMetadata).OnSuccess(func(resolvedMetadata *Commitment) { commitmentMetadata = resolvedMetadata }) - return commitmentMetadata, nil + return commitmentMetadata, commitmentMetadata == publishedCommitmentMetadata, nil } func (c *Chains) Commitment(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { @@ -143,13 +144,13 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti commitment.IsEvicted.Trigger() }) - c.CommitmentCreated.Trigger(commitment) - commitment.SpawnedChain.OnUpdate(func(_, newChain *Chain) { if newChain != nil { c.ChainCreated.Trigger(newChain) } }) + + c.CommitmentCreated.Trigger(commitment) } func (c *Chains) initChainSwitching() { @@ -166,7 +167,7 @@ func (c *Chains) initChainSwitching() { prevCandidate.InstantiateEngine.Set(false) } - newCandidate.InstantiateEngine.Set(true) + go newCandidate.InstantiateEngine.Set(true) }) c.ChainCreated.Hook(func(chain *Chain) { @@ -187,7 +188,7 @@ func (c *Chains) initChainSwitching() { func (c *Chains) provideEngineIfRequested(chain *Chain) func() { return chain.InstantiateEngine.OnUpdate(func(_, instantiate bool) { if !instantiate { - chain.spawnedEngine.Set(nil) + chain.SpawnedEngine.Set(nil) return } @@ -198,13 +199,15 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { panic(fmt.Sprintf("could not load active engine: %s", err)) } - c.protocol.LogDebug("engine started", "chain", chain.LogName(), "root", mainEngine.RootCommitment.Get().ID()) - - chain.spawnedEngine.Set(mainEngine) + chain.SpawnedEngine.Set(mainEngine) c.protocol.Network.HookStopped(mainEngine.Shutdown) } else { - snapshotTargetIndex := chain.ForkingPoint.Get().Index() - 1 + forkingPoint := chain.ForkingPoint.Get() + snapshotTargetIndex := forkingPoint.Index() - 1 + + fmt.Println("snapshotTargetIndex", snapshotTargetIndex) + candidateEngineInstance, err := c.engineManager.ForkEngineAtSlot(snapshotTargetIndex) if err != nil { panic(ierrors.Wrap(err, "error creating new candidate engine")) @@ -212,7 +215,7 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { return } - chain.spawnedEngine.Set(candidateEngineInstance) + chain.SpawnedEngine.Set(candidateEngineInstance) c.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) } @@ -260,13 +263,13 @@ func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFrom } func (c *Chains) publishEngineCommitments(chain *Chain) { - chain.spawnedEngine.OnUpdateWithContext(func(_, engine *engine.Engine, withinContext func(subscriptionFactory func() (unsubscribe func()))) { + chain.SpawnedEngine.OnUpdateWithContext(func(_, engine *engine.Engine, withinContext func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { withinContext(func() (unsubscribe func()) { var latestPublishedIndex iotago.SlotIndex - publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment) { - publishedCommitment, err := c.PublishCommitment(commitment) + publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment, published bool) { + publishedCommitment, published, err := c.PublishCommitment(commitment) if err != nil { panic(err) // this can never happen, but we panic to get a stack trace if it ever does } @@ -278,18 +281,12 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { latestPublishedIndex = commitment.Index() - return publishedCommitment + return publishedCommitment, published } - chain.ForkingPoint.Compute(func(currentValue *Commitment) *Commitment { - if currentValue != nil { - latestPublishedIndex = currentValue.Index() - - return currentValue - } - - return publishCommitment(engine.RootCommitment.Get()) - }) + if rootCommitment, published := publishCommitment(engine.RootCommitment.Get()); published { + chain.ForkingPoint.Set(rootCommitment) + } return engine.LatestCommitment.OnUpdate(func(_, latestModelCommitment *model.Commitment) { if latestModelCommitment == nil { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index a57d30f21..b6e24273e 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -1,6 +1,8 @@ package protocol import ( + "fmt" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" @@ -19,8 +21,9 @@ type Commitment struct { Chain reactive.Variable[*Chain] Engine reactive.Variable[*engine.Engine] InSyncRange reactive.Variable[bool] - WarpSyncBlocks reactive.Variable[bool] RequestAttestations reactive.Variable[bool] + RequestBlocks reactive.Variable[bool] + RequestedBlocksReceived reactive.Variable[bool] Weight reactive.Variable[uint64] AttestedWeight reactive.Variable[uint64] CumulativeAttestedWeight reactive.Variable[uint64] @@ -50,6 +53,8 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment Chain: reactive.NewVariable[*Chain](), Engine: reactive.NewVariable[*engine.Engine](), RequestAttestations: reactive.NewVariable[bool](), + RequestBlocks: reactive.NewVariable[bool](), + RequestedBlocksReceived: reactive.NewVariable[bool](), Weight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](func(current uint64, new uint64) uint64 { return max(current, new) }), CumulativeAttestedWeight: reactive.NewVariable[uint64](), @@ -101,6 +106,10 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment }) c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { + if chain == nil { + return + } + withinContext(func() (unsubscribe func()) { requestAttestations := reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { return requestAttestations && isDirectlyAboveLatestAttestedCommitment @@ -111,9 +120,11 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment return lo.Batch( chain.registerCommitment(c), - chain.Engine.OnUpdate(func(_, chainEngine *engine.Engine) { - c.Engine.Set(chainEngine) - }), + c.Engine.InheritFrom(chain.Engine), + + c.RequestBlocks.InheritFrom(reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, inSyncWindow, belowWarpSyncThreshold bool) bool { + return spawnedEngine != nil && inSyncWindow && belowWarpSyncThreshold + }, chain.SpawnedEngine, c.InSyncRange, c.isBelowWarpSyncThreshold)), requestAttestations.Unsubscribe, ) @@ -124,10 +135,6 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment return aboveLatestVerifiedCommitment && belowSyncThreshold }, c.isAboveLatestVerifiedCommitment, c.isBelowSyncThreshold) - c.WarpSyncBlocks = reactive.NewDerivedVariable2(func(inSyncWindow, belowWarpSyncThreshold bool) bool { - return inSyncWindow && belowWarpSyncThreshold - }, c.InSyncRange, c.isBelowWarpSyncThreshold) - c.IsRoot.OnTrigger(func() { c.IsSolid.Set(true) c.IsAttested.Set(true) @@ -136,7 +143,7 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment c.isBelowSyncThreshold.Set(true) }) - c.Logger = logger.NewEntityLogger("Commitment", c.IsEvicted, func(entityLogger log.Logger) { + c.Logger = logger.NewEntityLogger(fmt.Sprintf("Slot%d.Commitment", commitment.Index()), c.IsEvicted, func(entityLogger log.Logger) { c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") diff --git a/pkg/protocol/engine/committed_slot_api.go b/pkg/protocol/engine/committed_slot_api.go index 1efe5ec31..34c1ee736 100644 --- a/pkg/protocol/engine/committed_slot_api.go +++ b/pkg/protocol/engine/committed_slot_api.go @@ -46,6 +46,8 @@ func (c *CommittedSlotAPI) Roots() (committedRoots *iotago.Roots, err error) { roots, err := rootsStorage.Load(c.CommitmentID) if err != nil { return nil, ierrors.Wrapf(err, "failed to load roots for slot %d", c.CommitmentID) + } else if roots == nil { + return nil, ierrors.Errorf("roots for slot %d are not known, yet", c.CommitmentID) } return roots, nil diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index b06737e35..69b39ddcc 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -36,8 +36,6 @@ type Network struct { blockRequested *event.Event2[iotago.BlockID, *engine.Engine] commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] - log.Logger - module.Module } @@ -55,14 +53,6 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), } - n.Logger = func() log.Logger { - logger, shutdownLogger := protocol.Logger.NewChildLogger("Gossip") - - protocol.HookShutdown(shutdownLogger) - - return logger - }() - n.TriggerConstructed() n.startBlockRequester() @@ -81,7 +71,7 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { protocol.HookInitialized(func() { n.OnError(func(err error, peer peer.ID) { - n.LogError("network error", "peer", peer, "error", err) + n.protocol.LogError("network error", "peer", peer, "error", err) }) unsubscribeFromNetworkEvents = lo.Batch( @@ -94,15 +84,15 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { n.OnWarpSyncResponseReceived(n.ProcessWarpSyncResponse), n.OnWarpSyncRequestReceived(n.ProcessWarpSyncRequest), - n.warpSyncRequester.Events.Tick.Hook(func(id iotago.CommitmentID) { - n.LogDebug("request warp sync", "commitmentID", id) - - n.SendWarpSyncRequest(id) - }).Unhook, + n.warpSyncRequester.Events.Tick.Hook(n.SendWarpSyncRequest).Unhook, n.OnSendBlock(func(block *model.Block) { n.SendBlock(block) }), - n.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { n.RequestBlock(blockID) }), + n.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { + n.protocol.LogDebug("block requested", "blockID", blockID, "engine", engine.Name()) + + n.RequestBlock(blockID) + }), n.OnCommitmentRequested(func(id iotago.CommitmentID) { - n.LogInfo("commitment requested", "commitmentID", id) + n.protocol.LogInfo("commitment requested", "commitmentID", id) n.RequestSlotCommitment(id) }), @@ -125,6 +115,12 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { return n } +func (n *Network) SendWarpSyncRequest(id iotago.CommitmentID) { + n.protocol.LogDebug("request warp sync", "commitmentID", id) + + n.Protocol.SendWarpSyncRequest(id) +} + func (n *Network) IssueBlock(block *model.Block) error { n.protocol.MainEngineInstance().ProcessBlockFromPeer(block, "self") @@ -132,92 +128,102 @@ func (n *Network) IssueBlock(block *model.Block) error { } func (n *Network) ProcessReceivedBlock(block *model.Block, src peer.ID) { - n.processTask("received block", func() (err error, logLevel log.Level) { + n.processTask("received block", func() (logLevel log.Level, err error) { + logLevel = log.LevelTrace + commitmentRequest := n.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) if !commitmentRequest.WasCompleted() { - return ierrors.Errorf("UNSOLID COMMITMENT WITH %s", block.ProtocolBlock().SlotCommitmentID), log.LevelDebug + return logLevel, ierrors.Errorf("referenced commitment %s unknown", block.ProtocolBlock().SlotCommitmentID) } if commitmentRequest.WasRejected() { - return commitmentRequest.Err(), log.LevelDebug + return logLevel, commitmentRequest.Err() } - commitment := commitmentRequest.Result() - chain := commitment.Chain.Get() - - if chain == nil { - return ierrors.Errorf("UNSOLID CHAIN FOR %s", block.ProtocolBlock().SlotCommitmentID), log.LevelDebug - } - - if !chain.InSyncRange(block.ID().Index()) { - return ierrors.Errorf("NOT IN SYNC RANGE %s", block.ProtocolBlock().SlotCommitmentID), log.LevelDebug + referencedCommitment := commitmentRequest.Result() + dispatchBlockToChain := func(chain *Chain) { + if err = chain.DispatchBlock(block, src); err != nil { + chain.Log("failed to dispatch block", logLevel, "blockID", block.ID(), "referencedCommitment", referencedCommitment.LogName(), "peer", src, "error", err) + } else { + chain.Log("dispatched block", logLevel, "blockID", block.ID(), "referencedCommitment", referencedCommitment.LogName(), "peer", src) + } } - engine := commitment.Engine.Get() - if engine == nil { - return ierrors.Errorf("ENGINE NOT KNOWN FOR %s", block.ProtocolBlock().SlotCommitmentID), log.LevelDebug + if chain := referencedCommitment.Chain.Get(); chain != nil { + dispatchBlockToChain(chain) + chain.ChildChains.Range(dispatchBlockToChain) } - engine.ProcessBlockFromPeer(block, src) - - return nil, log.LevelTrace - }) + return logLevel, nil + }, "blockID", block.ID(), "peer", src) } func (n *Network) ProcessBlockRequest(blockID iotago.BlockID, src peer.ID) { - if block, exists := n.protocol.MainEngineInstance().Block(blockID); !exists { - n.LogDebug("failed to load requested block", "blockID", blockID, "peer", src) - } else { + n.processTask("block request", func() (logLevel log.Level, err error) { + block, exists := n.protocol.MainEngineInstance().Block(blockID) + if !exists { + return log.LevelTrace, ierrors.Errorf("requested block %s not found", blockID) + } + n.protocol.SendBlock(block, src) - } + + return log.LevelTrace, nil + }, "blockID", blockID, "peer", src) } -func (n *Network) ProcessCommitment(commitmentModel *model.Commitment, src peer.ID) { - if _, err := n.protocol.PublishCommitment(commitmentModel); err != nil { - n.LogDebug("failed to publish commitment", "commitmentID", commitmentModel.ID(), "peer", src) - } else { - n.LogDebug("successfully published commitment", "commitmentID", commitmentModel.ID(), "peer", src) - } +func (n *Network) ProcessCommitment(commitmentModel *model.Commitment, peer peer.ID) { + n.processTask("commitment", func() (logLevel log.Level, err error) { + _, published, err := n.protocol.PublishCommitment(commitmentModel) + if err != nil { + return log.LevelError, ierrors.Wrapf(err, "failed to publish commitment") + } + + if !published { + return log.LevelTrace, ierrors.New("commitment published previously") + } + + return log.LevelDebug, nil + }, "commitmentID", commitmentModel.ID(), "peer", peer) } func (n *Network) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src peer.ID) { - n.LogTrace("commitment request received", "commitmentID", commitmentID, "peer", src) + n.protocol.LogTrace("commitment request received", "commitmentID", commitmentID, "peer", src) if commitment, err := n.protocol.Commitment(commitmentID); err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { - n.LogDebug("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) + n.protocol.LogDebug("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) } else { - n.LogTrace("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) + n.protocol.LogTrace("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) } } else { - n.LogDebug("sending commitment", "commitmentID", commitmentID, "peer", src) + n.protocol.LogTrace("sending commitment", "commitmentID", commitmentID, "peer", src) n.protocol.SendSlotCommitment(commitment.Commitment, src) } } func (n *Network) ProcessAttestations(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { - commitment, err := n.protocol.PublishCommitment(commitmentModel) + commitment, _, err := n.protocol.PublishCommitment(commitmentModel) if err != nil { - n.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", source, "error", err) + n.protocol.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", source, "error", err) return } chain := commitment.Chain.Get() if chain == nil { - n.LogDebug("failed to find chain for commitment when processing attestations", "commitmentID", commitmentModel.ID()) + n.protocol.LogDebug("failed to find chain for commitment when processing attestations", "commitmentID", commitmentModel.ID()) return } commitmentVerifier, exists := n.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) if !exists { - n.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitmentID", commitmentModel.ID()) + n.protocol.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitmentID", commitmentModel.ID()) return } _, actualWeight, err := commitmentVerifier.verifyCommitment(commitment, attestations, merkleProof) if err != nil { - n.LogError("failed to verify commitment when processing attestations", "commitmentID", commitmentModel.ID(), "error", err) + n.protocol.LogError("failed to verify commitment when processing attestations", "commitmentID", commitmentModel.ID(), "error", err) return } @@ -226,129 +232,139 @@ func (n *Network) ProcessAttestations(commitmentModel *model.Commitment, attesta } func (n *Network) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) { - mainEngine := n.protocol.MainEngineInstance() + n.processTask("attestations request", func() (logLevel log.Level, err error) { + mainEngine := n.protocol.MainEngineInstance() - if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { - n.LogDebug("requested commitment is not verified, yet", "commitmentID", commitmentID) - - return - } - - commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Index()) - if err != nil { - if ierrors.Is(err, kvstore.ErrKeyNotFound) { - n.LogDebug("failed to load commitment", "commitmentID", commitmentID) - } else { - n.LogError("failed to load commitment", "commitmentID", commitmentID) - panic("here4") + if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { + return log.LevelTrace, ierrors.New("requested commitment is not verified, yet") } - return - } + commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Index()) + if err != nil { + return lo.Cond(ierrors.Is(err, kvstore.ErrKeyNotFound), log.LevelTrace, log.LevelError), ierrors.Wrapf(err, "failed to load commitment") + } - if commitment.ID() != commitmentID { - n.LogTrace("requested commitment does not belong to main engine", "requestedCommitmentID", commitmentID, "mainEngineCommitmentID", commitment.ID()) - return - } + if commitment.ID() != commitmentID { + return log.LevelTrace, ierrors.Errorf("requested commitment %s does not match main engine commitment %s", commitmentID, commitment.ID()) + } - attestations, err := mainEngine.Attestations.Get(commitmentID.Index()) - if err != nil { - n.LogError("failed to load attestations", "commitmentID", commitmentID, "error", err) - panic("here") - return - } + attestations, err := mainEngine.Attestations.Get(commitmentID.Index()) + if err != nil { + return log.LevelError, ierrors.Wrapf(err, "failed to load attestations") + } - rootsStorage, err := mainEngine.Storage.Roots(commitmentID.Index()) - if err != nil { - n.LogError("failed to load roots", "commitmentID", commitmentID, "error", err) - panic("here1") - return - } + rootsStorage, err := mainEngine.Storage.Roots(commitmentID.Index()) + if err != nil { + return log.LevelError, ierrors.Wrapf(err, "failed to load roots") + } - roots, err := rootsStorage.Load(commitmentID) - if err != nil { - n.LogError("failed to load roots", "commitmentID", commitmentID, "error", err) - panic("here2") - return - } + roots, err := rootsStorage.Load(commitmentID) + if err != nil { + return log.LevelError, ierrors.Wrapf(err, "failed to load roots") + } - n.protocol.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) + return log.LevelDebug, n.protocol.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) + }, "commitmentID", commitmentID, "peer", src) } func (n *Network) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], peer peer.ID) { - n.processTask("warp sync response", func() (err error, logLevel log.Level) { + n.processTask("warp sync response", func() (logLevel log.Level, err error) { + logLevel = log.LevelTrace + chainCommitment, err := n.protocol.Commitment(commitmentID) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { - return ierrors.Wrapf(err, "unexpected error when loading commitment"), log.LevelError + logLevel = log.LevelError } - return ierrors.Wrapf(err, "warp sync response for unknown commitment"), log.LevelDebug - } - - if !chainCommitment.WarpSyncBlocks.Get() { - return ierrors.New("warp sync not requested"), log.LevelDebug + return logLevel, ierrors.Wrapf(err, "failed to get commitment") } targetEngine := chainCommitment.Engine.Get() if targetEngine == nil { - return ierrors.New("failed to get engine"), log.LevelDebug + return log.LevelDebug, ierrors.New("failed to get target engine") } - acceptedBlocks := ads.NewSet[iotago.BlockID](mapdb.NewMapDB(), iotago.BlockID.Bytes, iotago.SlotIdentifierFromBytes) - for _, blockID := range blockIDs { - _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error - } + chainCommitment.RequestedBlocksReceived.Compute(func(requestedBlocksReceived bool) bool { + if requestedBlocksReceived || !chainCommitment.RequestBlocks.Get() { + err = ierrors.New("warp sync not requested") + return requestedBlocksReceived + } - if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), chainCommitment.RootsID()) { - return ierrors.New("failed to verify merkle proof"), log.LevelError - } + acceptedBlocks := ads.NewSet[iotago.BlockID](mapdb.NewMapDB(), iotago.BlockID.Bytes, iotago.SlotIdentifierFromBytes) + for _, blockID := range blockIDs { + _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error + } + + if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), chainCommitment.RootsID()) { + logLevel, err = log.LevelError, ierrors.New("failed to verify merkle proof") + return false + } - n.warpSyncRequester.StopTicker(commitmentID) + n.warpSyncRequester.StopTicker(commitmentID) - for _, blockID := range blockIDs { - targetEngine.BlockDAG.GetOrRequestBlock(blockID) - } + for _, blockID := range blockIDs { + targetEngine.BlockDAG.GetOrRequestBlock(blockID) + } - return nil, log.LevelDebug + logLevel = log.LevelDebug + + return true + }) + + return logLevel, err }, "commitmentID", commitmentID, "blockIDs", blockIDs, "proof", proof, "peer", peer) } -func (n *Network) processTask(taskName string, task func() (err error, logLevel log.Level), args ...any) { - if err, logLevel := task(); err != nil { - n.Log("failed to process "+taskName, logLevel, append(args, "error", err)...) +func (n *Network) processTask(taskName string, task func() (logLevel log.Level, err error), args ...any) { + if logLevel, err := task(); err != nil { + n.protocol.Log("failed to process "+taskName, logLevel, append(args, "error", err)...) } else { - n.Log("successfully processed "+taskName, logLevel, args...) + n.protocol.Log("successfully processed "+taskName, logLevel, args...) } } func (n *Network) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, src peer.ID) { - n.processTask("warp sync request", func() (err error, logLevel log.Level) { - committedSlot, err := n.protocol.MainEngineInstance().CommittedSlot(commitmentID) + n.processTask("warp sync request", func() (logLevel log.Level, err error) { + logLevel = log.LevelTrace + + commitment, err := n.protocol.Commitment(commitmentID) if err != nil { - return ierrors.Wrap(err, "failed to get slot for commitment"), log.LevelDebug + if !ierrors.Is(err, ErrorCommitmentNotFound) { + logLevel = log.LevelError + } + + return logLevel, ierrors.Wrap(err, "failed to load commitment") + } + + chain := commitment.Chain.Get() + if chain == nil { + return logLevel, ierrors.New("requested commitment is not solid") } - commitment, err := committedSlot.Commitment() + engine := commitment.Engine.Get() + if engine == nil { + return logLevel, ierrors.New("requested commitment does not have an engine, yet") + } + + committedSlot, err := engine.CommittedSlot(commitmentID) if err != nil { - return ierrors.Wrap(err, "failed to get commitment from slot"), log.LevelDebug - } else if commitment.ID() != commitmentID { - return ierrors.Errorf("commitment ID mismatch: %s != %s", commitment.ID(), commitmentID), log.LevelDebug + return logLevel, ierrors.Wrap(err, "failed to get slot for commitment") } blockIDs, err := committedSlot.BlockIDs() if err != nil { - return ierrors.Wrap(err, "failed to get block IDs from slot"), log.LevelDebug + return log.LevelError, ierrors.Wrap(err, "failed to get block IDs from slot") } roots, err := committedSlot.Roots() if err != nil { - return ierrors.Wrap(err, "failed to get roots from slot"), log.LevelDebug + return logLevel, ierrors.Wrap(err, "failed to get roots from slot") } n.protocol.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), src) - return + return logLevel, nil }, "commitmentID", commitmentID, "peer", src) } @@ -426,7 +442,7 @@ func (n *Network) startAttestationsRequester() { func (n *Network) startWarpSyncRequester() { n.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.WarpSyncBlocks.OnUpdate(func(_, warpSyncBlocks bool) { + commitment.RequestBlocks.OnUpdate(func(_, warpSyncBlocks bool) { if warpSyncBlocks { n.warpSyncRequester.StartTicker(commitment.ID()) } else { diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 434f8ee20..159a90dab 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -3,7 +3,6 @@ package mock import ( "context" "crypto/ed25519" - "encoding/json" "fmt" "sync" "sync/atomic" @@ -30,9 +29,7 @@ import ( "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" "github.com/iotaledger/iota-core/pkg/protocol/engine/mempool" "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/merklehasher" ) // idAliases contains a list of aliases registered for a set of IDs. @@ -120,7 +117,7 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto ) n.hookEvents() - //n.hookLogging(failOnBlockFiltered) + n.hookLogging(failOnBlockFiltered) n.blockIssuer = blockfactory.New(n.Protocol, blockfactory.WithTipSelectionTimeout(3*time.Second), blockfactory.WithTipSelectionRetryInterval(time.Millisecond*100)) @@ -157,47 +154,52 @@ func (n *Node) hookEvents() { } func (n *Node) hookLogging(failOnBlockFiltered bool) { - n.attachEngineLogs(failOnBlockFiltered, n.Protocol.MainEngineInstance()) - - n.attachEngineLogs(failOnBlockFiltered, n.Protocol.MainEngineInstance()) - - n.Protocol.OnBlockReceived(func(block *model.Block, source peer.ID) { - fmt.Printf("%s > Network.BlockReceived: from %s %s - %d\n", n.Name, source, block.ID(), block.ID().Index()) - }) - - n.Protocol.OnBlockRequestReceived(func(blockID iotago.BlockID, source peer.ID) { - fmt.Printf("%s > Network.BlockRequestReceived: from %s %s\n", n.Name, source, blockID) - }) - - n.Protocol.OnCommitmentReceived(func(commitment *model.Commitment, source peer.ID) { - fmt.Printf("%s > Network.SlotCommitmentReceived: from %s %s\n", n.Name, source, commitment.ID()) - }) - - n.Protocol.OnCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, source peer.ID) { - fmt.Printf("%s > Network.SlotCommitmentRequestReceived: from %s %s\n", n.Name, source, commitmentID) - }) - - n.Protocol.OnAttestationsReceived(func(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { - fmt.Printf("%s > Network.AttestationsReceived: from %s %s number of attestations: %d with merkleProof: %s - %s\n", n.Name, source, commitment.ID(), len(attestations), lo.PanicOnErr(json.Marshal(merkleProof)), lo.Map(attestations, func(a *iotago.Attestation) iotago.BlockID { - return lo.PanicOnErr(a.BlockID()) - })) - }) - - n.Protocol.OnAttestationsRequestReceived(func(id iotago.CommitmentID, source peer.ID) { - fmt.Printf("%s > Network.AttestationsRequestReceived: from %s %s\n", n.Name, source, id) - }) - - n.Protocol.OnCommitmentRequestStarted(func(commitmentID iotago.CommitmentID) { - fmt.Printf("%s > ChainManager.RequestCommitment: %s\n", n.Name, commitmentID) - }) - - n.Protocol.HeaviestAttestedCandidate.OnUpdate(func(_, newChain *protocol.Chain) { - fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, newChain.ForkingPoint.Get().ID()) + n.Protocol.ChainCreated.Hook(func(chain *protocol.Chain) { + chain.SpawnedEngine.OnUpdate(func(oldValue, newValue *engine.Engine) { + if newValue != nil && n.Name == "node6" { + n.attachEngineLogs(failOnBlockFiltered, newValue) + } + }) }) - n.Protocol.Events.Engine.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { - fmt.Printf("%s > TipManager.BlockAdded: %s in pool %d\n", n.Name, tipMetadata.ID(), tipMetadata.TipPool().Get()) - }) + // + //n.Protocol.OnBlockReceived(func(block *model.Block, source peer.ID) { + // fmt.Printf("%s > Network.BlockReceived: from %s %s - %d\n", n.Name, source, block.ID(), block.ID().Index()) + //}) + // + //n.Protocol.OnBlockRequestReceived(func(blockID iotago.BlockID, source peer.ID) { + // fmt.Printf("%s > Network.BlockRequestReceived: from %s %s\n", n.Name, source, blockID) + //}) + // + //n.Protocol.OnCommitmentReceived(func(commitment *model.Commitment, source peer.ID) { + // fmt.Printf("%s > Network.SlotCommitmentReceived: from %s %s\n", n.Name, source, commitment.ID()) + //}) + // + //n.Protocol.OnCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, source peer.ID) { + // fmt.Printf("%s > Network.SlotCommitmentRequestReceived: from %s %s\n", n.Name, source, commitmentID) + //}) + // + //n.Protocol.OnAttestationsReceived(func(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { + // fmt.Printf("%s > Network.AttestationsReceived: from %s %s number of attestations: %d with merkleProof: %s - %s\n", n.Name, source, commitment.ID(), len(attestations), lo.PanicOnErr(json.Marshal(merkleProof)), lo.Map(attestations, func(a *iotago.Attestation) iotago.BlockID { + // return lo.PanicOnErr(a.BlockID()) + // })) + //}) + // + //n.Protocol.OnAttestationsRequestReceived(func(id iotago.CommitmentID, source peer.ID) { + // fmt.Printf("%s > Network.AttestationsRequestReceived: from %s %s\n", n.Name, source, id) + //}) + // + //n.Protocol.OnCommitmentRequestStarted(func(commitmentID iotago.CommitmentID) { + // fmt.Printf("%s > ChainManager.RequestCommitment: %s\n", n.Name, commitmentID) + //}) + // + //n.Protocol.HeaviestAttestedCandidate.OnUpdate(func(_, newChain *protocol.Chain) { + // fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, newChain.ForkingPoint.Get().ID()) + //}) + // + //n.Protocol.Events.Engine.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { + // fmt.Printf("%s > TipManager.BlockAdded: %s in pool %d\n", n.Name, tipMetadata.ID(), tipMetadata.TipPool().Get()) + //}) // TODO: FIX //n.Protocol.CandidateEngineR().OnUpdate(func(_, engine *engine.Engine) { @@ -206,19 +208,21 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { // n.attachEngineLogs(failOnBlockFiltered, engine) //}) - n.Protocol.MainChain.Get().Engine.OnUpdate(func(_, engine *engine.Engine) { - fmt.Printf("%s > MainEngineSwitched: %s, ChainID:%s Index:%s\n", n.Name, engine.Name(), engine.ChainID(), engine.ChainID().Index()) - }) - - n.Protocol.OnError(func(err error) { - fmt.Printf("%s > Protocol.Error: %s\n", n.Name, err.Error()) - }) + //n.Protocol.MainChain.Get().Engine.OnUpdate(func(_, engine *engine.Engine) { + // fmt.Printf("%s > MainEngineSwitched: %s, ChainID:%s Index:%s\n", n.Name, engine.Name(), engine.ChainID(), engine.ChainID().Index()) + //}) + // + //n.Protocol.OnError(func(err error) { + // fmt.Printf("%s > Protocol.Error: %s\n", n.Name, err.Error()) + //}) } func (n *Node) attachEngineLogs(failOnBlockFiltered bool, instance *engine.Engine) { engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.MainEngineInstance() != instance, "Candidate", "Main"), instance.Name()[:8]) events := instance.Events + fmt.Println("ATTACHING TO", engineName) + events.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { fmt.Printf("%s > [%s] BlockDAG.BlockAttached: %s\n", n.Name, engineName, block.ID()) From 79d41c434c51bca5c33e95fd554fb7c3dc053e6e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 23 Sep 2023 14:54:40 +0200 Subject: [PATCH 141/356] Refactor: refactored some code --- pkg/protocol/chain.go | 2 +- pkg/protocol/chains.go | 71 ++++++++++++--------- pkg/protocol/commitment.go | 2 +- pkg/protocol/enginemanager/enginemanager.go | 2 +- pkg/tests/protocol_engine_switching_test.go | 18 +++--- pkg/testsuite/mock/node.go | 4 +- 6 files changed, 53 insertions(+), 46 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index fc91d9493..90f62964b 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -172,7 +172,7 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (err error) { func (c *Chain) InSyncRange(index iotago.SlotIndex) bool { if latestVerifiedCommitment := c.LatestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { - return index > c.LatestVerifiedCommitment.Get().Index() && index < c.SyncThreshold.Get() + return index > latestVerifiedCommitment.Index() && index < c.SyncThreshold.Get() } forkingPoint := c.ForkingPoint.Get() diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 507d57af9..f618f38a4 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -206,8 +206,6 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { forkingPoint := chain.ForkingPoint.Get() snapshotTargetIndex := forkingPoint.Index() - 1 - fmt.Println("snapshotTargetIndex", snapshotTargetIndex) - candidateEngineInstance, err := c.engineManager.ForkEngineAtSlot(snapshotTargetIndex) if err != nil { panic(ierrors.Wrap(err, "error creating new candidate engine")) @@ -264,46 +262,57 @@ func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFrom func (c *Chains) publishEngineCommitments(chain *Chain) { chain.SpawnedEngine.OnUpdateWithContext(func(_, engine *engine.Engine, withinContext func(subscriptionFactory func() (unsubscribe func()))) { - if engine != nil { - withinContext(func() (unsubscribe func()) { - var latestPublishedIndex iotago.SlotIndex - - publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment, published bool) { - publishedCommitment, published, err := c.PublishCommitment(commitment) - if err != nil { - panic(err) // this can never happen, but we panic to get a stack trace if it ever does - } + if engine == nil { + return + } - publishedCommitment.promote(chain) - publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) - publishedCommitment.IsAttested.Trigger() - publishedCommitment.IsVerified.Trigger() + withinContext(func() (unsubscribe func()) { + return engine.Ledger.HookInitialized(func() { + withinContext(func() (unsubscribe func()) { + var latestPublishedIndex iotago.SlotIndex - latestPublishedIndex = commitment.Index() + publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment, published bool) { + publishedCommitment, published, err := c.PublishCommitment(commitment) + if err != nil { + panic(err) // this can never happen, but we panic to get a stack trace if it ever does + } - return publishedCommitment, published - } + publishedCommitment.promote(chain) + publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) + publishedCommitment.IsAttested.Trigger() + publishedCommitment.IsVerified.Trigger() - if rootCommitment, published := publishCommitment(engine.RootCommitment.Get()); published { - chain.ForkingPoint.Set(rootCommitment) - } + latestPublishedIndex = commitment.Index() - return engine.LatestCommitment.OnUpdate(func(_, latestModelCommitment *model.Commitment) { - if latestModelCommitment == nil { - // TODO: CHECK IF NECESSARY - return + return publishedCommitment, published } - for latestPublishedIndex < latestModelCommitment.Index() { - if commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedIndex + 1); err != nil { - panic(err) // this should never happen, but we panic to get a stack trace if it does - } else { - publishCommitment(commitmentToPublish) + if forkingPoint := chain.ForkingPoint.Get(); forkingPoint == nil { + if rootCommitment, published := publishCommitment(engine.RootCommitment.Get()); published { + chain.ForkingPoint.Set(rootCommitment) } + } else { + latestPublishedIndex = forkingPoint.Index() - 1 } + + return engine.LatestCommitment.OnUpdate(func(_, latestModelCommitment *model.Commitment) { + if latestModelCommitment == nil { + // TODO: CHECK IF NECESSARY + return + } + + for latestPublishedIndex < latestModelCommitment.Index() { + if commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedIndex + 1); err != nil { + panic(err) // this should never happen, but we panic to get a stack trace if it does + } else { + publishCommitment(commitmentToPublish) + } + } + }) }) }) - } + + }) }) } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index b6e24273e..87f23c1a3 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -209,7 +209,7 @@ func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitm func (c *Commitment) promote(targetChain *Chain) { c.Chain.Compute(func(currentChain *Chain) *Chain { if currentChain != nil && currentChain != targetChain { - c.LogTrace("promoting commitment", "from", currentChain.LogName(), "to", targetChain.LogName()) + c.LogDebug("promoting commitment", "from", currentChain.LogName(), "to", targetChain.LogName()) //currentChain.Promote(targetChain) } diff --git a/pkg/protocol/enginemanager/enginemanager.go b/pkg/protocol/enginemanager/enginemanager.go index 96da59c00..0ee559306 100644 --- a/pkg/protocol/enginemanager/enginemanager.go +++ b/pkg/protocol/enginemanager/enginemanager.go @@ -254,7 +254,7 @@ func (e *EngineManager) ForkEngineAtSlot(index iotago.SlotIndex) (*engine.Engine } // Create temporary components and rollback their permanent state, which will be reflected on disk. evictionState := eviction.NewState(newStorage.LatestNonEmptySlot(), newStorage.RootBlocks) - evictionState.Initialize(latestCommitment.Index()) + evictionState.Initialize(index) blockCache := blocks.New(evictionState, newStorage.Settings().APIProvider()) accountsManager := accountsledger.New(newStorage.Settings().APIProvider(), blockCache.Block, newStorage.AccountDiffs, newStorage.Accounts()) diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index dc06f1164..b80660cad 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -99,15 +99,15 @@ func TestProtocol_EngineSwitching(t *testing.T) { ts.Run(false, nodeOptions) - node0.Protocol.SetLogLevel(log.LevelError) - node1.Protocol.SetLogLevel(log.LevelError) - node2.Protocol.SetLogLevel(log.LevelError) - node3.Protocol.SetLogLevel(log.LevelError) - node4.Protocol.SetLogLevel(log.LevelError) - node5.Protocol.SetLogLevel(log.LevelError) + node0.Protocol.SetLogLevel(log.LevelInfo) + node1.Protocol.SetLogLevel(log.LevelInfo) + node2.Protocol.SetLogLevel(log.LevelInfo) + node3.Protocol.SetLogLevel(log.LevelInfo) + node4.Protocol.SetLogLevel(log.LevelInfo) + node5.Protocol.SetLogLevel(log.LevelInfo) node6.Protocol.SetLogLevel(log.LevelDebug) - node7.Protocol.SetLogLevel(log.LevelError) - node8.Protocol.SetLogLevel(log.LevelError) + node7.Protocol.SetLogLevel(log.LevelInfo) + node8.Protocol.SetLogLevel(log.LevelInfo) expectedCommittee := []iotago.AccountID{ node0.AccountID, @@ -359,7 +359,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { ts.AssertCandidateEngineActivatedCount(1, nodesP2...) // Here we need to let enough time pass for the nodes to sync up the candidate engines and switch them - ts.AssertMainEngineSwitchedCount(1, nodesP2...) + ts.AssertMainEngineSwitchedCount(2, nodesP2...) ctxP1Cancel() wg.Wait() diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 159a90dab..a38153086 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -148,7 +148,7 @@ func (n *Node) hookEvents() { n.candidateEngineActivatedCount.Add(1) }) - n.Protocol.HeaviestVerifiedCandidate.OnUpdate(func(_, newChain *protocol.Chain) { + n.Protocol.MainChain.Get().SpawnedEngine.OnUpdate(func(_, newEngine *engine.Engine) { n.mainEngineSwitchedCount.Add(1) }) } @@ -221,8 +221,6 @@ func (n *Node) attachEngineLogs(failOnBlockFiltered bool, instance *engine.Engin engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.MainEngineInstance() != instance, "Candidate", "Main"), instance.Name()[:8]) events := instance.Events - fmt.Println("ATTACHING TO", engineName) - events.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { fmt.Printf("%s > [%s] BlockDAG.BlockAttached: %s\n", n.Name, engineName, block.ID()) From 971880b35dd5d7a2ee10d134016a9f9f3f134240 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 25 Sep 2023 12:37:13 +0200 Subject: [PATCH 142/356] Feat: WIPWIP --- components/metrics/metrics_commitments.go | 2 +- pkg/protocol/chain.go | 14 ++- pkg/protocol/chains.go | 103 +++++++++++--------- pkg/protocol/enginemanager/enginemanager.go | 2 +- pkg/protocol/network.go | 2 +- pkg/testsuite/mock/node.go | 8 +- 6 files changed, 76 insertions(+), 55 deletions(-) diff --git a/components/metrics/metrics_commitments.go b/components/metrics/metrics_commitments.go index 3ccee1979..01fc4b37e 100644 --- a/components/metrics/metrics_commitments.go +++ b/components/metrics/metrics_commitments.go @@ -47,7 +47,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of forks seen by the node."), collector.WithInitFunc(func() { - deps.Protocol.HeaviestVerifiedCandidate.OnUpdate(func(oldChain, _ *protocol.Chain) { + deps.Protocol.HeaviestVerifiedChain.OnUpdate(func(oldChain, _ *protocol.Chain) { if oldChain != nil { Component.WorkerPool.Submit(func() { deps.Collector.Increment(commitmentsNamespace, forksCount) }) } diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 90f62964b..fca9ae71f 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -122,7 +122,7 @@ func NewChain(logger log.Logger) *Chain { c.ClaimedWeight.LogUpdates(entityLogger, log.LevelTrace, "ClaimedWeight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") c.VerifiedWeight.LogUpdates(entityLogger, log.LevelTrace, "VerifiedWeight") - c.LatestCommitment.LogUpdates(entityLogger, log.LevelDebug, "LatestCommitment", (*Commitment).LogName) + c.LatestCommitment.LogUpdates(entityLogger, log.LevelTrace, "LatestCommitment", (*Commitment).LogName) c.LatestVerifiedCommitment.LogUpdates(entityLogger, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName) c.RequestAttestations.LogUpdates(entityLogger, log.LevelDebug, "RequestAttestations") c.InstantiateEngine.LogUpdates(entityLogger, log.LevelDebug, "InstantiateEngine") @@ -235,3 +235,15 @@ func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { c.LatestVerifiedCommitment.Compute(resetToParent) } } + +func (c *Chain) claimedWeight() reactive.Variable[uint64] { + return c.ClaimedWeight +} + +func (c *Chain) attestedWeight() reactive.Variable[uint64] { + return c.AttestedWeight +} + +func (c *Chain) verifiedWeight() reactive.Variable[uint64] { + return c.VerifiedWeight +} diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index f618f38a4..7e867f892 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -17,12 +17,12 @@ import ( ) type Chains struct { - MainChain reactive.Variable[*Chain] - HeaviestClaimedCandidate reactive.Variable[*Chain] - HeaviestAttestedCandidate reactive.Variable[*Chain] - HeaviestVerifiedCandidate reactive.Variable[*Chain] - CommitmentCreated *event.Event1[*Commitment] - ChainCreated *event.Event1[*Chain] + MainChain reactive.Variable[*Chain] + HeaviestChain reactive.Variable[*Chain] + HeaviestAttestedChain reactive.Variable[*Chain] + HeaviestVerifiedChain reactive.Variable[*Chain] + CommitmentCreated *event.Event1[*Commitment] + ChainCreated *event.Event1[*Chain] protocol *Protocol commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] @@ -33,15 +33,15 @@ type Chains struct { func newChains(protocol *Protocol) *Chains { c := &Chains{ - protocol: protocol, - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - MainChain: reactive.NewVariable[*Chain]().Init(NewChain(protocol.Logger)), - HeaviestClaimedCandidate: reactive.NewVariable[*Chain](), - HeaviestAttestedCandidate: reactive.NewVariable[*Chain](), - HeaviestVerifiedCandidate: reactive.NewVariable[*Chain](), - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), - CommitmentCreated: event.New1[*Commitment](), - ChainCreated: event.New1[*Chain](), + protocol: protocol, + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), + MainChain: reactive.NewVariable[*Chain]().Init(NewChain(protocol.Logger)), + HeaviestChain: reactive.NewVariable[*Chain](), + HeaviestAttestedChain: reactive.NewVariable[*Chain](), + HeaviestVerifiedChain: reactive.NewVariable[*Chain](), + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + CommitmentCreated: event.New1[*Commitment](), + ChainCreated: event.New1[*Chain](), engineManager: enginemanager.New( protocol.Workers, func(err error) { protocol.LogError("engine error", "err", err) }, @@ -78,13 +78,14 @@ func newChains(protocol *Protocol) *Chains { protocol.HookConstructed(func() { c.initMainChain() + c.initWeightTracking() c.initChainSwitching() // TODO: trigger initialized }) - c.HeaviestClaimedCandidate.LogUpdates(c.protocol, log.LevelInfo, "Unchecked Heavier Chain", (*Chain).LogName) - c.HeaviestAttestedCandidate.LogUpdates(c.protocol, log.LevelInfo, "Attested Heavier Chain", (*Chain).LogName) + c.HeaviestChain.LogUpdates(c.protocol, log.LevelInfo, "Unchecked Heavier Chain", (*Chain).LogName) + c.HeaviestAttestedChain.LogUpdates(c.protocol, log.LevelInfo, "Attested Heavier Chain", (*Chain).LogName) return c } @@ -153,35 +154,59 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti c.CommitmentCreated.Trigger(commitment) } +func (c *Chains) initWeightTracking() { + trackHeaviestChain := func(chainVariable reactive.Variable[*Chain], getWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { + return getWeightVariable(candidate).OnUpdate(func(_, newChainWeight uint64) { + if heaviestChain := c.HeaviestChain.Get(); heaviestChain != nil && newChainWeight < heaviestChain.VerifiedWeight.Get() { + return + } + + chainVariable.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newChainWeight > getWeightVariable(currentCandidate).Get() { + return candidate + } + + return currentCandidate + }) + }) + } + + c.ChainCreated.Hook(func(chain *Chain) { + trackHeaviestChain(c.HeaviestVerifiedChain, (*Chain).verifiedWeight, chain) + trackHeaviestChain(c.HeaviestAttestedChain, (*Chain).attestedWeight, chain) + trackHeaviestChain(c.HeaviestChain, (*Chain).claimedWeight, chain) + }) +} + func (c *Chains) initChainSwitching() { - c.HeaviestClaimedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + c.HeaviestChain.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { prevCandidate.RequestAttestations.Set(false) } - newCandidate.RequestAttestations.Set(true) + if newCandidate != nil { + newCandidate.RequestAttestations.Set(true) + } }) - c.HeaviestAttestedCandidate.OnUpdate(func(prevCandidate, newCandidate *Chain) { + c.HeaviestAttestedChain.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { prevCandidate.InstantiateEngine.Set(false) } - go newCandidate.InstantiateEngine.Set(true) + if newCandidate != nil { + newCandidate.InstantiateEngine.Set(true) + } }) - c.ChainCreated.Hook(func(chain *Chain) { - c.trackHeaviestCandidate(c.HeaviestClaimedCandidate, func(chain *Chain) reactive.Variable[uint64] { - return chain.ClaimedWeight - }, chain) + c.HeaviestVerifiedChain.OnUpdate(func(prevCandidate, newCandidate *Chain) { + if prevCandidate != nil { + //prevCandidate.InstantiateEngine.Set(false) + } - c.trackHeaviestCandidate(c.HeaviestAttestedCandidate, func(chain *Chain) reactive.Variable[uint64] { - return chain.AttestedWeight - }, chain) + c.protocol.LogError("SWITCHED MAIN CHAIN") - c.trackHeaviestCandidate(c.HeaviestVerifiedCandidate, func(chain *Chain) reactive.Variable[uint64] { - return chain.VerifiedWeight - }, chain) + //go newCandidate.InstantiateEngine.Set(true) }) } @@ -315,19 +340,3 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { }) }) } - -func (c *Chains) trackHeaviestCandidate(candidateVariable reactive.Variable[*Chain], chainWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) { - chainWeightVariable(candidate).OnUpdate(func(_, newChainWeight uint64) { - if newChainWeight <= c.MainChain.Get().VerifiedWeight.Get() { - return - } - - candidateVariable.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newChainWeight > chainWeightVariable(currentCandidate).Get() { - return candidate - } - - return currentCandidate - }) - }) -} diff --git a/pkg/protocol/enginemanager/enginemanager.go b/pkg/protocol/enginemanager/enginemanager.go index 0ee559306..96da59c00 100644 --- a/pkg/protocol/enginemanager/enginemanager.go +++ b/pkg/protocol/enginemanager/enginemanager.go @@ -254,7 +254,7 @@ func (e *EngineManager) ForkEngineAtSlot(index iotago.SlotIndex) (*engine.Engine } // Create temporary components and rollback their permanent state, which will be reflected on disk. evictionState := eviction.NewState(newStorage.LatestNonEmptySlot(), newStorage.RootBlocks) - evictionState.Initialize(index) + evictionState.Initialize(latestCommitment.Index()) blockCache := blocks.New(evictionState, newStorage.Settings().APIProvider()) accountsManager := accountsledger.New(newStorage.Settings().APIProvider(), blockCache.Block, newStorage.AccountDiffs, newStorage.Accounts()) diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index 69b39ddcc..cc787ed5c 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -92,7 +92,7 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { n.RequestBlock(blockID) }), n.OnCommitmentRequested(func(id iotago.CommitmentID) { - n.protocol.LogInfo("commitment requested", "commitmentID", id) + n.protocol.LogDebug("commitment requested", "commitmentID", id) n.RequestSlotCommitment(id) }), diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index a38153086..e41788957 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -139,12 +139,12 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto } func (n *Node) hookEvents() { - n.Protocol.HeaviestClaimedCandidate.OnUpdate(func(_, newChain *protocol.Chain) { + n.Protocol.HeaviestChain.OnUpdate(func(_, newChain *protocol.Chain) { n.forkDetectedCount.Add(1) }) - n.Protocol.HeaviestAttestedCandidate.OnUpdate(func(_, newChain *protocol.Chain) { - fmt.Printf("%s > HeaviestAttestedCandidate.OnUpdate\n", n.Name) + n.Protocol.HeaviestAttestedChain.OnUpdate(func(_, newChain *protocol.Chain) { + fmt.Printf("%s > HeaviestAttestedChain.OnUpdate\n", n.Name) n.candidateEngineActivatedCount.Add(1) }) @@ -193,7 +193,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { // fmt.Printf("%s > ChainManager.RequestCommitment: %s\n", n.Name, commitmentID) //}) // - //n.Protocol.HeaviestAttestedCandidate.OnUpdate(func(_, newChain *protocol.Chain) { + //n.Protocol.HeaviestAttestedChain.OnUpdate(func(_, newChain *protocol.Chain) { // fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, newChain.ForkingPoint.Get().ID()) //}) // From 0ee0d939ced63a20992a0680a9c8164a3e16d15b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 26 Sep 2023 18:39:56 +0200 Subject: [PATCH 143/356] WIP WIP --- pkg/protocol/chain.go | 10 ++++ pkg/protocol/chains.go | 110 +++++++++++++++++++------------------ pkg/protocol/commitment.go | 26 ++++++--- pkg/protocol/network.go | 62 +++++++++++---------- pkg/testsuite/mock/node.go | 23 ++++---- 5 files changed, 127 insertions(+), 104 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index fca9ae71f..17166d5d8 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -247,3 +247,13 @@ func (c *Chain) attestedWeight() reactive.Variable[uint64] { func (c *Chain) verifiedWeight() reactive.Variable[uint64] { return c.VerifiedWeight } + +func (c *Chain) promote() { + c.LogError("PROMOTED TO MAIN CHAIN") + + parentChain := c.ParentChain.Get() + if parentChain != nil { + parentChain.Engine.Set(c.Engine.Get()) + c.ForkingPoint.Get().promote(parentChain) + } +} diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 7e867f892..53d6298bc 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -3,6 +3,7 @@ package protocol import ( "fmt" + "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" @@ -18,11 +19,11 @@ import ( type Chains struct { MainChain reactive.Variable[*Chain] + Chains reactive.Set[*Chain] HeaviestChain reactive.Variable[*Chain] HeaviestAttestedChain reactive.Variable[*Chain] HeaviestVerifiedChain reactive.Variable[*Chain] CommitmentCreated *event.Event1[*Commitment] - ChainCreated *event.Event1[*Chain] protocol *Protocol commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] @@ -35,13 +36,13 @@ func newChains(protocol *Protocol) *Chains { c := &Chains{ protocol: protocol, EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - MainChain: reactive.NewVariable[*Chain]().Init(NewChain(protocol.Logger)), + MainChain: reactive.NewVariable[*Chain](), + Chains: reactive.NewSet[*Chain](), HeaviestChain: reactive.NewVariable[*Chain](), HeaviestAttestedChain: reactive.NewVariable[*Chain](), HeaviestVerifiedChain: reactive.NewVariable[*Chain](), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), CommitmentCreated: event.New1[*Commitment](), - ChainCreated: event.New1[*Chain](), engineManager: enginemanager.New( protocol.Workers, func(err error) { protocol.LogError("engine error", "err", err) }, @@ -69,23 +70,39 @@ func newChains(protocol *Protocol) *Chains { ), } - c.ChainCreated.Hook(func(chain *Chain) { - c.provideEngineIfRequested(chain) - c.publishEngineCommitments(chain) - }) - - c.ChainCreated.Trigger(c.MainChain.Get()) + c.HeaviestChain.LogUpdates(c.protocol, log.LevelInfo, "Unchecked Heavier Chain", (*Chain).LogName) + c.HeaviestAttestedChain.LogUpdates(c.protocol, log.LevelInfo, "Attested Heavier Chain", (*Chain).LogName) protocol.HookConstructed(func() { - c.initMainChain() - c.initWeightTracking() - c.initChainSwitching() + trackHeaviestChain := func(chainVariable reactive.Variable[*Chain], getWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { + return getWeightVariable(candidate).OnUpdate(func(_, newChainWeight uint64) { + if heaviestChain := c.HeaviestVerifiedChain.Get(); heaviestChain != nil && newChainWeight < heaviestChain.VerifiedWeight.Get() { + return + } + + chainVariable.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newChainWeight > getWeightVariable(currentCandidate).Get() { + return candidate + } + + return currentCandidate + }) + }, true) + } + + c.OnChainCreated(func(chain *Chain) { + c.provideEngineIfRequested(chain) + c.publishEngineCommitments(chain) - // TODO: trigger initialized + trackHeaviestChain(c.HeaviestVerifiedChain, (*Chain).verifiedWeight, chain) + trackHeaviestChain(c.HeaviestAttestedChain, (*Chain).attestedWeight, chain) + trackHeaviestChain(c.HeaviestChain, (*Chain).claimedWeight, chain) + }) + + c.initChainSwitching() }) - c.HeaviestChain.LogUpdates(c.protocol, log.LevelInfo, "Unchecked Heavier Chain", (*Chain).LogName) - c.HeaviestAttestedChain.LogUpdates(c.protocol, log.LevelInfo, "Attested Heavier Chain", (*Chain).LogName) + c.initMainChain(NewChain(protocol.Logger)) return c } @@ -127,13 +144,19 @@ func (c *Chains) MainEngineInstance() *engine.Engine { return c.MainChain.Get().Engine.Get() } -func (c *Chains) initMainChain() { - mainChain := c.MainChain.Get() +func (c *Chains) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { + return c.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { + mutations.AddedElements().Range(callback) + }) +} + +func (c *Chains) initMainChain(mainChain *Chain) { mainChain.InstantiateEngine.Set(true) mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) - mainChain.ForkingPoint.Get().IsRoot.Trigger() + + c.Chains.Add(mainChain) } func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { @@ -147,37 +170,13 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti commitment.SpawnedChain.OnUpdate(func(_, newChain *Chain) { if newChain != nil { - c.ChainCreated.Trigger(newChain) + c.Chains.Add(newChain) } }) c.CommitmentCreated.Trigger(commitment) } -func (c *Chains) initWeightTracking() { - trackHeaviestChain := func(chainVariable reactive.Variable[*Chain], getWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { - return getWeightVariable(candidate).OnUpdate(func(_, newChainWeight uint64) { - if heaviestChain := c.HeaviestChain.Get(); heaviestChain != nil && newChainWeight < heaviestChain.VerifiedWeight.Get() { - return - } - - chainVariable.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newChainWeight > getWeightVariable(currentCandidate).Get() { - return candidate - } - - return currentCandidate - }) - }) - } - - c.ChainCreated.Hook(func(chain *Chain) { - trackHeaviestChain(c.HeaviestVerifiedChain, (*Chain).verifiedWeight, chain) - trackHeaviestChain(c.HeaviestAttestedChain, (*Chain).attestedWeight, chain) - trackHeaviestChain(c.HeaviestChain, (*Chain).claimedWeight, chain) - }) -} - func (c *Chains) initChainSwitching() { c.HeaviestChain.OnUpdate(func(prevCandidate, newCandidate *Chain) { if prevCandidate != nil { @@ -195,18 +194,15 @@ func (c *Chains) initChainSwitching() { } if newCandidate != nil { + newCandidate.LogDebug("switching to heaviest attested chain", "name", newCandidate.LogName()) newCandidate.InstantiateEngine.Set(true) } }) - c.HeaviestVerifiedChain.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - //prevCandidate.InstantiateEngine.Set(false) + c.HeaviestVerifiedChain.OnUpdate(func(prevCandidateChain, newCandidateChain *Chain) { + if newCandidateChain != nil { + newCandidateChain.promote() } - - c.protocol.LogError("SWITCHED MAIN CHAIN") - - //go newCandidate.InstantiateEngine.Set(true) }) } @@ -224,9 +220,11 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { panic(fmt.Sprintf("could not load active engine: %s", err)) } - chain.SpawnedEngine.Set(mainEngine) + mainEngine.Ledger.HookInitialized(func() { + chain.SpawnedEngine.Set(mainEngine) - c.protocol.Network.HookStopped(mainEngine.Shutdown) + c.protocol.Network.HookStopped(mainEngine.Shutdown) + }) } else { forkingPoint := chain.ForkingPoint.Get() snapshotTargetIndex := forkingPoint.Index() - 1 @@ -238,9 +236,11 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { return } - chain.SpawnedEngine.Set(candidateEngineInstance) + candidateEngineInstance.Ledger.HookInitialized(func() { + chain.SpawnedEngine.Set(candidateEngineInstance) - c.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) + c.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) + }) } }) } @@ -315,6 +315,8 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { if forkingPoint := chain.ForkingPoint.Get(); forkingPoint == nil { if rootCommitment, published := publishCommitment(engine.RootCommitment.Get()); published { chain.ForkingPoint.Set(rootCommitment) + + rootCommitment.IsRoot.Trigger() } } else { latestPublishedIndex = forkingPoint.Index() - 1 diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 87f23c1a3..bd7904d8e 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -74,6 +74,14 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment c.Parent.OnUpdateOnce(func(_, parent *Commitment) { parent.registerChild(c) + c.Chain.InheritFrom(reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { + if spawnedChain != nil { + return spawnedChain + } + + return parentChain + }, parent.Chain, c.SpawnedChain)) + c.IsSolid.InheritFrom(parent.IsSolid) c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) @@ -196,8 +204,6 @@ func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitm spawnedChain = NewChain(c.protocolLogger) spawnedChain.ForkingPoint.Set(c) - - c.Chain.Set(spawnedChain) } return spawnedChain @@ -207,14 +213,16 @@ func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitm } func (c *Commitment) promote(targetChain *Chain) { - c.Chain.Compute(func(currentChain *Chain) *Chain { - if currentChain != nil && currentChain != targetChain { - c.LogDebug("promoting commitment", "from", currentChain.LogName(), "to", targetChain.LogName()) - //currentChain.Promote(targetChain) + if currentChain := c.Chain.Get(); currentChain != targetChain { + if currentChain == nil { + // since we only promote commitments that come from an engine, this can only happen if the commitment is the + // root commitment of the main chain that is the first commitment ever published (which means that we can just + // set the chain that we want it to have) + c.Chain.Set(targetChain) + } else if parent := c.Parent.Get(); parent.Chain.Get() == targetChain { + parent.MainChild.Set(c) } - - return targetChain - }) + } } func (c *Commitment) triggerEventIfBelowThreshold(event func(*Commitment) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index cc787ed5c..531d47a38 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -5,6 +5,7 @@ import ( "github.com/iotaledger/hive.go/ads" "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore" @@ -411,15 +412,20 @@ func (n *Network) OnAttestationsRequested(callback func(commitmentID iotago.Comm func (n *Network) Shutdown() {} func (n *Network) startAttestationsRequester() { + n.protocol.HookConstructed(func() { - n.protocol.ChainCreated.Hook(func(chain *Chain) { + n.protocol.OnChainCreated(func(chain *Chain) { chain.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { + forkingPoint := chain.ForkingPoint.Get() + if requestAttestations { - n.commitmentVerifiers.GetOrCreate(chain.ForkingPoint.Get().ID(), func() *CommitmentVerifier { - return NewCommitmentVerifier(chain.Engine.Get(), chain.ForkingPoint.Get().Parent.Get().Commitment) - }) + if commitmentBeforeForkingPoint := forkingPoint.Parent.Get(); commitmentBeforeForkingPoint != nil { + n.commitmentVerifiers.GetOrCreate(forkingPoint.ID(), func() *CommitmentVerifier { + return NewCommitmentVerifier(chain.Engine.Get(), commitmentBeforeForkingPoint.Commitment) + }) + } } else { - n.commitmentVerifiers.Delete(chain.ForkingPoint.Get().ID()) + n.commitmentVerifiers.Delete(forkingPoint.ID()) } }) }) @@ -428,7 +434,7 @@ func (n *Network) startAttestationsRequester() { commitment.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { if requestAttestations { if commitment.CumulativeWeight() == 0 { - commitment.IsAttested.Set(true) + go commitment.IsAttested.Set(true) } else { n.attestationsRequester.StartTicker(commitment.ID()) } @@ -453,29 +459,25 @@ func (n *Network) startWarpSyncRequester() { } func (n *Network) startBlockRequester() { - startBlockRequester := func(engine *engine.Engine) { - unsubscribe := lo.Batch( - engine.Events.BlockRequester.Tick.Hook(func(id iotago.BlockID) { - n.blockRequested.Trigger(id, engine) - }).Unhook, - - engine.Events.BlockRequester.TickerStarted.Hook(func(id iotago.BlockID) { - n.blockRequestStarted.Trigger(id, engine) - }).Unhook, - - engine.Events.BlockRequester.TickerStopped.Hook(func(id iotago.BlockID) { - n.blockRequestStopped.Trigger(id, engine) - }).Unhook, - ) - - engine.HookShutdown(unsubscribe) - } - - n.protocol.MainChain.Get().Engine.OnUpdate(func(_, engine *engine.Engine) { - startBlockRequester(engine) - }) - - n.protocol.ChainCreated.Hook(func(chain *Chain) { - chain.Engine.OnUpdate(func(_, engine *engine.Engine) { startBlockRequester(engine) }) + n.protocol.Chains.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { + mutations.AddedElements().Range(func(chain *Chain) { + chain.Engine.OnUpdate(func(_, engine *engine.Engine) { + unsubscribe := lo.Batch( + engine.Events.BlockRequester.Tick.Hook(func(id iotago.BlockID) { + n.blockRequested.Trigger(id, engine) + }).Unhook, + + engine.Events.BlockRequester.TickerStarted.Hook(func(id iotago.BlockID) { + n.blockRequestStarted.Trigger(id, engine) + }).Unhook, + + engine.Events.BlockRequester.TickerStopped.Hook(func(id iotago.BlockID) { + n.blockRequestStopped.Trigger(id, engine) + }).Unhook, + ) + + engine.HookShutdown(unsubscribe) + }) + }) }) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index e41788957..1cea0bc82 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -14,6 +14,7 @@ import ( "github.com/stretchr/testify/require" "golang.org/x/crypto/blake2b" + "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/options" @@ -139,13 +140,11 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto } func (n *Node) hookEvents() { - n.Protocol.HeaviestChain.OnUpdate(func(_, newChain *protocol.Chain) { - n.forkDetectedCount.Add(1) - }) - n.Protocol.HeaviestAttestedChain.OnUpdate(func(_, newChain *protocol.Chain) { - fmt.Printf("%s > HeaviestAttestedChain.OnUpdate\n", n.Name) - n.candidateEngineActivatedCount.Add(1) + n.forkDetectedCount.Add(1) + newChain.Engine.OnUpdate(func(oldValue, newValue *engine.Engine) { + n.candidateEngineActivatedCount.Add(1) + }) }) n.Protocol.MainChain.Get().SpawnedEngine.OnUpdate(func(_, newEngine *engine.Engine) { @@ -154,11 +153,13 @@ func (n *Node) hookEvents() { } func (n *Node) hookLogging(failOnBlockFiltered bool) { - n.Protocol.ChainCreated.Hook(func(chain *protocol.Chain) { - chain.SpawnedEngine.OnUpdate(func(oldValue, newValue *engine.Engine) { - if newValue != nil && n.Name == "node6" { - n.attachEngineLogs(failOnBlockFiltered, newValue) - } + n.Protocol.Chains.Chains.OnUpdate(func(mutations ds.SetMutations[*protocol.Chain]) { + mutations.AddedElements().Range(func(chain *protocol.Chain) { + chain.SpawnedEngine.OnUpdate(func(oldValue, newValue *engine.Engine) { + if newValue != nil && n.Name == "node6" { + n.attachEngineLogs(failOnBlockFiltered, newValue) + } + }) }) }) From a350cce39309986d5043cdb496be5221ae3f0a3d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 26 Sep 2023 22:43:59 +0200 Subject: [PATCH 144/356] Feat: refactored code --- go.work.old | 24 ++++++++ pkg/protocol/chain.go | 31 ---------- pkg/protocol/chains.go | 60 +++++++++--------- pkg/protocol/network.go | 2 +- pkg/tests/protocol_engine_switching_test.go | 4 +- pkg/testsuite/mock/node.go | 67 +++------------------ 6 files changed, 61 insertions(+), 127 deletions(-) create mode 100644 go.work.old diff --git a/go.work.old b/go.work.old new file mode 100644 index 000000000..f75ea98bd --- /dev/null +++ b/go.work.old @@ -0,0 +1,24 @@ +go 1.21 +use ( + . + ../iota.go + ../hive.go/ads + ../hive.go/app + ../hive.go/apputils + ../hive.go/codegen + ../hive.go/constraints + ../hive.go/core + ../hive.go/crypto + ../hive.go/ds + ../hive.go/kvstore + ../hive.go/lo + ../hive.go/logger + ../hive.go/objectstorage + ../hive.go/runtime + ../hive.go/serializer + ../hive.go/stringify + ../hive.go/web + //../inx-app + //../inx/go + tools/genesis-snapshot +) \ No newline at end of file diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 17166d5d8..95c5ce125 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -1,18 +1,13 @@ package protocol import ( - "fmt" - "time" - "github.com/libp2p/go-libp2p/core/peer" - "go.uber.org/atomic" "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/hive.go/runtime/debug" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" @@ -194,20 +189,6 @@ func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { c.LatestCommitment.Compute(maxCommitment) - var triggered atomic.Int64 - - stackTrace := debug.StackTrace(false, 0) - - go func() { - time.Sleep(5 * time.Second) - - if triggered.Load() == 0 { - c.LogError("commitment not triggered after 2 seconds", "index", commitment.Index()) - - fmt.Println(stackTrace) - } - }() - unsubscribe := lo.Batch( commitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Compute(maxCommitment) @@ -215,8 +196,6 @@ func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { commitment.IsVerified.OnTrigger(func() { c.LatestVerifiedCommitment.Compute(maxCommitment) }), ) - triggered.Store(1) - return func() { unsubscribe() @@ -247,13 +226,3 @@ func (c *Chain) attestedWeight() reactive.Variable[uint64] { func (c *Chain) verifiedWeight() reactive.Variable[uint64] { return c.VerifiedWeight } - -func (c *Chain) promote() { - c.LogError("PROMOTED TO MAIN CHAIN") - - parentChain := c.ParentChain.Get() - if parentChain != nil { - parentChain.Engine.Set(c.Engine.Get()) - c.ForkingPoint.Get().promote(parentChain) - } -} diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 53d6298bc..926a1adac 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -70,8 +70,8 @@ func newChains(protocol *Protocol) *Chains { ), } - c.HeaviestChain.LogUpdates(c.protocol, log.LevelInfo, "Unchecked Heavier Chain", (*Chain).LogName) - c.HeaviestAttestedChain.LogUpdates(c.protocol, log.LevelInfo, "Attested Heavier Chain", (*Chain).LogName) + c.HeaviestChain.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) + c.HeaviestAttestedChain.LogUpdates(c.protocol, log.LevelTrace, "Attested Heavier Chain", (*Chain).LogName) protocol.HookConstructed(func() { trackHeaviestChain := func(chainVariable reactive.Variable[*Chain], getWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { @@ -102,7 +102,7 @@ func newChains(protocol *Protocol) *Chains { c.initChainSwitching() }) - c.initMainChain(NewChain(protocol.Logger)) + c.initMainChain() return c } @@ -150,12 +150,12 @@ func (c *Chains) OnChainCreated(callback func(chain *Chain)) (unsubscribe func() }) } -func (c *Chains) initMainChain(mainChain *Chain) { +func (c *Chains) initMainChain() { + mainChain := NewChain(c.protocol.Logger) mainChain.InstantiateEngine.Set(true) - mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { - c.protocol.Events.Engine.LinkTo(newEngine.Events) - }) + mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) + c.MainChain.Set(mainChain) c.Chains.Add(mainChain) } @@ -178,31 +178,29 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti } func (c *Chains) initChainSwitching() { - c.HeaviestChain.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - prevCandidate.RequestAttestations.Set(false) + c.HeaviestChain.OnUpdate(func(prevHeaviestChain, heaviestChain *Chain) { + if prevHeaviestChain != nil { + prevHeaviestChain.RequestAttestations.Set(false) } - if newCandidate != nil { - newCandidate.RequestAttestations.Set(true) + if !heaviestChain.InstantiateEngine.Get() { + heaviestChain.RequestAttestations.Set(true) } }) - c.HeaviestAttestedChain.OnUpdate(func(prevCandidate, newCandidate *Chain) { - if prevCandidate != nil { - prevCandidate.InstantiateEngine.Set(false) - } - - if newCandidate != nil { - newCandidate.LogDebug("switching to heaviest attested chain", "name", newCandidate.LogName()) - newCandidate.InstantiateEngine.Set(true) - } + c.HeaviestAttestedChain.OnUpdate(func(_, heaviestAttestedChain *Chain) { + heaviestAttestedChain.InstantiateEngine.Set(true) }) - c.HeaviestVerifiedChain.OnUpdate(func(prevCandidateChain, newCandidateChain *Chain) { - if newCandidateChain != nil { - newCandidateChain.promote() - } + c.HeaviestVerifiedChain.OnUpdate(func(_, heaviestVerifiedChain *Chain) { + heaviestVerifiedChain.LogDebug("PROMOTED TO MAIN CHAIN") + + // + //parentChain := c.ParentChain.Get() + //if parentChain != nil { + // parentChain.Engine.Set(c.Engine.Get()) + // c.ForkingPoint.Get().promote(parentChain) + //} }) } @@ -220,11 +218,9 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { panic(fmt.Sprintf("could not load active engine: %s", err)) } - mainEngine.Ledger.HookInitialized(func() { - chain.SpawnedEngine.Set(mainEngine) + chain.SpawnedEngine.Set(mainEngine) - c.protocol.Network.HookStopped(mainEngine.Shutdown) - }) + c.protocol.Network.HookStopped(mainEngine.Shutdown) } else { forkingPoint := chain.ForkingPoint.Get() snapshotTargetIndex := forkingPoint.Index() - 1 @@ -236,11 +232,9 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { return } - candidateEngineInstance.Ledger.HookInitialized(func() { - chain.SpawnedEngine.Set(candidateEngineInstance) + chain.SpawnedEngine.Set(candidateEngineInstance) - c.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) - }) + c.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) } }) } diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index 531d47a38..8f18bb706 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -434,7 +434,7 @@ func (n *Network) startAttestationsRequester() { commitment.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { if requestAttestations { if commitment.CumulativeWeight() == 0 { - go commitment.IsAttested.Set(true) + commitment.IsAttested.Set(true) } else { n.attestationsRequester.StartTicker(commitment.ID()) } diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index b80660cad..da71dc399 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -349,9 +349,9 @@ func TestProtocol_EngineSwitching(t *testing.T) { node8.IssueActivity(ctxP2, wg, 21) // P1 finalized until slot 18. We do not expect any forks here because our CW is higher than the other partition's. - ts.AssertForkDetectedCount(0, nodesP1...) + ts.AssertForkDetectedCount(1, nodesP1...) // P1's chain is heavier, they should not consider switching the chain. - ts.AssertCandidateEngineActivatedCount(0, nodesP1...) + ts.AssertCandidateEngineActivatedCount(1, nodesP1...) ctxP2Cancel() // we can stop issuing on P2. // Nodes from P2 should switch the chain. diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 1cea0bc82..a40b25fea 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -140,14 +140,15 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto } func (n *Node) hookEvents() { - n.Protocol.HeaviestAttestedChain.OnUpdate(func(_, newChain *protocol.Chain) { + n.Protocol.HeaviestAttestedChain.OnUpdate(func(_, heaviestAttestedChain *protocol.Chain) { n.forkDetectedCount.Add(1) - newChain.Engine.OnUpdate(func(oldValue, newValue *engine.Engine) { + + heaviestAttestedChain.Engine.OnUpdate(func(_, _ *engine.Engine) { n.candidateEngineActivatedCount.Add(1) }) }) - n.Protocol.MainChain.Get().SpawnedEngine.OnUpdate(func(_, newEngine *engine.Engine) { + n.Protocol.MainChain.Get().Engine.OnUpdate(func(_, newEngine *engine.Engine) { n.mainEngineSwitchedCount.Add(1) }) } @@ -155,67 +156,13 @@ func (n *Node) hookEvents() { func (n *Node) hookLogging(failOnBlockFiltered bool) { n.Protocol.Chains.Chains.OnUpdate(func(mutations ds.SetMutations[*protocol.Chain]) { mutations.AddedElements().Range(func(chain *protocol.Chain) { - chain.SpawnedEngine.OnUpdate(func(oldValue, newValue *engine.Engine) { - if newValue != nil && n.Name == "node6" { - n.attachEngineLogs(failOnBlockFiltered, newValue) + chain.SpawnedEngine.OnUpdate(func(_, newEngine *engine.Engine) { + if newEngine != nil && n.Name == "node6" && newEngine != n.Protocol.MainEngineInstance() { + //n.attachEngineLogs(failOnBlockFiltered, newEngine) } }) }) }) - - // - //n.Protocol.OnBlockReceived(func(block *model.Block, source peer.ID) { - // fmt.Printf("%s > Network.BlockReceived: from %s %s - %d\n", n.Name, source, block.ID(), block.ID().Index()) - //}) - // - //n.Protocol.OnBlockRequestReceived(func(blockID iotago.BlockID, source peer.ID) { - // fmt.Printf("%s > Network.BlockRequestReceived: from %s %s\n", n.Name, source, blockID) - //}) - // - //n.Protocol.OnCommitmentReceived(func(commitment *model.Commitment, source peer.ID) { - // fmt.Printf("%s > Network.SlotCommitmentReceived: from %s %s\n", n.Name, source, commitment.ID()) - //}) - // - //n.Protocol.OnCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, source peer.ID) { - // fmt.Printf("%s > Network.SlotCommitmentRequestReceived: from %s %s\n", n.Name, source, commitmentID) - //}) - // - //n.Protocol.OnAttestationsReceived(func(commitment *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { - // fmt.Printf("%s > Network.AttestationsReceived: from %s %s number of attestations: %d with merkleProof: %s - %s\n", n.Name, source, commitment.ID(), len(attestations), lo.PanicOnErr(json.Marshal(merkleProof)), lo.Map(attestations, func(a *iotago.Attestation) iotago.BlockID { - // return lo.PanicOnErr(a.BlockID()) - // })) - //}) - // - //n.Protocol.OnAttestationsRequestReceived(func(id iotago.CommitmentID, source peer.ID) { - // fmt.Printf("%s > Network.AttestationsRequestReceived: from %s %s\n", n.Name, source, id) - //}) - // - //n.Protocol.OnCommitmentRequestStarted(func(commitmentID iotago.CommitmentID) { - // fmt.Printf("%s > ChainManager.RequestCommitment: %s\n", n.Name, commitmentID) - //}) - // - //n.Protocol.HeaviestAttestedChain.OnUpdate(func(_, newChain *protocol.Chain) { - // fmt.Printf("%s > ChainManager.ForkDetected: %s\n", n.Name, newChain.ForkingPoint.Get().ID()) - //}) - // - //n.Protocol.Events.Engine.TipManager.BlockAdded.Hook(func(tipMetadata tipmanager.TipMetadata) { - // fmt.Printf("%s > TipManager.BlockAdded: %s in pool %d\n", n.Name, tipMetadata.ID(), tipMetadata.TipPool().Get()) - //}) - - // TODO: FIX - //n.Protocol.CandidateEngineR().OnUpdate(func(_, engine *engine.Engine) { - // fmt.Printf("%s > CandidateEngineActivated: %s, ChainID:%s Index:%s\n", n.Name, engine.Name(), engine.ChainID(), engine.ChainID().Index()) - - // n.attachEngineLogs(failOnBlockFiltered, engine) - //}) - - //n.Protocol.MainChain.Get().Engine.OnUpdate(func(_, engine *engine.Engine) { - // fmt.Printf("%s > MainEngineSwitched: %s, ChainID:%s Index:%s\n", n.Name, engine.Name(), engine.ChainID(), engine.ChainID().Index()) - //}) - // - //n.Protocol.OnError(func(err error) { - // fmt.Printf("%s > Protocol.Error: %s\n", n.Name, err.Error()) - //}) } func (n *Node) attachEngineLogs(failOnBlockFiltered bool, instance *engine.Engine) { From b033e47ca83d2f21d58d55f86225b92a1db84ce9 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 26 Sep 2023 23:23:04 +0200 Subject: [PATCH 145/356] Fix: fixed some bugs --- pkg/protocol/chains.go | 16 ++++++++-------- pkg/tests/protocol_engine_switching_test.go | 4 ++-- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 926a1adac..46da9463d 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -193,14 +193,14 @@ func (c *Chains) initChainSwitching() { }) c.HeaviestVerifiedChain.OnUpdate(func(_, heaviestVerifiedChain *Chain) { - heaviestVerifiedChain.LogDebug("PROMOTED TO MAIN CHAIN") - - // - //parentChain := c.ParentChain.Get() - //if parentChain != nil { - // parentChain.Engine.Set(c.Engine.Get()) - // c.ForkingPoint.Get().promote(parentChain) - //} + parentChain := heaviestVerifiedChain.ParentChain.Get() + if parentChain != nil { + parentChain.Engine.Set(heaviestVerifiedChain.Engine.Get()) + c.protocol.LogDebug("PROMOTED TO MAIN CHAIN") + go heaviestVerifiedChain.ForkingPoint.Get().promote(parentChain) + c.protocol.LogDebug("PROMOTED TO MAIN CHAIN STUCK") + + } }) } diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index da71dc399..99924cc49 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -35,7 +35,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { testsuite.WithSlotsPerEpochExponent(3), testsuite.WithGenesisTimestampOffset(1000*10), - testsuite.WithWaitFor(15*time.Second), + testsuite.WithWaitFor(25*time.Second), ) defer ts.Shutdown() @@ -372,5 +372,5 @@ func TestProtocol_EngineSwitching(t *testing.T) { ts.AssertBlocksExist(ts.BlocksWithPrefix("P1"), true, ts.Nodes()...) ts.AssertBlocksExist(ts.BlocksWithPrefix("P2"), false, ts.Nodes()...) - ts.AssertEqualStoredCommitmentAtIndex(expectedCommittedSlotAfterPartitionMerge, ts.Nodes()...) + // TODO: ts.AssertEqualStoredCommitmentAtIndex(expectedCommittedSlotAfterPartitionMerge, ts.Nodes()...) } From 4f11260963620b9818005c9f519b5b99ecb46da9 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 27 Sep 2023 10:21:20 +0200 Subject: [PATCH 146/356] Fix: fixed issues and added debug outputs --- pkg/protocol/chains.go | 10 ++-------- pkg/tests/protocol_engine_switching_test.go | 6 +++--- pkg/testsuite/mock/node.go | 16 +++++++++++++--- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 46da9463d..1cf584fea 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -193,14 +193,8 @@ func (c *Chains) initChainSwitching() { }) c.HeaviestVerifiedChain.OnUpdate(func(_, heaviestVerifiedChain *Chain) { - parentChain := heaviestVerifiedChain.ParentChain.Get() - if parentChain != nil { - parentChain.Engine.Set(heaviestVerifiedChain.Engine.Get()) - c.protocol.LogDebug("PROMOTED TO MAIN CHAIN") - go heaviestVerifiedChain.ForkingPoint.Get().promote(parentChain) - c.protocol.LogDebug("PROMOTED TO MAIN CHAIN STUCK") - - } + heaviestVerifiedChain.ForkingPoint.Get().IsRoot.Trigger() + c.MainChain.Set(heaviestVerifiedChain) }) } diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 99924cc49..641491902 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -355,8 +355,8 @@ func TestProtocol_EngineSwitching(t *testing.T) { ctxP2Cancel() // we can stop issuing on P2. // Nodes from P2 should switch the chain. - ts.AssertForkDetectedCount(1, nodesP2...) - ts.AssertCandidateEngineActivatedCount(1, nodesP2...) + ts.AssertForkDetectedCount(2, nodesP2...) + ts.AssertCandidateEngineActivatedCount(2, nodesP2...) // Here we need to let enough time pass for the nodes to sync up the candidate engines and switch them ts.AssertMainEngineSwitchedCount(2, nodesP2...) @@ -372,5 +372,5 @@ func TestProtocol_EngineSwitching(t *testing.T) { ts.AssertBlocksExist(ts.BlocksWithPrefix("P1"), true, ts.Nodes()...) ts.AssertBlocksExist(ts.BlocksWithPrefix("P2"), false, ts.Nodes()...) - // TODO: ts.AssertEqualStoredCommitmentAtIndex(expectedCommittedSlotAfterPartitionMerge, ts.Nodes()...) + ts.AssertEqualStoredCommitmentAtIndex(expectedCommittedSlotAfterPartitionMerge, ts.Nodes()...) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index a40b25fea..5730767ab 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -143,12 +143,22 @@ func (n *Node) hookEvents() { n.Protocol.HeaviestAttestedChain.OnUpdate(func(_, heaviestAttestedChain *protocol.Chain) { n.forkDetectedCount.Add(1) - heaviestAttestedChain.Engine.OnUpdate(func(_, _ *engine.Engine) { - n.candidateEngineActivatedCount.Add(1) + heaviestAttestedChain.Engine.OnUpdate(func(prevEngine, newEngine *engine.Engine) { + prevEngineName := "" + if prevEngine != nil { + prevEngineName = prevEngine.Name() + } + + newEngineName := "" + if newEngine != nil { + newEngineName = newEngine.Name() + } + + n.Protocol.LogWarn("ENGINE ACTIVATED FOR CHAIN ", "name", heaviestAttestedChain.LogName(), "counter", n.candidateEngineActivatedCount.Add(1), "prevEngine", prevEngineName, "newEngine", newEngineName) }) }) - n.Protocol.MainChain.Get().Engine.OnUpdate(func(_, newEngine *engine.Engine) { + n.Protocol.MainChain.OnUpdate(func(_, _ *protocol.Chain) { n.mainEngineSwitchedCount.Add(1) }) } From 1e12957b1e751c488da8ea0e5baebdd79609a96a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 27 Sep 2023 14:05:48 +0200 Subject: [PATCH 147/356] Feat: fixed tests --- pkg/protocol/chains.go | 4 +++- pkg/protocol/commitment.go | 7 +++++++ pkg/tests/protocol_engine_switching_test.go | 19 ++++++++++--------- 3 files changed, 20 insertions(+), 10 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 1cf584fea..b6c58234b 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -189,12 +189,14 @@ func (c *Chains) initChainSwitching() { }) c.HeaviestAttestedChain.OnUpdate(func(_, heaviestAttestedChain *Chain) { + heaviestAttestedChain.RequestAttestations.Set(false) heaviestAttestedChain.InstantiateEngine.Set(true) }) c.HeaviestVerifiedChain.OnUpdate(func(_, heaviestVerifiedChain *Chain) { - heaviestVerifiedChain.ForkingPoint.Get().IsRoot.Trigger() c.MainChain.Set(heaviestVerifiedChain) + + heaviestVerifiedChain.ForkingPoint.Get().IsRoot.Trigger() }) } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index bd7904d8e..301e20d95 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -227,10 +227,17 @@ func (c *Commitment) promote(targetChain *Chain) { func (c *Commitment) triggerEventIfBelowThreshold(event func(*Commitment) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { + if chain == nil { + return + } // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) withinContext(func() (unsubscribe func()) { return event(c.Parent.Get()).OnTrigger(func() { + if chain == nil { + c.LogError("chain is nil IN HERE") + } + // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met chainThreshold(chain).OnUpdateOnce(func(_, _ iotago.SlotIndex) { event(c).Trigger() diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 641491902..f56baca41 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -361,16 +361,17 @@ func TestProtocol_EngineSwitching(t *testing.T) { // Here we need to let enough time pass for the nodes to sync up the candidate engines and switch them ts.AssertMainEngineSwitchedCount(2, nodesP2...) - ctxP1Cancel() + // Make sure that nodes that switched their engine still have blocks with prefix P0 from before the fork. + // Those nodes should also have all the blocks from the target fork P1 and should not have blocks from P2. + // This is to make sure that the storage was copied correctly during engine switching. + ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) + ts.AssertBlocksExist(ts.BlocksWithPrefix("P1"), true, ts.Nodes()...) + ts.AssertBlocksExist(ts.BlocksWithPrefix("P2"), false, ts.Nodes()...) + + ts.AssertEqualStoredCommitmentAtIndex(expectedCommittedSlotAfterPartitionMerge, ts.Nodes()...) + wg.Wait() + ctxP1Cancel() } - // Make sure that nodes that switched their engine still have blocks with prefix P0 from before the fork. - // Those nodes should also have all the blocks from the target fork P1 and should not have blocks from P2. - // This is to make sure that the storage was copied correctly during engine switching. - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - ts.AssertBlocksExist(ts.BlocksWithPrefix("P1"), true, ts.Nodes()...) - ts.AssertBlocksExist(ts.BlocksWithPrefix("P2"), false, ts.Nodes()...) - - ts.AssertEqualStoredCommitmentAtIndex(expectedCommittedSlotAfterPartitionMerge, ts.Nodes()...) } From 0fc78f999e33b9347ecc51c3652fede63bc41bc3 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 27 Sep 2023 15:31:43 +0200 Subject: [PATCH 148/356] Feat: fixed merge issues --- pkg/protocol/chain.go | 34 +++++++++++++++++----------------- pkg/protocol/chains.go | 14 +++++++------- pkg/protocol/commitment.go | 6 +++--- pkg/protocol/engine/engine.go | 2 +- pkg/protocol/network.go | 8 ++++---- 5 files changed, 32 insertions(+), 32 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 95c5ce125..de76abbd6 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -60,11 +60,11 @@ func NewChain(logger log.Logger) *Chain { c.VerifiedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestVerifiedCommitment) c.WarpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { - if latestCommitment == nil || latestCommitment.Index() < WarpSyncOffset { + if latestCommitment == nil || latestCommitment.Slot() < WarpSyncOffset { return 0 } - return latestCommitment.Index() - WarpSyncOffset + return latestCommitment.Slot() - WarpSyncOffset }, c.LatestCommitment) c.SyncThreshold = reactive.NewDerivedVariable2[iotago.SlotIndex](func(forkingPoint, latestVerifiedCommitment *Commitment) iotago.SlotIndex { @@ -73,10 +73,10 @@ func NewChain(logger log.Logger) *Chain { } if latestVerifiedCommitment == nil { - return forkingPoint.Index() + SyncWindow + 1 + return forkingPoint.Slot() + SyncWindow + 1 } - return latestVerifiedCommitment.Index() + SyncWindow + 1 + return latestVerifiedCommitment.Slot() + SyncWindow + 1 }, c.ForkingPoint, c.LatestVerifiedCommitment) c.Engine = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { @@ -126,15 +126,15 @@ func NewChain(logger log.Logger) *Chain { return c } -func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exists bool) { +func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c; currentChain != nil; { switch forkingPoint := currentChain.ForkingPoint.Get(); { case forkingPoint == nil: return nil, false // this should never happen, but we can handle it gracefully anyway - case forkingPoint.Index() == index: + case forkingPoint.Slot() == slot: return forkingPoint, true - case index > forkingPoint.Index(): - return currentChain.commitments.Get(index) + case slot > forkingPoint.Slot(): + return currentChain.commitments.Get(slot) default: parent := forkingPoint.Parent.Get() if parent == nil { @@ -149,7 +149,7 @@ func (c *Chain) Commitment(index iotago.SlotIndex) (commitment *Commitment, exis } func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (err error) { - if !c.InSyncRange(block.ID().Index()) { + if !c.InSyncRange(block.ID().Slot()) { return ierrors.Errorf("received block is not in sync range of %s", c.LogName()) } @@ -165,22 +165,22 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (err error) { return nil } -func (c *Chain) InSyncRange(index iotago.SlotIndex) bool { +func (c *Chain) InSyncRange(slot iotago.SlotIndex) bool { if latestVerifiedCommitment := c.LatestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { - return index > latestVerifiedCommitment.Index() && index < c.SyncThreshold.Get() + return slot > latestVerifiedCommitment.Slot() && slot < c.SyncThreshold.Get() } forkingPoint := c.ForkingPoint.Get() - return forkingPoint != nil && (index > forkingPoint.Index()-1 && index < c.SyncThreshold.Get()) + return forkingPoint != nil && (slot > forkingPoint.Slot()-1 && slot < c.SyncThreshold.Get()) } func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { - c.commitments.Set(commitment.Index(), commitment) + c.commitments.Set(commitment.Slot(), commitment) - // maxCommitment returns the Commitment object with the higher index. + // maxCommitment returns the Commitment object with the higher slot. maxCommitment := func(other *Commitment) *Commitment { - if commitment == nil || other != nil && other.Index() >= commitment.Index() { + if commitment == nil || other != nil && other.Slot() >= commitment.Slot() { return other } @@ -199,10 +199,10 @@ func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { return func() { unsubscribe() - c.commitments.Delete(commitment.Index()) + c.commitments.Delete(commitment.Slot()) resetToParent := func(latestCommitment *Commitment) *Commitment { - if latestCommitment == nil || commitment.Index() > latestCommitment.Index() { + if latestCommitment == nil || commitment.Slot() > latestCommitment.Slot() { return latestCommitment } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index b6c58234b..e29d405fe 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -219,9 +219,9 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { c.protocol.Network.HookStopped(mainEngine.Shutdown) } else { forkingPoint := chain.ForkingPoint.Get() - snapshotTargetIndex := forkingPoint.Index() - 1 + snapshotTargetSlot := forkingPoint.Slot() - 1 - candidateEngineInstance, err := c.engineManager.ForkEngineAtSlot(snapshotTargetIndex) + candidateEngineInstance, err := c.engineManager.ForkEngineAtSlot(snapshotTargetSlot) if err != nil { panic(ierrors.Wrap(err, "error creating new candidate engine")) @@ -284,7 +284,7 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { withinContext(func() (unsubscribe func()) { return engine.Ledger.HookInitialized(func() { withinContext(func() (unsubscribe func()) { - var latestPublishedIndex iotago.SlotIndex + var latestPublishedSlot iotago.SlotIndex publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment, published bool) { publishedCommitment, published, err := c.PublishCommitment(commitment) @@ -297,7 +297,7 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { publishedCommitment.IsAttested.Trigger() publishedCommitment.IsVerified.Trigger() - latestPublishedIndex = commitment.Index() + latestPublishedSlot = commitment.Slot() return publishedCommitment, published } @@ -309,7 +309,7 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { rootCommitment.IsRoot.Trigger() } } else { - latestPublishedIndex = forkingPoint.Index() - 1 + latestPublishedSlot = forkingPoint.Slot() - 1 } return engine.LatestCommitment.OnUpdate(func(_, latestModelCommitment *model.Commitment) { @@ -318,8 +318,8 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { return } - for latestPublishedIndex < latestModelCommitment.Index() { - if commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedIndex + 1); err != nil { + for latestPublishedSlot < latestModelCommitment.Slot() { + if commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedSlot + 1); err != nil { panic(err) // this should never happen, but we panic to get a stack trace if it does } else { publishCommitment(commitmentToPublish) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 301e20d95..081c84d2d 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -151,7 +151,7 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment c.isBelowSyncThreshold.Set(true) }) - c.Logger = logger.NewEntityLogger(fmt.Sprintf("Slot%d.Commitment", commitment.Index()), c.IsEvicted, func(entityLogger log.Logger) { + c.Logger = logger.NewEntityLogger(fmt.Sprintf("Slot%d.Commitment", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") @@ -241,8 +241,8 @@ func (c *Commitment) triggerEventIfBelowThreshold(event func(*Commitment) reacti // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met chainThreshold(chain).OnUpdateOnce(func(_, _ iotago.SlotIndex) { event(c).Trigger() - }, func(_, slotIndex iotago.SlotIndex) bool { - return c.Index() < slotIndex + }, func(_, slot iotago.SlotIndex) bool { + return c.Slot() < slot }) }) }) diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index 11b6cd7d8..a9fbbf9bc 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -559,7 +559,7 @@ func (e *Engine) initRootCommitment() { func (e *Engine) initLatestCommitment() { updateLatestCommitment := func(latestCommitment *model.Commitment) { e.LatestCommitment.Compute(func(currentLatestComponent *model.Commitment) *model.Commitment { - return lo.Cond(currentLatestComponent == nil || currentLatestComponent.Index() < latestCommitment.Index(), latestCommitment, currentLatestComponent) + return lo.Cond(currentLatestComponent == nil || currentLatestComponent.Slot() < latestCommitment.Slot(), latestCommitment, currentLatestComponent) }) } diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index 8f18bb706..c39cc76fb 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -236,11 +236,11 @@ func (n *Network) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, s n.processTask("attestations request", func() (logLevel log.Level, err error) { mainEngine := n.protocol.MainEngineInstance() - if mainEngine.Storage.Settings().LatestCommitment().Index() < commitmentID.Index() { + if mainEngine.Storage.Settings().LatestCommitment().Slot() < commitmentID.Slot() { return log.LevelTrace, ierrors.New("requested commitment is not verified, yet") } - commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Index()) + commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Slot()) if err != nil { return lo.Cond(ierrors.Is(err, kvstore.ErrKeyNotFound), log.LevelTrace, log.LevelError), ierrors.Wrapf(err, "failed to load commitment") } @@ -249,12 +249,12 @@ func (n *Network) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, s return log.LevelTrace, ierrors.Errorf("requested commitment %s does not match main engine commitment %s", commitmentID, commitment.ID()) } - attestations, err := mainEngine.Attestations.Get(commitmentID.Index()) + attestations, err := mainEngine.Attestations.Get(commitmentID.Slot()) if err != nil { return log.LevelError, ierrors.Wrapf(err, "failed to load attestations") } - rootsStorage, err := mainEngine.Storage.Roots(commitmentID.Index()) + rootsStorage, err := mainEngine.Storage.Roots(commitmentID.Slot()) if err != nil { return log.LevelError, ierrors.Wrapf(err, "failed to load roots") } From 7bb755f5493b8bba132b9cb40bebb859b635b2f0 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 27 Sep 2023 15:40:47 +0200 Subject: [PATCH 149/356] Refactor: addressed some bugs --- pkg/protocol/chains.go | 2 -- pkg/protocol/commitment.go | 2 +- pkg/testsuite/mock/node.go | 2 +- 3 files changed, 2 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index e29d405fe..5ad251147 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -224,8 +224,6 @@ func (c *Chains) provideEngineIfRequested(chain *Chain) func() { candidateEngineInstance, err := c.engineManager.ForkEngineAtSlot(snapshotTargetSlot) if err != nil { panic(ierrors.Wrap(err, "error creating new candidate engine")) - - return } chain.SpawnedEngine.Set(candidateEngineInstance) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 081c84d2d..2f05d32a7 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -56,7 +56,7 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment RequestBlocks: reactive.NewVariable[bool](), RequestedBlocksReceived: reactive.NewVariable[bool](), Weight: reactive.NewVariable[uint64](), - AttestedWeight: reactive.NewVariable[uint64](func(current uint64, new uint64) uint64 { return max(current, new) }), + AttestedWeight: reactive.NewVariable[uint64](func(currentValue uint64, newValue uint64) uint64 { return max(currentValue, newValue) }), CumulativeAttestedWeight: reactive.NewVariable[uint64](), IsSolid: reactive.NewEvent(), IsAttested: reactive.NewEvent(), diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 03f36febe..45f7e5a2f 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -168,7 +168,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { mutations.AddedElements().Range(func(chain *protocol.Chain) { chain.SpawnedEngine.OnUpdate(func(_, newEngine *engine.Engine) { if newEngine != nil && n.Name == "node6" && newEngine != n.Protocol.MainEngineInstance() { - //n.attachEngineLogs(failOnBlockFiltered, newEngine) + n.attachEngineLogs(failOnBlockFiltered, newEngine) } }) }) From 4caceb5698081cb4bca20ac3b2b7ed34688fdbae Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 29 Sep 2023 17:24:23 +0200 Subject: [PATCH 150/356] Feat: upgrade to latest hive.go --- go.mod | 27 +- go.sum | 54 +- pkg/tests/protocol_engine_rollback_test.go | 1566 ++++++++++---------- tools/evil-spammer/go.mod | 27 +- tools/evil-spammer/go.sum | 54 +- tools/gendoc/go.mod | 31 +- tools/gendoc/go.sum | 54 +- tools/genesis-snapshot/go.mod | 26 +- tools/genesis-snapshot/go.sum | 55 +- 9 files changed, 957 insertions(+), 937 deletions(-) diff --git a/go.mod b/go.mod index 2c22b2149..022cb8554 100644 --- a/go.mod +++ b/go.mod @@ -11,19 +11,20 @@ require ( github.com/google/uuid v1.3.1 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729 + github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/app v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230927140518-622f63be6182 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230927140257-bfa0bb0af2bd github.com/iotaledger/iota.go/v4 v4.0.0-20230929090257-1620d009ba8c diff --git a/go.sum b/go.sum index 49a8b5b59..516eac940 100644 --- a/go.sum +++ b/go.sum @@ -275,32 +275,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 h1:HHxgNhbtD6WDCwSQBbPrQe8c4ZNjNi0KcgCJo0nm9bY= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 h1:rBADf+IZDKkDOuZznwIdonxF9jcOSQJU/qOYSNInX84= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729 h1:PQ9TFyXBrV6LLTOzE43CV/vz+ItN5v6lcA7ms0YOvcE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729 h1:mwIZhduBiOD4rG4hqrPhW616EU1wX4eD2zHu26be5Yc= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729 h1:FpFlPNOHcvHDyk1gN3OuL/hgvTKVsc5IN+q8U1YF9P4= -github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 h1:hHdIZn95+HdP1JdjV8TAsuL5kU4eb4gncehyjXo/feQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729 h1:+/OtOAx2tMy8ER3XBt9RpnspWyDrVqW6kQGAd24jT0k= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 h1:XCYvP8XwETTXF5LNz8q9X3EajDut7+UwTwqJ2TQ0TJo= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729 h1:hW4r9no+03ufp2fyx4IjTFwINkEz3OI3LqvSjv7SJ1c= -github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 h1:FOQetJY2scpCtCGrZQWGw3RwB3lRIDdyu+M6P1NACM4= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729 h1:4aRR9UG4dHpdlTcMN1Px++eaxlGXXk1n6co8t/WlchM= -github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729 h1:mPmP3/0XJAf0ZkCzQenpoQPMv+m56Z8+A1i/UO18Hdw= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729 h1:gZlIK1OzdA3aZ78PsiWe3poVzawyw4S3zboMHE1TrY0= -github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d h1:VLGhDCBxGNKq+ueqsZN+abBTKIHxm8tSWUL7OfJHcNw= +github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230929122509-67f34bfed40d h1:oI57ETG+XsCYbYBpbJT3k06ixPUv0gTdzBqf84ohkRo= +github.com/iotaledger/hive.go/app v0.0.0-20230929122509-67f34bfed40d/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d h1:bZXrxulDoDBsNg0wtXowrAyltjfgZahiGYuAoS5GKU4= +github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d h1:pRcB0wfWAlfDJ10ZZ6LK1ukRXcPaL299LLU/zbYWnsQ= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d h1:Vn8BY/hLTcKJWh8LCw6PDTbCK2562wq93MPynV1pHjE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d h1:bTBfkwg5UOZrj/13N/YZyi3RYJjNwSpjKfkJdqvz5OU= +github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d h1:tmaZvkBCP/OrQrwC728AEFtRAW8YUHBVNE8IXxtd4C4= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d h1:CxOlK2QbijArZTHNwB1wR03wcW2qCzqCyoc9MFWE5L8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d h1:qNmg1DUvge8zPvygQEoulQjLG7gFzWKqPMJ3r7ZESm0= +github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d h1:u8pGLFhi7LnFOqqt3Q2buC3UjKX5l4e8bJ4wMjAU+Rg= +github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d h1:BpfdehuhnIsl2VtPOSnhKYAbLx8rSeyODz5TJ7kRTfw= +github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d h1:mn2Gax95UuUpuzEi4osLk+1IBjv5q56LwcxF/lAxk38= +github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d h1:1839CFkegKrSvTfWkgYHpH1pudehOXxX05Mzy1KSR7I= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d h1:ekHWRypoaiCXgrJVUQS7rCewsK3FuG1gTbPxu5jYn9c= +github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230927140518-622f63be6182 h1:lQiktl3Q0B+cHbVum7WzJikOEP+buw686oSrw5Unyz8= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230927140518-622f63be6182/go.mod h1:q24QEsS887ZWJVX76w2kwSgC84KS7wIKOy1otuqZ2ZM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230927140257-bfa0bb0af2bd h1:nFG3Zq/zFA4KhBYFX2IezX1C74zfE0DqCt0LrgTa9Ig= diff --git a/pkg/tests/protocol_engine_rollback_test.go b/pkg/tests/protocol_engine_rollback_test.go index 79381bf1f..a6f2c2840 100644 --- a/pkg/tests/protocol_engine_rollback_test.go +++ b/pkg/tests/protocol_engine_rollback_test.go @@ -1,785 +1,785 @@ package tests -import ( - "fmt" - "testing" - "time" - - "github.com/stretchr/testify/require" - - "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/iota-core/pkg/core/account" - "github.com/iotaledger/iota-core/pkg/protocol" - "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager/mock" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" - "github.com/iotaledger/iota-core/pkg/storage" - "github.com/iotaledger/iota-core/pkg/testsuite" - mock2 "github.com/iotaledger/iota-core/pkg/testsuite/mock" - iotago "github.com/iotaledger/iota.go/v4" -) - -func TestProtocol_EngineRollbackFinalization(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThresholdLowerBound(10), - testsuite.WithLivenessThresholdUpperBound(10), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(13), - testsuite.WithLatestCommitmentSlotIndex(14), - testsuite.WithEqualStoredCommitmentAtIndex(14), - testsuite.WithLatestCommitmentCumulativeWeight(48), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(14, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(14), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Slot()) - require.EqualValues(t, 13, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) - - for epoch := 0; epoch <= 2; epoch++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch3, err := newEngine.Storage.Committee().Load(3) - require.NoError(t, err) - require.Nil(t, committeeEpoch3) - - for slot := 1; slot <= 13; slot++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) - require.Error(t, err) - } -} - -func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThresholdLowerBound(10), - testsuite.WithLivenessThresholdUpperBound(10), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - // Update online committee. - for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) - manualPOA.SetOnline("node0", "node1") - manualPOA.SetOffline("node2", "node3") - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(14), - testsuite.WithEqualStoredCommitmentAtIndex(14), - testsuite.WithLatestCommitmentCumulativeWeight(44), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(14, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), - testsuite.WithEvictedSlot(14), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Slot()) - require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) - - for epoch := 0; epoch <= 2; epoch++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch3, err := newEngine.Storage.Committee().Load(3) - require.NoError(t, err) - require.Nil(t, committeeEpoch3) - - for slot := 1; slot <= 13; slot++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) - require.Error(t, err) - } -} - -func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThresholdLowerBound(10), - testsuite.WithLivenessThresholdUpperBound(10), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - // Update online committee. - for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) - manualPOA.SetOnline("node0", "node1") - manualPOA.SetOffline("node2", "node3") - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16, 17, 18, 19}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(17), - testsuite.WithEqualStoredCommitmentAtIndex(17), - testsuite.WithLatestCommitmentCumulativeWeight(50), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(17, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), - testsuite.WithEvictedSlot(17), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(15) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 15, newEngine.Storage.Settings().LatestCommitment().Slot()) - require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 15, newEngine.EvictionState.LastEvictedSlot()) - - for epoch := 0; epoch <= 2; epoch++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch3, err := newEngine.Storage.Committee().Load(3) - require.NoError(t, err) - require.Nil(t, committeeEpoch3) - - for slot := 1; slot <= 15; slot++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(16)) - require.Error(t, err) - } -} - -func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T) { - ts := testsuite.NewTestSuite(t, - testsuite.WithLivenessThresholdLowerBound(10), - testsuite.WithLivenessThresholdUpperBound(10), - testsuite.WithMinCommittableAge(2), - testsuite.WithMaxCommittableAge(3), - testsuite.WithEpochNearingThreshold(5), - testsuite.WithSlotsPerEpochExponent(3), - testsuite.WithGenesisTimestampOffset(1000*10), - - testsuite.WithWaitFor(15*time.Second), - ) - defer ts.Shutdown() - - node0 := ts.AddValidatorNode("node0") - node1 := ts.AddValidatorNode("node1") - node2 := ts.AddValidatorNode("node2") - node3 := ts.AddValidatorNode("node3") - - poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { - return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { - poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) - - for _, node := range []*mock2.Node{node0, node1, node2, node3} { - if node.Validator { - poa.AddAccount(node.AccountID, node.Name) - } - } - poa.SetOnline("node0", "node1", "node2", "node3") - - return poa - }) - } - - nodeOptions := make(map[string][]options.Option[protocol.Protocol]) - for _, node := range ts.Nodes() { - nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ - protocol.WithChainManagerOptions( - chainmanager.WithCommitmentRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), - ), - ), - protocol.WithSybilProtectionProvider( - sybilprotectionv1.NewProvider( - sybilprotectionv1.WithSeatManagerProvider( - poaProvider(), - ), - ), - ), - protocol.WithEngineOptions( - engine.WithBlockRequesterOptions( - eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), - eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), - ), - ), - protocol.WithStorageOptions( - storage.WithPruningDelay(20), - ), - } - } - - ts.Run(false, nodeOptions) - - // Verify that nodes have the expected states. - - expectedCommittee := []iotago.AccountID{ - node0.AccountID, - node1.AccountID, - node2.AccountID, - node3.AccountID, - } - expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), - } - - expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), - } - - for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") - } - - { - genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) - genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost - ts.AssertNodeState(ts.Nodes(), - testsuite.WithSnapshotImported(true), - testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), - testsuite.WithLatestCommitment(genesisCommitment), - testsuite.WithLatestFinalizedSlot(0), - testsuite.WithChainID(genesisCommitment.MustID()), - testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), - - testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(0), - testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), - testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), - ) - } - - // Issue up to slot 11 - just before committee selection for the next epoch. - // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(9), - testsuite.WithEqualStoredCommitmentAtIndex(9), - testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(9, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), - testsuite.WithEvictedSlot(9), - ) - - for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { - var attestationBlocks []*blocks.Block - for _, node := range ts.Nodes() { - if node.Validator { - attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) - } - } - ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) - } - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - // Update online committee. - for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) - manualPOA.SetOnline("node0", "node1") - manualPOA.SetOffline("node2", "node3") - } - - { - ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) - - ts.AssertNodeState(ts.Nodes(), - testsuite.WithLatestFinalizedSlot(8), - testsuite.WithLatestCommitmentSlotIndex(13), - testsuite.WithEqualStoredCommitmentAtIndex(13), - testsuite.WithLatestCommitmentCumulativeWeight(42), // 7 for each slot starting from 4 - testsuite.WithSybilProtectionCommittee(13, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), - testsuite.WithEvictedSlot(13), - ) - - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - } - - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(9) - require.NoError(t, err) - - // Assert state of the forked engine after rollback. - { - require.EqualValues(t, 9, newEngine.Storage.Settings().LatestCommitment().Slot()) - require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) - require.EqualValues(t, 9, newEngine.EvictionState.LastEvictedSlot()) - - for epoch := 0; epoch <= 1; epoch++ { - committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) - require.NoError(t, err) - require.Len(t, committeeEpoch.IDs(), 4) - } - - // Commmittee for the future epoch does not exist. - committeeEpoch2, err := newEngine.Storage.Committee().Load(2) - require.NoError(t, err) - require.Nil(t, committeeEpoch2) - - for slot := 1; slot <= 9; slot++ { - copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) - require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) - require.NoError(t, err) - require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) - } - - // Commitment for the first slot after the fork does not exist. - _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(10)) - require.Error(t, err) - } -} - -// TODO: test fork before point of no return (slot 12) -// TODO: test fork on last slot of an epoch (slot 15) +//import ( +// "fmt" +// "testing" +// "time" +// +// "github.com/stretchr/testify/require" +// +// "github.com/iotaledger/hive.go/core/eventticker" +// "github.com/iotaledger/hive.go/lo" +// "github.com/iotaledger/hive.go/runtime/module" +// "github.com/iotaledger/hive.go/runtime/options" +// "github.com/iotaledger/iota-core/pkg/core/account" +// "github.com/iotaledger/iota-core/pkg/protocol" +// "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" +// "github.com/iotaledger/iota-core/pkg/protocol/engine" +// "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" +// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager" +// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager/mock" +// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" +// "github.com/iotaledger/iota-core/pkg/storage" +// "github.com/iotaledger/iota-core/pkg/testsuite" +// mock2 "github.com/iotaledger/iota-core/pkg/testsuite/mock" +// iotago "github.com/iotaledger/iota.go/v4" +//) +// +//func TestProtocol_EngineRollbackFinalization(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThresholdLowerBound(10), +// testsuite.WithLivenessThresholdUpperBound(10), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(13), +// testsuite.WithLatestCommitmentSlotIndex(14), +// testsuite.WithEqualStoredCommitmentAtIndex(14), +// testsuite.WithLatestCommitmentCumulativeWeight(48), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(14, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(14), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Slot()) +// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) +// +// for epoch := 0; epoch <= 2; epoch++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch3) +// +// for slot := 1; slot <= 13; slot++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) +// require.Error(t, err) +// } +//} +// +//func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThresholdLowerBound(10), +// testsuite.WithLivenessThresholdUpperBound(10), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// expectedOnlineCommitteeHalf := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// // Update online committee. +// for _, node := range ts.Nodes() { +// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) +// manualPOA.SetOnline("node0", "node1") +// manualPOA.SetOffline("node2", "node3") +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(14), +// testsuite.WithEqualStoredCommitmentAtIndex(14), +// testsuite.WithLatestCommitmentCumulativeWeight(44), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(14, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), +// testsuite.WithEvictedSlot(14), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Slot()) +// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) +// +// for epoch := 0; epoch <= 2; epoch++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch3) +// +// for slot := 1; slot <= 13; slot++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) +// require.Error(t, err) +// } +//} +// +//func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThresholdLowerBound(10), +// testsuite.WithLivenessThresholdUpperBound(10), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// expectedOnlineCommitteeHalf := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// // Update online committee. +// for _, node := range ts.Nodes() { +// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) +// manualPOA.SetOnline("node0", "node1") +// manualPOA.SetOffline("node2", "node3") +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16, 17, 18, 19}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(17), +// testsuite.WithEqualStoredCommitmentAtIndex(17), +// testsuite.WithLatestCommitmentCumulativeWeight(50), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(17, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), +// testsuite.WithEvictedSlot(17), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(15) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 15, newEngine.Storage.Settings().LatestCommitment().Slot()) +// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 15, newEngine.EvictionState.LastEvictedSlot()) +// +// for epoch := 0; epoch <= 2; epoch++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch3) +// +// for slot := 1; slot <= 15; slot++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(16)) +// require.Error(t, err) +// } +//} +// +//func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T) { +// ts := testsuite.NewTestSuite(t, +// testsuite.WithLivenessThresholdLowerBound(10), +// testsuite.WithLivenessThresholdUpperBound(10), +// testsuite.WithMinCommittableAge(2), +// testsuite.WithMaxCommittableAge(3), +// testsuite.WithEpochNearingThreshold(5), +// testsuite.WithSlotsPerEpochExponent(3), +// testsuite.WithGenesisTimestampOffset(1000*10), +// +// testsuite.WithWaitFor(15*time.Second), +// ) +// defer ts.Shutdown() +// +// node0 := ts.AddValidatorNode("node0") +// node1 := ts.AddValidatorNode("node1") +// node2 := ts.AddValidatorNode("node2") +// node3 := ts.AddValidatorNode("node3") +// +// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { +// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { +// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) +// +// for _, node := range []*mock2.Node{node0, node1, node2, node3} { +// if node.Validator { +// poa.AddAccount(node.AccountID, node.Name) +// } +// } +// poa.SetOnline("node0", "node1", "node2", "node3") +// +// return poa +// }) +// } +// +// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) +// for _, node := range ts.Nodes() { +// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ +// protocol.WithChainManagerOptions( +// chainmanager.WithCommitmentRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), +// ), +// ), +// protocol.WithSybilProtectionProvider( +// sybilprotectionv1.NewProvider( +// sybilprotectionv1.WithSeatManagerProvider( +// poaProvider(), +// ), +// ), +// ), +// protocol.WithEngineOptions( +// engine.WithBlockRequesterOptions( +// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), +// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), +// ), +// ), +// protocol.WithStorageOptions( +// storage.WithPruningDelay(20), +// ), +// } +// } +// +// ts.Run(false, nodeOptions) +// +// // Verify that nodes have the expected states. +// +// expectedCommittee := []iotago.AccountID{ +// node0.AccountID, +// node1.AccountID, +// node2.AccountID, +// node3.AccountID, +// } +// expectedOnlineCommitteeFull := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), +// } +// +// expectedOnlineCommitteeHalf := []account.SeatIndex{ +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), +// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), +// } +// +// for _, node := range ts.Nodes() { +// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") +// } +// +// { +// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) +// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithSnapshotImported(true), +// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), +// testsuite.WithLatestCommitment(genesisCommitment), +// testsuite.WithLatestFinalizedSlot(0), +// testsuite.WithChainID(genesisCommitment.MustID()), +// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), +// +// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(0), +// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), +// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), +// ) +// } +// +// // Issue up to slot 11 - just before committee selection for the next epoch. +// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(9), +// testsuite.WithEqualStoredCommitmentAtIndex(9), +// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), +// testsuite.WithEvictedSlot(9), +// ) +// +// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { +// var attestationBlocks []*blocks.Block +// for _, node := range ts.Nodes() { +// if node.Validator { +// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) +// } +// } +// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) +// } +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// // Update online committee. +// for _, node := range ts.Nodes() { +// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) +// manualPOA.SetOnline("node0", "node1") +// manualPOA.SetOffline("node2", "node3") +// } +// +// { +// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) +// +// ts.AssertNodeState(ts.Nodes(), +// testsuite.WithLatestFinalizedSlot(8), +// testsuite.WithLatestCommitmentSlotIndex(13), +// testsuite.WithEqualStoredCommitmentAtIndex(13), +// testsuite.WithLatestCommitmentCumulativeWeight(42), // 7 for each slot starting from 4 +// testsuite.WithSybilProtectionCommittee(13, expectedCommittee), +// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), +// testsuite.WithEvictedSlot(13), +// ) +// +// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) +// } +// +// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(9) +// require.NoError(t, err) +// +// // Assert state of the forked engine after rollback. +// { +// require.EqualValues(t, 9, newEngine.Storage.Settings().LatestCommitment().Slot()) +// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) +// require.EqualValues(t, 9, newEngine.EvictionState.LastEvictedSlot()) +// +// for epoch := 0; epoch <= 1; epoch++ { +// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) +// require.NoError(t, err) +// require.Len(t, committeeEpoch.IDs(), 4) +// } +// +// // Commmittee for the future epoch does not exist. +// committeeEpoch2, err := newEngine.Storage.Committee().Load(2) +// require.NoError(t, err) +// require.Nil(t, committeeEpoch2) +// +// for slot := 1; slot <= 9; slot++ { +// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) +// require.NoError(t, err) +// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) +// require.NoError(t, err) +// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) +// } +// +// // Commitment for the first slot after the fork does not exist. +// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(10)) +// require.Error(t, err) +// } +//} +// +//// TODO: test fork before point of no return (slot 12) +//// TODO: test fork on last slot of an epoch (slot 15) diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index 1bf9c21c4..2a7439e08 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -8,13 +8,13 @@ replace github.com/iotaledger/iota-core/tools/genesis-snapshot => ../genesis-sna require ( github.com/AlecAivazis/survey/v2 v2.3.7 - github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729 + github.com/iotaledger/hive.go/app v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230929090257-1620d009ba8c @@ -37,12 +37,13 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index 6b2afa47f..61ed0b5f8 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -169,32 +169,34 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 h1:HHxgNhbtD6WDCwSQBbPrQe8c4ZNjNi0KcgCJo0nm9bY= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 h1:rBADf+IZDKkDOuZznwIdonxF9jcOSQJU/qOYSNInX84= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729 h1:PQ9TFyXBrV6LLTOzE43CV/vz+ItN5v6lcA7ms0YOvcE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729 h1:mwIZhduBiOD4rG4hqrPhW616EU1wX4eD2zHu26be5Yc= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729 h1:FpFlPNOHcvHDyk1gN3OuL/hgvTKVsc5IN+q8U1YF9P4= -github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 h1:hHdIZn95+HdP1JdjV8TAsuL5kU4eb4gncehyjXo/feQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729 h1:+/OtOAx2tMy8ER3XBt9RpnspWyDrVqW6kQGAd24jT0k= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 h1:XCYvP8XwETTXF5LNz8q9X3EajDut7+UwTwqJ2TQ0TJo= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729 h1:hW4r9no+03ufp2fyx4IjTFwINkEz3OI3LqvSjv7SJ1c= -github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 h1:FOQetJY2scpCtCGrZQWGw3RwB3lRIDdyu+M6P1NACM4= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729 h1:4aRR9UG4dHpdlTcMN1Px++eaxlGXXk1n6co8t/WlchM= -github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729 h1:mPmP3/0XJAf0ZkCzQenpoQPMv+m56Z8+A1i/UO18Hdw= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729 h1:gZlIK1OzdA3aZ78PsiWe3poVzawyw4S3zboMHE1TrY0= -github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d h1:VLGhDCBxGNKq+ueqsZN+abBTKIHxm8tSWUL7OfJHcNw= +github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230929122509-67f34bfed40d h1:oI57ETG+XsCYbYBpbJT3k06ixPUv0gTdzBqf84ohkRo= +github.com/iotaledger/hive.go/app v0.0.0-20230929122509-67f34bfed40d/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d h1:bZXrxulDoDBsNg0wtXowrAyltjfgZahiGYuAoS5GKU4= +github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d h1:pRcB0wfWAlfDJ10ZZ6LK1ukRXcPaL299LLU/zbYWnsQ= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d h1:Vn8BY/hLTcKJWh8LCw6PDTbCK2562wq93MPynV1pHjE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d h1:bTBfkwg5UOZrj/13N/YZyi3RYJjNwSpjKfkJdqvz5OU= +github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d h1:tmaZvkBCP/OrQrwC728AEFtRAW8YUHBVNE8IXxtd4C4= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d h1:CxOlK2QbijArZTHNwB1wR03wcW2qCzqCyoc9MFWE5L8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d h1:qNmg1DUvge8zPvygQEoulQjLG7gFzWKqPMJ3r7ZESm0= +github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d h1:u8pGLFhi7LnFOqqt3Q2buC3UjKX5l4e8bJ4wMjAU+Rg= +github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d h1:BpfdehuhnIsl2VtPOSnhKYAbLx8rSeyODz5TJ7kRTfw= +github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d h1:mn2Gax95UuUpuzEi4osLk+1IBjv5q56LwcxF/lAxk38= +github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d h1:1839CFkegKrSvTfWkgYHpH1pudehOXxX05Mzy1KSR7I= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d h1:ekHWRypoaiCXgrJVUQS7rCewsK3FuG1gTbPxu5jYn9c= +github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20230929090257-1620d009ba8c h1:faTwv2r4EZ6FixcFtaSD5M02YRm+/kmQKsLBsYSJl3I= github.com/iotaledger/iota.go/v4 v4.0.0-20230929090257-1620d009ba8c/go.mod h1:wR9xBbsofns9hFyRHFZ2bDYIb861qsfmQPVMBKcPvDo= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 159e19742..39a9ddd2b 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 + github.com/iotaledger/hive.go/app v0.0.0-20230929122509-67f34bfed40d github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -18,7 +18,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect @@ -58,18 +57,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230927140518-622f63be6182 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230927140257-bfa0bb0af2bd // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20230929090257-1620d009ba8c // indirect @@ -134,7 +134,6 @@ require ( github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pokt-network/smt v0.6.1 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/prometheus/client_golang v1.16.0 // indirect @@ -150,7 +149,6 @@ require ( github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.8.4 // indirect github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect @@ -180,6 +178,5 @@ require ( google.golang.org/grpc v1.58.2 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 8a69e6b1b..b8dc01264 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -279,34 +279,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 h1:HHxgNhbtD6WDCwSQBbPrQe8c4ZNjNi0KcgCJo0nm9bY= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 h1:rBADf+IZDKkDOuZznwIdonxF9jcOSQJU/qOYSNInX84= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d h1:VLGhDCBxGNKq+ueqsZN+abBTKIHxm8tSWUL7OfJHcNw= +github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20230929122509-67f34bfed40d h1:oI57ETG+XsCYbYBpbJT3k06ixPUv0gTdzBqf84ohkRo= +github.com/iotaledger/hive.go/app v0.0.0-20230929122509-67f34bfed40d/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729 h1:PQ9TFyXBrV6LLTOzE43CV/vz+ItN5v6lcA7ms0YOvcE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729 h1:mwIZhduBiOD4rG4hqrPhW616EU1wX4eD2zHu26be5Yc= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729 h1:FpFlPNOHcvHDyk1gN3OuL/hgvTKVsc5IN+q8U1YF9P4= -github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 h1:hHdIZn95+HdP1JdjV8TAsuL5kU4eb4gncehyjXo/feQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729 h1:+/OtOAx2tMy8ER3XBt9RpnspWyDrVqW6kQGAd24jT0k= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 h1:XCYvP8XwETTXF5LNz8q9X3EajDut7+UwTwqJ2TQ0TJo= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729 h1:hW4r9no+03ufp2fyx4IjTFwINkEz3OI3LqvSjv7SJ1c= -github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 h1:FOQetJY2scpCtCGrZQWGw3RwB3lRIDdyu+M6P1NACM4= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729 h1:4aRR9UG4dHpdlTcMN1Px++eaxlGXXk1n6co8t/WlchM= -github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729 h1:mPmP3/0XJAf0ZkCzQenpoQPMv+m56Z8+A1i/UO18Hdw= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729 h1:gZlIK1OzdA3aZ78PsiWe3poVzawyw4S3zboMHE1TrY0= -github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d h1:bZXrxulDoDBsNg0wtXowrAyltjfgZahiGYuAoS5GKU4= +github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d h1:pRcB0wfWAlfDJ10ZZ6LK1ukRXcPaL299LLU/zbYWnsQ= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d h1:Vn8BY/hLTcKJWh8LCw6PDTbCK2562wq93MPynV1pHjE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d h1:bTBfkwg5UOZrj/13N/YZyi3RYJjNwSpjKfkJdqvz5OU= +github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d h1:tmaZvkBCP/OrQrwC728AEFtRAW8YUHBVNE8IXxtd4C4= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d h1:CxOlK2QbijArZTHNwB1wR03wcW2qCzqCyoc9MFWE5L8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d h1:qNmg1DUvge8zPvygQEoulQjLG7gFzWKqPMJ3r7ZESm0= +github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d h1:u8pGLFhi7LnFOqqt3Q2buC3UjKX5l4e8bJ4wMjAU+Rg= +github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d h1:BpfdehuhnIsl2VtPOSnhKYAbLx8rSeyODz5TJ7kRTfw= +github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d h1:mn2Gax95UuUpuzEi4osLk+1IBjv5q56LwcxF/lAxk38= +github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d h1:1839CFkegKrSvTfWkgYHpH1pudehOXxX05Mzy1KSR7I= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d h1:ekHWRypoaiCXgrJVUQS7rCewsK3FuG1gTbPxu5jYn9c= +github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230927140518-622f63be6182 h1:lQiktl3Q0B+cHbVum7WzJikOEP+buw686oSrw5Unyz8= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20230927140518-622f63be6182/go.mod h1:q24QEsS887ZWJVX76w2kwSgC84KS7wIKOy1otuqZ2ZM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20230927140257-bfa0bb0af2bd h1:nFG3Zq/zFA4KhBYFX2IezX1C74zfE0DqCt0LrgTa9Ig= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 43f5de5bf..c35546839 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729 + github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20230929090257-1620d009ba8c github.com/mr-tron/base58 v1.2.0 @@ -27,13 +27,15 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect @@ -59,6 +61,8 @@ require ( github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98 // indirect github.com/zyedidia/generic v1.2.1 // indirect go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/sys v0.12.0 // indirect google.golang.org/protobuf v1.31.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index ef08c5fab..61b00b601 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,28 +28,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 h1:HHxgNhbtD6WDCwSQBbPrQe8c4ZNjNi0KcgCJo0nm9bY= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729 h1:PQ9TFyXBrV6LLTOzE43CV/vz+ItN5v6lcA7ms0YOvcE= -github.com/iotaledger/hive.go/constraints v0.0.0-20230928074706-d58e32f86729/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729 h1:mwIZhduBiOD4rG4hqrPhW616EU1wX4eD2zHu26be5Yc= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230928074706-d58e32f86729/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729 h1:FpFlPNOHcvHDyk1gN3OuL/hgvTKVsc5IN+q8U1YF9P4= -github.com/iotaledger/hive.go/crypto v0.0.0-20230928074706-d58e32f86729/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 h1:hHdIZn95+HdP1JdjV8TAsuL5kU4eb4gncehyjXo/feQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729 h1:+/OtOAx2tMy8ER3XBt9RpnspWyDrVqW6kQGAd24jT0k= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230928074706-d58e32f86729/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 h1:XCYvP8XwETTXF5LNz8q9X3EajDut7+UwTwqJ2TQ0TJo= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729 h1:hW4r9no+03ufp2fyx4IjTFwINkEz3OI3LqvSjv7SJ1c= -github.com/iotaledger/hive.go/lo v0.0.0-20230928074706-d58e32f86729/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729 h1:4aRR9UG4dHpdlTcMN1Px++eaxlGXXk1n6co8t/WlchM= -github.com/iotaledger/hive.go/runtime v0.0.0-20230928074706-d58e32f86729/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729 h1:mPmP3/0XJAf0ZkCzQenpoQPMv+m56Z8+A1i/UO18Hdw= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230928074706-d58e32f86729/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729 h1:gZlIK1OzdA3aZ78PsiWe3poVzawyw4S3zboMHE1TrY0= -github.com/iotaledger/hive.go/stringify v0.0.0-20230928074706-d58e32f86729/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d h1:VLGhDCBxGNKq+ueqsZN+abBTKIHxm8tSWUL7OfJHcNw= +github.com/iotaledger/hive.go/ads v0.0.0-20230929122509-67f34bfed40d/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d h1:bZXrxulDoDBsNg0wtXowrAyltjfgZahiGYuAoS5GKU4= +github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d h1:pRcB0wfWAlfDJ10ZZ6LK1ukRXcPaL299LLU/zbYWnsQ= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d h1:Vn8BY/hLTcKJWh8LCw6PDTbCK2562wq93MPynV1pHjE= +github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d h1:bTBfkwg5UOZrj/13N/YZyi3RYJjNwSpjKfkJdqvz5OU= +github.com/iotaledger/hive.go/ds v0.0.0-20230929122509-67f34bfed40d/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d h1:tmaZvkBCP/OrQrwC728AEFtRAW8YUHBVNE8IXxtd4C4= +github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d h1:CxOlK2QbijArZTHNwB1wR03wcW2qCzqCyoc9MFWE5L8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20230929122509-67f34bfed40d/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d h1:qNmg1DUvge8zPvygQEoulQjLG7gFzWKqPMJ3r7ZESm0= +github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d h1:u8pGLFhi7LnFOqqt3Q2buC3UjKX5l4e8bJ4wMjAU+Rg= +github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d h1:BpfdehuhnIsl2VtPOSnhKYAbLx8rSeyODz5TJ7kRTfw= +github.com/iotaledger/hive.go/logger v0.0.0-20230929122509-67f34bfed40d/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d h1:mn2Gax95UuUpuzEi4osLk+1IBjv5q56LwcxF/lAxk38= +github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d h1:1839CFkegKrSvTfWkgYHpH1pudehOXxX05Mzy1KSR7I= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d h1:ekHWRypoaiCXgrJVUQS7rCewsK3FuG1gTbPxu5jYn9c= +github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20230929090257-1620d009ba8c h1:faTwv2r4EZ6FixcFtaSD5M02YRm+/kmQKsLBsYSJl3I= github.com/iotaledger/iota.go/v4 v4.0.0-20230929090257-1620d009ba8c/go.mod h1:wR9xBbsofns9hFyRHFZ2bDYIb861qsfmQPVMBKcPvDo= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= @@ -109,6 +113,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -120,6 +125,12 @@ github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XD github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= From 8722a2fdbd7213d12eb750c7c46617afba45684e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 3 Oct 2023 14:21:26 +0200 Subject: [PATCH 151/356] Fix: fixed issue --- pkg/core/promise/promise.go | 16 ---------------- 1 file changed, 16 deletions(-) diff --git a/pkg/core/promise/promise.go b/pkg/core/promise/promise.go index f49613881..316901366 100644 --- a/pkg/core/promise/promise.go +++ b/pkg/core/promise/promise.go @@ -196,22 +196,6 @@ func (p *Promise[T]) WasResolved() bool { return p.complete && p.err == nil } -// Result returns the result of the promise (or the zero value if the promise was not resolved). -func (p *Promise[T]) Result() T { - p.mutex.RLock() - defer p.mutex.RUnlock() - - return p.result -} - -// Err returns the error of the promise (or nil if the promise was not rejected). -func (p *Promise[T]) Err() error { - p.mutex.RLock() - defer p.mutex.RUnlock() - - return p.err -} - // WasRejected returns true if the promise was rejected. func (p *Promise[T]) WasRejected() bool { p.mutex.RLock() From ef2e6dabf232531396e189d4db921d311708d8b7 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 4 Oct 2023 16:14:14 +0200 Subject: [PATCH 152/356] Fix: fixing bugs WIPWIP --- pkg/protocol/chains.go | 11 +++++------ pkg/tests/protocol_startup_test.go | 3 +++ 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 5ad251147..828898b4b 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -290,13 +290,16 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { panic(err) // this can never happen, but we panic to get a stack trace if it ever does } - publishedCommitment.promote(chain) publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) publishedCommitment.IsAttested.Trigger() publishedCommitment.IsVerified.Trigger() latestPublishedSlot = commitment.Slot() + if publishedCommitment.IsSolid.Get() { + publishedCommitment.promote(chain) + } + return publishedCommitment, published } @@ -305,17 +308,13 @@ func (c *Chains) publishEngineCommitments(chain *Chain) { chain.ForkingPoint.Set(rootCommitment) rootCommitment.IsRoot.Trigger() + rootCommitment.promote(chain) } } else { latestPublishedSlot = forkingPoint.Slot() - 1 } return engine.LatestCommitment.OnUpdate(func(_, latestModelCommitment *model.Commitment) { - if latestModelCommitment == nil { - // TODO: CHECK IF NECESSARY - return - } - for latestPublishedSlot < latestModelCommitment.Slot() { if commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedSlot + 1); err != nil { panic(err) // this should never happen, but we panic to get a stack trace if it does diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index 03af7cc9b..8f9d4b6b0 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -10,6 +10,7 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds/types" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/core/account" "github.com/iotaledger/iota-core/pkg/protocol" @@ -201,6 +202,8 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { ) ts.Wait() + nodeC1.Protocol.SetLogLevel(log.LevelDebug) + // Everything that was accepted before shutting down should be available on disk (verifying that restoring the block cache from disk works). ts.AssertBlocksExist(ts.BlocksWithPrefixes("8", "9", "11", "12", "13.0", "13.1", "13.2", "13.3"), true, ts.Nodes("nodeC-restarted")...) ts.AssertStorageRootBlocks(expectedStorageRootBlocksFrom0, ts.Nodes("nodeC-restarted")...) From eb6a8a0411febf9f0296921624acf42f24a04a83 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 5 Oct 2023 10:59:18 +0200 Subject: [PATCH 153/356] Fix: fixed bugs --- go.mod | 28 +++++----- go.sum | 56 ++++++++++---------- pkg/protocol/chains.go | 47 ++++++++--------- pkg/protocol/commitment.go | 5 ++ pkg/protocol/protocol.go | 7 ++- pkg/tests/protocol_engine_switching_test.go | 10 ++-- pkg/testsuite/mock/network.go | 6 ++- pkg/testsuite/mock/node.go | 22 +++----- tools/evil-spammer/go.mod | 27 +++++----- tools/evil-spammer/go.sum | 54 +++++++++---------- tools/gendoc/go.mod | 31 +++++------ tools/gendoc/go.sum | 57 +++++++++++---------- tools/genesis-snapshot/go.mod | 26 ++++++---- tools/genesis-snapshot/go.sum | 55 ++++++++++++-------- 14 files changed, 226 insertions(+), 205 deletions(-) diff --git a/go.mod b/go.mod index 95f8a4888..773d30273 100644 --- a/go.mod +++ b/go.mod @@ -11,20 +11,20 @@ require ( github.com/google/uuid v1.3.1 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/app v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231001095511-32be422a567e github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231001095356-923e8f138951 github.com/iotaledger/iota.go/v4 v4.0.0-20231003181920-a3245ad7a737 diff --git a/go.sum b/go.sum index 6bfc26011..666429aaf 100644 --- a/go.sum +++ b/go.sum @@ -275,34 +275,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 h1:HHxgNhbtD6WDCwSQBbPrQe8c4ZNjNi0KcgCJo0nm9bY= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 h1:rBADf+IZDKkDOuZznwIdonxF9jcOSQJU/qOYSNInX84= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d h1:bZXrxulDoDBsNg0wtXowrAyltjfgZahiGYuAoS5GKU4= -github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d h1:pRcB0wfWAlfDJ10ZZ6LK1ukRXcPaL299LLU/zbYWnsQ= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d h1:Vn8BY/hLTcKJWh8LCw6PDTbCK2562wq93MPynV1pHjE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 h1:hHdIZn95+HdP1JdjV8TAsuL5kU4eb4gncehyjXo/feQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d h1:tmaZvkBCP/OrQrwC728AEFtRAW8YUHBVNE8IXxtd4C4= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 h1:XCYvP8XwETTXF5LNz8q9X3EajDut7+UwTwqJ2TQ0TJo= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d h1:qNmg1DUvge8zPvygQEoulQjLG7gFzWKqPMJ3r7ZESm0= -github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d h1:u8pGLFhi7LnFOqqt3Q2buC3UjKX5l4e8bJ4wMjAU+Rg= -github.com/iotaledger/hive.go/log v0.0.0-20230929122509-67f34bfed40d/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 h1:FOQetJY2scpCtCGrZQWGw3RwB3lRIDdyu+M6P1NACM4= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d h1:mn2Gax95UuUpuzEi4osLk+1IBjv5q56LwcxF/lAxk38= -github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d h1:1839CFkegKrSvTfWkgYHpH1pudehOXxX05Mzy1KSR7I= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d h1:ekHWRypoaiCXgrJVUQS7rCewsK3FuG1gTbPxu5jYn9c= -github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07 h1:H4ZVd8iS1+/+6kN1FCvWlrJerWvaGv0N0YVTOTiKLAM= +github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20231005070803-455595bf0a07 h1:7+7xSAiLQcrAQTjE9CiGwdwA4tApi6MOl1uR8TT37rc= +github.com/iotaledger/hive.go/app v0.0.0-20231005070803-455595bf0a07/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07 h1:vRIm5NAvCsg3oTHLjjJyPv0J4hR81ceLMSL0s3aNUaQ= +github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07 h1:Qz1w42u8um1f8VWp7ivWSFAny0uQ5WQtC5AIo8wXY/s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07 h1:mbpeBB2UJ8P8yu3R/cT3pXnUhx+ElcsVHehi9bczQ20= +github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07 h1:gnNS6hOQZu4TxaaruFkunKSZHIAq4rdNcHf0DsLUhDk= +github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07 h1:c+0LxjcZRXQ2T4jiSILMhrZ89xVJyX1LeJF6bc3co3U= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07 h1:U9KAiWKERLvkbCBf3ZDFsGIguC+5j5jRkQ9tePU5qik= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07 h1:mZLvI/U82VXm8Y++eOzd1SUicHaTVErXMJrtpnvmnno= +github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07 h1:gQJyN3MRrOvyzpzudiCsov+JjPCbyWMky8g4DM4Hm8U= +github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07 h1:L1cWRwR7J0dzESq9YsxC76P+EJ0bDbIWElUEbhtoip4= +github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07 h1:FrMRe10E5WQfglfcn2SH6zIUKvL2oGAdeWn8Nxv4AAE= +github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07 h1:HvLxAdbqAlc4kFWILLaOHOdxi2dUyhE+3APHablEqEE= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07 h1:rudCl0AX255wyTIZM+MLhk19lgxcpYku9IkLexlK/4U= +github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231001095511-32be422a567e h1:Mwoe7M6gI2DAjJIXmIskgnI8KdxCY1LyEEhtJCNYBsU= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231001095511-32be422a567e/go.mod h1:jhzexR5X8m6qcmrwt5OX477O/ZwT7Ak9sPT83ByPkAo= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231001095356-923e8f138951 h1:qUf1W0fE1IyZzVy3Exv0Kj+SKECXG3S26c9m2ETb07U= diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 828898b4b..324db62fb 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -195,41 +195,42 @@ func (c *Chains) initChainSwitching() { c.HeaviestVerifiedChain.OnUpdate(func(_, heaviestVerifiedChain *Chain) { c.MainChain.Set(heaviestVerifiedChain) - - heaviestVerifiedChain.ForkingPoint.Get().IsRoot.Trigger() }) } func (c *Chains) provideEngineIfRequested(chain *Chain) func() { return chain.InstantiateEngine.OnUpdate(func(_, instantiate bool) { - if !instantiate { - chain.SpawnedEngine.Set(nil) + // TODO: MOVE TO WORKERPOOL + go func() { + if !instantiate { + chain.SpawnedEngine.Set(nil) - return - } - - if currentEngine := chain.Engine.Get(); currentEngine == nil { - mainEngine, err := c.engineManager.LoadActiveEngine(c.protocol.options.SnapshotPath) - if err != nil { - panic(fmt.Sprintf("could not load active engine: %s", err)) + return } - chain.SpawnedEngine.Set(mainEngine) + if currentEngine := chain.Engine.Get(); currentEngine == nil { + mainEngine, err := c.engineManager.LoadActiveEngine(c.protocol.options.SnapshotPath) + if err != nil { + panic(fmt.Sprintf("could not load active engine: %s", err)) + } + + chain.SpawnedEngine.Set(mainEngine) - c.protocol.Network.HookStopped(mainEngine.Shutdown) - } else { - forkingPoint := chain.ForkingPoint.Get() - snapshotTargetSlot := forkingPoint.Slot() - 1 + c.protocol.Network.HookStopped(mainEngine.Shutdown) + } else { + forkingPoint := chain.ForkingPoint.Get() + snapshotTargetSlot := forkingPoint.Slot() - 1 - candidateEngineInstance, err := c.engineManager.ForkEngineAtSlot(snapshotTargetSlot) - if err != nil { - panic(ierrors.Wrap(err, "error creating new candidate engine")) - } + candidateEngineInstance, err := c.engineManager.ForkEngineAtSlot(snapshotTargetSlot) + if err != nil { + panic(ierrors.Wrap(err, "error creating new candidate engine")) + } - chain.SpawnedEngine.Set(candidateEngineInstance) + chain.SpawnedEngine.Set(candidateEngineInstance) - c.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) - } + c.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) + } + }() }) } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 2f05d32a7..e2ad22e9c 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -181,6 +181,10 @@ func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitm return func(_, mainChild *Commitment) { c.SpawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { + if c.IsRoot.WasTriggered() { + return spawnedChain + } + switch mainChild { case nil: panic("main child may not be changed to nil") @@ -219,6 +223,7 @@ func (c *Commitment) promote(targetChain *Chain) { // root commitment of the main chain that is the first commitment ever published (which means that we can just // set the chain that we want it to have) c.Chain.Set(targetChain) + c.SpawnedChain.Set(targetChain) } else if parent := c.Parent.Get(); parent.Chain.Get() == targetChain { parent.MainChild.Set(c) } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 40d515cff..22257b171 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -9,6 +9,7 @@ import ( "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/network" + "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" ) @@ -38,7 +39,11 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi } func (p *Protocol) Run(ctx context.Context) error { - p.TriggerInitialized() + p.MainChain.OnUpdateOnce(func(_, mainChain *Chain) { + mainChain.Engine.OnUpdateOnce(func(_, _ *engine.Engine) { + p.TriggerInitialized() + }) + }) <-ctx.Done() diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index d04fe00ec..cd9c6af52 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -350,17 +350,17 @@ func TestProtocol_EngineSwitching(t *testing.T) { node8.IssueActivity(ctxP2, wg, 21) // P1 finalized until slot 18. We do not expect any forks here because our CW is higher than the other partition's. - ts.AssertForkDetectedCount(1, nodesP1...) + ts.AssertForkDetectedCount(0, nodesP1...) // P1's chain is heavier, they should not consider switching the chain. - ts.AssertCandidateEngineActivatedCount(1, nodesP1...) + ts.AssertCandidateEngineActivatedCount(0, nodesP1...) ctxP2Cancel() // we can stop issuing on P2. // Nodes from P2 should switch the chain. - ts.AssertForkDetectedCount(2, nodesP2...) - ts.AssertCandidateEngineActivatedCount(2, nodesP2...) + ts.AssertForkDetectedCount(1, nodesP2...) + ts.AssertCandidateEngineActivatedCount(1, nodesP2...) // Here we need to let enough time pass for the nodes to sync up the candidate engines and switch them - ts.AssertMainEngineSwitchedCount(2, nodesP2...) + ts.AssertMainEngineSwitchedCount(1, nodesP2...) // Make sure that nodes that switched their engine still have blocks with prefix P0 from before the fork. // Those nodes should also have all the blocks from the target fork P1 and should not have blocks from P2. diff --git a/pkg/testsuite/mock/network.go b/pkg/testsuite/mock/network.go index 42b363b7b..6dd947db0 100644 --- a/pkg/testsuite/mock/network.go +++ b/pkg/testsuite/mock/network.go @@ -153,8 +153,10 @@ func (e *Endpoint) Send(packet proto.Message, to ...peer.ID) { e.network.dispatchersMutex.RLock() defer e.network.dispatchersMutex.RUnlock() - if err := dispatcher.handler(e.id, packet); err != nil { - fmt.Println(e.id, "ERROR: ", err) + if dispatcher.handler != nil { + if err := dispatcher.handler(e.id, packet); err != nil { + fmt.Println(e.id, "ERROR: ", err) + } } }() } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 45f7e5a2f..2f88d778c 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -140,22 +140,14 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto } func (n *Node) hookEvents() { - n.Protocol.HeaviestAttestedChain.OnUpdate(func(_, heaviestAttestedChain *protocol.Chain) { - n.forkDetectedCount.Add(1) + n.Protocol.HeaviestAttestedChain.OnUpdate(func(prevHeaviestAttestedChain, heaviestAttestedChain *protocol.Chain) { + if prevHeaviestAttestedChain != nil { + n.forkDetectedCount.Add(1) - heaviestAttestedChain.Engine.OnUpdate(func(prevEngine, newEngine *engine.Engine) { - prevEngineName := "" - if prevEngine != nil { - prevEngineName = prevEngine.Name() - } - - newEngineName := "" - if newEngine != nil { - newEngineName = newEngine.Name() - } - - n.Protocol.LogWarn("ENGINE ACTIVATED FOR CHAIN ", "name", heaviestAttestedChain.LogName(), "counter", n.candidateEngineActivatedCount.Add(1), "prevEngine", prevEngineName, "newEngine", newEngineName) - }) + heaviestAttestedChain.Engine.OnUpdate(func(prevEngine, newEngine *engine.Engine) { + n.candidateEngineActivatedCount.Add(1) + }) + } }) n.Protocol.MainChain.OnUpdate(func(_, _ *protocol.Chain) { diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index b4678fb13..fa5c3f7c7 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -8,13 +8,13 @@ replace github.com/iotaledger/iota-core/tools/genesis-snapshot => ../genesis-sna require ( github.com/AlecAivazis/survey/v2 v2.3.7 - github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 - github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/app v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231003181920-a3245ad7a737 @@ -37,12 +37,13 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index 97376751f..d8c021e88 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -169,32 +169,34 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 h1:HHxgNhbtD6WDCwSQBbPrQe8c4ZNjNi0KcgCJo0nm9bY= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 h1:rBADf+IZDKkDOuZznwIdonxF9jcOSQJU/qOYSNInX84= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= -github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d h1:bZXrxulDoDBsNg0wtXowrAyltjfgZahiGYuAoS5GKU4= -github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d h1:pRcB0wfWAlfDJ10ZZ6LK1ukRXcPaL299LLU/zbYWnsQ= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d h1:Vn8BY/hLTcKJWh8LCw6PDTbCK2562wq93MPynV1pHjE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 h1:hHdIZn95+HdP1JdjV8TAsuL5kU4eb4gncehyjXo/feQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d h1:tmaZvkBCP/OrQrwC728AEFtRAW8YUHBVNE8IXxtd4C4= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 h1:XCYvP8XwETTXF5LNz8q9X3EajDut7+UwTwqJ2TQ0TJo= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d h1:qNmg1DUvge8zPvygQEoulQjLG7gFzWKqPMJ3r7ZESm0= -github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 h1:FOQetJY2scpCtCGrZQWGw3RwB3lRIDdyu+M6P1NACM4= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d h1:mn2Gax95UuUpuzEi4osLk+1IBjv5q56LwcxF/lAxk38= -github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d h1:1839CFkegKrSvTfWkgYHpH1pudehOXxX05Mzy1KSR7I= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d h1:ekHWRypoaiCXgrJVUQS7rCewsK3FuG1gTbPxu5jYn9c= -github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07 h1:H4ZVd8iS1+/+6kN1FCvWlrJerWvaGv0N0YVTOTiKLAM= +github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20231005070803-455595bf0a07 h1:7+7xSAiLQcrAQTjE9CiGwdwA4tApi6MOl1uR8TT37rc= +github.com/iotaledger/hive.go/app v0.0.0-20231005070803-455595bf0a07/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07 h1:vRIm5NAvCsg3oTHLjjJyPv0J4hR81ceLMSL0s3aNUaQ= +github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07 h1:Qz1w42u8um1f8VWp7ivWSFAny0uQ5WQtC5AIo8wXY/s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07 h1:mbpeBB2UJ8P8yu3R/cT3pXnUhx+ElcsVHehi9bczQ20= +github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07 h1:gnNS6hOQZu4TxaaruFkunKSZHIAq4rdNcHf0DsLUhDk= +github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07 h1:c+0LxjcZRXQ2T4jiSILMhrZ89xVJyX1LeJF6bc3co3U= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07 h1:U9KAiWKERLvkbCBf3ZDFsGIguC+5j5jRkQ9tePU5qik= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07 h1:mZLvI/U82VXm8Y++eOzd1SUicHaTVErXMJrtpnvmnno= +github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07 h1:gQJyN3MRrOvyzpzudiCsov+JjPCbyWMky8g4DM4Hm8U= +github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07 h1:L1cWRwR7J0dzESq9YsxC76P+EJ0bDbIWElUEbhtoip4= +github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07 h1:FrMRe10E5WQfglfcn2SH6zIUKvL2oGAdeWn8Nxv4AAE= +github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07 h1:HvLxAdbqAlc4kFWILLaOHOdxi2dUyhE+3APHablEqEE= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07 h1:rudCl0AX255wyTIZM+MLhk19lgxcpYku9IkLexlK/4U= +github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231003181920-a3245ad7a737 h1:6fuDHswgN9zTwsMuKRKNClnT+rJCojvWf3Hk8f03cvc= github.com/iotaledger/iota.go/v4 v4.0.0-20231003181920-a3245ad7a737/go.mod h1:+e3bsJFDr9HxmUMe+eQOLNut5wfcB/ivhJdouOJgOnE= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 60253b09e..105850c41 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 + github.com/iotaledger/hive.go/app v0.0.0-20231005070803-455595bf0a07 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -18,7 +18,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect @@ -58,18 +57,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231001095511-32be422a567e // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231001095356-923e8f138951 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231003181920-a3245ad7a737 // indirect @@ -134,7 +134,6 @@ require ( github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pokt-network/smt v0.6.1 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/prometheus/client_golang v1.16.0 // indirect @@ -150,7 +149,6 @@ require ( github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.8.4 // indirect github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect @@ -180,6 +178,5 @@ require ( google.golang.org/grpc v1.58.2 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 5e0a9c086..02bf9d67d 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -279,40 +279,41 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 h1:HHxgNhbtD6WDCwSQBbPrQe8c4ZNjNi0KcgCJo0nm9bY= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729 h1:rBADf+IZDKkDOuZznwIdonxF9jcOSQJU/qOYSNInX84= -github.com/iotaledger/hive.go/app v0.0.0-20230928074706-d58e32f86729/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= +github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07 h1:H4ZVd8iS1+/+6kN1FCvWlrJerWvaGv0N0YVTOTiKLAM= +github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20231005070803-455595bf0a07 h1:7+7xSAiLQcrAQTjE9CiGwdwA4tApi6MOl1uR8TT37rc= +github.com/iotaledger/hive.go/app v0.0.0-20231005070803-455595bf0a07/go.mod h1:eiZgbcwTDZ7d9hEait2EAwAhixWhceW4MXmuVk2EcEw= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d h1:bZXrxulDoDBsNg0wtXowrAyltjfgZahiGYuAoS5GKU4= -github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d h1:pRcB0wfWAlfDJ10ZZ6LK1ukRXcPaL299LLU/zbYWnsQ= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d h1:Vn8BY/hLTcKJWh8LCw6PDTbCK2562wq93MPynV1pHjE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 h1:hHdIZn95+HdP1JdjV8TAsuL5kU4eb4gncehyjXo/feQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d h1:tmaZvkBCP/OrQrwC728AEFtRAW8YUHBVNE8IXxtd4C4= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 h1:XCYvP8XwETTXF5LNz8q9X3EajDut7+UwTwqJ2TQ0TJo= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d h1:qNmg1DUvge8zPvygQEoulQjLG7gFzWKqPMJ3r7ZESm0= -github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729 h1:FOQetJY2scpCtCGrZQWGw3RwB3lRIDdyu+M6P1NACM4= -github.com/iotaledger/hive.go/logger v0.0.0-20230928074706-d58e32f86729/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d h1:mn2Gax95UuUpuzEi4osLk+1IBjv5q56LwcxF/lAxk38= -github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d h1:1839CFkegKrSvTfWkgYHpH1pudehOXxX05Mzy1KSR7I= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d h1:ekHWRypoaiCXgrJVUQS7rCewsK3FuG1gTbPxu5jYn9c= -github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07 h1:vRIm5NAvCsg3oTHLjjJyPv0J4hR81ceLMSL0s3aNUaQ= +github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07 h1:Qz1w42u8um1f8VWp7ivWSFAny0uQ5WQtC5AIo8wXY/s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07 h1:mbpeBB2UJ8P8yu3R/cT3pXnUhx+ElcsVHehi9bczQ20= +github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07 h1:gnNS6hOQZu4TxaaruFkunKSZHIAq4rdNcHf0DsLUhDk= +github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07 h1:c+0LxjcZRXQ2T4jiSILMhrZ89xVJyX1LeJF6bc3co3U= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07 h1:U9KAiWKERLvkbCBf3ZDFsGIguC+5j5jRkQ9tePU5qik= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07 h1:mZLvI/U82VXm8Y++eOzd1SUicHaTVErXMJrtpnvmnno= +github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07 h1:gQJyN3MRrOvyzpzudiCsov+JjPCbyWMky8g4DM4Hm8U= +github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07 h1:L1cWRwR7J0dzESq9YsxC76P+EJ0bDbIWElUEbhtoip4= +github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07 h1:FrMRe10E5WQfglfcn2SH6zIUKvL2oGAdeWn8Nxv4AAE= +github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07 h1:HvLxAdbqAlc4kFWILLaOHOdxi2dUyhE+3APHablEqEE= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07 h1:rudCl0AX255wyTIZM+MLhk19lgxcpYku9IkLexlK/4U= +github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231001095511-32be422a567e h1:Mwoe7M6gI2DAjJIXmIskgnI8KdxCY1LyEEhtJCNYBsU= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231001095511-32be422a567e/go.mod h1:jhzexR5X8m6qcmrwt5OX477O/ZwT7Ak9sPT83ByPkAo= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231001095356-923e8f138951 h1:qUf1W0fE1IyZzVy3Exv0Kj+SKECXG3S26c9m2ETb07U= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231001095356-923e8f138951/go.mod h1:c5778OnWpLq108YE+Eb2m8Ri/t/4ydV0TvI/Sy5YivQ= -github.com/iotaledger/iota.go/v4 v4.0.0-20231003162632-bf50df95b5f0 h1:6G9oUOnhhK5oktcsl0BImbrPlgp6tdGskKsAmaMNw8Q= -github.com/iotaledger/iota.go/v4 v4.0.0-20231003162632-bf50df95b5f0/go.mod h1:+e3bsJFDr9HxmUMe+eQOLNut5wfcB/ivhJdouOJgOnE= +github.com/iotaledger/iota.go/v4 v4.0.0-20231003181920-a3245ad7a737 h1:6fuDHswgN9zTwsMuKRKNClnT+rJCojvWf3Hk8f03cvc= github.com/iotaledger/iota.go/v4 v4.0.0-20231003181920-a3245ad7a737/go.mod h1:+e3bsJFDr9HxmUMe+eQOLNut5wfcB/ivhJdouOJgOnE= github.com/ipfs/boxo v0.10.0 h1:tdDAxq8jrsbRkYoF+5Rcqyeb91hgWe2hp7iLu7ORZLY= github.com/ipfs/boxo v0.10.0/go.mod h1:Fg+BnfxZ0RPzR0nOodzdIq3A7KgoWAOWsEIImrIQdBM= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index ba29c06b3..1216aa34c 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d - github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d + github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07 + github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231003181920-a3245ad7a737 github.com/mr-tron/base58 v1.2.0 @@ -27,13 +27,15 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect @@ -59,6 +61,8 @@ require ( github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98 // indirect github.com/zyedidia/generic v1.2.1 // indirect go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/sys v0.12.0 // indirect google.golang.org/protobuf v1.31.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index c69dca49d..191108bc9 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,28 +28,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729 h1:HHxgNhbtD6WDCwSQBbPrQe8c4ZNjNi0KcgCJo0nm9bY= -github.com/iotaledger/hive.go/ads v0.0.0-20230928074706-d58e32f86729/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d h1:bZXrxulDoDBsNg0wtXowrAyltjfgZahiGYuAoS5GKU4= -github.com/iotaledger/hive.go/constraints v0.0.0-20230929122509-67f34bfed40d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d h1:pRcB0wfWAlfDJ10ZZ6LK1ukRXcPaL299LLU/zbYWnsQ= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20230929122509-67f34bfed40d/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d h1:Vn8BY/hLTcKJWh8LCw6PDTbCK2562wq93MPynV1pHjE= -github.com/iotaledger/hive.go/crypto v0.0.0-20230929122509-67f34bfed40d/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729 h1:hHdIZn95+HdP1JdjV8TAsuL5kU4eb4gncehyjXo/feQ= -github.com/iotaledger/hive.go/ds v0.0.0-20230928074706-d58e32f86729/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d h1:tmaZvkBCP/OrQrwC728AEFtRAW8YUHBVNE8IXxtd4C4= -github.com/iotaledger/hive.go/ierrors v0.0.0-20230929122509-67f34bfed40d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 h1:XCYvP8XwETTXF5LNz8q9X3EajDut7+UwTwqJ2TQ0TJo= -github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d h1:qNmg1DUvge8zPvygQEoulQjLG7gFzWKqPMJ3r7ZESm0= -github.com/iotaledger/hive.go/lo v0.0.0-20230929122509-67f34bfed40d/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d h1:mn2Gax95UuUpuzEi4osLk+1IBjv5q56LwcxF/lAxk38= -github.com/iotaledger/hive.go/runtime v0.0.0-20230929122509-67f34bfed40d/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d h1:1839CFkegKrSvTfWkgYHpH1pudehOXxX05Mzy1KSR7I= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20230929122509-67f34bfed40d/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d h1:ekHWRypoaiCXgrJVUQS7rCewsK3FuG1gTbPxu5jYn9c= -github.com/iotaledger/hive.go/stringify v0.0.0-20230929122509-67f34bfed40d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07 h1:H4ZVd8iS1+/+6kN1FCvWlrJerWvaGv0N0YVTOTiKLAM= +github.com/iotaledger/hive.go/ads v0.0.0-20231005070803-455595bf0a07/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07 h1:vRIm5NAvCsg3oTHLjjJyPv0J4hR81ceLMSL0s3aNUaQ= +github.com/iotaledger/hive.go/constraints v0.0.0-20231005070803-455595bf0a07/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07 h1:Qz1w42u8um1f8VWp7ivWSFAny0uQ5WQtC5AIo8wXY/s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231005070803-455595bf0a07/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07 h1:mbpeBB2UJ8P8yu3R/cT3pXnUhx+ElcsVHehi9bczQ20= +github.com/iotaledger/hive.go/crypto v0.0.0-20231005070803-455595bf0a07/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07 h1:gnNS6hOQZu4TxaaruFkunKSZHIAq4rdNcHf0DsLUhDk= +github.com/iotaledger/hive.go/ds v0.0.0-20231005070803-455595bf0a07/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07 h1:c+0LxjcZRXQ2T4jiSILMhrZ89xVJyX1LeJF6bc3co3U= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231005070803-455595bf0a07/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07 h1:U9KAiWKERLvkbCBf3ZDFsGIguC+5j5jRkQ9tePU5qik= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231005070803-455595bf0a07/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07 h1:mZLvI/U82VXm8Y++eOzd1SUicHaTVErXMJrtpnvmnno= +github.com/iotaledger/hive.go/lo v0.0.0-20231005070803-455595bf0a07/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07 h1:gQJyN3MRrOvyzpzudiCsov+JjPCbyWMky8g4DM4Hm8U= +github.com/iotaledger/hive.go/log v0.0.0-20231005070803-455595bf0a07/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07 h1:L1cWRwR7J0dzESq9YsxC76P+EJ0bDbIWElUEbhtoip4= +github.com/iotaledger/hive.go/logger v0.0.0-20231005070803-455595bf0a07/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07 h1:FrMRe10E5WQfglfcn2SH6zIUKvL2oGAdeWn8Nxv4AAE= +github.com/iotaledger/hive.go/runtime v0.0.0-20231005070803-455595bf0a07/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07 h1:HvLxAdbqAlc4kFWILLaOHOdxi2dUyhE+3APHablEqEE= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005070803-455595bf0a07/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07 h1:rudCl0AX255wyTIZM+MLhk19lgxcpYku9IkLexlK/4U= +github.com/iotaledger/hive.go/stringify v0.0.0-20231005070803-455595bf0a07/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231003181920-a3245ad7a737 h1:6fuDHswgN9zTwsMuKRKNClnT+rJCojvWf3Hk8f03cvc= github.com/iotaledger/iota.go/v4 v4.0.0-20231003181920-a3245ad7a737/go.mod h1:+e3bsJFDr9HxmUMe+eQOLNut5wfcB/ivhJdouOJgOnE= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= @@ -109,6 +113,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -120,6 +125,12 @@ github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XD github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= From 6747486cb6906d46209e97a6bd2b36542d171cd9 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 5 Oct 2023 18:30:42 +0200 Subject: [PATCH 154/356] Fix: fixed some issues --- pkg/protocol/chain.go | 32 +++++++++++------- pkg/protocol/chains.go | 74 +++++++++++++++++++---------------------- pkg/protocol/network.go | 14 ++------ 3 files changed, 58 insertions(+), 62 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index de76abbd6..c9959058e 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -5,7 +5,6 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/model" @@ -148,21 +147,30 @@ func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exist return nil, false } -func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (err error) { - if !c.InSyncRange(block.ID().Slot()) { - return ierrors.Errorf("received block is not in sync range of %s", c.LogName()) - } +func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (blockDropped bool) { + targetSlot := block.ID().Slot() - engine := c.SpawnedEngine.Get() - if engine == nil { - return ierrors.Errorf("received block for %s without engine", c.LogName()) + for _, chain := range append([]*Chain{c}, c.ChildChains.ToSlice()...) { + if chain.InstantiateEngine.Get() && chain.earliestUncommittedSlot() <= targetSlot { + if targetEngine := chain.SpawnedEngine.Get(); targetEngine != nil && targetSlot < c.SyncThreshold.Get() { + targetEngine.ProcessBlockFromPeer(block, src) + } else { + blockDropped = true + } + } } - engine.ProcessBlockFromPeer(block, src) - - c.LogTrace("dispatched block", "block", block.ID(), "src", src) + return blockDropped +} - return nil +func (c *Chain) earliestUncommittedSlot() iotago.SlotIndex { + if latestVerifiedCommitment := c.LatestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { + return latestVerifiedCommitment.Slot() + 1 + } else if forkingPoint := c.ForkingPoint.Get(); forkingPoint != nil { + return forkingPoint.Slot() + } else { + return 0 + } } func (c *Chain) InSyncRange(slot iotago.SlotIndex) bool { diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 324db62fb..e5ef54de1 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -275,58 +275,54 @@ func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFrom } func (c *Chains) publishEngineCommitments(chain *Chain) { - chain.SpawnedEngine.OnUpdateWithContext(func(_, engine *engine.Engine, withinContext func(subscriptionFactory func() (unsubscribe func()))) { - if engine == nil { - return - } - - withinContext(func() (unsubscribe func()) { - return engine.Ledger.HookInitialized(func() { - withinContext(func() (unsubscribe func()) { - var latestPublishedSlot iotago.SlotIndex + chain.SpawnedEngine.OnUpdateWithContext(func(_, engine *engine.Engine, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + if engine != nil { + var latestPublishedSlot iotago.SlotIndex - publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment, published bool) { - publishedCommitment, published, err := c.PublishCommitment(commitment) - if err != nil { - panic(err) // this can never happen, but we panic to get a stack trace if it ever does - } - - publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) - publishedCommitment.IsAttested.Trigger() - publishedCommitment.IsVerified.Trigger() + publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment, published bool) { + publishedCommitment, published, err := c.PublishCommitment(commitment) + if err != nil { + panic(err) // this can never happen, but we panic to get a stack trace if it ever does + } - latestPublishedSlot = commitment.Slot() + publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) + publishedCommitment.IsAttested.Trigger() + publishedCommitment.IsVerified.Trigger() - if publishedCommitment.IsSolid.Get() { - publishedCommitment.promote(chain) - } + latestPublishedSlot = commitment.Slot() - return publishedCommitment, published - } + if publishedCommitment.IsSolid.Get() { + publishedCommitment.promote(chain) + } - if forkingPoint := chain.ForkingPoint.Get(); forkingPoint == nil { - if rootCommitment, published := publishCommitment(engine.RootCommitment.Get()); published { - chain.ForkingPoint.Set(rootCommitment) + return publishedCommitment, published + } + unsubscribeOnUpdate(func() (unsubscribe func()) { + return engine.Ledger.HookInitialized(func() { + unsubscribeOnUpdate(func() (unsubscribe func()) { + if forkingPoint := chain.ForkingPoint.Get(); forkingPoint == nil { + rootCommitment, _ := publishCommitment(engine.RootCommitment.Get()) rootCommitment.IsRoot.Trigger() rootCommitment.promote(chain) + + chain.ForkingPoint.Set(rootCommitment) + } else { + latestPublishedSlot = forkingPoint.Slot() - 1 } - } else { - latestPublishedSlot = forkingPoint.Slot() - 1 - } - return engine.LatestCommitment.OnUpdate(func(_, latestModelCommitment *model.Commitment) { - for latestPublishedSlot < latestModelCommitment.Slot() { - if commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedSlot + 1); err != nil { - panic(err) // this should never happen, but we panic to get a stack trace if it does - } else { - publishCommitment(commitmentToPublish) + return engine.LatestCommitment.OnUpdate(func(_, latestCommitment *model.Commitment) { + for latestPublishedSlot < latestCommitment.Slot() { + if commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedSlot + 1); err != nil { + panic(err) // this should never happen, but we panic to get a stack trace if it does + } else { + publishCommitment(commitmentToPublish) + } } - } + }) }) }) }) - - }) + } }) } diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index c39cc76fb..e802165da 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -141,20 +141,12 @@ func (n *Network) ProcessReceivedBlock(block *model.Block, src peer.ID) { return logLevel, commitmentRequest.Err() } - referencedCommitment := commitmentRequest.Result() - dispatchBlockToChain := func(chain *Chain) { - if err = chain.DispatchBlock(block, src); err != nil { - chain.Log("failed to dispatch block", logLevel, "blockID", block.ID(), "referencedCommitment", referencedCommitment.LogName(), "peer", src, "error", err) - } else { - chain.Log("dispatched block", logLevel, "blockID", block.ID(), "referencedCommitment", referencedCommitment.LogName(), "peer", src) + if chain := commitmentRequest.Result().Chain.Get(); chain != nil { + if chain.DispatchBlock(block, src) { + n.protocol.LogError("block dropped", "blockID", block.ID(), "peer", src) } } - if chain := referencedCommitment.Chain.Get(); chain != nil { - dispatchBlockToChain(chain) - chain.ChildChains.Range(dispatchBlockToChain) - } - return logLevel, nil }, "blockID", block.ID(), "peer", src) } From ecd780df7f5db46fdb1b3544747e885e0b2d5b7f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 06:27:35 +0200 Subject: [PATCH 155/356] Fix: added last missing part --- pkg/protocol/network.go | 19 +++++++++++++++++++ pkg/testsuite/mock/node.go | 2 +- 2 files changed, 20 insertions(+), 1 deletion(-) diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index e802165da..11701aed6 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -7,6 +7,7 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/ds/types" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore" "github.com/iotaledger/hive.go/kvstore/mapdb" @@ -14,6 +15,7 @@ import ( "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" + "github.com/iotaledger/iota-core/pkg/core/buffer" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/network/protocols/core" @@ -36,6 +38,7 @@ type Network struct { blockRequestStopped *event.Event2[iotago.BlockID, *engine.Engine] blockRequested *event.Event2[iotago.BlockID, *engine.Engine] commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] + droppedBlocksBuffer *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] module.Module } @@ -52,6 +55,7 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { blockRequestStopped: event.New2[iotago.BlockID, *engine.Engine](), blockRequested: event.New2[iotago.BlockID, *engine.Engine](), commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), + droppedBlocksBuffer: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), } n.TriggerConstructed() @@ -71,6 +75,17 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { var unsubscribeFromNetworkEvents func() protocol.HookInitialized(func() { + protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { + if inSyncRange { + for _, droppedBlock := range n.droppedBlocksBuffer.GetValues(commitment.ID()) { + // TODO: replace with workerpool + go n.ProcessReceivedBlock(droppedBlock.A, droppedBlock.B) + } + } + }) + }) + n.OnError(func(err error, peer peer.ID) { n.protocol.LogError("network error", "peer", peer, "error", err) }) @@ -134,6 +149,10 @@ func (n *Network) ProcessReceivedBlock(block *model.Block, src peer.ID) { commitmentRequest := n.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) if !commitmentRequest.WasCompleted() { + if !n.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, src)) { + return log.LevelError, ierrors.New("failed to add block to dropped blocks buffer") + } + return logLevel, ierrors.Errorf("referenced commitment %s unknown", block.ProtocolBlock().SlotCommitmentID) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 5bf6f93fc..e3fbc7355 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -159,7 +159,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { n.Protocol.Chains.Chains.OnUpdate(func(mutations ds.SetMutations[*protocol.Chain]) { mutations.AddedElements().Range(func(chain *protocol.Chain) { chain.SpawnedEngine.OnUpdate(func(_, newEngine *engine.Engine) { - if newEngine != nil && n.Name == "node6" && newEngine != n.Protocol.MainEngineInstance() { + if newEngine != nil { n.attachEngineLogs(failOnBlockFiltered, newEngine) } }) From 52d85373cdc7ee989a86b3923e22b2bc1e115590 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 07:20:09 +0200 Subject: [PATCH 156/356] Refactor: removed excessive logging --- pkg/testsuite/mock/node.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index e3fbc7355..95c35dda1 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -160,7 +160,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { mutations.AddedElements().Range(func(chain *protocol.Chain) { chain.SpawnedEngine.OnUpdate(func(_, newEngine *engine.Engine) { if newEngine != nil { - n.attachEngineLogs(failOnBlockFiltered, newEngine) + //n.attachEngineLogs(failOnBlockFiltered, newEngine) } }) }) From 8550eed2506ac5b4451aa589feabeb8c2d5d5972 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 07:22:48 +0200 Subject: [PATCH 157/356] Fix: disable logging without linter warning --- pkg/testsuite/mock/node.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 95c35dda1..786db9a3b 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -118,7 +118,7 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto ) n.hookEvents() - n.hookLogging(failOnBlockFiltered) + //n.hookLogging(failOnBlockFiltered) n.blockIssuer = blockfactory.New(n.Protocol, blockfactory.WithTipSelectionTimeout(3*time.Second), blockfactory.WithTipSelectionRetryInterval(time.Millisecond*100)) @@ -160,7 +160,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { mutations.AddedElements().Range(func(chain *protocol.Chain) { chain.SpawnedEngine.OnUpdate(func(_, newEngine *engine.Engine) { if newEngine != nil { - //n.attachEngineLogs(failOnBlockFiltered, newEngine) + n.attachEngineLogs(failOnBlockFiltered, newEngine) } }) }) From 31873ba0a4845cc8d91ea8ed0f3fef07d3ef0924 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 07:26:37 +0200 Subject: [PATCH 158/356] Fix: linter happy now? --- pkg/testsuite/mock/node.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 786db9a3b..b606f4cfc 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -118,7 +118,9 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto ) n.hookEvents() - //n.hookLogging(failOnBlockFiltered) + if n == nil { + n.hookLogging(failOnBlockFiltered) + } n.blockIssuer = blockfactory.New(n.Protocol, blockfactory.WithTipSelectionTimeout(3*time.Second), blockfactory.WithTipSelectionRetryInterval(time.Millisecond*100)) From c671b8da758794d7b961bf38ab1ee4948907f999 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 07:30:20 +0200 Subject: [PATCH 159/356] Fix: meh :/ --- pkg/testsuite/mock/node.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index b606f4cfc..8453d7a25 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -118,7 +118,7 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto ) n.hookEvents() - if n == nil { + if n.Name == "disabled" { n.hookLogging(failOnBlockFiltered) } From 8594ba87a2c46712404b66ad6aa2b2a170bc3a6f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 08:07:33 +0200 Subject: [PATCH 160/356] Fix: fixed data race --- pkg/testsuite/mock/network.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/testsuite/mock/network.go b/pkg/testsuite/mock/network.go index 6dd947db0..bb20c3579 100644 --- a/pkg/testsuite/mock/network.go +++ b/pkg/testsuite/mock/network.go @@ -115,6 +115,9 @@ func (e *Endpoint) LocalPeerID() peer.ID { } func (e *Endpoint) RegisterProtocol(_ func() proto.Message, handler func(peer.ID, proto.Message) error) { + e.network.dispatchersMutex.Lock() + defer e.network.dispatchersMutex.Unlock() + e.handler = handler } From 295293257d483744f19a452ff992e1a8e45f1172 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 08:39:32 +0200 Subject: [PATCH 161/356] Fix: fixed bug in test framework --- pkg/testsuite/mock/node.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 8453d7a25..5ce2b0d75 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -146,7 +146,7 @@ func (n *Node) hookEvents() { if prevHeaviestAttestedChain != nil { n.forkDetectedCount.Add(1) - heaviestAttestedChain.Engine.OnUpdate(func(prevEngine, newEngine *engine.Engine) { + heaviestAttestedChain.SpawnedEngine.OnUpdate(func(prevEngine, newEngine *engine.Engine) { n.candidateEngineActivatedCount.Add(1) }) } From 7512c227542032297c8401c6f938ea54e764e90e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 17:17:31 +0200 Subject: [PATCH 162/356] Feat: moved EngineManager to protocol --- pkg/protocol/chains.go | 29 +- pkg/protocol/enginemanager.go | 209 ++++++++++++++ pkg/protocol/enginemanager/enginemanager.go | 303 -------------------- pkg/protocol/network.go | 5 + pkg/tests/protocol_engine_switching_test.go | 2 +- 5 files changed, 217 insertions(+), 331 deletions(-) create mode 100644 pkg/protocol/enginemanager.go delete mode 100644 pkg/protocol/enginemanager/enginemanager.go diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index e5ef54de1..5fe9174c3 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -13,7 +13,6 @@ import ( "github.com/iotaledger/iota-core/pkg/core/promise" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/enginemanager" iotago "github.com/iotaledger/iota.go/v4" ) @@ -27,7 +26,7 @@ type Chains struct { protocol *Protocol commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] - engineManager *enginemanager.EngineManager + engineManager *EngineManager reactive.EvictionState[iotago.SlotIndex] } @@ -43,31 +42,7 @@ func newChains(protocol *Protocol) *Chains { HeaviestVerifiedChain: reactive.NewVariable[*Chain](), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), CommitmentCreated: event.New1[*Commitment](), - engineManager: enginemanager.New( - protocol.Workers, - func(err error) { protocol.LogError("engine error", "err", err) }, - protocol.options.BaseDirectory, - 3, - protocol.options.StorageOptions, - protocol.options.EngineOptions, - protocol.options.FilterProvider, - protocol.options.CommitmentFilterProvider, - protocol.options.BlockDAGProvider, - protocol.options.BookerProvider, - protocol.options.ClockProvider, - protocol.options.BlockGadgetProvider, - protocol.options.SlotGadgetProvider, - protocol.options.SybilProtectionProvider, - protocol.options.NotarizationProvider, - protocol.options.AttestationProvider, - protocol.options.LedgerProvider, - protocol.options.SchedulerProvider, - protocol.options.TipManagerProvider, - protocol.options.TipSelectionProvider, - protocol.options.RetainerProvider, - protocol.options.UpgradeOrchestratorProvider, - protocol.options.SyncManagerProvider, - ), + engineManager: NewEngineManager(protocol, 3), } c.HeaviestChain.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) diff --git a/pkg/protocol/enginemanager.go b/pkg/protocol/enginemanager.go new file mode 100644 index 000000000..3509cda5b --- /dev/null +++ b/pkg/protocol/enginemanager.go @@ -0,0 +1,209 @@ +package protocol + +import ( + "os" + "path/filepath" + + "github.com/google/uuid" + + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/runtime/ioutils" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts/accountsledger" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" + "github.com/iotaledger/iota-core/pkg/protocol/engine/eviction" + "github.com/iotaledger/iota-core/pkg/storage" + "github.com/iotaledger/iota-core/pkg/storage/utils" + iotago "github.com/iotaledger/iota.go/v4" +) + +const engineInfoFile = "info" + +type engineInfo struct { + Name string `json:"name"` +} + +type EngineManager struct { + protocol *Protocol + directory *utils.Directory + dbVersion byte + activeInstance *engine.Engine +} + +func NewEngineManager(protocol *Protocol, dbVersion byte) *EngineManager { + return &EngineManager{ + protocol: protocol, + directory: utils.NewDirectory(protocol.options.BaseDirectory), + dbVersion: dbVersion, + } +} + +func (e *EngineManager) LoadActiveEngine(snapshotPath string) (*engine.Engine, error) { + info := &engineInfo{} + if err := ioutils.ReadJSONFromFile(e.infoFilePath(), info); err != nil { + if !ierrors.Is(err, os.ErrNotExist) { + return nil, ierrors.Errorf("unable to read engine info file: %w", err) + } + } + + if len(info.Name) > 0 { + if exists, isDirectory, err := ioutils.PathExists(e.directory.Path(info.Name)); err == nil && exists && isDirectory { + // Load previous engine as active + e.activeInstance = e.loadEngineInstanceFromSnapshot(info.Name, snapshotPath) + } + } + + if e.activeInstance == nil { + // Start with a new instance and set to active + instance := e.loadEngineInstanceFromSnapshot(lo.PanicOnErr(uuid.NewUUID()).String(), snapshotPath) + + if err := e.SetActiveInstance(instance); err != nil { + return nil, err + } + } + + // Cleanup non-active instances + if err := e.CleanupNonActive(); err != nil { + return nil, err + } + + return e.activeInstance, nil +} + +func (e *EngineManager) CleanupNonActive() error { + activeDir := filepath.Base(e.activeInstance.Storage.Directory()) + + dirs, err := e.directory.SubDirs() + if err != nil { + return ierrors.Wrapf(err, "unable to list subdirectories of %s", e.directory.Path()) + } + for _, dir := range dirs { + if dir == activeDir { + continue + } + if err := e.directory.RemoveSubdir(dir); err != nil { + return ierrors.Wrapf(err, "unable to remove subdirectory %s", dir) + } + } + + return nil +} + +func (e *EngineManager) infoFilePath() string { + return e.directory.Path(engineInfoFile) +} + +func (e *EngineManager) SetActiveInstance(instance *engine.Engine) error { + e.activeInstance = instance + + info := &engineInfo{ + Name: filepath.Base(instance.Storage.Directory()), + } + + return ioutils.WriteJSONToFile(e.infoFilePath(), info, 0o644) +} + +func (e *EngineManager) loadEngineInstanceFromSnapshot(engineAlias string, snapshotPath string) *engine.Engine { + errorHandler := func(err error) { + e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) + } + + e.protocol.options.EngineOptions = append(e.protocol.options.EngineOptions, engine.WithSnapshotPath(snapshotPath)) + + return e.loadEngineInstanceWithStorage(engineAlias, storage.Create(e.directory.Path(engineAlias), e.dbVersion, errorHandler, e.protocol.options.StorageOptions...)) +} + +func (e *EngineManager) loadEngineInstanceWithStorage(engineAlias string, storage *storage.Storage) *engine.Engine { + errorHandler := func(err error) { + e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) + } + + newEngine := engine.New(e.protocol.Workers.CreateGroup(engineAlias), + errorHandler, + storage, + e.protocol.options.FilterProvider, + e.protocol.options.CommitmentFilterProvider, + e.protocol.options.BlockDAGProvider, + e.protocol.options.BookerProvider, + e.protocol.options.ClockProvider, + e.protocol.options.BlockGadgetProvider, + e.protocol.options.SlotGadgetProvider, + e.protocol.options.SybilProtectionProvider, + e.protocol.options.NotarizationProvider, + e.protocol.options.AttestationProvider, + e.protocol.options.LedgerProvider, + e.protocol.options.SchedulerProvider, + e.protocol.options.TipManagerProvider, + e.protocol.options.TipSelectionProvider, + e.protocol.options.RetainerProvider, + e.protocol.options.UpgradeOrchestratorProvider, + e.protocol.options.SyncManagerProvider, + e.protocol.options.EngineOptions..., + ) + + return newEngine +} + +func (e *EngineManager) ForkEngineAtSlot(index iotago.SlotIndex) (*engine.Engine, error) { + engineAlias := newEngineAlias() + errorHandler := func(err error) { + e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) + } + + // Copy raw data on disk. + newStorage, err := storage.Clone(e.activeInstance.Storage, e.directory.Path(engineAlias), e.dbVersion, errorHandler, e.protocol.options.StorageOptions...) + if err != nil { + return nil, ierrors.Wrapf(err, "failed to copy storage from active engine instance (%s) to new engine instance (%s)", e.activeInstance.Storage.Directory(), e.directory.Path(engineAlias)) + } + + // Remove commitments that after forking point. + latestCommitment := newStorage.Settings().LatestCommitment() + if err := newStorage.Commitments().Rollback(index, latestCommitment.Slot()); err != nil { + return nil, ierrors.Wrap(err, "failed to rollback commitments") + } + // Create temporary components and rollback their permanent state, which will be reflected on disk. + evictionState := eviction.NewState(newStorage.LatestNonEmptySlot(), newStorage.RootBlocks) + evictionState.Initialize(latestCommitment.Slot()) + + blockCache := blocks.New(evictionState, newStorage.Settings().APIProvider()) + accountsManager := accountsledger.New(newStorage.Settings().APIProvider(), blockCache.Block, newStorage.AccountDiffs, newStorage.Accounts()) + + accountsManager.SetLatestCommittedSlot(latestCommitment.Slot()) + if err := accountsManager.Rollback(index); err != nil { + return nil, ierrors.Wrap(err, "failed to rollback accounts manager") + } + + if err := evictionState.Rollback(newStorage.Settings().LatestFinalizedSlot(), index); err != nil { + return nil, ierrors.Wrap(err, "failed to rollback eviction state") + } + if err := newStorage.Ledger().Rollback(index); err != nil { + return nil, err + } + + targetCommitment, err := newStorage.Commitments().Load(index) + if err != nil { + return nil, ierrors.Wrapf(err, "error while retrieving commitment for target index %d", index) + } + + if err := newStorage.Settings().Rollback(targetCommitment); err != nil { + return nil, err + } + + if err := newStorage.RollbackPrunable(index); err != nil { + return nil, err + } + + candidateEngine := e.loadEngineInstanceWithStorage(engineAlias, newStorage) + + // Rollback attestations already on created engine instance, because this action modifies the in-memory storage. + if err := candidateEngine.Attestations.Rollback(index); err != nil { + return nil, ierrors.Wrap(err, "error while rolling back attestations storage on candidate engine") + } + + return candidateEngine, nil +} + +func newEngineAlias() string { + return lo.PanicOnErr(uuid.NewUUID()).String() +} diff --git a/pkg/protocol/enginemanager/enginemanager.go b/pkg/protocol/enginemanager/enginemanager.go deleted file mode 100644 index 01e2efa45..000000000 --- a/pkg/protocol/enginemanager/enginemanager.go +++ /dev/null @@ -1,303 +0,0 @@ -package enginemanager - -import ( - "os" - "path/filepath" - - "github.com/google/uuid" - - "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/runtime/event" - "github.com/iotaledger/hive.go/runtime/ioutils" - "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/hive.go/runtime/options" - "github.com/iotaledger/hive.go/runtime/workerpool" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts/accountsledger" - "github.com/iotaledger/iota-core/pkg/protocol/engine/attestation" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blockdag" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" - "github.com/iotaledger/iota-core/pkg/protocol/engine/booker" - "github.com/iotaledger/iota-core/pkg/protocol/engine/clock" - "github.com/iotaledger/iota-core/pkg/protocol/engine/commitmentfilter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/congestioncontrol/scheduler" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/blockgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/consensus/slotgadget" - "github.com/iotaledger/iota-core/pkg/protocol/engine/eviction" - "github.com/iotaledger/iota-core/pkg/protocol/engine/filter" - "github.com/iotaledger/iota-core/pkg/protocol/engine/ledger" - "github.com/iotaledger/iota-core/pkg/protocol/engine/notarization" - "github.com/iotaledger/iota-core/pkg/protocol/engine/syncmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipmanager" - "github.com/iotaledger/iota-core/pkg/protocol/engine/tipselection" - "github.com/iotaledger/iota-core/pkg/protocol/engine/upgrade" - "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection" - "github.com/iotaledger/iota-core/pkg/retainer" - "github.com/iotaledger/iota-core/pkg/storage" - "github.com/iotaledger/iota-core/pkg/storage/utils" - iotago "github.com/iotaledger/iota.go/v4" -) - -const engineInfoFile = "info" - -type engineInfo struct { - Name string `json:"name"` -} - -type EngineManager struct { - directory *utils.Directory - dbVersion byte - workers *workerpool.Group - errorHandler func(error) - engineCreated *event.Event1[*engine.Engine] - activeInstance *engine.Engine - - storageOptions []options.Option[storage.Storage] - engineOptions []options.Option[engine.Engine] - filterProvider module.Provider[*engine.Engine, filter.Filter] - commitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] - blockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] - bookerProvider module.Provider[*engine.Engine, booker.Booker] - clockProvider module.Provider[*engine.Engine, clock.Clock] - blockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] - slotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] - sybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] - notarizationProvider module.Provider[*engine.Engine, notarization.Notarization] - attestationProvider module.Provider[*engine.Engine, attestation.Attestations] - ledgerProvider module.Provider[*engine.Engine, ledger.Ledger] - schedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] - tipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] - tipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] - retainerProvider module.Provider[*engine.Engine, retainer.Retainer] - upgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] - syncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager] -} - -func New( - workers *workerpool.Group, - errorHandler func(error), - dir string, - dbVersion byte, - storageOptions []options.Option[storage.Storage], - engineOptions []options.Option[engine.Engine], - filterProvider module.Provider[*engine.Engine, filter.Filter], - commitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter], - blockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG], - bookerProvider module.Provider[*engine.Engine, booker.Booker], - clockProvider module.Provider[*engine.Engine, clock.Clock], - blockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget], - slotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget], - sybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection], - notarizationProvider module.Provider[*engine.Engine, notarization.Notarization], - attestationProvider module.Provider[*engine.Engine, attestation.Attestations], - ledgerProvider module.Provider[*engine.Engine, ledger.Ledger], - schedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler], - tipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager], - tipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection], - retainerProvider module.Provider[*engine.Engine, retainer.Retainer], - upgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator], - syncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager], -) *EngineManager { - return &EngineManager{ - directory: utils.NewDirectory(dir), - dbVersion: dbVersion, - workers: workers, - errorHandler: errorHandler, - engineCreated: event.New1[*engine.Engine](), - storageOptions: storageOptions, - engineOptions: engineOptions, - filterProvider: filterProvider, - commitmentFilterProvider: commitmentFilterProvider, - blockDAGProvider: blockDAGProvider, - bookerProvider: bookerProvider, - clockProvider: clockProvider, - blockGadgetProvider: blockGadgetProvider, - slotGadgetProvider: slotGadgetProvider, - sybilProtectionProvider: sybilProtectionProvider, - notarizationProvider: notarizationProvider, - attestationProvider: attestationProvider, - ledgerProvider: ledgerProvider, - schedulerProvider: schedulerProvider, - tipManagerProvider: tipManagerProvider, - tipSelectionProvider: tipSelectionProvider, - retainerProvider: retainerProvider, - upgradeOrchestratorProvider: upgradeOrchestratorProvider, - syncManagerProvider: syncManagerProvider, - } -} - -func (e *EngineManager) LoadActiveEngine(snapshotPath string) (*engine.Engine, error) { - info := &engineInfo{} - if err := ioutils.ReadJSONFromFile(e.infoFilePath(), info); err != nil { - if !ierrors.Is(err, os.ErrNotExist) { - return nil, ierrors.Errorf("unable to read engine info file: %w", err) - } - } - - if len(info.Name) > 0 { - if exists, isDirectory, err := ioutils.PathExists(e.directory.Path(info.Name)); err == nil && exists && isDirectory { - // Load previous engine as active - e.activeInstance = e.loadEngineInstanceFromSnapshot(info.Name, snapshotPath) - } - } - - if e.activeInstance == nil { - // Start with a new instance and set to active - instance := e.loadEngineInstanceFromSnapshot(lo.PanicOnErr(uuid.NewUUID()).String(), snapshotPath) - - if err := e.SetActiveInstance(instance); err != nil { - return nil, err - } - } - - // Cleanup non-active instances - if err := e.CleanupNonActive(); err != nil { - return nil, err - } - - return e.activeInstance, nil -} - -func (e *EngineManager) CleanupNonActive() error { - activeDir := filepath.Base(e.activeInstance.Storage.Directory()) - - dirs, err := e.directory.SubDirs() - if err != nil { - return ierrors.Wrapf(err, "unable to list subdirectories of %s", e.directory.Path()) - } - for _, dir := range dirs { - if dir == activeDir { - continue - } - if err := e.directory.RemoveSubdir(dir); err != nil { - return ierrors.Wrapf(err, "unable to remove subdirectory %s", dir) - } - } - - return nil -} - -func (e *EngineManager) infoFilePath() string { - return e.directory.Path(engineInfoFile) -} - -func (e *EngineManager) SetActiveInstance(instance *engine.Engine) error { - e.activeInstance = instance - - info := &engineInfo{ - Name: filepath.Base(instance.Storage.Directory()), - } - - return ioutils.WriteJSONToFile(e.infoFilePath(), info, 0o644) -} - -func (e *EngineManager) loadEngineInstanceFromSnapshot(engineAlias string, snapshotPath string) *engine.Engine { - errorHandler := func(err error) { - e.errorHandler(ierrors.Wrapf(err, "engine (%s)", engineAlias[0:8])) - } - - e.engineOptions = append(e.engineOptions, engine.WithSnapshotPath(snapshotPath)) - - return e.loadEngineInstanceWithStorage(engineAlias, storage.Create(e.directory.Path(engineAlias), e.dbVersion, errorHandler, e.storageOptions...)) -} - -func (e *EngineManager) loadEngineInstanceWithStorage(engineAlias string, storage *storage.Storage) *engine.Engine { - errorHandler := func(err error) { - e.errorHandler(ierrors.Wrapf(err, "engine (%s)", engineAlias[0:8])) - } - - newEngine := engine.New(e.workers.CreateGroup(engineAlias), - errorHandler, - storage, - e.filterProvider, - e.commitmentFilterProvider, - e.blockDAGProvider, - e.bookerProvider, - e.clockProvider, - e.blockGadgetProvider, - e.slotGadgetProvider, - e.sybilProtectionProvider, - e.notarizationProvider, - e.attestationProvider, - e.ledgerProvider, - e.schedulerProvider, - e.tipManagerProvider, - e.tipSelectionProvider, - e.retainerProvider, - e.upgradeOrchestratorProvider, - e.syncManagerProvider, - e.engineOptions..., - ) - - e.engineCreated.Trigger(newEngine) - - return newEngine -} - -func (e *EngineManager) ForkEngineAtSlot(index iotago.SlotIndex) (*engine.Engine, error) { - engineAlias := newEngineAlias() - errorHandler := func(err error) { - e.errorHandler(ierrors.Wrapf(err, "engine (%s)", engineAlias[0:8])) - } - - // Copy raw data on disk. - newStorage, err := storage.Clone(e.activeInstance.Storage, e.directory.Path(engineAlias), e.dbVersion, errorHandler, e.storageOptions...) - if err != nil { - return nil, ierrors.Wrapf(err, "failed to copy storage from active engine instance (%s) to new engine instance (%s)", e.activeInstance.Storage.Directory(), e.directory.Path(engineAlias)) - } - - // Remove commitments that after forking point. - latestCommitment := newStorage.Settings().LatestCommitment() - if err := newStorage.Commitments().Rollback(index, latestCommitment.Slot()); err != nil { - return nil, ierrors.Wrap(err, "failed to rollback commitments") - } - // Create temporary components and rollback their permanent state, which will be reflected on disk. - evictionState := eviction.NewState(newStorage.LatestNonEmptySlot(), newStorage.RootBlocks) - evictionState.Initialize(latestCommitment.Slot()) - - blockCache := blocks.New(evictionState, newStorage.Settings().APIProvider()) - accountsManager := accountsledger.New(newStorage.Settings().APIProvider(), blockCache.Block, newStorage.AccountDiffs, newStorage.Accounts()) - - accountsManager.SetLatestCommittedSlot(latestCommitment.Slot()) - if err := accountsManager.Rollback(index); err != nil { - return nil, ierrors.Wrap(err, "failed to rollback accounts manager") - } - - if err := evictionState.Rollback(newStorage.Settings().LatestFinalizedSlot(), index); err != nil { - return nil, ierrors.Wrap(err, "failed to rollback eviction state") - } - if err := newStorage.Ledger().Rollback(index); err != nil { - return nil, err - } - - targetCommitment, err := newStorage.Commitments().Load(index) - if err != nil { - return nil, ierrors.Wrapf(err, "error while retrieving commitment for target index %d", index) - } - - if err := newStorage.Settings().Rollback(targetCommitment); err != nil { - return nil, err - } - - if err := newStorage.RollbackPrunable(index); err != nil { - return nil, err - } - - candidateEngine := e.loadEngineInstanceWithStorage(engineAlias, newStorage) - - // Rollback attestations already on created engine instance, because this action modifies the in-memory storage. - if err := candidateEngine.Attestations.Rollback(index); err != nil { - return nil, ierrors.Wrap(err, "error while rolling back attestations storage on candidate engine") - } - - return candidateEngine, nil -} - -func (e *EngineManager) OnEngineCreated(handler func(*engine.Engine)) (unsubscribe func()) { - return e.engineCreated.Hook(handler).Unhook -} - -func newEngineAlias() string { - return lo.PanicOnErr(uuid.NewUUID()).String() -} diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index 11701aed6..29e790ede 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -221,6 +221,11 @@ func (n *Network) ProcessAttestations(commitmentModel *model.Commitment, attesta return } + if !commitment.RequestAttestations.Get() { + n.protocol.LogTrace("received attestations for previously attested commitment", "commitment", commitment.LogName()) + return + } + chain := commitment.Chain.Get() if chain == nil { n.protocol.LogDebug("failed to find chain for commitment when processing attestations", "commitmentID", commitmentModel.ID()) diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index cd9c6af52..3246beb70 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -36,7 +36,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { testsuite.WithSlotsPerEpochExponent(3), testsuite.WithGenesisTimestampOffset(1000*10), - testsuite.WithWaitFor(25*time.Second), + testsuite.WithWaitFor(50*time.Second), ) defer ts.Shutdown() From b9a3034b053a0624c32206441d435f30aacbb359 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 17:39:24 +0200 Subject: [PATCH 163/356] Refactor: cleaned up more code --- pkg/protocol/chains.go | 39 ------------------------------ pkg/protocol/enginemanager.go | 45 ++++++++++++++++++++++++++++++++++- pkg/protocol/network.go | 4 +++- 3 files changed, 47 insertions(+), 41 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 5fe9174c3..c660bda03 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -1,8 +1,6 @@ package protocol import ( - "fmt" - "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" @@ -66,7 +64,6 @@ func newChains(protocol *Protocol) *Chains { } c.OnChainCreated(func(chain *Chain) { - c.provideEngineIfRequested(chain) c.publishEngineCommitments(chain) trackHeaviestChain(c.HeaviestVerifiedChain, (*Chain).verifiedWeight, chain) @@ -173,42 +170,6 @@ func (c *Chains) initChainSwitching() { }) } -func (c *Chains) provideEngineIfRequested(chain *Chain) func() { - return chain.InstantiateEngine.OnUpdate(func(_, instantiate bool) { - // TODO: MOVE TO WORKERPOOL - go func() { - if !instantiate { - chain.SpawnedEngine.Set(nil) - - return - } - - if currentEngine := chain.Engine.Get(); currentEngine == nil { - mainEngine, err := c.engineManager.LoadActiveEngine(c.protocol.options.SnapshotPath) - if err != nil { - panic(fmt.Sprintf("could not load active engine: %s", err)) - } - - chain.SpawnedEngine.Set(mainEngine) - - c.protocol.Network.HookStopped(mainEngine.Shutdown) - } else { - forkingPoint := chain.ForkingPoint.Get() - snapshotTargetSlot := forkingPoint.Slot() - 1 - - candidateEngineInstance, err := c.engineManager.ForkEngineAtSlot(snapshotTargetSlot) - if err != nil { - panic(ierrors.Wrap(err, "error creating new candidate engine")) - } - - chain.SpawnedEngine.Set(candidateEngineInstance) - - c.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) - } - }() - }) -} - func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { slotEvicted := c.EvictionEvent(commitmentID.Index()) if slotEvicted.WasTriggered() && c.LastEvictedSlot().Get() != 0 { diff --git a/pkg/protocol/enginemanager.go b/pkg/protocol/enginemanager.go index 3509cda5b..591b456ba 100644 --- a/pkg/protocol/enginemanager.go +++ b/pkg/protocol/enginemanager.go @@ -1,6 +1,7 @@ package protocol import ( + "fmt" "os" "path/filepath" @@ -32,11 +33,17 @@ type EngineManager struct { } func NewEngineManager(protocol *Protocol, dbVersion byte) *EngineManager { - return &EngineManager{ + e := &EngineManager{ protocol: protocol, directory: utils.NewDirectory(protocol.options.BaseDirectory), dbVersion: dbVersion, } + + protocol.HookConstructed(func() { + protocol.OnChainCreated(e.provideEngineIfRequested) + }) + + return e } func (e *EngineManager) LoadActiveEngine(snapshotPath string) (*engine.Engine, error) { @@ -204,6 +211,42 @@ func (e *EngineManager) ForkEngineAtSlot(index iotago.SlotIndex) (*engine.Engine return candidateEngine, nil } +func (e *EngineManager) provideEngineIfRequested(chain *Chain) { + chain.InstantiateEngine.OnUpdate(func(_, instantiate bool) { + // TODO: MOVE TO WORKERPOOL + go func() { + if !instantiate { + chain.SpawnedEngine.Set(nil) + + return + } + + if currentEngine := chain.Engine.Get(); currentEngine == nil { + mainEngine, err := e.LoadActiveEngine(e.protocol.options.SnapshotPath) + if err != nil { + panic(fmt.Sprintf("could not load active engine: %s", err)) + } + + chain.SpawnedEngine.Set(mainEngine) + + e.protocol.Network.HookStopped(mainEngine.Shutdown) + } else { + forkingPoint := chain.ForkingPoint.Get() + snapshotTargetSlot := forkingPoint.Slot() - 1 + + candidateEngineInstance, err := e.ForkEngineAtSlot(snapshotTargetSlot) + if err != nil { + panic(ierrors.Wrap(err, "error creating new candidate engine")) + } + + chain.SpawnedEngine.Set(candidateEngineInstance) + + e.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) + } + }() + }) +} + func newEngineAlias() string { return lo.PanicOnErr(uuid.NewUUID()).String() } diff --git a/pkg/protocol/network.go b/pkg/protocol/network.go index 29e790ede..f7fad1713 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network.go @@ -74,7 +74,7 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { var unsubscribeFromNetworkEvents func() - protocol.HookInitialized(func() { + protocol.HookConstructed(func() { protocol.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { if inSyncRange { @@ -85,7 +85,9 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { } }) }) + }) + protocol.HookInitialized(func() { n.OnError(func(err error, peer peer.ID) { n.protocol.LogError("network error", "peer", peer, "error", err) }) From 8ae6de13552b9f997daccc3f827c750f20690ca7 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 18:37:13 +0200 Subject: [PATCH 164/356] Refactor: restructured more code --- components/dashboard_metrics/component.go | 2 +- components/protocol/component.go | 6 +- pkg/protocol/{chains.go => chain_manager.go} | 30 +++-- .../{enginemanager.go => engine_manager.go} | 37 +----- .../{network.go => network_manager.go} | 111 ++++++++---------- pkg/protocol/protocol.go | 10 +- pkg/testsuite/mock/node.go | 8 +- 7 files changed, 86 insertions(+), 118 deletions(-) rename pkg/protocol/{chains.go => chain_manager.go} (88%) rename pkg/protocol/{enginemanager.go => engine_manager.go} (84%) rename pkg/protocol/{network.go => network_manager.go} (78%) diff --git a/components/dashboard_metrics/component.go b/components/dashboard_metrics/component.go index 26e4cdce7..c8a4cd83a 100644 --- a/components/dashboard_metrics/component.go +++ b/components/dashboard_metrics/component.go @@ -106,7 +106,7 @@ func run() error { } func configureComponentCountersEvents() { - deps.Protocol.OnBlockReceived(func(_ *model.Block, _ peer.ID) { + deps.Protocol.Network.OnBlockReceived(func(_ *model.Block, _ peer.ID) { incComponentCounter(Received) }) diff --git a/components/protocol/component.go b/components/protocol/component.go index 39805fbf4..c62337dbc 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -178,7 +178,7 @@ func provide(c *dig.Container) error { } func configure() error { - deps.Protocol.OnBlockReceived(func(block *model.Block, source peer.ID) { + deps.Protocol.Network.OnBlockReceived(func(block *model.Block, source peer.ID) { Component.LogDebugf("BlockReceived: %s", block.ID()) }) @@ -274,11 +274,11 @@ func configure() error { Component.LogDebugf("RequestCommitment: %s", id) }) - deps.Protocol.OnCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, id peer.ID) { + deps.Protocol.Network.OnCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, id peer.ID) { Component.LogDebugf("SlotCommitmentRequestReceived: %s", commitmentID) }) - deps.Protocol.OnCommitmentReceived(func(commitment *model.Commitment, id peer.ID) { + deps.Protocol.Network.OnCommitmentReceived(func(commitment *model.Commitment, id peer.ID) { Component.LogDebugf("SlotCommitmentReceived: %s", commitment.ID()) }) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chain_manager.go similarity index 88% rename from pkg/protocol/chains.go rename to pkg/protocol/chain_manager.go index c660bda03..5d967dd52 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chain_manager.go @@ -14,7 +14,7 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -type Chains struct { +type ChainManager struct { MainChain reactive.Variable[*Chain] Chains reactive.Set[*Chain] HeaviestChain reactive.Variable[*Chain] @@ -22,15 +22,14 @@ type Chains struct { HeaviestVerifiedChain reactive.Variable[*Chain] CommitmentCreated *event.Event1[*Commitment] - protocol *Protocol - commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] - engineManager *EngineManager + protocol *Protocol + commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] reactive.EvictionState[iotago.SlotIndex] } -func newChains(protocol *Protocol) *Chains { - c := &Chains{ +func newChainManager(protocol *Protocol) *ChainManager { + c := &ChainManager{ protocol: protocol, EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), MainChain: reactive.NewVariable[*Chain](), @@ -40,7 +39,6 @@ func newChains(protocol *Protocol) *Chains { HeaviestVerifiedChain: reactive.NewVariable[*Chain](), commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), CommitmentCreated: event.New1[*Commitment](), - engineManager: NewEngineManager(protocol, 3), } c.HeaviestChain.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) @@ -79,7 +77,7 @@ func newChains(protocol *Protocol) *Chains { return c } -func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment, published bool, err error) { +func (c *ChainManager) PublishCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment, published bool, err error) { request := c.requestCommitment(commitment.ID(), false) if request.WasRejected() { return nil, false, ierrors.Wrapf(request.Err(), "failed to request commitment %s", commitment.ID()) @@ -93,7 +91,7 @@ func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMeta return commitmentMetadata, commitmentMetadata == publishedCommitmentMetadata, nil } -func (c *Chains) Commitment(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { +func (c *ChainManager) Commitment(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { commitmentRequest, exists := c.commitments.Get(commitmentID) if !exists && lo.First(requestMissing) { if commitmentRequest = c.requestCommitment(commitmentID, true); commitmentRequest.WasRejected() { @@ -112,17 +110,17 @@ func (c *Chains) Commitment(commitmentID iotago.CommitmentID, requestMissing ... return commitmentRequest.Result(), nil } -func (c *Chains) MainEngineInstance() *engine.Engine { +func (c *ChainManager) MainEngineInstance() *engine.Engine { return c.MainChain.Get().Engine.Get() } -func (c *Chains) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { +func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { return c.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { mutations.AddedElements().Range(callback) }) } -func (c *Chains) initMainChain() { +func (c *ChainManager) initMainChain() { mainChain := NewChain(c.protocol.Logger) mainChain.InstantiateEngine.Set(true) mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) @@ -131,7 +129,7 @@ func (c *Chains) initMainChain() { c.Chains.Add(mainChain) } -func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { +func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { c.requestCommitment(commitment.PreviousCommitmentID(), true, lo.Void(commitment.Parent.Set)).OnError(func(err error) { c.protocol.LogDebug("failed to request previous commitment", "prevId", commitment.PreviousCommitmentID(), "error", err) }) @@ -149,7 +147,7 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti c.CommitmentCreated.Trigger(commitment) } -func (c *Chains) initChainSwitching() { +func (c *ChainManager) initChainSwitching() { c.HeaviestChain.OnUpdate(func(prevHeaviestChain, heaviestChain *Chain) { if prevHeaviestChain != nil { prevHeaviestChain.RequestAttestations.Set(false) @@ -170,7 +168,7 @@ func (c *Chains) initChainSwitching() { }) } -func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { +func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { slotEvicted := c.EvictionEvent(commitmentID.Index()) if slotEvicted.WasTriggered() && c.LastEvictedSlot().Get() != 0 { forkingPoint := c.MainChain.Get().ForkingPoint.Get() @@ -210,7 +208,7 @@ func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFrom return commitmentRequest } -func (c *Chains) publishEngineCommitments(chain *Chain) { +func (c *ChainManager) publishEngineCommitments(chain *Chain) { chain.SpawnedEngine.OnUpdateWithContext(func(_, engine *engine.Engine, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { var latestPublishedSlot iotago.SlotIndex diff --git a/pkg/protocol/enginemanager.go b/pkg/protocol/engine_manager.go similarity index 84% rename from pkg/protocol/enginemanager.go rename to pkg/protocol/engine_manager.go index 591b456ba..25d7bd9a3 100644 --- a/pkg/protocol/enginemanager.go +++ b/pkg/protocol/engine_manager.go @@ -28,15 +28,13 @@ type engineInfo struct { type EngineManager struct { protocol *Protocol directory *utils.Directory - dbVersion byte activeInstance *engine.Engine } -func NewEngineManager(protocol *Protocol, dbVersion byte) *EngineManager { +func NewEngineManager(protocol *Protocol) *EngineManager { e := &EngineManager{ protocol: protocol, directory: utils.NewDirectory(protocol.options.BaseDirectory), - dbVersion: dbVersion, } protocol.HookConstructed(func() { @@ -118,7 +116,7 @@ func (e *EngineManager) loadEngineInstanceFromSnapshot(engineAlias string, snaps e.protocol.options.EngineOptions = append(e.protocol.options.EngineOptions, engine.WithSnapshotPath(snapshotPath)) - return e.loadEngineInstanceWithStorage(engineAlias, storage.Create(e.directory.Path(engineAlias), e.dbVersion, errorHandler, e.protocol.options.StorageOptions...)) + return e.loadEngineInstanceWithStorage(engineAlias, storage.Create(e.directory.Path(engineAlias), DatabaseVersion, errorHandler, e.protocol.options.StorageOptions...)) } func (e *EngineManager) loadEngineInstanceWithStorage(engineAlias string, storage *storage.Storage) *engine.Engine { @@ -126,30 +124,7 @@ func (e *EngineManager) loadEngineInstanceWithStorage(engineAlias string, storag e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) } - newEngine := engine.New(e.protocol.Workers.CreateGroup(engineAlias), - errorHandler, - storage, - e.protocol.options.FilterProvider, - e.protocol.options.CommitmentFilterProvider, - e.protocol.options.BlockDAGProvider, - e.protocol.options.BookerProvider, - e.protocol.options.ClockProvider, - e.protocol.options.BlockGadgetProvider, - e.protocol.options.SlotGadgetProvider, - e.protocol.options.SybilProtectionProvider, - e.protocol.options.NotarizationProvider, - e.protocol.options.AttestationProvider, - e.protocol.options.LedgerProvider, - e.protocol.options.SchedulerProvider, - e.protocol.options.TipManagerProvider, - e.protocol.options.TipSelectionProvider, - e.protocol.options.RetainerProvider, - e.protocol.options.UpgradeOrchestratorProvider, - e.protocol.options.SyncManagerProvider, - e.protocol.options.EngineOptions..., - ) - - return newEngine + return engine.New(e.protocol.Workers.CreateGroup(engineAlias), errorHandler, storage, e.protocol.options.FilterProvider, e.protocol.options.CommitmentFilterProvider, e.protocol.options.BlockDAGProvider, e.protocol.options.BookerProvider, e.protocol.options.ClockProvider, e.protocol.options.BlockGadgetProvider, e.protocol.options.SlotGadgetProvider, e.protocol.options.SybilProtectionProvider, e.protocol.options.NotarizationProvider, e.protocol.options.AttestationProvider, e.protocol.options.LedgerProvider, e.protocol.options.SchedulerProvider, e.protocol.options.TipManagerProvider, e.protocol.options.TipSelectionProvider, e.protocol.options.RetainerProvider, e.protocol.options.UpgradeOrchestratorProvider, e.protocol.options.SyncManagerProvider, e.protocol.options.EngineOptions...) } func (e *EngineManager) ForkEngineAtSlot(index iotago.SlotIndex) (*engine.Engine, error) { @@ -159,7 +134,7 @@ func (e *EngineManager) ForkEngineAtSlot(index iotago.SlotIndex) (*engine.Engine } // Copy raw data on disk. - newStorage, err := storage.Clone(e.activeInstance.Storage, e.directory.Path(engineAlias), e.dbVersion, errorHandler, e.protocol.options.StorageOptions...) + newStorage, err := storage.Clone(e.activeInstance.Storage, e.directory.Path(engineAlias), DatabaseVersion, errorHandler, e.protocol.options.StorageOptions...) if err != nil { return nil, ierrors.Wrapf(err, "failed to copy storage from active engine instance (%s) to new engine instance (%s)", e.activeInstance.Storage.Directory(), e.directory.Path(engineAlias)) } @@ -229,7 +204,7 @@ func (e *EngineManager) provideEngineIfRequested(chain *Chain) { chain.SpawnedEngine.Set(mainEngine) - e.protocol.Network.HookStopped(mainEngine.Shutdown) + e.protocol.NetworkManager.HookStopped(mainEngine.Shutdown) } else { forkingPoint := chain.ForkingPoint.Get() snapshotTargetSlot := forkingPoint.Slot() - 1 @@ -241,7 +216,7 @@ func (e *EngineManager) provideEngineIfRequested(chain *Chain) { chain.SpawnedEngine.Set(candidateEngineInstance) - e.protocol.Network.HookStopped(candidateEngineInstance.Shutdown) + e.protocol.NetworkManager.HookStopped(candidateEngineInstance.Shutdown) } }() }) diff --git a/pkg/protocol/network.go b/pkg/protocol/network_manager.go similarity index 78% rename from pkg/protocol/network.go rename to pkg/protocol/network_manager.go index f7fad1713..e088f2abf 100644 --- a/pkg/protocol/network.go +++ b/pkg/protocol/network_manager.go @@ -25,12 +25,9 @@ import ( "github.com/iotaledger/iota.go/v4/merklehasher" ) -type Network struct { - protocol *Protocol - - *core.Protocol - - gossip *event.Event1[*model.Block] +type NetworkManager struct { + Network *core.Protocol + protocol *Protocol attestationsRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] warpSyncRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] @@ -43,11 +40,10 @@ type Network struct { module.Module } -func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { - n := &Network{ +func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { + n := &NetworkManager{ + Network: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), protocol: protocol, - Protocol: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), - gossip: event.New1[*model.Block](), attestationsRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), warpSyncRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), @@ -69,7 +65,7 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { protocol.Events.Engine.Scheduler.BlockScheduled, protocol.Events.Engine.Scheduler.BlockSkipped, } { - gossipEvent.Hook(func(block *blocks.Block) { n.gossip.Trigger(block.ModelBlock()) }) + gossipEvent.Hook(func(block *blocks.Block) { n.Network.SendBlock(block.ModelBlock()) }) } var unsubscribeFromNetworkEvents func() @@ -88,33 +84,32 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { }) protocol.HookInitialized(func() { - n.OnError(func(err error, peer peer.ID) { + n.Network.OnError(func(err error, peer peer.ID) { n.protocol.LogError("network error", "peer", peer, "error", err) }) unsubscribeFromNetworkEvents = lo.Batch( - n.OnBlockReceived(n.ProcessReceivedBlock), - n.OnBlockRequestReceived(n.ProcessBlockRequest), - n.OnCommitmentReceived(n.ProcessCommitment), - n.OnCommitmentRequestReceived(n.ProcessCommitmentRequest), - n.OnAttestationsReceived(n.ProcessAttestations), - n.OnAttestationsRequestReceived(n.ProcessAttestationsRequest), - n.OnWarpSyncResponseReceived(n.ProcessWarpSyncResponse), - n.OnWarpSyncRequestReceived(n.ProcessWarpSyncRequest), + n.Network.OnBlockReceived(n.ProcessReceivedBlock), + n.Network.OnBlockRequestReceived(n.ProcessBlockRequest), + n.Network.OnCommitmentReceived(n.ProcessCommitment), + n.Network.OnCommitmentRequestReceived(n.ProcessCommitmentRequest), + n.Network.OnAttestationsReceived(n.ProcessAttestations), + n.Network.OnAttestationsRequestReceived(n.ProcessAttestationsRequest), + n.Network.OnWarpSyncResponseReceived(n.ProcessWarpSyncResponse), + n.Network.OnWarpSyncRequestReceived(n.ProcessWarpSyncRequest), n.warpSyncRequester.Events.Tick.Hook(n.SendWarpSyncRequest).Unhook, - n.OnSendBlock(func(block *model.Block) { n.SendBlock(block) }), n.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { n.protocol.LogDebug("block requested", "blockID", blockID, "engine", engine.Name()) - n.RequestBlock(blockID) + n.Network.RequestBlock(blockID) }), n.OnCommitmentRequested(func(id iotago.CommitmentID) { n.protocol.LogDebug("commitment requested", "commitmentID", id) - n.RequestSlotCommitment(id) + n.Network.RequestSlotCommitment(id) }), - n.OnAttestationsRequested(func(commitmentID iotago.CommitmentID) { n.RequestAttestations(commitmentID) }), + n.OnAttestationsRequested(func(commitmentID iotago.CommitmentID) { n.Network.RequestAttestations(commitmentID) }), ) n.TriggerInitialized() @@ -124,7 +119,7 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { unsubscribeFromNetworkEvents() - n.Protocol.Shutdown() + n.Network.Shutdown() n.TriggerStopped() }) @@ -133,19 +128,19 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *Network { return n } -func (n *Network) SendWarpSyncRequest(id iotago.CommitmentID) { +func (n *NetworkManager) SendWarpSyncRequest(id iotago.CommitmentID) { n.protocol.LogDebug("request warp sync", "commitmentID", id) - n.Protocol.SendWarpSyncRequest(id) + n.Network.SendWarpSyncRequest(id) } -func (n *Network) IssueBlock(block *model.Block) error { +func (n *NetworkManager) IssueBlock(block *model.Block) error { n.protocol.MainEngineInstance().ProcessBlockFromPeer(block, "self") return nil } -func (n *Network) ProcessReceivedBlock(block *model.Block, src peer.ID) { +func (n *NetworkManager) ProcessReceivedBlock(block *model.Block, src peer.ID) { n.processTask("received block", func() (logLevel log.Level, err error) { logLevel = log.LevelTrace @@ -172,20 +167,20 @@ func (n *Network) ProcessReceivedBlock(block *model.Block, src peer.ID) { }, "blockID", block.ID(), "peer", src) } -func (n *Network) ProcessBlockRequest(blockID iotago.BlockID, src peer.ID) { +func (n *NetworkManager) ProcessBlockRequest(blockID iotago.BlockID, peer peer.ID) { n.processTask("block request", func() (logLevel log.Level, err error) { block, exists := n.protocol.MainEngineInstance().Block(blockID) if !exists { return log.LevelTrace, ierrors.Errorf("requested block %s not found", blockID) } - n.protocol.SendBlock(block, src) + n.Network.SendBlock(block, peer) return log.LevelTrace, nil - }, "blockID", blockID, "peer", src) + }, "blockID", blockID, "peer", peer) } -func (n *Network) ProcessCommitment(commitmentModel *model.Commitment, peer peer.ID) { +func (n *NetworkManager) ProcessCommitment(commitmentModel *model.Commitment, peer peer.ID) { n.processTask("commitment", func() (logLevel log.Level, err error) { _, published, err := n.protocol.PublishCommitment(commitmentModel) if err != nil { @@ -200,7 +195,7 @@ func (n *Network) ProcessCommitment(commitmentModel *model.Commitment, peer peer }, "commitmentID", commitmentModel.ID(), "peer", peer) } -func (n *Network) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src peer.ID) { +func (n *NetworkManager) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src peer.ID) { n.protocol.LogTrace("commitment request received", "commitmentID", commitmentID, "peer", src) if commitment, err := n.protocol.Commitment(commitmentID); err != nil { @@ -212,11 +207,11 @@ func (n *Network) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src } else { n.protocol.LogTrace("sending commitment", "commitmentID", commitmentID, "peer", src) - n.protocol.SendSlotCommitment(commitment.Commitment, src) + n.Network.SendSlotCommitment(commitment.Commitment, src) } } -func (n *Network) ProcessAttestations(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { +func (n *NetworkManager) ProcessAttestations(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { commitment, _, err := n.protocol.PublishCommitment(commitmentModel) if err != nil { n.protocol.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", source, "error", err) @@ -250,7 +245,7 @@ func (n *Network) ProcessAttestations(commitmentModel *model.Commitment, attesta commitment.IsAttested.Set(true) } -func (n *Network) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) { +func (n *NetworkManager) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) { n.processTask("attestations request", func() (logLevel log.Level, err error) { mainEngine := n.protocol.MainEngineInstance() @@ -282,11 +277,11 @@ func (n *Network) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, s return log.LevelError, ierrors.Wrapf(err, "failed to load roots") } - return log.LevelDebug, n.protocol.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) + return log.LevelDebug, n.Network.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) }, "commitmentID", commitmentID, "peer", src) } -func (n *Network) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], peer peer.ID) { +func (n *NetworkManager) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], peer peer.ID) { n.processTask("warp sync response", func() (logLevel log.Level, err error) { logLevel = log.LevelTrace @@ -335,7 +330,7 @@ func (n *Network) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, bloc }, "commitmentID", commitmentID, "blockIDs", blockIDs, "proof", proof, "peer", peer) } -func (n *Network) processTask(taskName string, task func() (logLevel log.Level, err error), args ...any) { +func (n *NetworkManager) processTask(taskName string, task func() (logLevel log.Level, err error), args ...any) { if logLevel, err := task(); err != nil { n.protocol.Log("failed to process "+taskName, logLevel, append(args, "error", err)...) } else { @@ -343,7 +338,7 @@ func (n *Network) processTask(taskName string, task func() (logLevel log.Level, } } -func (n *Network) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, src peer.ID) { +func (n *NetworkManager) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, src peer.ID) { n.processTask("warp sync request", func() (logLevel log.Level, err error) { logLevel = log.LevelTrace @@ -381,55 +376,51 @@ func (n *Network) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, src p return logLevel, ierrors.Wrap(err, "failed to get roots from slot") } - n.protocol.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), src) + n.Network.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), src) return logLevel, nil }, "commitmentID", commitmentID, "peer", src) } -func (n *Network) OnSendBlock(callback func(block *model.Block)) (unsubscribe func()) { - return n.gossip.Hook(callback).Unhook -} - -func (n *Network) OnBlockRequested(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { +func (n *NetworkManager) OnBlockRequested(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { return n.blockRequested.Hook(callback).Unhook } -func (n *Network) OnBlockRequestStarted(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { +func (n *NetworkManager) OnBlockRequestStarted(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { return n.blockRequestStarted.Hook(callback).Unhook } -func (n *Network) OnBlockRequestStopped(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { +func (n *NetworkManager) OnBlockRequestStopped(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { return n.blockRequestStopped.Hook(callback).Unhook } -func (n *Network) OnCommitmentRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { +func (n *NetworkManager) OnCommitmentRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { return n.commitmentRequester.Events.TickerStarted.Hook(callback).Unhook } -func (n *Network) OnCommitmentRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { +func (n *NetworkManager) OnCommitmentRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { return n.commitmentRequester.Events.TickerStopped.Hook(callback).Unhook } -func (n *Network) OnCommitmentRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { +func (n *NetworkManager) OnCommitmentRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { return n.commitmentRequester.Events.Tick.Hook(callback).Unhook } -func (n *Network) OnAttestationsRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { +func (n *NetworkManager) OnAttestationsRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { return n.attestationsRequester.Events.TickerStarted.Hook(callback).Unhook } -func (n *Network) OnAttestationsRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { +func (n *NetworkManager) OnAttestationsRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { return n.attestationsRequester.Events.TickerStopped.Hook(callback).Unhook } -func (n *Network) OnAttestationsRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { +func (n *NetworkManager) OnAttestationsRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { return n.attestationsRequester.Events.Tick.Hook(callback).Unhook } -func (n *Network) Shutdown() {} +func (n *NetworkManager) Shutdown() {} -func (n *Network) startAttestationsRequester() { +func (n *NetworkManager) startAttestationsRequester() { n.protocol.HookConstructed(func() { n.protocol.OnChainCreated(func(chain *Chain) { @@ -464,7 +455,7 @@ func (n *Network) startAttestationsRequester() { }) } -func (n *Network) startWarpSyncRequester() { +func (n *NetworkManager) startWarpSyncRequester() { n.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.RequestBlocks.OnUpdate(func(_, warpSyncBlocks bool) { if warpSyncBlocks { @@ -476,8 +467,8 @@ func (n *Network) startWarpSyncRequester() { }) } -func (n *Network) startBlockRequester() { - n.protocol.Chains.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { +func (n *NetworkManager) startBlockRequester() { + n.protocol.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { mutations.AddedElements().Range(func(chain *Chain) { chain.Engine.OnUpdate(func(_, engine *engine.Engine) { unsubscribe := lo.Batch( diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 22257b171..967c5e2f1 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -19,8 +19,9 @@ type Protocol struct { error *event.Event1[error] options *Options - *Network - *Chains + *NetworkManager + *ChainManager + *EngineManager log.Logger module.Module } @@ -33,8 +34,9 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi error: event.New1[error](), options: newOptions(), }, opts, func(p *Protocol) { - p.Chains = newChains(p) - p.Network = newNetwork(p, dispatcher) + p.ChainManager = newChainManager(p) + p.EngineManager = NewEngineManager(p) + p.NetworkManager = newNetwork(p, dispatcher) }, (*Protocol).TriggerConstructed) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 5ce2b0d75..9b96342fc 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -152,13 +152,15 @@ func (n *Node) hookEvents() { } }) - n.Protocol.MainChain.OnUpdate(func(_, _ *protocol.Chain) { - n.mainEngineSwitchedCount.Add(1) + n.Protocol.MainChain.OnUpdate(func(prevChain, newChain *protocol.Chain) { + if prevChain != nil { + n.mainEngineSwitchedCount.Add(1) + } }) } func (n *Node) hookLogging(failOnBlockFiltered bool) { - n.Protocol.Chains.Chains.OnUpdate(func(mutations ds.SetMutations[*protocol.Chain]) { + n.Protocol.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*protocol.Chain]) { mutations.AddedElements().Range(func(chain *protocol.Chain) { chain.SpawnedEngine.OnUpdate(func(_, newEngine *engine.Engine) { if newEngine != nil { From 0dc53df8a5e6c2bf732b862f115d70c567d7ad35 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 20:02:29 +0200 Subject: [PATCH 165/356] Refactor: started moving protocol methods to protocol --- pkg/protocol/network_manager.go | 46 +----------------------- pkg/protocol/protocol.go | 64 ++++++++++++++++++++++++++++----- 2 files changed, 56 insertions(+), 54 deletions(-) diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go index e088f2abf..05b2dc5b0 100644 --- a/pkg/protocol/network_manager.go +++ b/pkg/protocol/network_manager.go @@ -7,7 +7,6 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/ds/types" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore" "github.com/iotaledger/hive.go/kvstore/mapdb" @@ -15,7 +14,6 @@ import ( "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" - "github.com/iotaledger/iota-core/pkg/core/buffer" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/network/protocols/core" @@ -35,7 +33,6 @@ type NetworkManager struct { blockRequestStopped *event.Event2[iotago.BlockID, *engine.Engine] blockRequested *event.Event2[iotago.BlockID, *engine.Engine] commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] - droppedBlocksBuffer *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] module.Module } @@ -51,7 +48,6 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { blockRequestStopped: event.New2[iotago.BlockID, *engine.Engine](), blockRequested: event.New2[iotago.BlockID, *engine.Engine](), commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), - droppedBlocksBuffer: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), } n.TriggerConstructed() @@ -70,26 +66,13 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { var unsubscribeFromNetworkEvents func() - protocol.HookConstructed(func() { - protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { - if inSyncRange { - for _, droppedBlock := range n.droppedBlocksBuffer.GetValues(commitment.ID()) { - // TODO: replace with workerpool - go n.ProcessReceivedBlock(droppedBlock.A, droppedBlock.B) - } - } - }) - }) - }) - protocol.HookInitialized(func() { n.Network.OnError(func(err error, peer peer.ID) { n.protocol.LogError("network error", "peer", peer, "error", err) }) unsubscribeFromNetworkEvents = lo.Batch( - n.Network.OnBlockReceived(n.ProcessReceivedBlock), + n.Network.OnBlockReceived(n.protocol.ProcessReceivedBlock), n.Network.OnBlockRequestReceived(n.ProcessBlockRequest), n.Network.OnCommitmentReceived(n.ProcessCommitment), n.Network.OnCommitmentRequestReceived(n.ProcessCommitmentRequest), @@ -140,33 +123,6 @@ func (n *NetworkManager) IssueBlock(block *model.Block) error { return nil } -func (n *NetworkManager) ProcessReceivedBlock(block *model.Block, src peer.ID) { - n.processTask("received block", func() (logLevel log.Level, err error) { - logLevel = log.LevelTrace - - commitmentRequest := n.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) - if !commitmentRequest.WasCompleted() { - if !n.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, src)) { - return log.LevelError, ierrors.New("failed to add block to dropped blocks buffer") - } - - return logLevel, ierrors.Errorf("referenced commitment %s unknown", block.ProtocolBlock().SlotCommitmentID) - } - - if commitmentRequest.WasRejected() { - return logLevel, commitmentRequest.Err() - } - - if chain := commitmentRequest.Result().Chain.Get(); chain != nil { - if chain.DispatchBlock(block, src) { - n.protocol.LogError("block dropped", "blockID", block.ID(), "peer", src) - } - } - - return logLevel, nil - }, "blockID", block.ID(), "peer", src) -} - func (n *NetworkManager) ProcessBlockRequest(blockID iotago.BlockID, peer peer.ID) { n.processTask("block request", func() (logLevel log.Level, err error) { block, exists := n.protocol.MainEngineInstance().Block(blockID) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 967c5e2f1..dd1950d58 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -3,21 +3,28 @@ package protocol import ( "context" + "github.com/libp2p/go-libp2p/core/peer" + + "github.com/iotaledger/hive.go/ds/types" + "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/core/buffer" + "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" ) type Protocol struct { - Events *Events - Workers *workerpool.Group - error *event.Event1[error] - options *Options + Events *Events + Workers *workerpool.Group + error *event.Event1[error] + options *Options + droppedBlocksBuffer *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] *NetworkManager *ChainManager @@ -28,15 +35,27 @@ type Protocol struct { func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { return options.Apply(&Protocol{ - Events: NewEvents(), - Workers: workers, - Logger: logger, - error: event.New1[error](), - options: newOptions(), + Events: NewEvents(), + Workers: workers, + Logger: logger, + error: event.New1[error](), + droppedBlocksBuffer: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), + options: newOptions(), }, opts, func(p *Protocol) { p.ChainManager = newChainManager(p) p.EngineManager = NewEngineManager(p) p.NetworkManager = newNetwork(p, dispatcher) + + p.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { + if inSyncRange { + for _, droppedBlock := range p.droppedBlocksBuffer.GetValues(commitment.ID()) { + // TODO: replace with workerpool + go p.ProcessReceivedBlock(droppedBlock.A, droppedBlock.B) + } + } + }) + }) }, (*Protocol).TriggerConstructed) } @@ -57,6 +76,33 @@ func (p *Protocol) Run(ctx context.Context) error { return ctx.Err() } +func (p *Protocol) ProcessReceivedBlock(block *model.Block, src peer.ID) { + p.processTask("received block", func() (logLevel log.Level, err error) { + logLevel = log.LevelTrace + + commitmentRequest := p.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) + if !commitmentRequest.WasCompleted() { + if !p.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, src)) { + return log.LevelError, ierrors.New("failed to add block to dropped blocks buffer") + } + + return logLevel, ierrors.Errorf("referenced commitment %s unknown", block.ProtocolBlock().SlotCommitmentID) + } + + if commitmentRequest.WasRejected() { + return logLevel, commitmentRequest.Err() + } + + if chain := commitmentRequest.Result().Chain.Get(); chain != nil { + if chain.DispatchBlock(block, src) { + p.LogError("block dropped", "blockID", block.ID(), "peer", src) + } + } + + return logLevel, nil + }, "blockID", block.ID(), "peer", src) +} + // APIForVersion returns the API for the given version. func (p *Protocol) APIForVersion(version iotago.Version) (api iotago.API, err error) { return p.MainEngineInstance().APIForVersion(version) From 173e7b294eb61097c08ea6f058e5b10c76124dab Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 6 Oct 2023 22:36:12 +0200 Subject: [PATCH 166/356] Feat: started moving method to protocol --- pkg/protocol/chain.go | 13 +++++--- pkg/protocol/network_manager.go | 20 +++--------- pkg/protocol/protocol.go | 54 +++++++++++++++++++-------------- 3 files changed, 44 insertions(+), 43 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index c9959058e..e1992d56f 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -147,20 +147,23 @@ func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exist return nil, false } -func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (blockDropped bool) { - targetSlot := block.ID().Slot() +func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { + if c == nil { + return false + } + success = true for _, chain := range append([]*Chain{c}, c.ChildChains.ToSlice()...) { - if chain.InstantiateEngine.Get() && chain.earliestUncommittedSlot() <= targetSlot { + if targetSlot := block.ID().Slot(); chain.InstantiateEngine.Get() && chain.earliestUncommittedSlot() <= targetSlot { if targetEngine := chain.SpawnedEngine.Get(); targetEngine != nil && targetSlot < c.SyncThreshold.Get() { targetEngine.ProcessBlockFromPeer(block, src) } else { - blockDropped = true + success = false } } } - return blockDropped + return success } func (c *Chain) earliestUncommittedSlot() iotago.SlotIndex { diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go index 05b2dc5b0..1f5833ebd 100644 --- a/pkg/protocol/network_manager.go +++ b/pkg/protocol/network_manager.go @@ -61,7 +61,7 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { protocol.Events.Engine.Scheduler.BlockScheduled, protocol.Events.Engine.Scheduler.BlockSkipped, } { - gossipEvent.Hook(func(block *blocks.Block) { n.Network.SendBlock(block.ModelBlock()) }) + gossipEvent.Hook(func(block *blocks.Block) { n.protocol.SendBlock(block.ModelBlock()) }) } var unsubscribeFromNetworkEvents func() @@ -72,8 +72,9 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { }) unsubscribeFromNetworkEvents = lo.Batch( - n.Network.OnBlockReceived(n.protocol.ProcessReceivedBlock), - n.Network.OnBlockRequestReceived(n.ProcessBlockRequest), + n.Network.OnBlockReceived(n.protocol.ProcessBlock), + n.Network.OnBlockRequestReceived(n.protocol.ProcessBlockRequest), + n.Network.OnCommitmentReceived(n.ProcessCommitment), n.Network.OnCommitmentRequestReceived(n.ProcessCommitmentRequest), n.Network.OnAttestationsReceived(n.ProcessAttestations), @@ -123,19 +124,6 @@ func (n *NetworkManager) IssueBlock(block *model.Block) error { return nil } -func (n *NetworkManager) ProcessBlockRequest(blockID iotago.BlockID, peer peer.ID) { - n.processTask("block request", func() (logLevel log.Level, err error) { - block, exists := n.protocol.MainEngineInstance().Block(blockID) - if !exists { - return log.LevelTrace, ierrors.Errorf("requested block %s not found", blockID) - } - - n.Network.SendBlock(block, peer) - - return log.LevelTrace, nil - }, "blockID", blockID, "peer", peer) -} - func (n *NetworkManager) ProcessCommitment(commitmentModel *model.Commitment, peer peer.ID) { n.processTask("commitment", func() (logLevel log.Level, err error) { _, published, err := n.protocol.PublishCommitment(commitmentModel) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index dd1950d58..830d7edce 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -6,7 +6,6 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/ds/types" - "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" @@ -51,7 +50,7 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi if inSyncRange { for _, droppedBlock := range p.droppedBlocksBuffer.GetValues(commitment.ID()) { // TODO: replace with workerpool - go p.ProcessReceivedBlock(droppedBlock.A, droppedBlock.B) + go p.ProcessBlock(droppedBlock.A, droppedBlock.B) } } }) @@ -76,31 +75,42 @@ func (p *Protocol) Run(ctx context.Context) error { return ctx.Err() } -func (p *Protocol) ProcessReceivedBlock(block *model.Block, src peer.ID) { - p.processTask("received block", func() (logLevel log.Level, err error) { - logLevel = log.LevelTrace +func (p *Protocol) ProcessBlock(block *model.Block, peer peer.ID) { + commitmentRequest := p.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) + if commitmentRequest.WasRejected() { + p.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID(), "fromPeer", peer, "err", commitmentRequest.Err()) + return + } + + commitment := commitmentRequest.Result() + if commitment == nil || !commitment.Chain.Get().DispatchBlock(block, peer) { + if !p.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, peer)) { + p.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "blockID", block.ID(), "commitmentID", block.ProtocolBlock().SlotCommitmentID, "fromPeer", peer) + } else { + p.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "blockID", block.ID(), "commitmentID", block.ProtocolBlock().SlotCommitmentID, "fromPeer", peer) + } + return + } - commitmentRequest := p.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) - if !commitmentRequest.WasCompleted() { - if !p.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, src)) { - return log.LevelError, ierrors.New("failed to add block to dropped blocks buffer") - } + p.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName(), "fromPeer", peer) +} - return logLevel, ierrors.Errorf("referenced commitment %s unknown", block.ProtocolBlock().SlotCommitmentID) - } +func (p *Protocol) ProcessBlockRequest(blockID iotago.BlockID, peer peer.ID) { + block, exists := p.MainEngineInstance().Block(blockID) + if !exists { + p.LogTrace("requested block not found", "blockID", blockID, "fromPeer", peer) + return + } - if commitmentRequest.WasRejected() { - return logLevel, commitmentRequest.Err() - } + p.SendBlock(block, peer) - if chain := commitmentRequest.Result().Chain.Get(); chain != nil { - if chain.DispatchBlock(block, src) { - p.LogError("block dropped", "blockID", block.ID(), "peer", src) - } - } + p.LogTrace("processed block request", "blockID", blockID, "fromPeer", peer) +} + +func (p *Protocol) SendBlock(block *model.Block, to ...peer.ID) { + p.Network.SendBlock(block, to...) - return logLevel, nil - }, "blockID", block.ID(), "peer", src) + p.LogTrace("sent block", "blockID", block.ID(), "toPeers", to) } // APIForVersion returns the API for the given version. From 7707e8b226fe1bcbbbbbbea0998eeba3847fee6e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 7 Oct 2023 01:41:40 +0200 Subject: [PATCH 167/356] Refactor: started introducing cleaner sub-components --- pkg/protocol/api_provider.go | 39 +++++++++++ pkg/protocol/gossip_protocol.go | 80 ++++++++++++++++++++++ pkg/protocol/network_manager.go | 65 +++++++++--------- pkg/protocol/protocol.go | 118 +++++++------------------------- 4 files changed, 178 insertions(+), 124 deletions(-) create mode 100644 pkg/protocol/api_provider.go create mode 100644 pkg/protocol/gossip_protocol.go diff --git a/pkg/protocol/api_provider.go b/pkg/protocol/api_provider.go new file mode 100644 index 000000000..48cca1003 --- /dev/null +++ b/pkg/protocol/api_provider.go @@ -0,0 +1,39 @@ +package protocol + +import iotago "github.com/iotaledger/iota.go/v4" + +// ApiProvider is a protocol component that exposes the methods to comply with the iotago.APIProvider interface. +type ApiProvider struct { + // Protocol is the protocol instance. + *Protocol +} + +// newApiProvider creates a new ApiProvider. +func newApiProvider(protocol *Protocol) *ApiProvider { + return &ApiProvider{Protocol: protocol} +} + +// APIForVersion returns the API for the given version. +func (p *ApiProvider) APIForVersion(version iotago.Version) (api iotago.API, err error) { + return p.MainEngineInstance().APIForVersion(version) +} + +// APIForSlot returns the API for the given slot. +func (p *ApiProvider) APIForSlot(slot iotago.SlotIndex) iotago.API { + return p.MainEngineInstance().APIForSlot(slot) +} + +// APIForEpoch returns the API for the given epoch. +func (p *ApiProvider) APIForEpoch(epoch iotago.EpochIndex) iotago.API { + return p.MainEngineInstance().APIForEpoch(epoch) +} + +// CurrentAPI returns the current API. +func (p *ApiProvider) CurrentAPI() iotago.API { + return p.MainEngineInstance().CurrentAPI() +} + +// LatestAPI returns the latest API. +func (p *ApiProvider) LatestAPI() iotago.API { + return p.MainEngineInstance().LatestAPI() +} diff --git a/pkg/protocol/gossip_protocol.go b/pkg/protocol/gossip_protocol.go new file mode 100644 index 000000000..351250974 --- /dev/null +++ b/pkg/protocol/gossip_protocol.go @@ -0,0 +1,80 @@ +package protocol + +import ( + "github.com/libp2p/go-libp2p/core/peer" + + "github.com/iotaledger/hive.go/ds/types" + "github.com/iotaledger/iota-core/pkg/core/buffer" + "github.com/iotaledger/iota-core/pkg/model" + iotago "github.com/iotaledger/iota.go/v4" +) + +type GossipProtocol struct { + *Protocol + + droppedBlocksBuffer *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] +} + +func NewGossipProtocol(protocol *Protocol) *GossipProtocol { + g := &GossipProtocol{ + Protocol: protocol, + droppedBlocksBuffer: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), + } + + g.HookConstructed(func() { + g.initDroppedBlocksReplay() + }) + + return g +} + +func (g *GossipProtocol) initDroppedBlocksReplay() { + g.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { + if inSyncRange { + for _, droppedBlock := range g.droppedBlocksBuffer.GetValues(commitment.ID()) { + // TODO: replace with workerpool + go g.ProcessBlock(droppedBlock.A, droppedBlock.B) + } + } + }) + }) +} + +func (g *GossipProtocol) ProcessBlock(block *model.Block, from peer.ID) { + commitmentRequest := g.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) + if commitmentRequest.WasRejected() { + g.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID(), "fromPeer", from, "err", commitmentRequest.Err()) + return + } + + commitment := commitmentRequest.Result() + if commitment == nil || !commitment.Chain.Get().DispatchBlock(block, from) { + if !g.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, from)) { + g.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "blockID", block.ID(), "commitmentID", block.ProtocolBlock().SlotCommitmentID, "fromPeer", from) + } else { + g.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "blockID", block.ID(), "commitmentID", block.ProtocolBlock().SlotCommitmentID, "fromPeer", from) + } + return + } + + g.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName(), "fromPeer", from) +} + +func (g *GossipProtocol) ProcessBlockRequest(blockID iotago.BlockID, from peer.ID) { + block, exists := g.MainEngineInstance().Block(blockID) + if !exists { + g.LogTrace("requested block not found", "blockID", blockID, "fromPeer", from) + return + } + + g.SendBlock(block, from) + + g.LogTrace("processed block request", "blockID", blockID, "fromPeer", from) +} + +func (g *GossipProtocol) SendBlock(block *model.Block, to ...peer.ID) { + g.Network.SendBlock(block, to...) + + g.LogTrace("sent block", "blockID", block.ID(), "toPeers", to) +} diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go index 1f5833ebd..7d3ab7901 100644 --- a/pkg/protocol/network_manager.go +++ b/pkg/protocol/network_manager.go @@ -24,8 +24,9 @@ import ( ) type NetworkManager struct { + *Protocol + Network *core.Protocol - protocol *Protocol attestationsRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] warpSyncRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] @@ -39,8 +40,8 @@ type NetworkManager struct { func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { n := &NetworkManager{ + Protocol: protocol, Network: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), - protocol: protocol, attestationsRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), warpSyncRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), @@ -61,19 +62,19 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { protocol.Events.Engine.Scheduler.BlockScheduled, protocol.Events.Engine.Scheduler.BlockSkipped, } { - gossipEvent.Hook(func(block *blocks.Block) { n.protocol.SendBlock(block.ModelBlock()) }) + gossipEvent.Hook(func(block *blocks.Block) { n.SendBlock(block.ModelBlock()) }) } var unsubscribeFromNetworkEvents func() protocol.HookInitialized(func() { n.Network.OnError(func(err error, peer peer.ID) { - n.protocol.LogError("network error", "peer", peer, "error", err) + n.LogError("network error", "peer", peer, "error", err) }) unsubscribeFromNetworkEvents = lo.Batch( - n.Network.OnBlockReceived(n.protocol.ProcessBlock), - n.Network.OnBlockRequestReceived(n.protocol.ProcessBlockRequest), + n.Network.OnBlockReceived(n.ProcessBlock), + n.Network.OnBlockRequestReceived(n.ProcessBlockRequest), n.Network.OnCommitmentReceived(n.ProcessCommitment), n.Network.OnCommitmentRequestReceived(n.ProcessCommitmentRequest), @@ -84,12 +85,12 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { n.warpSyncRequester.Events.Tick.Hook(n.SendWarpSyncRequest).Unhook, n.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { - n.protocol.LogDebug("block requested", "blockID", blockID, "engine", engine.Name()) + n.LogDebug("block requested", "blockID", blockID, "engine", engine.Name()) n.Network.RequestBlock(blockID) }), n.OnCommitmentRequested(func(id iotago.CommitmentID) { - n.protocol.LogDebug("commitment requested", "commitmentID", id) + n.LogDebug("commitment requested", "commitmentID", id) n.Network.RequestSlotCommitment(id) }), @@ -113,20 +114,20 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { } func (n *NetworkManager) SendWarpSyncRequest(id iotago.CommitmentID) { - n.protocol.LogDebug("request warp sync", "commitmentID", id) + n.LogDebug("request warp sync", "commitmentID", id) n.Network.SendWarpSyncRequest(id) } func (n *NetworkManager) IssueBlock(block *model.Block) error { - n.protocol.MainEngineInstance().ProcessBlockFromPeer(block, "self") + n.MainEngineInstance().ProcessBlockFromPeer(block, "self") return nil } func (n *NetworkManager) ProcessCommitment(commitmentModel *model.Commitment, peer peer.ID) { n.processTask("commitment", func() (logLevel log.Level, err error) { - _, published, err := n.protocol.PublishCommitment(commitmentModel) + _, published, err := n.PublishCommitment(commitmentModel) if err != nil { return log.LevelError, ierrors.Wrapf(err, "failed to publish commitment") } @@ -140,48 +141,48 @@ func (n *NetworkManager) ProcessCommitment(commitmentModel *model.Commitment, pe } func (n *NetworkManager) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src peer.ID) { - n.protocol.LogTrace("commitment request received", "commitmentID", commitmentID, "peer", src) + n.LogTrace("commitment request received", "commitmentID", commitmentID, "peer", src) - if commitment, err := n.protocol.Commitment(commitmentID); err != nil { + if commitment, err := n.Commitment(commitmentID); err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { - n.protocol.LogDebug("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) + n.LogDebug("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) } else { - n.protocol.LogTrace("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) + n.LogTrace("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) } } else { - n.protocol.LogTrace("sending commitment", "commitmentID", commitmentID, "peer", src) + n.LogTrace("sending commitment", "commitmentID", commitmentID, "peer", src) n.Network.SendSlotCommitment(commitment.Commitment, src) } } func (n *NetworkManager) ProcessAttestations(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { - commitment, _, err := n.protocol.PublishCommitment(commitmentModel) + commitment, _, err := n.PublishCommitment(commitmentModel) if err != nil { - n.protocol.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", source, "error", err) + n.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", source, "error", err) return } if !commitment.RequestAttestations.Get() { - n.protocol.LogTrace("received attestations for previously attested commitment", "commitment", commitment.LogName()) + n.LogTrace("received attestations for previously attested commitment", "commitment", commitment.LogName()) return } chain := commitment.Chain.Get() if chain == nil { - n.protocol.LogDebug("failed to find chain for commitment when processing attestations", "commitmentID", commitmentModel.ID()) + n.LogDebug("failed to find chain for commitment when processing attestations", "commitmentID", commitmentModel.ID()) return } commitmentVerifier, exists := n.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) if !exists { - n.protocol.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitmentID", commitmentModel.ID()) + n.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitmentID", commitmentModel.ID()) return } _, actualWeight, err := commitmentVerifier.verifyCommitment(commitment, attestations, merkleProof) if err != nil { - n.protocol.LogError("failed to verify commitment when processing attestations", "commitmentID", commitmentModel.ID(), "error", err) + n.LogError("failed to verify commitment when processing attestations", "commitmentID", commitmentModel.ID(), "error", err) return } @@ -191,7 +192,7 @@ func (n *NetworkManager) ProcessAttestations(commitmentModel *model.Commitment, func (n *NetworkManager) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) { n.processTask("attestations request", func() (logLevel log.Level, err error) { - mainEngine := n.protocol.MainEngineInstance() + mainEngine := n.MainEngineInstance() if mainEngine.Storage.Settings().LatestCommitment().Slot() < commitmentID.Slot() { return log.LevelTrace, ierrors.New("requested commitment is not verified, yet") @@ -229,7 +230,7 @@ func (n *NetworkManager) ProcessWarpSyncResponse(commitmentID iotago.CommitmentI n.processTask("warp sync response", func() (logLevel log.Level, err error) { logLevel = log.LevelTrace - chainCommitment, err := n.protocol.Commitment(commitmentID) + chainCommitment, err := n.Commitment(commitmentID) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { logLevel = log.LevelError @@ -276,9 +277,9 @@ func (n *NetworkManager) ProcessWarpSyncResponse(commitmentID iotago.CommitmentI func (n *NetworkManager) processTask(taskName string, task func() (logLevel log.Level, err error), args ...any) { if logLevel, err := task(); err != nil { - n.protocol.Log("failed to process "+taskName, logLevel, append(args, "error", err)...) + n.Log("failed to process "+taskName, logLevel, append(args, "error", err)...) } else { - n.protocol.Log("successfully processed "+taskName, logLevel, args...) + n.Log("successfully processed "+taskName, logLevel, args...) } } @@ -286,7 +287,7 @@ func (n *NetworkManager) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID n.processTask("warp sync request", func() (logLevel log.Level, err error) { logLevel = log.LevelTrace - commitment, err := n.protocol.Commitment(commitmentID) + commitment, err := n.Commitment(commitmentID) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { logLevel = log.LevelError @@ -366,8 +367,8 @@ func (n *NetworkManager) Shutdown() {} func (n *NetworkManager) startAttestationsRequester() { - n.protocol.HookConstructed(func() { - n.protocol.OnChainCreated(func(chain *Chain) { + n.HookConstructed(func() { + n.OnChainCreated(func(chain *Chain) { chain.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { forkingPoint := chain.ForkingPoint.Get() @@ -383,7 +384,7 @@ func (n *NetworkManager) startAttestationsRequester() { }) }) - n.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + n.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { if requestAttestations { if commitment.CumulativeWeight() == 0 { @@ -400,7 +401,7 @@ func (n *NetworkManager) startAttestationsRequester() { } func (n *NetworkManager) startWarpSyncRequester() { - n.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + n.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.RequestBlocks.OnUpdate(func(_, warpSyncBlocks bool) { if warpSyncBlocks { n.warpSyncRequester.StartTicker(commitment.ID()) @@ -412,7 +413,7 @@ func (n *NetworkManager) startWarpSyncRequester() { } func (n *NetworkManager) startBlockRequester() { - n.protocol.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { + n.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { mutations.AddedElements().Range(func(chain *Chain) { chain.Engine.OnUpdate(func(_, engine *engine.Engine) { unsubscribe := lo.Batch( diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 830d7edce..bbd223e7f 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -2,68 +2,51 @@ package protocol import ( "context" + "sync" - "github.com/libp2p/go-libp2p/core/peer" - - "github.com/iotaledger/hive.go/ds/types" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" - "github.com/iotaledger/iota-core/pkg/core/buffer" - "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/protocol/engine" - iotago "github.com/iotaledger/iota.go/v4" ) type Protocol struct { - Events *Events - Workers *workerpool.Group - error *event.Event1[error] - options *Options - droppedBlocksBuffer *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] + Events *Events + Workers *workerpool.Group + error *event.Event1[error] + options *Options + *ApiProvider *NetworkManager *ChainManager *EngineManager + *GossipProtocol + log.Logger module.Module } func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { return options.Apply(&Protocol{ - Events: NewEvents(), - Workers: workers, - Logger: logger, - error: event.New1[error](), - droppedBlocksBuffer: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), - options: newOptions(), + Events: NewEvents(), + Workers: workers, + Logger: logger, + error: event.New1[error](), + options: newOptions(), }, opts, func(p *Protocol) { + p.ApiProvider = newApiProvider(p) p.ChainManager = newChainManager(p) p.EngineManager = NewEngineManager(p) p.NetworkManager = newNetwork(p, dispatcher) - - p.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { - if inSyncRange { - for _, droppedBlock := range p.droppedBlocksBuffer.GetValues(commitment.ID()) { - // TODO: replace with workerpool - go p.ProcessBlock(droppedBlock.A, droppedBlock.B) - } - } - }) - }) + p.GossipProtocol = NewGossipProtocol(p) }, (*Protocol).TriggerConstructed) } func (p *Protocol) Run(ctx context.Context) error { - p.MainChain.OnUpdateOnce(func(_, mainChain *Chain) { - mainChain.Engine.OnUpdateOnce(func(_, _ *engine.Engine) { - p.TriggerInitialized() - }) - }) + p.TriggerInitialized() <-ctx.Done() @@ -75,66 +58,17 @@ func (p *Protocol) Run(ctx context.Context) error { return ctx.Err() } -func (p *Protocol) ProcessBlock(block *model.Block, peer peer.ID) { - commitmentRequest := p.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) - if commitmentRequest.WasRejected() { - p.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID(), "fromPeer", peer, "err", commitmentRequest.Err()) - return - } - - commitment := commitmentRequest.Result() - if commitment == nil || !commitment.Chain.Get().DispatchBlock(block, peer) { - if !p.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, peer)) { - p.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "blockID", block.ID(), "commitmentID", block.ProtocolBlock().SlotCommitmentID, "fromPeer", peer) - } else { - p.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "blockID", block.ID(), "commitmentID", block.ProtocolBlock().SlotCommitmentID, "fromPeer", peer) - } - return - } - - p.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName(), "fromPeer", peer) -} - -func (p *Protocol) ProcessBlockRequest(blockID iotago.BlockID, peer peer.ID) { - block, exists := p.MainEngineInstance().Block(blockID) - if !exists { - p.LogTrace("requested block not found", "blockID", blockID, "fromPeer", peer) - return - } - - p.SendBlock(block, peer) - - p.LogTrace("processed block request", "blockID", blockID, "fromPeer", peer) -} - -func (p *Protocol) SendBlock(block *model.Block, to ...peer.ID) { - p.Network.SendBlock(block, to...) - - p.LogTrace("sent block", "blockID", block.ID(), "toPeers", to) -} - -// APIForVersion returns the API for the given version. -func (p *Protocol) APIForVersion(version iotago.Version) (api iotago.API, err error) { - return p.MainEngineInstance().APIForVersion(version) -} - -// APIForSlot returns the API for the given slot. -func (p *Protocol) APIForSlot(slot iotago.SlotIndex) iotago.API { - return p.MainEngineInstance().APIForSlot(slot) -} - -func (p *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { - return p.MainEngineInstance().APIForEpoch(epoch) -} +func (p *Protocol) TriggerInitialized() { + var waitInitialized sync.WaitGroup -func (p *Protocol) CurrentAPI() iotago.API { - return p.MainEngineInstance().CurrentAPI() -} + waitInitialized.Add(1) + p.MainChain.OnUpdateOnce(func(_, mainChain *Chain) { + mainChain.SpawnedEngine.OnUpdateOnce(func(_, _ *engine.Engine) { + p.Module.TriggerInitialized() -func (p *Protocol) LatestAPI() iotago.API { - return p.MainEngineInstance().LatestAPI() -} + waitInitialized.Done() + }) + }) -func (p *Protocol) OnError(callback func(error)) (unsubscribe func()) { - return p.error.Hook(callback).Unhook + waitInitialized.Wait() } From 1deb2d6d55a874cfeec7d250caacf598c8c27b34 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 7 Oct 2023 01:53:00 +0200 Subject: [PATCH 168/356] Feat: made network_manager no module --- pkg/protocol/gossip_protocol.go | 28 ++++++++++++++-------------- pkg/protocol/network_manager.go | 14 ++------------ 2 files changed, 16 insertions(+), 26 deletions(-) diff --git a/pkg/protocol/gossip_protocol.go b/pkg/protocol/gossip_protocol.go index 351250974..0a1bb64d8 100644 --- a/pkg/protocol/gossip_protocol.go +++ b/pkg/protocol/gossip_protocol.go @@ -22,25 +22,12 @@ func NewGossipProtocol(protocol *Protocol) *GossipProtocol { } g.HookConstructed(func() { - g.initDroppedBlocksReplay() + g.replayDroppedBlocks() }) return g } -func (g *GossipProtocol) initDroppedBlocksReplay() { - g.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { - if inSyncRange { - for _, droppedBlock := range g.droppedBlocksBuffer.GetValues(commitment.ID()) { - // TODO: replace with workerpool - go g.ProcessBlock(droppedBlock.A, droppedBlock.B) - } - } - }) - }) -} - func (g *GossipProtocol) ProcessBlock(block *model.Block, from peer.ID) { commitmentRequest := g.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) if commitmentRequest.WasRejected() { @@ -78,3 +65,16 @@ func (g *GossipProtocol) SendBlock(block *model.Block, to ...peer.ID) { g.LogTrace("sent block", "blockID", block.ID(), "toPeers", to) } + +func (g *GossipProtocol) replayDroppedBlocks() { + g.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { + if inSyncRange { + for _, droppedBlock := range g.droppedBlocksBuffer.GetValues(commitment.ID()) { + // TODO: replace with workerpool + go g.ProcessBlock(droppedBlock.A, droppedBlock.B) + } + } + }) + }) +} diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go index 7d3ab7901..f1117bb1c 100644 --- a/pkg/protocol/network_manager.go +++ b/pkg/protocol/network_manager.go @@ -13,7 +13,6 @@ import ( "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" - "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/network/protocols/core" @@ -26,7 +25,8 @@ import ( type NetworkManager struct { *Protocol - Network *core.Protocol + Network *core.Protocol + attestationsRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] warpSyncRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] @@ -34,8 +34,6 @@ type NetworkManager struct { blockRequestStopped *event.Event2[iotago.BlockID, *engine.Engine] blockRequested *event.Event2[iotago.BlockID, *engine.Engine] commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] - - module.Module } func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { @@ -51,8 +49,6 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), } - n.TriggerConstructed() - n.startBlockRequester() n.startAttestationsRequester() n.startWarpSyncRequester() @@ -97,16 +93,10 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { n.OnAttestationsRequested(func(commitmentID iotago.CommitmentID) { n.Network.RequestAttestations(commitmentID) }), ) - n.TriggerInitialized() - protocol.HookShutdown(func() { - n.TriggerShutdown() - unsubscribeFromNetworkEvents() n.Network.Shutdown() - - n.TriggerStopped() }) }) From be117a1ab95e08d2d4b7a0919a90fd45bc148300 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 7 Oct 2023 02:02:52 +0200 Subject: [PATCH 169/356] Feat: addressed linter errors --- pkg/protocol/api_provider.go | 30 +++++++++++++++--------------- pkg/protocol/gossip_protocol.go | 3 +++ pkg/protocol/protocol.go | 4 ++-- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/pkg/protocol/api_provider.go b/pkg/protocol/api_provider.go index 48cca1003..6d04097c6 100644 --- a/pkg/protocol/api_provider.go +++ b/pkg/protocol/api_provider.go @@ -2,38 +2,38 @@ package protocol import iotago "github.com/iotaledger/iota.go/v4" -// ApiProvider is a protocol component that exposes the methods to comply with the iotago.APIProvider interface. -type ApiProvider struct { +// APIProvider is a protocol component that exposes the methods to comply with the iotago.APIProvider interface. +type APIProvider struct { // Protocol is the protocol instance. *Protocol } -// newApiProvider creates a new ApiProvider. -func newApiProvider(protocol *Protocol) *ApiProvider { - return &ApiProvider{Protocol: protocol} +// NewApiProvider creates a new APIProvider. +func NewApiProvider(protocol *Protocol) *APIProvider { + return &APIProvider{Protocol: protocol} } // APIForVersion returns the API for the given version. -func (p *ApiProvider) APIForVersion(version iotago.Version) (api iotago.API, err error) { - return p.MainEngineInstance().APIForVersion(version) +func (a *APIProvider) APIForVersion(version iotago.Version) (api iotago.API, err error) { + return a.MainEngineInstance().APIForVersion(version) } // APIForSlot returns the API for the given slot. -func (p *ApiProvider) APIForSlot(slot iotago.SlotIndex) iotago.API { - return p.MainEngineInstance().APIForSlot(slot) +func (a *APIProvider) APIForSlot(slot iotago.SlotIndex) iotago.API { + return a.MainEngineInstance().APIForSlot(slot) } // APIForEpoch returns the API for the given epoch. -func (p *ApiProvider) APIForEpoch(epoch iotago.EpochIndex) iotago.API { - return p.MainEngineInstance().APIForEpoch(epoch) +func (a *APIProvider) APIForEpoch(epoch iotago.EpochIndex) iotago.API { + return a.MainEngineInstance().APIForEpoch(epoch) } // CurrentAPI returns the current API. -func (p *ApiProvider) CurrentAPI() iotago.API { - return p.MainEngineInstance().CurrentAPI() +func (a *APIProvider) CurrentAPI() iotago.API { + return a.MainEngineInstance().CurrentAPI() } // LatestAPI returns the latest API. -func (p *ApiProvider) LatestAPI() iotago.API { - return p.MainEngineInstance().LatestAPI() +func (a *APIProvider) LatestAPI() iotago.API { + return a.MainEngineInstance().LatestAPI() } diff --git a/pkg/protocol/gossip_protocol.go b/pkg/protocol/gossip_protocol.go index 0a1bb64d8..d7353db4a 100644 --- a/pkg/protocol/gossip_protocol.go +++ b/pkg/protocol/gossip_protocol.go @@ -32,6 +32,7 @@ func (g *GossipProtocol) ProcessBlock(block *model.Block, from peer.ID) { commitmentRequest := g.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) if commitmentRequest.WasRejected() { g.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID(), "fromPeer", from, "err", commitmentRequest.Err()) + return } @@ -42,6 +43,7 @@ func (g *GossipProtocol) ProcessBlock(block *model.Block, from peer.ID) { } else { g.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "blockID", block.ID(), "commitmentID", block.ProtocolBlock().SlotCommitmentID, "fromPeer", from) } + return } @@ -52,6 +54,7 @@ func (g *GossipProtocol) ProcessBlockRequest(blockID iotago.BlockID, from peer.I block, exists := g.MainEngineInstance().Block(blockID) if !exists { g.LogTrace("requested block not found", "blockID", blockID, "fromPeer", from) + return } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index bbd223e7f..2dd65f860 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -19,7 +19,7 @@ type Protocol struct { error *event.Event1[error] options *Options - *ApiProvider + *APIProvider *NetworkManager *ChainManager *EngineManager @@ -37,7 +37,7 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi error: event.New1[error](), options: newOptions(), }, opts, func(p *Protocol) { - p.ApiProvider = newApiProvider(p) + p.APIProvider = NewApiProvider(p) p.ChainManager = newChainManager(p) p.EngineManager = NewEngineManager(p) p.NetworkManager = newNetwork(p, dispatcher) From a53bf4571dafcf45a08f995d262e405bcc86b0fd Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 7 Oct 2023 02:19:48 +0200 Subject: [PATCH 170/356] Feat: added HookedStopped --- pkg/protocol/network_manager.go | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go index f1117bb1c..7dac154c6 100644 --- a/pkg/protocol/network_manager.go +++ b/pkg/protocol/network_manager.go @@ -6,6 +6,7 @@ import ( "github.com/iotaledger/hive.go/ads" "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore" @@ -34,6 +35,7 @@ type NetworkManager struct { blockRequestStopped *event.Event2[iotago.BlockID, *engine.Engine] blockRequested *event.Event2[iotago.BlockID, *engine.Engine] commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] + stopped reactive.Event } func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { @@ -47,6 +49,7 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { blockRequestStopped: event.New2[iotago.BlockID, *engine.Engine](), blockRequested: event.New2[iotago.BlockID, *engine.Engine](), commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), + stopped: reactive.NewEvent(), } n.startBlockRequester() @@ -97,12 +100,18 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { unsubscribeFromNetworkEvents() n.Network.Shutdown() + + n.stopped.Trigger() }) }) return n } +func (n *NetworkManager) HookStopped(callback func()) (unsubscribe func()) { + return n.stopped.OnTrigger(callback) +} + func (n *NetworkManager) SendWarpSyncRequest(id iotago.CommitmentID) { n.LogDebug("request warp sync", "commitmentID", id) From 666dafed120d2ff2ff88b153afccb0c6279389c4 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 7 Oct 2023 02:25:00 +0200 Subject: [PATCH 171/356] Refactor: removed ambiguitiy --- pkg/protocol/engine_manager.go | 4 ++-- pkg/protocol/network_manager.go | 10 +++++----- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/pkg/protocol/engine_manager.go b/pkg/protocol/engine_manager.go index 25d7bd9a3..db0650c88 100644 --- a/pkg/protocol/engine_manager.go +++ b/pkg/protocol/engine_manager.go @@ -204,7 +204,7 @@ func (e *EngineManager) provideEngineIfRequested(chain *Chain) { chain.SpawnedEngine.Set(mainEngine) - e.protocol.NetworkManager.HookStopped(mainEngine.Shutdown) + e.protocol.NetworkManager.OnShutdown(mainEngine.Shutdown) } else { forkingPoint := chain.ForkingPoint.Get() snapshotTargetSlot := forkingPoint.Slot() - 1 @@ -216,7 +216,7 @@ func (e *EngineManager) provideEngineIfRequested(chain *Chain) { chain.SpawnedEngine.Set(candidateEngineInstance) - e.protocol.NetworkManager.HookStopped(candidateEngineInstance.Shutdown) + e.protocol.NetworkManager.OnShutdown(candidateEngineInstance.Shutdown) } }() }) diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go index 7dac154c6..202fe437c 100644 --- a/pkg/protocol/network_manager.go +++ b/pkg/protocol/network_manager.go @@ -35,7 +35,7 @@ type NetworkManager struct { blockRequestStopped *event.Event2[iotago.BlockID, *engine.Engine] blockRequested *event.Event2[iotago.BlockID, *engine.Engine] commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] - stopped reactive.Event + shutdown reactive.Event } func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { @@ -49,7 +49,7 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { blockRequestStopped: event.New2[iotago.BlockID, *engine.Engine](), blockRequested: event.New2[iotago.BlockID, *engine.Engine](), commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), - stopped: reactive.NewEvent(), + shutdown: reactive.NewEvent(), } n.startBlockRequester() @@ -101,15 +101,15 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { n.Network.Shutdown() - n.stopped.Trigger() + n.shutdown.Trigger() }) }) return n } -func (n *NetworkManager) HookStopped(callback func()) (unsubscribe func()) { - return n.stopped.OnTrigger(callback) +func (n *NetworkManager) OnShutdown(callback func()) (unsubscribe func()) { + return n.shutdown.OnTrigger(callback) } func (n *NetworkManager) SendWarpSyncRequest(id iotago.CommitmentID) { From 5607410db5cb308987dc92343faba906022667c3 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 7 Oct 2023 02:34:34 +0200 Subject: [PATCH 172/356] Feat: addressed more linter warnings --- pkg/protocol/api_provider.go | 4 ++-- pkg/protocol/gossip_protocol.go | 2 +- pkg/protocol/protocol.go | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/api_provider.go b/pkg/protocol/api_provider.go index 6d04097c6..6b81aaecf 100644 --- a/pkg/protocol/api_provider.go +++ b/pkg/protocol/api_provider.go @@ -8,8 +8,8 @@ type APIProvider struct { *Protocol } -// NewApiProvider creates a new APIProvider. -func NewApiProvider(protocol *Protocol) *APIProvider { +// NewAPIProvider creates a new APIProvider. +func NewAPIProvider(protocol *Protocol) *APIProvider { return &APIProvider{Protocol: protocol} } diff --git a/pkg/protocol/gossip_protocol.go b/pkg/protocol/gossip_protocol.go index d7353db4a..0d32dbe06 100644 --- a/pkg/protocol/gossip_protocol.go +++ b/pkg/protocol/gossip_protocol.go @@ -54,7 +54,7 @@ func (g *GossipProtocol) ProcessBlockRequest(blockID iotago.BlockID, from peer.I block, exists := g.MainEngineInstance().Block(blockID) if !exists { g.LogTrace("requested block not found", "blockID", blockID, "fromPeer", from) - + return } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 2dd65f860..735b9454f 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -37,7 +37,7 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi error: event.New1[error](), options: newOptions(), }, opts, func(p *Protocol) { - p.APIProvider = NewApiProvider(p) + p.APIProvider = NewAPIProvider(p) p.ChainManager = newChainManager(p) p.EngineManager = NewEngineManager(p) p.NetworkManager = newNetwork(p, dispatcher) From 021eb8fff96349e32c38f4f39071d696ad68a13b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 7 Oct 2023 15:42:39 +0200 Subject: [PATCH 173/356] Refactor: moved more code --- pkg/protocol/chain.go | 24 ++--- pkg/protocol/chain_manager.go | 21 ++-- pkg/protocol/commitment.go | 7 +- pkg/protocol/engine_manager.go | 2 +- pkg/protocol/gossip_protocol.go | 171 +++++++++++++++++++++++++++----- pkg/protocol/network_manager.go | 120 +++------------------- 6 files changed, 193 insertions(+), 152 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index e1992d56f..e0b48b6d1 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -24,8 +24,8 @@ type Chain struct { VerifiedWeight reactive.Variable[uint64] SyncThreshold reactive.Variable[iotago.SlotIndex] WarpSyncThreshold reactive.Variable[iotago.SlotIndex] - RequestAttestations reactive.Variable[bool] - InstantiateEngine reactive.Variable[bool] + CheckAttestations reactive.Variable[bool] + SpawnEngine reactive.Variable[bool] Engine reactive.Variable[*engine.Engine] IsSolid reactive.Event IsEvicted reactive.Event @@ -45,13 +45,13 @@ func NewChain(logger log.Logger) *Chain { LatestCommitment: reactive.NewVariable[*Commitment](), LatestAttestedCommitment: reactive.NewVariable[*Commitment](), LatestVerifiedCommitment: reactive.NewVariable[*Commitment](), - RequestAttestations: reactive.NewVariable[bool](), + CheckAttestations: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), - commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), - parentEngine: reactive.NewVariable[*engine.Engine](), - InstantiateEngine: reactive.NewVariable[bool](), - SpawnedEngine: reactive.NewVariable[*engine.Engine](), + commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), + parentEngine: reactive.NewVariable[*engine.Engine](), + SpawnEngine: reactive.NewVariable[bool](), + SpawnedEngine: reactive.NewVariable[*engine.Engine](), } c.ClaimedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestCommitment) @@ -110,16 +110,14 @@ func NewChain(logger log.Logger) *Chain { }) c.Logger = logger.NewEntityLogger("Chain", c.IsEvicted, func(entityLogger log.Logger) { - logger.LogDebug("chain created", "name", entityLogger.LogName()) - - c.ForkingPoint.LogUpdates(entityLogger, log.LevelDebug, "ForkingPoint", (*Commitment).LogName) + c.ForkingPoint.LogUpdates(entityLogger, log.LevelTrace, "ForkingPoint", (*Commitment).LogName) c.ClaimedWeight.LogUpdates(entityLogger, log.LevelTrace, "ClaimedWeight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") c.VerifiedWeight.LogUpdates(entityLogger, log.LevelTrace, "VerifiedWeight") c.LatestCommitment.LogUpdates(entityLogger, log.LevelTrace, "LatestCommitment", (*Commitment).LogName) c.LatestVerifiedCommitment.LogUpdates(entityLogger, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName) - c.RequestAttestations.LogUpdates(entityLogger, log.LevelDebug, "RequestAttestations") - c.InstantiateEngine.LogUpdates(entityLogger, log.LevelDebug, "InstantiateEngine") + c.CheckAttestations.LogUpdates(entityLogger, log.LevelTrace, "CheckAttestations") + c.SpawnEngine.LogUpdates(entityLogger, log.LevelDebug, "SpawnEngine") }) return c @@ -154,7 +152,7 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { success = true for _, chain := range append([]*Chain{c}, c.ChildChains.ToSlice()...) { - if targetSlot := block.ID().Slot(); chain.InstantiateEngine.Get() && chain.earliestUncommittedSlot() <= targetSlot { + if targetSlot := block.ID().Slot(); chain.SpawnEngine.Get() && chain.earliestUncommittedSlot() <= targetSlot { if targetEngine := chain.SpawnedEngine.Get(); targetEngine != nil && targetSlot < c.SyncThreshold.Get() { targetEngine.ProcessBlockFromPeer(block, src) } else { diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 5d967dd52..4c377ba79 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -88,6 +88,10 @@ func (c *ChainManager) PublishCommitment(commitment *model.Commitment) (commitme commitmentMetadata = resolvedMetadata }) + if published = commitmentMetadata == publishedCommitmentMetadata; published { + c.protocol.LogDebug("new commitment created", "name", commitmentMetadata.LogName(), "id", commitment.ID()) + } + return commitmentMetadata, commitmentMetadata == publishedCommitmentMetadata, nil } @@ -121,8 +125,13 @@ func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe } func (c *ChainManager) initMainChain() { + c.protocol.LogDebug("initializing main chain") + mainChain := NewChain(c.protocol.Logger) - mainChain.InstantiateEngine.Set(true) + + c.protocol.LogDebug("new chain created", "name", mainChain.LogName(), "forkingPoint", "") + + mainChain.SpawnEngine.Set(true) mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) c.MainChain.Set(mainChain) @@ -150,17 +159,17 @@ func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent func (c *ChainManager) initChainSwitching() { c.HeaviestChain.OnUpdate(func(prevHeaviestChain, heaviestChain *Chain) { if prevHeaviestChain != nil { - prevHeaviestChain.RequestAttestations.Set(false) + prevHeaviestChain.CheckAttestations.Set(false) } - if !heaviestChain.InstantiateEngine.Get() { - heaviestChain.RequestAttestations.Set(true) + if !heaviestChain.SpawnEngine.Get() { + heaviestChain.CheckAttestations.Set(true) } }) c.HeaviestAttestedChain.OnUpdate(func(_, heaviestAttestedChain *Chain) { - heaviestAttestedChain.RequestAttestations.Set(false) - heaviestAttestedChain.InstantiateEngine.Set(true) + heaviestAttestedChain.CheckAttestations.Set(false) + heaviestAttestedChain.SpawnEngine.Set(true) }) c.HeaviestVerifiedChain.OnUpdate(func(_, heaviestVerifiedChain *Chain) { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index e2ad22e9c..0bd5d1f39 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -121,7 +121,7 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment withinContext(func() (unsubscribe func()) { requestAttestations := reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { return requestAttestations && isDirectlyAboveLatestAttestedCommitment - }, chain.RequestAttestations, c.isDirectlyAboveLatestAttestedCommitment) + }, chain.CheckAttestations, c.isDirectlyAboveLatestAttestedCommitment) c.RequestAttestations.InheritFrom(requestAttestations) @@ -151,7 +151,7 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment c.isBelowSyncThreshold.Set(true) }) - c.Logger = logger.NewEntityLogger(fmt.Sprintf("Slot%d.Commitment", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { + c.Logger = logger.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") @@ -207,6 +207,9 @@ func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitm } spawnedChain = NewChain(c.protocolLogger) + + c.protocolLogger.LogDebug("new chain created", "name", spawnedChain.LogName(), "forkingPoint", c.LogName()) + spawnedChain.ForkingPoint.Set(c) } diff --git a/pkg/protocol/engine_manager.go b/pkg/protocol/engine_manager.go index db0650c88..e5be21311 100644 --- a/pkg/protocol/engine_manager.go +++ b/pkg/protocol/engine_manager.go @@ -187,7 +187,7 @@ func (e *EngineManager) ForkEngineAtSlot(index iotago.SlotIndex) (*engine.Engine } func (e *EngineManager) provideEngineIfRequested(chain *Chain) { - chain.InstantiateEngine.OnUpdate(func(_, instantiate bool) { + chain.SpawnEngine.OnUpdate(func(_, instantiate bool) { // TODO: MOVE TO WORKERPOOL go func() { if !instantiate { diff --git a/pkg/protocol/gossip_protocol.go b/pkg/protocol/gossip_protocol.go index 0d32dbe06..cf0aba195 100644 --- a/pkg/protocol/gossip_protocol.go +++ b/pkg/protocol/gossip_protocol.go @@ -3,21 +3,33 @@ package protocol import ( "github.com/libp2p/go-libp2p/core/peer" + "github.com/iotaledger/hive.go/ads" "github.com/iotaledger/hive.go/ds/types" + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/kvstore/mapdb" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/core/buffer" "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/merklehasher" ) type GossipProtocol struct { *Protocol + inboundWorkers *workerpool.WorkerPool + outboundWorkers *workerpool.WorkerPool droppedBlocksBuffer *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] } func NewGossipProtocol(protocol *Protocol) *GossipProtocol { g := &GossipProtocol{ Protocol: protocol, + inboundWorkers: protocol.Workers.CreatePool("Gossip.Inbound"), + outboundWorkers: protocol.Workers.CreatePool("Gossip.Outbound"), droppedBlocksBuffer: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), } @@ -29,44 +41,156 @@ func NewGossipProtocol(protocol *Protocol) *GossipProtocol { } func (g *GossipProtocol) ProcessBlock(block *model.Block, from peer.ID) { - commitmentRequest := g.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) - if commitmentRequest.WasRejected() { - g.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID(), "fromPeer", from, "err", commitmentRequest.Err()) + g.inboundWorkers.Submit(func() { + commitmentRequest := g.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) + if commitmentRequest.WasRejected() { + g.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID(), "err", commitmentRequest.Err()) - return - } - - commitment := commitmentRequest.Result() - if commitment == nil || !commitment.Chain.Get().DispatchBlock(block, from) { - if !g.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, from)) { - g.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "blockID", block.ID(), "commitmentID", block.ProtocolBlock().SlotCommitmentID, "fromPeer", from) - } else { - g.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "blockID", block.ID(), "commitmentID", block.ProtocolBlock().SlotCommitmentID, "fromPeer", from) + return } - return - } + commitment := commitmentRequest.Result() + if commitment == nil || !commitment.Chain.Get().DispatchBlock(block, from) { + if !g.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, from)) { + g.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) + } else { + g.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) + } + + return + } - g.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName(), "fromPeer", from) + g.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName()) + }) } func (g *GossipProtocol) ProcessBlockRequest(blockID iotago.BlockID, from peer.ID) { - block, exists := g.MainEngineInstance().Block(blockID) - if !exists { - g.LogTrace("requested block not found", "blockID", blockID, "fromPeer", from) + g.inboundWorkers.Submit(func() { + block, exists := g.MainEngineInstance().Block(blockID) + if !exists { + g.LogTrace("requested block not found", "blockID", blockID) + + return + } + + g.SendBlock(block, from) + + g.LogTrace("processed block request", "blockID", blockID) + }) +} + +func (g *GossipProtocol) ProcessCommitment(commitmentModel *model.Commitment, from peer.ID) { + g.inboundWorkers.Submit(func() { + if commitment, published, err := g.PublishCommitment(commitmentModel); err != nil { + g.LogError("failed to process commitment", "fromPeer", from, "err", err) + } else if published { + g.LogDebug("processed received commitment", "commitment", commitment.LogName()) + } + }) +} + +func (g *GossipProtocol) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, from peer.ID) { + commitment, err := g.Commitment(commitmentID) + if err != nil { + logLevel := lo.Cond(ierrors.Is(err, ErrorCommitmentNotFound), log.LevelTrace, log.LevelError) + + g.Log("failed to load commitment for commitment request", logLevel, "commitmentID", commitmentID, "fromPeer", from, "error", err) return } - g.SendBlock(block, from) + g.Network.SendSlotCommitment(commitment.Commitment, from) - g.LogTrace("processed block request", "blockID", blockID, "fromPeer", from) + g.LogTrace("processed commitment request", "commitment", commitment.LogName(), "fromPeer", from) +} + +func (g *GossipProtocol) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], from peer.ID) { + g.inboundWorkers.Submit(func() { + chainCommitment, err := g.Commitment(commitmentID) + if err != nil { + if !ierrors.Is(err, ErrorCommitmentNotFound) { + g.LogError("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "err", err) + } else { + g.LogTrace("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "err", err) + } + + return + } + + targetEngine := chainCommitment.Engine.Get() + if targetEngine == nil { + g.LogDebug("failed to get target engine for warp-sync response", "commitment", chainCommitment.LogName()) + + return + } + + chainCommitment.RequestedBlocksReceived.Compute(func(requestedBlocksReceived bool) bool { + if requestedBlocksReceived || !chainCommitment.RequestBlocks.Get() { + g.LogTrace("warp-sync response for already synced commitment received", "commitment", chainCommitment.LogName()) + + return requestedBlocksReceived + } + + acceptedBlocks := ads.NewSet[iotago.BlockID](mapdb.NewMapDB(), iotago.BlockID.Bytes, iotago.SlotIdentifierFromBytes) + for _, blockID := range blockIDs { + _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error + } + + if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), chainCommitment.RootsID()) { + g.LogError("failed to verify merkle proof in warp-sync response", "commitment", chainCommitment.LogName(), "blockIDs", blockIDs, "proof", proof) + + return false + } + + g.warpSyncRequester.StopTicker(commitmentID) + + for _, blockID := range blockIDs { + targetEngine.BlockDAG.GetOrRequestBlock(blockID) + } + + g.LogDebug("processed warp-sync response", "commitment", chainCommitment.LogName()) + + return true + }) + }) } func (g *GossipProtocol) SendBlock(block *model.Block, to ...peer.ID) { - g.Network.SendBlock(block, to...) + g.outboundWorkers.Submit(func() { + g.Network.SendBlock(block, to...) + + g.LogTrace("sent block", "blockID", block.ID(), "toPeers", to) + }) +} + +func (g *GossipProtocol) SendAttestationsRequest(commitmentID iotago.CommitmentID) { + g.outboundWorkers.Submit(func() { + if commitment, err := g.Commitment(commitmentID, false); err == nil { + g.Network.RequestAttestations(commitmentID) + + g.LogDebug("sent attestations request", "commitment", commitment.LogName()) + } else { + g.LogError("failed to load commitment for attestations request", "commitmentID", commitmentID, "err", err) + } + }) +} - g.LogTrace("sent block", "blockID", block.ID(), "toPeers", to) +func (g *GossipProtocol) SendWarpSyncRequest(id iotago.CommitmentID) { + g.outboundWorkers.Submit(func() { + if commitment, err := g.Commitment(id, false); err == nil { + g.Network.SendWarpSyncRequest(id) + + g.LogDebug("sent warp-sync request", "commitment", commitment.LogName()) + } + }) +} + +func (g *GossipProtocol) SendBlockRequest(blockID iotago.BlockID, engine *engine.Engine) { + g.outboundWorkers.Submit(func() { + g.Network.RequestBlock(blockID) + + g.LogTrace("sent block request", "engine", engine.Name(), "blockID", blockID) + }) } func (g *GossipProtocol) replayDroppedBlocks() { @@ -74,8 +198,7 @@ func (g *GossipProtocol) replayDroppedBlocks() { commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { if inSyncRange { for _, droppedBlock := range g.droppedBlocksBuffer.GetValues(commitment.ID()) { - // TODO: replace with workerpool - go g.ProcessBlock(droppedBlock.A, droppedBlock.B) + g.ProcessBlock(droppedBlock.A, droppedBlock.B) } } }) diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go index 202fe437c..eb45ef239 100644 --- a/pkg/protocol/network_manager.go +++ b/pkg/protocol/network_manager.go @@ -3,14 +3,12 @@ package protocol import ( "github.com/libp2p/go-libp2p/core/peer" - "github.com/iotaledger/hive.go/ads" "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore" - "github.com/iotaledger/hive.go/kvstore/mapdb" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" @@ -72,33 +70,37 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { }) unsubscribeFromNetworkEvents = lo.Batch( + // inbound: Network -> GossipProtocol n.Network.OnBlockReceived(n.ProcessBlock), n.Network.OnBlockRequestReceived(n.ProcessBlockRequest), - n.Network.OnCommitmentReceived(n.ProcessCommitment), n.Network.OnCommitmentRequestReceived(n.ProcessCommitmentRequest), - n.Network.OnAttestationsReceived(n.ProcessAttestations), - n.Network.OnAttestationsRequestReceived(n.ProcessAttestationsRequest), n.Network.OnWarpSyncResponseReceived(n.ProcessWarpSyncResponse), - n.Network.OnWarpSyncRequestReceived(n.ProcessWarpSyncRequest), + // outbound: GossipProtocol -> Network n.warpSyncRequester.Events.Tick.Hook(n.SendWarpSyncRequest).Unhook, - n.OnBlockRequested(func(blockID iotago.BlockID, engine *engine.Engine) { - n.LogDebug("block requested", "blockID", blockID, "engine", engine.Name()) + n.attestationsRequester.Events.Tick.Hook(n.SendAttestationsRequest).Unhook, + n.blockRequested.Hook(n.SendBlockRequest).Unhook, + + n.Network.OnAttestationsReceived(n.ProcessAttestations), + n.Network.OnAttestationsRequestReceived(n.ProcessAttestationsRequest), + + n.Network.OnWarpSyncRequestReceived(n.ProcessWarpSyncRequest), - n.Network.RequestBlock(blockID) - }), n.OnCommitmentRequested(func(id iotago.CommitmentID) { n.LogDebug("commitment requested", "commitmentID", id) n.Network.RequestSlotCommitment(id) }), - n.OnAttestationsRequested(func(commitmentID iotago.CommitmentID) { n.Network.RequestAttestations(commitmentID) }), ) protocol.HookShutdown(func() { unsubscribeFromNetworkEvents() + protocol.GossipProtocol.inboundWorkers.Shutdown().ShutdownComplete.Wait() + protocol.GossipProtocol.outboundWorkers.Shutdown().ShutdownComplete.Wait() + // shutdown gossip and wait + n.Network.Shutdown() n.shutdown.Trigger() @@ -112,49 +114,12 @@ func (n *NetworkManager) OnShutdown(callback func()) (unsubscribe func()) { return n.shutdown.OnTrigger(callback) } -func (n *NetworkManager) SendWarpSyncRequest(id iotago.CommitmentID) { - n.LogDebug("request warp sync", "commitmentID", id) - - n.Network.SendWarpSyncRequest(id) -} - func (n *NetworkManager) IssueBlock(block *model.Block) error { n.MainEngineInstance().ProcessBlockFromPeer(block, "self") return nil } -func (n *NetworkManager) ProcessCommitment(commitmentModel *model.Commitment, peer peer.ID) { - n.processTask("commitment", func() (logLevel log.Level, err error) { - _, published, err := n.PublishCommitment(commitmentModel) - if err != nil { - return log.LevelError, ierrors.Wrapf(err, "failed to publish commitment") - } - - if !published { - return log.LevelTrace, ierrors.New("commitment published previously") - } - - return log.LevelDebug, nil - }, "commitmentID", commitmentModel.ID(), "peer", peer) -} - -func (n *NetworkManager) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, src peer.ID) { - n.LogTrace("commitment request received", "commitmentID", commitmentID, "peer", src) - - if commitment, err := n.Commitment(commitmentID); err != nil { - if !ierrors.Is(err, ErrorCommitmentNotFound) { - n.LogDebug("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) - } else { - n.LogTrace("failed to process commitment request", "commitmentID", commitmentID, "peer", src, "error", err) - } - } else { - n.LogTrace("sending commitment", "commitmentID", commitmentID, "peer", src) - - n.Network.SendSlotCommitment(commitment.Commitment, src) - } -} - func (n *NetworkManager) ProcessAttestations(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { commitment, _, err := n.PublishCommitment(commitmentModel) if err != nil { @@ -225,55 +190,6 @@ func (n *NetworkManager) ProcessAttestationsRequest(commitmentID iotago.Commitme }, "commitmentID", commitmentID, "peer", src) } -func (n *NetworkManager) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], peer peer.ID) { - n.processTask("warp sync response", func() (logLevel log.Level, err error) { - logLevel = log.LevelTrace - - chainCommitment, err := n.Commitment(commitmentID) - if err != nil { - if !ierrors.Is(err, ErrorCommitmentNotFound) { - logLevel = log.LevelError - } - - return logLevel, ierrors.Wrapf(err, "failed to get commitment") - } - - targetEngine := chainCommitment.Engine.Get() - if targetEngine == nil { - return log.LevelDebug, ierrors.New("failed to get target engine") - } - - chainCommitment.RequestedBlocksReceived.Compute(func(requestedBlocksReceived bool) bool { - if requestedBlocksReceived || !chainCommitment.RequestBlocks.Get() { - err = ierrors.New("warp sync not requested") - return requestedBlocksReceived - } - - acceptedBlocks := ads.NewSet[iotago.BlockID](mapdb.NewMapDB(), iotago.BlockID.Bytes, iotago.SlotIdentifierFromBytes) - for _, blockID := range blockIDs { - _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error - } - - if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), chainCommitment.RootsID()) { - logLevel, err = log.LevelError, ierrors.New("failed to verify merkle proof") - return false - } - - n.warpSyncRequester.StopTicker(commitmentID) - - for _, blockID := range blockIDs { - targetEngine.BlockDAG.GetOrRequestBlock(blockID) - } - - logLevel = log.LevelDebug - - return true - }) - - return logLevel, err - }, "commitmentID", commitmentID, "blockIDs", blockIDs, "proof", proof, "peer", peer) -} - func (n *NetworkManager) processTask(taskName string, task func() (logLevel log.Level, err error), args ...any) { if logLevel, err := task(); err != nil { n.Log("failed to process "+taskName, logLevel, append(args, "error", err)...) @@ -326,10 +242,6 @@ func (n *NetworkManager) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID }, "commitmentID", commitmentID, "peer", src) } -func (n *NetworkManager) OnBlockRequested(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { - return n.blockRequested.Hook(callback).Unhook -} - func (n *NetworkManager) OnBlockRequestStarted(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { return n.blockRequestStarted.Hook(callback).Unhook } @@ -358,17 +270,13 @@ func (n *NetworkManager) OnAttestationsRequestStopped(callback func(commitmentID return n.attestationsRequester.Events.TickerStopped.Hook(callback).Unhook } -func (n *NetworkManager) OnAttestationsRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return n.attestationsRequester.Events.Tick.Hook(callback).Unhook -} - func (n *NetworkManager) Shutdown() {} func (n *NetworkManager) startAttestationsRequester() { n.HookConstructed(func() { n.OnChainCreated(func(chain *Chain) { - chain.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { + chain.CheckAttestations.OnUpdate(func(_, requestAttestations bool) { forkingPoint := chain.ForkingPoint.Get() if requestAttestations { From 055add71926050a0e0c2a62e6d1a0a443066acb5 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 7 Oct 2023 17:14:54 +0200 Subject: [PATCH 174/356] Refactor: refactored more code --- pkg/protocol/gossip_protocol.go | 100 ++++++++++++++++++++++++++------ pkg/protocol/network_manager.go | 79 ++----------------------- 2 files changed, 85 insertions(+), 94 deletions(-) diff --git a/pkg/protocol/gossip_protocol.go b/pkg/protocol/gossip_protocol.go index cf0aba195..528a6894b 100644 --- a/pkg/protocol/gossip_protocol.go +++ b/pkg/protocol/gossip_protocol.go @@ -90,43 +90,45 @@ func (g *GossipProtocol) ProcessCommitment(commitmentModel *model.Commitment, fr } func (g *GossipProtocol) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, from peer.ID) { - commitment, err := g.Commitment(commitmentID) - if err != nil { - logLevel := lo.Cond(ierrors.Is(err, ErrorCommitmentNotFound), log.LevelTrace, log.LevelError) + g.inboundWorkers.Submit(func() { + commitment, err := g.Commitment(commitmentID) + if err != nil { + logLevel := lo.Cond(ierrors.Is(err, ErrorCommitmentNotFound), log.LevelTrace, log.LevelError) - g.Log("failed to load commitment for commitment request", logLevel, "commitmentID", commitmentID, "fromPeer", from, "error", err) + g.Log("failed to load commitment for commitment request", logLevel, "commitmentID", commitmentID, "fromPeer", from, "error", err) - return - } + return + } - g.Network.SendSlotCommitment(commitment.Commitment, from) + g.Network.SendSlotCommitment(commitment.Commitment, from) - g.LogTrace("processed commitment request", "commitment", commitment.LogName(), "fromPeer", from) + g.LogTrace("processed commitment request", "commitment", commitment.LogName(), "fromPeer", from) + }) } func (g *GossipProtocol) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], from peer.ID) { g.inboundWorkers.Submit(func() { - chainCommitment, err := g.Commitment(commitmentID) + commitment, err := g.Commitment(commitmentID) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { - g.LogError("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "err", err) + g.LogError("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "fromPeer", from, "err", err) } else { - g.LogTrace("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "err", err) + g.LogTrace("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "fromPeer", from, "err", err) } return } - targetEngine := chainCommitment.Engine.Get() + targetEngine := commitment.Engine.Get() if targetEngine == nil { - g.LogDebug("failed to get target engine for warp-sync response", "commitment", chainCommitment.LogName()) + g.LogDebug("failed to get target engine for warp-sync response", "commitment", commitment.LogName()) return } - chainCommitment.RequestedBlocksReceived.Compute(func(requestedBlocksReceived bool) bool { - if requestedBlocksReceived || !chainCommitment.RequestBlocks.Get() { - g.LogTrace("warp-sync response for already synced commitment received", "commitment", chainCommitment.LogName()) + commitment.RequestedBlocksReceived.Compute(func(requestedBlocksReceived bool) bool { + if requestedBlocksReceived || !commitment.RequestBlocks.Get() { + g.LogTrace("warp-sync response for already synced commitment received", "commitment", commitment.LogName(), "fromPeer", from) return requestedBlocksReceived } @@ -136,8 +138,8 @@ func (g *GossipProtocol) ProcessWarpSyncResponse(commitmentID iotago.CommitmentI _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error } - if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), chainCommitment.RootsID()) { - g.LogError("failed to verify merkle proof in warp-sync response", "commitment", chainCommitment.LogName(), "blockIDs", blockIDs, "proof", proof) + if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), commitment.RootsID()) { + g.LogError("failed to verify merkle proof in warp-sync response", "commitment", commitment.LogName(), "blockIDs", blockIDs, "proof", proof, "fromPeer", from) return false } @@ -148,13 +150,67 @@ func (g *GossipProtocol) ProcessWarpSyncResponse(commitmentID iotago.CommitmentI targetEngine.BlockDAG.GetOrRequestBlock(blockID) } - g.LogDebug("processed warp-sync response", "commitment", chainCommitment.LogName()) + g.LogDebug("processed warp-sync response", "commitment", commitment.LogName()) return true }) }) } +func (g *GossipProtocol) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, from peer.ID) { + g.inboundWorkers.Submit(func() { + commitment, err := g.Commitment(commitmentID) + if err != nil { + if !ierrors.Is(err, ErrorCommitmentNotFound) { + g.LogError("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) + } else { + g.LogTrace("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) + } + + return + } + + chain := commitment.Chain.Get() + if chain == nil { + g.LogTrace("warp-sync request for unsolid commitment", "commitment", commitment.LogName(), "fromPeer", from) + + return + } + + engineInstance := commitment.Engine.Get() + if engineInstance == nil { + g.LogTrace("warp-sync request for chain without engine", "chain", chain.LogName(), "fromPeer", from) + + return + } + + committedSlot, err := engineInstance.CommittedSlot(commitmentID) + if err != nil { + g.LogTrace("warp-sync request for uncommitted slot", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from) + + return + } + + blockIDs, err := committedSlot.BlockIDs() + if err != nil { + g.LogTrace("failed to get block ids for warp-sync request", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from, "err", err) + + return + } + + roots, err := committedSlot.Roots() + if err != nil { + g.LogTrace("failed to get roots for warp-sync request", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from, "err", err) + + return + } + + g.Network.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), from) + + g.LogTrace("processed warp-sync request", "commitment", commitment.LogName(), "fromPeer", from) + }) +} + func (g *GossipProtocol) SendBlock(block *model.Block, to ...peer.ID) { g.outboundWorkers.Submit(func() { g.Network.SendBlock(block, to...) @@ -163,6 +219,12 @@ func (g *GossipProtocol) SendBlock(block *model.Block, to ...peer.ID) { }) } +func (g *GossipProtocol) SendCommitmentRequest(commitmentID iotago.CommitmentID) { + g.Network.RequestSlotCommitment(commitmentID) + + g.LogDebug("sent commitment request", "commitmentID", commitmentID) +} + func (g *GossipProtocol) SendAttestationsRequest(commitmentID iotago.CommitmentID) { g.outboundWorkers.Submit(func() { if commitment, err := g.Commitment(commitmentID, false); err == nil { diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go index eb45ef239..7ae67d0f4 100644 --- a/pkg/protocol/network_manager.go +++ b/pkg/protocol/network_manager.go @@ -76,22 +76,16 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { n.Network.OnCommitmentReceived(n.ProcessCommitment), n.Network.OnCommitmentRequestReceived(n.ProcessCommitmentRequest), n.Network.OnWarpSyncResponseReceived(n.ProcessWarpSyncResponse), + n.Network.OnWarpSyncRequestReceived(n.ProcessWarpSyncRequest), // outbound: GossipProtocol -> Network - n.warpSyncRequester.Events.Tick.Hook(n.SendWarpSyncRequest).Unhook, - n.attestationsRequester.Events.Tick.Hook(n.SendAttestationsRequest).Unhook, n.blockRequested.Hook(n.SendBlockRequest).Unhook, + n.commitmentRequester.Events.Tick.Hook(n.SendCommitmentRequest).Unhook, + n.attestationsRequester.Events.Tick.Hook(n.SendAttestationsRequest).Unhook, + n.warpSyncRequester.Events.Tick.Hook(n.SendWarpSyncRequest).Unhook, n.Network.OnAttestationsReceived(n.ProcessAttestations), n.Network.OnAttestationsRequestReceived(n.ProcessAttestationsRequest), - - n.Network.OnWarpSyncRequestReceived(n.ProcessWarpSyncRequest), - - n.OnCommitmentRequested(func(id iotago.CommitmentID) { - n.LogDebug("commitment requested", "commitmentID", id) - - n.Network.RequestSlotCommitment(id) - }), ) protocol.HookShutdown(func() { @@ -198,70 +192,6 @@ func (n *NetworkManager) processTask(taskName string, task func() (logLevel log. } } -func (n *NetworkManager) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, src peer.ID) { - n.processTask("warp sync request", func() (logLevel log.Level, err error) { - logLevel = log.LevelTrace - - commitment, err := n.Commitment(commitmentID) - if err != nil { - if !ierrors.Is(err, ErrorCommitmentNotFound) { - logLevel = log.LevelError - } - - return logLevel, ierrors.Wrap(err, "failed to load commitment") - } - - chain := commitment.Chain.Get() - if chain == nil { - return logLevel, ierrors.New("requested commitment is not solid") - } - - engine := commitment.Engine.Get() - if engine == nil { - return logLevel, ierrors.New("requested commitment does not have an engine, yet") - } - - committedSlot, err := engine.CommittedSlot(commitmentID) - if err != nil { - return logLevel, ierrors.Wrap(err, "failed to get slot for commitment") - } - - blockIDs, err := committedSlot.BlockIDs() - if err != nil { - return log.LevelError, ierrors.Wrap(err, "failed to get block IDs from slot") - } - - roots, err := committedSlot.Roots() - if err != nil { - return logLevel, ierrors.Wrap(err, "failed to get roots from slot") - } - - n.Network.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), src) - - return logLevel, nil - }, "commitmentID", commitmentID, "peer", src) -} - -func (n *NetworkManager) OnBlockRequestStarted(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { - return n.blockRequestStarted.Hook(callback).Unhook -} - -func (n *NetworkManager) OnBlockRequestStopped(callback func(blockID iotago.BlockID, engine *engine.Engine)) (unsubscribe func()) { - return n.blockRequestStopped.Hook(callback).Unhook -} - -func (n *NetworkManager) OnCommitmentRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return n.commitmentRequester.Events.TickerStarted.Hook(callback).Unhook -} - -func (n *NetworkManager) OnCommitmentRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return n.commitmentRequester.Events.TickerStopped.Hook(callback).Unhook -} - -func (n *NetworkManager) OnCommitmentRequested(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return n.commitmentRequester.Events.Tick.Hook(callback).Unhook -} - func (n *NetworkManager) OnAttestationsRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { return n.attestationsRequester.Events.TickerStarted.Hook(callback).Unhook } @@ -273,7 +203,6 @@ func (n *NetworkManager) OnAttestationsRequestStopped(callback func(commitmentID func (n *NetworkManager) Shutdown() {} func (n *NetworkManager) startAttestationsRequester() { - n.HookConstructed(func() { n.OnChainCreated(func(chain *Chain) { chain.CheckAttestations.OnUpdate(func(_, requestAttestations bool) { From 4454d176c1fdbf6355f80fd6afdc1488398cfc46 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 7 Oct 2023 17:18:36 +0200 Subject: [PATCH 175/356] Refactor: removed unnecessary log --- components/protocol/component.go | 4 ---- 1 file changed, 4 deletions(-) diff --git a/components/protocol/component.go b/components/protocol/component.go index c62337dbc..e19b01bc2 100644 --- a/components/protocol/component.go +++ b/components/protocol/component.go @@ -270,10 +270,6 @@ func configure() error { Component.LogDebugf("BlockSkipped: %s", block.ID()) }) - deps.Protocol.OnCommitmentRequestStarted(func(id iotago.CommitmentID) { - Component.LogDebugf("RequestCommitment: %s", id) - }) - deps.Protocol.Network.OnCommitmentRequestReceived(func(commitmentID iotago.CommitmentID, id peer.ID) { Component.LogDebugf("SlotCommitmentRequestReceived: %s", commitmentID) }) From e14db7a2a084bf767eaeb399e3b3d9da1755a766 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 7 Oct 2023 22:24:43 +0200 Subject: [PATCH 176/356] Feat: broke out AttestationsRequester --- pkg/protocol/attestations_requester.go | 210 ++++++++++++++++++++ pkg/protocol/gossip_protocol.go | 145 ++++++++------ pkg/protocol/network_manager.go | 253 ++++--------------------- pkg/protocol/protocol.go | 5 +- 4 files changed, 338 insertions(+), 275 deletions(-) create mode 100644 pkg/protocol/attestations_requester.go diff --git a/pkg/protocol/attestations_requester.go b/pkg/protocol/attestations_requester.go new file mode 100644 index 000000000..34f7fa18d --- /dev/null +++ b/pkg/protocol/attestations_requester.go @@ -0,0 +1,210 @@ +package protocol + +import ( + "github.com/libp2p/go-libp2p/core/peer" + + "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/kvstore" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/model" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/merklehasher" +) + +type AttestationsRequester struct { + protocol *Protocol + workerPool *workerpool.WorkerPool + ticker *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] + + log.Logger +} + +func NewAttestationsRequester(protocol *Protocol) *AttestationsRequester { + a := &AttestationsRequester{ + Logger: lo.Return1(protocol.Logger.NewChildLogger("AttestationsRequester")), + protocol: protocol, + workerPool: protocol.Workers.CreatePool("AttestationsRequester"), + ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), + } + + a.ticker.Events.Tick.Hook(a.sendRequest) + + protocol.HookConstructed(func() { + protocol.OnChainCreated(func(chain *Chain) { + chain.CheckAttestations.OnUpdate(func(_, requestAttestations bool) { + forkingPoint := chain.ForkingPoint.Get() + + if requestAttestations { + if commitmentBeforeForkingPoint := forkingPoint.Parent.Get(); commitmentBeforeForkingPoint != nil { + a.commitmentVerifiers.GetOrCreate(forkingPoint.ID(), func() *CommitmentVerifier { + return NewCommitmentVerifier(chain.Engine.Get(), commitmentBeforeForkingPoint.Commitment) + }) + } + } else { + a.commitmentVerifiers.Delete(forkingPoint.ID()) + } + }) + }) + + protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { + if requestAttestations { + if commitment.CumulativeWeight() == 0 { + commitment.IsAttested.Set(true) + } else { + a.ticker.StartTicker(commitment.ID()) + } + } else { + a.ticker.StopTicker(commitment.ID()) + } + }) + }) + }) + + return a +} + +func (a *AttestationsRequester) ProcessResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { + a.workerPool.Submit(func() { + commitment, _, err := a.protocol.PublishCommitment(commitmentModel) + if err != nil { + a.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", from, "error", err) + + return + } + + if !commitment.RequestAttestations.Get() { + a.LogTrace("received attestations for previously attested commitment", "commitment", commitment.LogName()) + + return + } + + chain := commitment.Chain.Get() + if chain == nil { + a.LogDebug("failed to find chain for commitment when processing attestations", "commitment", commitment.LogName()) + + return + } + + commitmentVerifier, exists := a.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) + if !exists { + a.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitment", commitment.LogName()) + + return + } + + _, actualWeight, err := commitmentVerifier.verifyCommitment(commitment, attestations, merkleProof) + if err != nil { + a.LogError("failed to verify commitment when processing attestations", "commitment", commitment.LogName(), "error", err) + + return + } + + commitment.AttestedWeight.Set(actualWeight) + commitment.IsAttested.Set(true) + + a.LogDebug("processed response", "commitment", commitment.LogName(), "fromPeer", from) + }) +} + +func (a *AttestationsRequester) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { + a.workerPool.Submit(func() { + commitment, err := a.protocol.Commitment(commitmentID, false) + if err != nil { + if !ierrors.Is(err, ErrorCommitmentNotFound) { + a.LogError("failed to load requested commitment", "commitmentID", commitmentID, "fromPeer", from, "err", err) + } else { + a.LogTrace("failed to load requested commitment", "commitmentID", commitmentID, "fromPeer", from, "err", err) + } + + return + } + + chain := commitment.Chain.Get() + if chain == nil { + a.LogTrace("request for unsolid commitment", "commitmentID", commitment.LogName(), "fromPeer", from) + + return + } + + engineInstance := commitment.Engine.Get() + if engineInstance == nil { + a.LogTrace("request for chain without engine", "chain", chain.LogName(), "fromPeer", from) + + return + } + + if engineInstance.Storage.Settings().LatestCommitment().Slot() < commitmentID.Slot() { + a.LogTrace("requested commitment not verified", "commitment", commitment.LogName(), "fromPeer", from) + + return + } + + commitmentModel, err := engineInstance.Storage.Commitments().Load(commitmentID.Slot()) + if err != nil { + if !ierrors.Is(err, kvstore.ErrKeyNotFound) { + a.LogError("failed to load requested commitment from engine", "commitment", commitment.LogName(), "fromPeer", from, "err", err) + } else { + a.LogTrace("requested commitment not found in engine", "commitment", commitment.LogName(), "fromPeer", from) + } + + return + } + + if commitmentModel.ID() != commitmentID { + a.LogTrace("commitment ID mismatch", "requestedCommitment", commitment.LogName(), "loadedCommitment", commitmentModel.ID(), "fromPeer", from) + + return + } + + attestations, err := engineInstance.Attestations.Get(commitmentID.Slot()) + if err != nil { + a.LogError("failed to load requested attestations", "commitment", commitment.LogName(), "fromPeer", from) + + return + } + + rootsStorage, err := engineInstance.Storage.Roots(commitmentID.Slot()) + if err != nil { + a.LogError("failed to load roots storage for requested attestations", "commitment", commitment.LogName(), "fromPeer", from) + + return + } + + roots, err := rootsStorage.Load(commitmentID) + if err != nil { + a.LogError("failed to load roots for requested attestations", "commitment", commitment.LogName(), "fromPeer", from) + + return + } + + if err = a.protocol.Network.SendAttestations(commitmentModel, attestations, roots.AttestationsProof(), from); err != nil { + a.LogError("failed to send attestations", "commitment", commitment.LogName(), "fromPeer", from, "err", err) + } else { + a.LogTrace("processed request", "commitment", commitment.LogName(), "fromPeer", from) + } + }) +} + +func (a *AttestationsRequester) Shutdown() { + a.ticker.Shutdown() + a.workerPool.Shutdown().ShutdownComplete.Wait() +} + +func (a *AttestationsRequester) sendRequest(commitmentID iotago.CommitmentID) { + a.workerPool.Submit(func() { + if commitment, err := a.protocol.Commitment(commitmentID, false); err == nil { + a.protocol.Network.RequestAttestations(commitmentID) + + a.LogDebug("sent request", "commitment", commitment.LogName()) + } else { + a.LogError("failed to load commitment", "commitmentID", commitmentID, "err", err) + } + }) +} diff --git a/pkg/protocol/gossip_protocol.go b/pkg/protocol/gossip_protocol.go index 528a6894b..b8119a2da 100644 --- a/pkg/protocol/gossip_protocol.go +++ b/pkg/protocol/gossip_protocol.go @@ -4,11 +4,14 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/ads" + "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ds/types" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore/mapdb" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/core/buffer" "github.com/iotaledger/iota-core/pkg/model" @@ -18,22 +21,32 @@ import ( ) type GossipProtocol struct { - *Protocol + protocol *Protocol inboundWorkers *workerpool.WorkerPool outboundWorkers *workerpool.WorkerPool droppedBlocksBuffer *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] + + commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + warpSyncRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + blockRequested *event.Event2[iotago.BlockID, *engine.Engine] } func NewGossipProtocol(protocol *Protocol) *GossipProtocol { g := &GossipProtocol{ - Protocol: protocol, + protocol: protocol, + inboundWorkers: protocol.Workers.CreatePool("Gossip.Inbound"), outboundWorkers: protocol.Workers.CreatePool("Gossip.Outbound"), droppedBlocksBuffer: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), + commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + warpSyncRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + blockRequested: event.New2[iotago.BlockID, *engine.Engine](), } - g.HookConstructed(func() { + protocol.HookConstructed(func() { + g.startBlockRequester() + g.startWarpSyncRequester() g.replayDroppedBlocks() }) @@ -42,9 +55,9 @@ func NewGossipProtocol(protocol *Protocol) *GossipProtocol { func (g *GossipProtocol) ProcessBlock(block *model.Block, from peer.ID) { g.inboundWorkers.Submit(func() { - commitmentRequest := g.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) + commitmentRequest := g.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) if commitmentRequest.WasRejected() { - g.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID(), "err", commitmentRequest.Err()) + g.protocol.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID(), "err", commitmentRequest.Err()) return } @@ -52,68 +65,68 @@ func (g *GossipProtocol) ProcessBlock(block *model.Block, from peer.ID) { commitment := commitmentRequest.Result() if commitment == nil || !commitment.Chain.Get().DispatchBlock(block, from) { if !g.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, from)) { - g.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) + g.protocol.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) } else { - g.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) + g.protocol.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) } return } - g.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName()) + g.protocol.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName()) }) } func (g *GossipProtocol) ProcessBlockRequest(blockID iotago.BlockID, from peer.ID) { g.inboundWorkers.Submit(func() { - block, exists := g.MainEngineInstance().Block(blockID) + block, exists := g.protocol.MainEngineInstance().Block(blockID) if !exists { - g.LogTrace("requested block not found", "blockID", blockID) + g.protocol.LogTrace("requested block not found", "blockID", blockID) return } - g.SendBlock(block, from) + g.protocol.Network.SendBlock(block, from) - g.LogTrace("processed block request", "blockID", blockID) + g.protocol.LogTrace("processed block request", "blockID", blockID) }) } func (g *GossipProtocol) ProcessCommitment(commitmentModel *model.Commitment, from peer.ID) { g.inboundWorkers.Submit(func() { - if commitment, published, err := g.PublishCommitment(commitmentModel); err != nil { - g.LogError("failed to process commitment", "fromPeer", from, "err", err) + if commitment, published, err := g.protocol.PublishCommitment(commitmentModel); err != nil { + g.protocol.LogError("failed to process commitment", "fromPeer", from, "err", err) } else if published { - g.LogDebug("processed received commitment", "commitment", commitment.LogName()) + g.protocol.LogDebug("processed received commitment", "commitment", commitment.LogName()) } }) } func (g *GossipProtocol) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, from peer.ID) { g.inboundWorkers.Submit(func() { - commitment, err := g.Commitment(commitmentID) + commitment, err := g.protocol.Commitment(commitmentID) if err != nil { logLevel := lo.Cond(ierrors.Is(err, ErrorCommitmentNotFound), log.LevelTrace, log.LevelError) - g.Log("failed to load commitment for commitment request", logLevel, "commitmentID", commitmentID, "fromPeer", from, "error", err) + g.protocol.Log("failed to load commitment for commitment request", logLevel, "commitmentID", commitmentID, "fromPeer", from, "error", err) return } - g.Network.SendSlotCommitment(commitment.Commitment, from) + g.protocol.Network.SendSlotCommitment(commitment.Commitment, from) - g.LogTrace("processed commitment request", "commitment", commitment.LogName(), "fromPeer", from) + g.protocol.LogTrace("processed commitment request", "commitment", commitment.LogName(), "fromPeer", from) }) } func (g *GossipProtocol) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], from peer.ID) { g.inboundWorkers.Submit(func() { - commitment, err := g.Commitment(commitmentID) + commitment, err := g.protocol.Commitment(commitmentID) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { - g.LogError("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "fromPeer", from, "err", err) + g.protocol.LogError("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "fromPeer", from, "err", err) } else { - g.LogTrace("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "fromPeer", from, "err", err) + g.protocol.LogTrace("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "fromPeer", from, "err", err) } return @@ -121,14 +134,14 @@ func (g *GossipProtocol) ProcessWarpSyncResponse(commitmentID iotago.CommitmentI targetEngine := commitment.Engine.Get() if targetEngine == nil { - g.LogDebug("failed to get target engine for warp-sync response", "commitment", commitment.LogName()) + g.protocol.LogDebug("failed to get target engine for warp-sync response", "commitment", commitment.LogName()) return } commitment.RequestedBlocksReceived.Compute(func(requestedBlocksReceived bool) bool { if requestedBlocksReceived || !commitment.RequestBlocks.Get() { - g.LogTrace("warp-sync response for already synced commitment received", "commitment", commitment.LogName(), "fromPeer", from) + g.protocol.LogTrace("warp-sync response for already synced commitment received", "commitment", commitment.LogName(), "fromPeer", from) return requestedBlocksReceived } @@ -139,7 +152,7 @@ func (g *GossipProtocol) ProcessWarpSyncResponse(commitmentID iotago.CommitmentI } if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), commitment.RootsID()) { - g.LogError("failed to verify merkle proof in warp-sync response", "commitment", commitment.LogName(), "blockIDs", blockIDs, "proof", proof, "fromPeer", from) + g.protocol.LogError("failed to verify merkle proof in warp-sync response", "commitment", commitment.LogName(), "blockIDs", blockIDs, "proof", proof, "fromPeer", from) return false } @@ -150,7 +163,7 @@ func (g *GossipProtocol) ProcessWarpSyncResponse(commitmentID iotago.CommitmentI targetEngine.BlockDAG.GetOrRequestBlock(blockID) } - g.LogDebug("processed warp-sync response", "commitment", commitment.LogName()) + g.protocol.LogDebug("processed warp-sync response", "commitment", commitment.LogName()) return true }) @@ -159,12 +172,12 @@ func (g *GossipProtocol) ProcessWarpSyncResponse(commitmentID iotago.CommitmentI func (g *GossipProtocol) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, from peer.ID) { g.inboundWorkers.Submit(func() { - commitment, err := g.Commitment(commitmentID) + commitment, err := g.protocol.Commitment(commitmentID) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { - g.LogError("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) + g.protocol.LogError("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) } else { - g.LogTrace("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) + g.protocol.LogTrace("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) } return @@ -172,91 +185,109 @@ func (g *GossipProtocol) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID chain := commitment.Chain.Get() if chain == nil { - g.LogTrace("warp-sync request for unsolid commitment", "commitment", commitment.LogName(), "fromPeer", from) + g.protocol.LogTrace("warp-sync request for unsolid commitment", "commitment", commitment.LogName(), "fromPeer", from) return } engineInstance := commitment.Engine.Get() if engineInstance == nil { - g.LogTrace("warp-sync request for chain without engine", "chain", chain.LogName(), "fromPeer", from) + g.protocol.LogTrace("warp-sync request for chain without engine", "chain", chain.LogName(), "fromPeer", from) return } committedSlot, err := engineInstance.CommittedSlot(commitmentID) if err != nil { - g.LogTrace("warp-sync request for uncommitted slot", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from) + g.protocol.LogTrace("warp-sync request for uncommitted slot", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from) return } blockIDs, err := committedSlot.BlockIDs() if err != nil { - g.LogTrace("failed to get block ids for warp-sync request", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from, "err", err) + g.protocol.LogTrace("failed to get block ids for warp-sync request", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from, "err", err) return } roots, err := committedSlot.Roots() if err != nil { - g.LogTrace("failed to get roots for warp-sync request", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from, "err", err) + g.protocol.LogTrace("failed to get roots for warp-sync request", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from, "err", err) return } - g.Network.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), from) + g.protocol.Network.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), from) - g.LogTrace("processed warp-sync request", "commitment", commitment.LogName(), "fromPeer", from) + g.protocol.LogTrace("processed warp-sync request", "commitment", commitment.LogName(), "fromPeer", from) }) } -func (g *GossipProtocol) SendBlock(block *model.Block, to ...peer.ID) { +func (g *GossipProtocol) SendBlock(block *model.Block) { g.outboundWorkers.Submit(func() { - g.Network.SendBlock(block, to...) + g.protocol.Network.SendBlock(block) - g.LogTrace("sent block", "blockID", block.ID(), "toPeers", to) + g.protocol.LogTrace("sent block", "blockID", block.ID()) }) } -func (g *GossipProtocol) SendCommitmentRequest(commitmentID iotago.CommitmentID) { - g.Network.RequestSlotCommitment(commitmentID) +func (g *GossipProtocol) SendBlockRequest(blockID iotago.BlockID, engine *engine.Engine) { + g.outboundWorkers.Submit(func() { + g.protocol.Network.RequestBlock(blockID) - g.LogDebug("sent commitment request", "commitmentID", commitmentID) + g.protocol.LogTrace("sent block request", "engine", engine.Name(), "blockID", blockID) + }) } -func (g *GossipProtocol) SendAttestationsRequest(commitmentID iotago.CommitmentID) { +func (g *GossipProtocol) SendCommitmentRequest(commitmentID iotago.CommitmentID) { g.outboundWorkers.Submit(func() { - if commitment, err := g.Commitment(commitmentID, false); err == nil { - g.Network.RequestAttestations(commitmentID) + g.protocol.Network.RequestSlotCommitment(commitmentID) - g.LogDebug("sent attestations request", "commitment", commitment.LogName()) - } else { - g.LogError("failed to load commitment for attestations request", "commitmentID", commitmentID, "err", err) - } + g.protocol.LogDebug("sent commitment request", "commitmentID", commitmentID) }) } func (g *GossipProtocol) SendWarpSyncRequest(id iotago.CommitmentID) { g.outboundWorkers.Submit(func() { - if commitment, err := g.Commitment(id, false); err == nil { - g.Network.SendWarpSyncRequest(id) + if commitment, err := g.protocol.Commitment(id, false); err == nil { + g.protocol.Network.SendWarpSyncRequest(id) - g.LogDebug("sent warp-sync request", "commitment", commitment.LogName()) + g.protocol.LogDebug("sent warp-sync request", "commitment", commitment.LogName()) } }) } -func (g *GossipProtocol) SendBlockRequest(blockID iotago.BlockID, engine *engine.Engine) { - g.outboundWorkers.Submit(func() { - g.Network.RequestBlock(blockID) +func (g *GossipProtocol) startWarpSyncRequester() { + g.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.RequestBlocks.OnUpdate(func(_, warpSyncBlocks bool) { + if warpSyncBlocks { + g.warpSyncRequester.StartTicker(commitment.ID()) + } else { + g.warpSyncRequester.StopTicker(commitment.ID()) + } + }) + }) +} - g.LogTrace("sent block request", "engine", engine.Name(), "blockID", blockID) +func (g *GossipProtocol) startBlockRequester() { + g.protocol.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { + mutations.AddedElements().Range(func(chain *Chain) { + chain.Engine.OnUpdate(func(_, engine *engine.Engine) { + unsubscribe := lo.Batch( + engine.Events.BlockRequester.Tick.Hook(func(id iotago.BlockID) { + g.blockRequested.Trigger(id, engine) + }).Unhook, + ) + + engine.HookShutdown(unsubscribe) + }) + }) }) } func (g *GossipProtocol) replayDroppedBlocks() { - g.CommitmentCreated.Hook(func(commitment *Commitment) { + g.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { if inSyncRange { for _, droppedBlock := range g.droppedBlocksBuffer.GetValues(commitment.ID()) { diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go index 7ae67d0f4..8d6324222 100644 --- a/pkg/protocol/network_manager.go +++ b/pkg/protocol/network_manager.go @@ -3,97 +3,72 @@ package protocol import ( "github.com/libp2p/go-libp2p/core/peer" - "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/kvstore" "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/network/protocols/core" - "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/merklehasher" ) type NetworkManager struct { - *Protocol + protocol *Protocol Network *core.Protocol - attestationsRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - warpSyncRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - blockRequestStarted *event.Event2[iotago.BlockID, *engine.Engine] - blockRequestStopped *event.Event2[iotago.BlockID, *engine.Engine] - blockRequested *event.Event2[iotago.BlockID, *engine.Engine] - commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] - shutdown reactive.Event + shutdown reactive.Event } func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { n := &NetworkManager{ - Protocol: protocol, - Network: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), - attestationsRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - warpSyncRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - blockRequestStarted: event.New2[iotago.BlockID, *engine.Engine](), - blockRequestStopped: event.New2[iotago.BlockID, *engine.Engine](), - blockRequested: event.New2[iotago.BlockID, *engine.Engine](), - commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), - shutdown: reactive.NewEvent(), - } - - n.startBlockRequester() - n.startAttestationsRequester() - n.startWarpSyncRequester() + protocol: protocol, + Network: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), - for _, gossipEvent := range []*event.Event1[*blocks.Block]{ - // TODO: REPLACE WITH REACTIVE VERSION - protocol.Events.Engine.Scheduler.BlockScheduled, - protocol.Events.Engine.Scheduler.BlockSkipped, - } { - gossipEvent.Hook(func(block *blocks.Block) { n.SendBlock(block.ModelBlock()) }) + shutdown: reactive.NewEvent(), } - var unsubscribeFromNetworkEvents func() - protocol.HookInitialized(func() { - n.Network.OnError(func(err error, peer peer.ID) { - n.LogError("network error", "peer", peer, "error", err) - }) + blockRequested := event.New1[*model.Block]() + for _, gossipEvent := range []*event.Event1[*blocks.Block]{ + // TODO: REPLACE WITH REACTIVE VERSION + protocol.Events.Engine.Scheduler.BlockScheduled, + protocol.Events.Engine.Scheduler.BlockSkipped, + } { + gossipEvent.Hook(func(block *blocks.Block) { blockRequested.Trigger(block.ModelBlock()) }) + } + + unsubscribeFromNetworkEvents := lo.Batch( + n.Network.OnError(func(err error, peer peer.ID) { + n.protocol.LogError("network error", "peer", peer, "error", err) + }), - unsubscribeFromNetworkEvents = lo.Batch( // inbound: Network -> GossipProtocol - n.Network.OnBlockReceived(n.ProcessBlock), - n.Network.OnBlockRequestReceived(n.ProcessBlockRequest), - n.Network.OnCommitmentReceived(n.ProcessCommitment), - n.Network.OnCommitmentRequestReceived(n.ProcessCommitmentRequest), - n.Network.OnWarpSyncResponseReceived(n.ProcessWarpSyncResponse), - n.Network.OnWarpSyncRequestReceived(n.ProcessWarpSyncRequest), + n.Network.OnBlockReceived(protocol.GossipProtocol.ProcessBlock), + n.Network.OnBlockRequestReceived(protocol.GossipProtocol.ProcessBlockRequest), + n.Network.OnCommitmentReceived(protocol.GossipProtocol.ProcessCommitment), + n.Network.OnCommitmentRequestReceived(protocol.GossipProtocol.ProcessCommitmentRequest), + n.Network.OnWarpSyncResponseReceived(protocol.GossipProtocol.ProcessWarpSyncResponse), + n.Network.OnWarpSyncRequestReceived(protocol.GossipProtocol.ProcessWarpSyncRequest), // outbound: GossipProtocol -> Network - n.blockRequested.Hook(n.SendBlockRequest).Unhook, - n.commitmentRequester.Events.Tick.Hook(n.SendCommitmentRequest).Unhook, - n.attestationsRequester.Events.Tick.Hook(n.SendAttestationsRequest).Unhook, - n.warpSyncRequester.Events.Tick.Hook(n.SendWarpSyncRequest).Unhook, + blockRequested.Hook(protocol.GossipProtocol.SendBlock).Unhook, + n.protocol.blockRequested.Hook(protocol.GossipProtocol.SendBlockRequest).Unhook, + n.protocol.commitmentRequester.Events.Tick.Hook(protocol.GossipProtocol.SendCommitmentRequest).Unhook, - n.Network.OnAttestationsReceived(n.ProcessAttestations), - n.Network.OnAttestationsRequestReceived(n.ProcessAttestationsRequest), + n.protocol.warpSyncRequester.Events.Tick.Hook(protocol.GossipProtocol.SendWarpSyncRequest).Unhook, + + n.Network.OnAttestationsReceived(protocol.AttestationsRequester.ProcessResponse), + n.Network.OnAttestationsRequestReceived(protocol.AttestationsRequester.ProcessRequest), ) protocol.HookShutdown(func() { unsubscribeFromNetworkEvents() - protocol.GossipProtocol.inboundWorkers.Shutdown().ShutdownComplete.Wait() - protocol.GossipProtocol.outboundWorkers.Shutdown().ShutdownComplete.Wait() - // shutdown gossip and wait + protocol.inboundWorkers.Shutdown().ShutdownComplete.Wait() + protocol.outboundWorkers.Shutdown().ShutdownComplete.Wait() + + protocol.AttestationsRequester.Shutdown() n.Network.Shutdown() @@ -109,165 +84,9 @@ func (n *NetworkManager) OnShutdown(callback func()) (unsubscribe func()) { } func (n *NetworkManager) IssueBlock(block *model.Block) error { - n.MainEngineInstance().ProcessBlockFromPeer(block, "self") + n.protocol.MainEngineInstance().ProcessBlockFromPeer(block, "self") return nil } -func (n *NetworkManager) ProcessAttestations(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], source peer.ID) { - commitment, _, err := n.PublishCommitment(commitmentModel) - if err != nil { - n.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", source, "error", err) - return - } - - if !commitment.RequestAttestations.Get() { - n.LogTrace("received attestations for previously attested commitment", "commitment", commitment.LogName()) - return - } - - chain := commitment.Chain.Get() - if chain == nil { - n.LogDebug("failed to find chain for commitment when processing attestations", "commitmentID", commitmentModel.ID()) - return - } - - commitmentVerifier, exists := n.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) - if !exists { - n.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitmentID", commitmentModel.ID()) - return - } - - _, actualWeight, err := commitmentVerifier.verifyCommitment(commitment, attestations, merkleProof) - if err != nil { - n.LogError("failed to verify commitment when processing attestations", "commitmentID", commitmentModel.ID(), "error", err) - return - } - - commitment.AttestedWeight.Set(actualWeight) - commitment.IsAttested.Set(true) -} - -func (n *NetworkManager) ProcessAttestationsRequest(commitmentID iotago.CommitmentID, src peer.ID) { - n.processTask("attestations request", func() (logLevel log.Level, err error) { - mainEngine := n.MainEngineInstance() - - if mainEngine.Storage.Settings().LatestCommitment().Slot() < commitmentID.Slot() { - return log.LevelTrace, ierrors.New("requested commitment is not verified, yet") - } - - commitment, err := mainEngine.Storage.Commitments().Load(commitmentID.Slot()) - if err != nil { - return lo.Cond(ierrors.Is(err, kvstore.ErrKeyNotFound), log.LevelTrace, log.LevelError), ierrors.Wrapf(err, "failed to load commitment") - } - - if commitment.ID() != commitmentID { - return log.LevelTrace, ierrors.Errorf("requested commitment %s does not match main engine commitment %s", commitmentID, commitment.ID()) - } - - attestations, err := mainEngine.Attestations.Get(commitmentID.Slot()) - if err != nil { - return log.LevelError, ierrors.Wrapf(err, "failed to load attestations") - } - - rootsStorage, err := mainEngine.Storage.Roots(commitmentID.Slot()) - if err != nil { - return log.LevelError, ierrors.Wrapf(err, "failed to load roots") - } - - roots, err := rootsStorage.Load(commitmentID) - if err != nil { - return log.LevelError, ierrors.Wrapf(err, "failed to load roots") - } - - return log.LevelDebug, n.Network.SendAttestations(commitment, attestations, roots.AttestationsProof(), src) - }, "commitmentID", commitmentID, "peer", src) -} - -func (n *NetworkManager) processTask(taskName string, task func() (logLevel log.Level, err error), args ...any) { - if logLevel, err := task(); err != nil { - n.Log("failed to process "+taskName, logLevel, append(args, "error", err)...) - } else { - n.Log("successfully processed "+taskName, logLevel, args...) - } -} - -func (n *NetworkManager) OnAttestationsRequestStarted(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return n.attestationsRequester.Events.TickerStarted.Hook(callback).Unhook -} - -func (n *NetworkManager) OnAttestationsRequestStopped(callback func(commitmentID iotago.CommitmentID)) (unsubscribe func()) { - return n.attestationsRequester.Events.TickerStopped.Hook(callback).Unhook -} - func (n *NetworkManager) Shutdown() {} - -func (n *NetworkManager) startAttestationsRequester() { - n.HookConstructed(func() { - n.OnChainCreated(func(chain *Chain) { - chain.CheckAttestations.OnUpdate(func(_, requestAttestations bool) { - forkingPoint := chain.ForkingPoint.Get() - - if requestAttestations { - if commitmentBeforeForkingPoint := forkingPoint.Parent.Get(); commitmentBeforeForkingPoint != nil { - n.commitmentVerifiers.GetOrCreate(forkingPoint.ID(), func() *CommitmentVerifier { - return NewCommitmentVerifier(chain.Engine.Get(), commitmentBeforeForkingPoint.Commitment) - }) - } - } else { - n.commitmentVerifiers.Delete(forkingPoint.ID()) - } - }) - }) - - n.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { - if requestAttestations { - if commitment.CumulativeWeight() == 0 { - commitment.IsAttested.Set(true) - } else { - n.attestationsRequester.StartTicker(commitment.ID()) - } - } else { - n.attestationsRequester.StopTicker(commitment.ID()) - } - }) - }) - }) -} - -func (n *NetworkManager) startWarpSyncRequester() { - n.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.RequestBlocks.OnUpdate(func(_, warpSyncBlocks bool) { - if warpSyncBlocks { - n.warpSyncRequester.StartTicker(commitment.ID()) - } else { - n.warpSyncRequester.StopTicker(commitment.ID()) - } - }) - }) -} - -func (n *NetworkManager) startBlockRequester() { - n.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { - mutations.AddedElements().Range(func(chain *Chain) { - chain.Engine.OnUpdate(func(_, engine *engine.Engine) { - unsubscribe := lo.Batch( - engine.Events.BlockRequester.Tick.Hook(func(id iotago.BlockID) { - n.blockRequested.Trigger(id, engine) - }).Unhook, - - engine.Events.BlockRequester.TickerStarted.Hook(func(id iotago.BlockID) { - n.blockRequestStarted.Trigger(id, engine) - }).Unhook, - - engine.Events.BlockRequester.TickerStopped.Hook(func(id iotago.BlockID) { - n.blockRequestStopped.Trigger(id, engine) - }).Unhook, - ) - - engine.HookShutdown(unsubscribe) - }) - }) - }) -} diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 735b9454f..5c5d6ec9b 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -19,6 +19,8 @@ type Protocol struct { error *event.Event1[error] options *Options + AttestationsRequester *AttestationsRequester + *APIProvider *NetworkManager *ChainManager @@ -38,6 +40,7 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi options: newOptions(), }, opts, func(p *Protocol) { p.APIProvider = NewAPIProvider(p) + p.AttestationsRequester = NewAttestationsRequester(p) p.ChainManager = newChainManager(p) p.EngineManager = NewEngineManager(p) p.NetworkManager = newNetwork(p, dispatcher) @@ -63,7 +66,7 @@ func (p *Protocol) TriggerInitialized() { waitInitialized.Add(1) p.MainChain.OnUpdateOnce(func(_, mainChain *Chain) { - mainChain.SpawnedEngine.OnUpdateOnce(func(_, _ *engine.Engine) { + mainChain.Engine.OnUpdateOnce(func(_, _ *engine.Engine) { p.Module.TriggerInitialized() waitInitialized.Done() From 9c77277298a635751a20fce2e26180c8febd5e1b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 00:35:12 +0200 Subject: [PATCH 177/356] Refactor: moar refactor --- pkg/protocol/attestations_requester.go | 49 +++++---- pkg/protocol/block_requester.go | 127 +++++++++++++++++++++ pkg/protocol/chain_manager.go | 4 +- pkg/protocol/commitment_requester.go | 80 ++++++++++++++ pkg/protocol/gossip_protocol.go | 147 ++----------------------- pkg/protocol/network_manager.go | 37 +++---- pkg/protocol/protocol.go | 3 - pkg/protocol/warp_sync_requester.go | 5 + 8 files changed, 263 insertions(+), 189 deletions(-) create mode 100644 pkg/protocol/block_requester.go create mode 100644 pkg/protocol/commitment_requester.go create mode 100644 pkg/protocol/warp_sync_requester.go diff --git a/pkg/protocol/attestations_requester.go b/pkg/protocol/attestations_requester.go index 34f7fa18d..6d22c993d 100644 --- a/pkg/protocol/attestations_requester.go +++ b/pkg/protocol/attestations_requester.go @@ -79,37 +79,42 @@ func (a *AttestationsRequester) ProcessResponse(commitmentModel *model.Commitmen return } - if !commitment.RequestAttestations.Get() { - a.LogTrace("received attestations for previously attested commitment", "commitment", commitment.LogName()) + if commitment.AttestedWeight.Compute(func(currentWeight uint64) uint64 { + if !commitment.RequestAttestations.Get() { + a.LogTrace("received attestations for previously attested commitment", "commitment", commitment.LogName()) - return - } + return currentWeight + } - chain := commitment.Chain.Get() - if chain == nil { - a.LogDebug("failed to find chain for commitment when processing attestations", "commitment", commitment.LogName()) + chain := commitment.Chain.Get() + if chain == nil { + a.LogDebug("failed to find chain for commitment when processing attestations", "commitment", commitment.LogName()) - return - } + return currentWeight + } - commitmentVerifier, exists := a.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) - if !exists { - a.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitment", commitment.LogName()) + commitmentVerifier, exists := a.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) + if !exists { + a.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitment", commitment.LogName()) - return - } + return currentWeight + } - _, actualWeight, err := commitmentVerifier.verifyCommitment(commitment, attestations, merkleProof) - if err != nil { - a.LogError("failed to verify commitment when processing attestations", "commitment", commitment.LogName(), "error", err) + _, actualWeight, err := commitmentVerifier.verifyCommitment(commitment, attestations, merkleProof) + if err != nil { + a.LogError("failed to verify commitment when processing attestations", "commitment", commitment.LogName(), "error", err) - return - } + return currentWeight + } - commitment.AttestedWeight.Set(actualWeight) - commitment.IsAttested.Set(true) + if actualWeight > currentWeight { + a.LogDebug("received response", "commitment", commitment.LogName(), "fromPeer", from) + } - a.LogDebug("processed response", "commitment", commitment.LogName(), "fromPeer", from) + return actualWeight + }) > 0 { + commitment.IsAttested.Set(true) + } }) } diff --git a/pkg/protocol/block_requester.go b/pkg/protocol/block_requester.go new file mode 100644 index 000000000..a431826b7 --- /dev/null +++ b/pkg/protocol/block_requester.go @@ -0,0 +1,127 @@ +package protocol + +import ( + "github.com/libp2p/go-libp2p/core/peer" + + "github.com/iotaledger/hive.go/ds" + "github.com/iotaledger/hive.go/ds/types" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/core/buffer" + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" + iotago "github.com/iotaledger/iota.go/v4" +) + +type BlockRequester struct { + protocol *Protocol + workerPool *workerpool.WorkerPool + droppedBlocksBuffer *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] + + log.Logger +} + +func NewBlockRequester(protocol *Protocol) *BlockRequester { + b := &BlockRequester{ + Logger: lo.Return1(protocol.Logger.NewChildLogger("BlockRequester")), + protocol: protocol, + workerPool: protocol.Workers.CreatePool("BlockRequester"), + droppedBlocksBuffer: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), + } + + protocol.HookConstructed(func() { + protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { + if inSyncRange { + for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { + b.ProcessResponse(droppedBlock.A, droppedBlock.B) + } + } + }) + }) + + protocol.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { + mutations.AddedElements().Range(func(chain *Chain) { + chain.Engine.OnUpdate(func(_, engine *engine.Engine) { + unsubscribe := engine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook + + engine.HookShutdown(unsubscribe) + }) + }) + }) + + protocol.MainChain.Get().Engine.OnUpdateWithContext(func(_, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { + if engine != nil { + unsubscribeOnEngineChange(func() (unsubscribe func()) { + return lo.Batch( + engine.Events.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, + engine.Events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, + ) + }) + } + }) + }) + + return b +} + +func (b *BlockRequester) SendRequest(blockID iotago.BlockID) { + b.workerPool.Submit(func() { + b.protocol.Network.RequestBlock(blockID) + + b.protocol.LogTrace("sent request", "blockID", blockID) + }) +} + +func (b *BlockRequester) SendResponse(block *model.Block) { + b.workerPool.Submit(func() { + b.protocol.Network.SendBlock(block) + + b.protocol.LogTrace("sent block", "blockID", block.ID()) + }) +} + +func (b *BlockRequester) ProcessResponse(block *model.Block, from peer.ID) { + b.workerPool.Submit(func() { + commitmentRequest := b.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) + if commitmentRequest.WasRejected() { + b.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID(), "err", commitmentRequest.Err()) + + return + } + + commitment := commitmentRequest.Result() + if commitment == nil || !commitment.Chain.Get().DispatchBlock(block, from) { + if !b.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, from)) { + b.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) + } else { + b.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) + } + + return + } + + b.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName()) + }) +} + +func (b *BlockRequester) ProcessRequest(blockID iotago.BlockID, from peer.ID) { + b.workerPool.Submit(func() { + block, exists := b.protocol.MainEngineInstance().Block(blockID) + if !exists { + b.LogTrace("requested block not found", "blockID", blockID) + + return + } + + b.protocol.Network.SendBlock(block, from) + + b.LogTrace("processed block request", "blockID", blockID) + }) +} + +func (b *BlockRequester) Shutdown() { + b.workerPool.Shutdown().ShutdownComplete.Wait() +} diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 4c377ba79..ff645661f 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -196,10 +196,10 @@ func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, reque commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) if requestCreated { if requestFromPeers { - c.protocol.commitmentRequester.StartTicker(commitmentID) + c.protocol.CommitmentRequester.ticker.StartTicker(commitmentID) commitmentRequest.OnComplete(func() { - c.protocol.commitmentRequester.StopTicker(commitmentID) + c.protocol.CommitmentRequester.ticker.StopTicker(commitmentID) }) } diff --git a/pkg/protocol/commitment_requester.go b/pkg/protocol/commitment_requester.go new file mode 100644 index 000000000..8ef769804 --- /dev/null +++ b/pkg/protocol/commitment_requester.go @@ -0,0 +1,80 @@ +package protocol + +import ( + "github.com/libp2p/go-libp2p/core/peer" + + "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/model" + iotago "github.com/iotaledger/iota.go/v4" +) + +type CommitmentRequester struct { + protocol *Protocol + workerPool *workerpool.WorkerPool + ticker *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + + log.Logger +} + +func NewCommitmentRequester(protocol *Protocol) *CommitmentRequester { + c := &CommitmentRequester{ + Logger: lo.Return1(protocol.Logger.NewChildLogger("CommitmentRequester")), + protocol: protocol, + workerPool: protocol.Workers.CreatePool("CommitmentRequester"), + ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + } + + c.ticker.Events.Tick.Hook(c.SendRequest) + + return c +} + +func (c *CommitmentRequester) SendRequest(commitmentID iotago.CommitmentID) { + c.workerPool.Submit(func() { + c.protocol.Network.RequestSlotCommitment(commitmentID) + + c.LogDebug("sent request", "commitmentID", commitmentID) + }) +} + +func (c *CommitmentRequester) SendResponse(commitment *Commitment, to peer.ID) { + c.workerPool.Submit(func() { + c.protocol.Network.SendSlotCommitment(commitment.Commitment, to) + + c.LogTrace("sent commitment", "commitment", commitment.LogName(), "toPeer", to) + }) +} + +func (c *CommitmentRequester) ProcessResponse(commitmentModel *model.Commitment, from peer.ID) { + c.workerPool.Submit(func() { + if commitment, published, err := c.protocol.PublishCommitment(commitmentModel); err != nil { + c.LogError("failed to process commitment", "fromPeer", from, "err", err) + } else if published { + c.LogTrace("received response", "commitment", commitment.LogName(), "fromPeer", from) + } + }) +} + +func (c *CommitmentRequester) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { + c.workerPool.Submit(func() { + commitment, err := c.protocol.Commitment(commitmentID) + if err != nil { + logLevel := lo.Cond(ierrors.Is(err, ErrorCommitmentNotFound), log.LevelTrace, log.LevelError) + + c.Log("failed to load commitment for commitment request", logLevel, "commitmentID", commitmentID, "fromPeer", from, "error", err) + + return + } + + c.SendResponse(commitment, from) + }) +} + +func (c *CommitmentRequester) Shutdown() { + c.ticker.Shutdown() + c.workerPool.Shutdown().ShutdownComplete.Wait() +} diff --git a/pkg/protocol/gossip_protocol.go b/pkg/protocol/gossip_protocol.go index b8119a2da..63efc8988 100644 --- a/pkg/protocol/gossip_protocol.go +++ b/pkg/protocol/gossip_protocol.go @@ -5,17 +5,9 @@ import ( "github.com/iotaledger/hive.go/ads" "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/ds" - "github.com/iotaledger/hive.go/ds/types" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore/mapdb" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/workerpool" - "github.com/iotaledger/iota-core/pkg/core/buffer" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" "github.com/iotaledger/iota.go/v4/merklehasher" ) @@ -23,102 +15,29 @@ import ( type GossipProtocol struct { protocol *Protocol - inboundWorkers *workerpool.WorkerPool - outboundWorkers *workerpool.WorkerPool - droppedBlocksBuffer *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] + inboundWorkers *workerpool.WorkerPool + outboundWorkers *workerpool.WorkerPool - commitmentRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - warpSyncRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] - blockRequested *event.Event2[iotago.BlockID, *engine.Engine] + warpSyncRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] } func NewGossipProtocol(protocol *Protocol) *GossipProtocol { g := &GossipProtocol{ protocol: protocol, - inboundWorkers: protocol.Workers.CreatePool("Gossip.Inbound"), - outboundWorkers: protocol.Workers.CreatePool("Gossip.Outbound"), - droppedBlocksBuffer: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), - commitmentRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - warpSyncRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - blockRequested: event.New2[iotago.BlockID, *engine.Engine](), + inboundWorkers: protocol.Workers.CreatePool("Gossip.Inbound"), + outboundWorkers: protocol.Workers.CreatePool("Gossip.Outbound"), + + warpSyncRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), } protocol.HookConstructed(func() { - g.startBlockRequester() g.startWarpSyncRequester() - g.replayDroppedBlocks() }) return g } -func (g *GossipProtocol) ProcessBlock(block *model.Block, from peer.ID) { - g.inboundWorkers.Submit(func() { - commitmentRequest := g.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) - if commitmentRequest.WasRejected() { - g.protocol.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID(), "err", commitmentRequest.Err()) - - return - } - - commitment := commitmentRequest.Result() - if commitment == nil || !commitment.Chain.Get().DispatchBlock(block, from) { - if !g.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, from)) { - g.protocol.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) - } else { - g.protocol.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) - } - - return - } - - g.protocol.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName()) - }) -} - -func (g *GossipProtocol) ProcessBlockRequest(blockID iotago.BlockID, from peer.ID) { - g.inboundWorkers.Submit(func() { - block, exists := g.protocol.MainEngineInstance().Block(blockID) - if !exists { - g.protocol.LogTrace("requested block not found", "blockID", blockID) - - return - } - - g.protocol.Network.SendBlock(block, from) - - g.protocol.LogTrace("processed block request", "blockID", blockID) - }) -} - -func (g *GossipProtocol) ProcessCommitment(commitmentModel *model.Commitment, from peer.ID) { - g.inboundWorkers.Submit(func() { - if commitment, published, err := g.protocol.PublishCommitment(commitmentModel); err != nil { - g.protocol.LogError("failed to process commitment", "fromPeer", from, "err", err) - } else if published { - g.protocol.LogDebug("processed received commitment", "commitment", commitment.LogName()) - } - }) -} - -func (g *GossipProtocol) ProcessCommitmentRequest(commitmentID iotago.CommitmentID, from peer.ID) { - g.inboundWorkers.Submit(func() { - commitment, err := g.protocol.Commitment(commitmentID) - if err != nil { - logLevel := lo.Cond(ierrors.Is(err, ErrorCommitmentNotFound), log.LevelTrace, log.LevelError) - - g.protocol.Log("failed to load commitment for commitment request", logLevel, "commitmentID", commitmentID, "fromPeer", from, "error", err) - - return - } - - g.protocol.Network.SendSlotCommitment(commitment.Commitment, from) - - g.protocol.LogTrace("processed commitment request", "commitment", commitment.LogName(), "fromPeer", from) - }) -} - func (g *GossipProtocol) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], from peer.ID) { g.inboundWorkers.Submit(func() { commitment, err := g.protocol.Commitment(commitmentID) @@ -224,30 +143,6 @@ func (g *GossipProtocol) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID }) } -func (g *GossipProtocol) SendBlock(block *model.Block) { - g.outboundWorkers.Submit(func() { - g.protocol.Network.SendBlock(block) - - g.protocol.LogTrace("sent block", "blockID", block.ID()) - }) -} - -func (g *GossipProtocol) SendBlockRequest(blockID iotago.BlockID, engine *engine.Engine) { - g.outboundWorkers.Submit(func() { - g.protocol.Network.RequestBlock(blockID) - - g.protocol.LogTrace("sent block request", "engine", engine.Name(), "blockID", blockID) - }) -} - -func (g *GossipProtocol) SendCommitmentRequest(commitmentID iotago.CommitmentID) { - g.outboundWorkers.Submit(func() { - g.protocol.Network.RequestSlotCommitment(commitmentID) - - g.protocol.LogDebug("sent commitment request", "commitmentID", commitmentID) - }) -} - func (g *GossipProtocol) SendWarpSyncRequest(id iotago.CommitmentID) { g.outboundWorkers.Submit(func() { if commitment, err := g.protocol.Commitment(id, false); err == nil { @@ -269,31 +164,3 @@ func (g *GossipProtocol) startWarpSyncRequester() { }) }) } - -func (g *GossipProtocol) startBlockRequester() { - g.protocol.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { - mutations.AddedElements().Range(func(chain *Chain) { - chain.Engine.OnUpdate(func(_, engine *engine.Engine) { - unsubscribe := lo.Batch( - engine.Events.BlockRequester.Tick.Hook(func(id iotago.BlockID) { - g.blockRequested.Trigger(id, engine) - }).Unhook, - ) - - engine.HookShutdown(unsubscribe) - }) - }) - }) -} - -func (g *GossipProtocol) replayDroppedBlocks() { - g.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { - if inSyncRange { - for _, droppedBlock := range g.droppedBlocksBuffer.GetValues(commitment.ID()) { - g.ProcessBlock(droppedBlock.A, droppedBlock.B) - } - } - }) - }) -} diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go index 8d6324222..28c00d8b3 100644 --- a/pkg/protocol/network_manager.go +++ b/pkg/protocol/network_manager.go @@ -5,59 +5,51 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/network/protocols/core" - "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" ) type NetworkManager struct { protocol *Protocol - Network *core.Protocol + Network *core.Protocol + AttestationsRequester *AttestationsRequester + BlockRequester *BlockRequester + CommitmentRequester *CommitmentRequester shutdown reactive.Event } func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { n := &NetworkManager{ - protocol: protocol, - Network: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), + protocol: protocol, + Network: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), + BlockRequester: NewBlockRequester(protocol), + CommitmentRequester: NewCommitmentRequester(protocol), + AttestationsRequester: NewAttestationsRequester(protocol), shutdown: reactive.NewEvent(), } protocol.HookInitialized(func() { - blockRequested := event.New1[*model.Block]() - for _, gossipEvent := range []*event.Event1[*blocks.Block]{ - // TODO: REPLACE WITH REACTIVE VERSION - protocol.Events.Engine.Scheduler.BlockScheduled, - protocol.Events.Engine.Scheduler.BlockSkipped, - } { - gossipEvent.Hook(func(block *blocks.Block) { blockRequested.Trigger(block.ModelBlock()) }) - } - unsubscribeFromNetworkEvents := lo.Batch( n.Network.OnError(func(err error, peer peer.ID) { n.protocol.LogError("network error", "peer", peer, "error", err) }), // inbound: Network -> GossipProtocol - n.Network.OnBlockReceived(protocol.GossipProtocol.ProcessBlock), - n.Network.OnBlockRequestReceived(protocol.GossipProtocol.ProcessBlockRequest), - n.Network.OnCommitmentReceived(protocol.GossipProtocol.ProcessCommitment), - n.Network.OnCommitmentRequestReceived(protocol.GossipProtocol.ProcessCommitmentRequest), n.Network.OnWarpSyncResponseReceived(protocol.GossipProtocol.ProcessWarpSyncResponse), n.Network.OnWarpSyncRequestReceived(protocol.GossipProtocol.ProcessWarpSyncRequest), // outbound: GossipProtocol -> Network - blockRequested.Hook(protocol.GossipProtocol.SendBlock).Unhook, - n.protocol.blockRequested.Hook(protocol.GossipProtocol.SendBlockRequest).Unhook, - n.protocol.commitmentRequester.Events.Tick.Hook(protocol.GossipProtocol.SendCommitmentRequest).Unhook, n.protocol.warpSyncRequester.Events.Tick.Hook(protocol.GossipProtocol.SendWarpSyncRequest).Unhook, + n.Network.OnCommitmentReceived(protocol.CommitmentRequester.ProcessResponse), + n.Network.OnCommitmentRequestReceived(protocol.CommitmentRequester.ProcessRequest), + n.Network.OnBlockReceived(protocol.BlockRequester.ProcessResponse), + n.Network.OnBlockRequestReceived(protocol.BlockRequester.ProcessRequest), n.Network.OnAttestationsReceived(protocol.AttestationsRequester.ProcessResponse), n.Network.OnAttestationsRequestReceived(protocol.AttestationsRequester.ProcessRequest), ) @@ -68,7 +60,8 @@ func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { protocol.inboundWorkers.Shutdown().ShutdownComplete.Wait() protocol.outboundWorkers.Shutdown().ShutdownComplete.Wait() - protocol.AttestationsRequester.Shutdown() + n.BlockRequester.Shutdown() + n.AttestationsRequester.Shutdown() n.Network.Shutdown() diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 5c5d6ec9b..6c024fac1 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -19,8 +19,6 @@ type Protocol struct { error *event.Event1[error] options *Options - AttestationsRequester *AttestationsRequester - *APIProvider *NetworkManager *ChainManager @@ -40,7 +38,6 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi options: newOptions(), }, opts, func(p *Protocol) { p.APIProvider = NewAPIProvider(p) - p.AttestationsRequester = NewAttestationsRequester(p) p.ChainManager = newChainManager(p) p.EngineManager = NewEngineManager(p) p.NetworkManager = newNetwork(p, dispatcher) diff --git a/pkg/protocol/warp_sync_requester.go b/pkg/protocol/warp_sync_requester.go new file mode 100644 index 000000000..dbc94d20b --- /dev/null +++ b/pkg/protocol/warp_sync_requester.go @@ -0,0 +1,5 @@ +package protocol + +type WarpSyncRequester struct { + protocol *Protocol +} From 6cd1622b1d3914f69eb824f67591cdb856acbb4d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 01:24:37 +0200 Subject: [PATCH 178/356] Feat: moved all methods to sub protocols --- pkg/network/protocols/core/protocol.go | 10 ++ pkg/protocol/attestations_requester.go | 18 +-- pkg/protocol/block_requester.go | 20 +-- pkg/protocol/chain_manager.go | 4 +- pkg/protocol/commitment_requester.go | 20 +-- pkg/protocol/engine_manager.go | 4 +- pkg/protocol/gossip_protocol.go | 166 ------------------------ pkg/protocol/network_manager.go | 70 ++++------ pkg/protocol/protocol.go | 2 - pkg/protocol/warp_sync_requester.go | 171 ++++++++++++++++++++++++- 10 files changed, 237 insertions(+), 248 deletions(-) delete mode 100644 pkg/protocol/gossip_protocol.go diff --git a/pkg/network/protocols/core/protocol.go b/pkg/network/protocols/core/protocol.go index a6e852446..bb0e1bd9a 100644 --- a/pkg/network/protocols/core/protocol.go +++ b/pkg/network/protocols/core/protocol.go @@ -7,6 +7,7 @@ import ( "google.golang.org/protobuf/proto" "github.com/iotaledger/hive.go/ds/bytesfilter" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ds/types" "github.com/iotaledger/hive.go/ierrors" @@ -34,6 +35,8 @@ type Protocol struct { requestedBlockHashes *shrinkingmap.ShrinkingMap[types.Identifier, types.Empty] requestedBlockHashesMutex syncutils.Mutex + + shutdown reactive.Event } func NewProtocol(network network.Endpoint, workerPool *workerpool.WorkerPool, apiProvider iotago.APIProvider, opts ...options.Option[Protocol]) (protocol *Protocol) { @@ -45,6 +48,7 @@ func NewProtocol(network network.Endpoint, workerPool *workerpool.WorkerPool, ap apiProvider: apiProvider, duplicateBlockBytesFilter: bytesfilter.New(10000), requestedBlockHashes: shrinkingmap.New[types.Identifier, types.Empty](shrinkingmap.WithShrinkingThresholdCount(1000)), + shutdown: reactive.NewEvent(), }, opts, func(p *Protocol) { network.RegisterProtocol(newPacket, p.handlePacket) }) @@ -147,6 +151,12 @@ func (p *Protocol) Shutdown() { p.workerPool.Shutdown() p.workerPool.ShutdownComplete.Wait() + + p.shutdown.Trigger() +} + +func (n *Protocol) OnShutdown(callback func()) (unsubscribe func()) { + return n.shutdown.OnTrigger(callback) } func (p *Protocol) handlePacket(nbr peer.ID, packet proto.Message) (err error) { diff --git a/pkg/protocol/attestations_requester.go b/pkg/protocol/attestations_requester.go index 6d22c993d..d43f068e2 100644 --- a/pkg/protocol/attestations_requester.go +++ b/pkg/protocol/attestations_requester.go @@ -15,7 +15,7 @@ import ( "github.com/iotaledger/iota.go/v4/merklehasher" ) -type AttestationsRequester struct { +type AttestationsProtocol struct { protocol *Protocol workerPool *workerpool.WorkerPool ticker *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] @@ -24,11 +24,11 @@ type AttestationsRequester struct { log.Logger } -func NewAttestationsRequester(protocol *Protocol) *AttestationsRequester { - a := &AttestationsRequester{ - Logger: lo.Return1(protocol.Logger.NewChildLogger("AttestationsRequester")), +func NewAttestationsRequester(protocol *Protocol) *AttestationsProtocol { + a := &AttestationsProtocol{ + Logger: lo.Return1(protocol.Logger.NewChildLogger("Attestations")), protocol: protocol, - workerPool: protocol.Workers.CreatePool("AttestationsRequester"), + workerPool: protocol.Workers.CreatePool("Attestations"), ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), } @@ -70,7 +70,7 @@ func NewAttestationsRequester(protocol *Protocol) *AttestationsRequester { return a } -func (a *AttestationsRequester) ProcessResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { +func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { a.workerPool.Submit(func() { commitment, _, err := a.protocol.PublishCommitment(commitmentModel) if err != nil { @@ -118,7 +118,7 @@ func (a *AttestationsRequester) ProcessResponse(commitmentModel *model.Commitmen }) } -func (a *AttestationsRequester) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { +func (a *AttestationsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { a.workerPool.Submit(func() { commitment, err := a.protocol.Commitment(commitmentID, false) if err != nil { @@ -197,12 +197,12 @@ func (a *AttestationsRequester) ProcessRequest(commitmentID iotago.CommitmentID, }) } -func (a *AttestationsRequester) Shutdown() { +func (a *AttestationsProtocol) Shutdown() { a.ticker.Shutdown() a.workerPool.Shutdown().ShutdownComplete.Wait() } -func (a *AttestationsRequester) sendRequest(commitmentID iotago.CommitmentID) { +func (a *AttestationsProtocol) sendRequest(commitmentID iotago.CommitmentID) { a.workerPool.Submit(func() { if commitment, err := a.protocol.Commitment(commitmentID, false); err == nil { a.protocol.Network.RequestAttestations(commitmentID) diff --git a/pkg/protocol/block_requester.go b/pkg/protocol/block_requester.go index a431826b7..482e39173 100644 --- a/pkg/protocol/block_requester.go +++ b/pkg/protocol/block_requester.go @@ -15,7 +15,7 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -type BlockRequester struct { +type BlocksProtocol struct { protocol *Protocol workerPool *workerpool.WorkerPool droppedBlocksBuffer *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] @@ -23,11 +23,11 @@ type BlockRequester struct { log.Logger } -func NewBlockRequester(protocol *Protocol) *BlockRequester { - b := &BlockRequester{ - Logger: lo.Return1(protocol.Logger.NewChildLogger("BlockRequester")), +func NewBlockRequester(protocol *Protocol) *BlocksProtocol { + b := &BlocksProtocol{ + Logger: lo.Return1(protocol.Logger.NewChildLogger("Blocks")), protocol: protocol, - workerPool: protocol.Workers.CreatePool("BlockRequester"), + workerPool: protocol.Workers.CreatePool("Blocks"), droppedBlocksBuffer: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), } @@ -67,7 +67,7 @@ func NewBlockRequester(protocol *Protocol) *BlockRequester { return b } -func (b *BlockRequester) SendRequest(blockID iotago.BlockID) { +func (b *BlocksProtocol) SendRequest(blockID iotago.BlockID) { b.workerPool.Submit(func() { b.protocol.Network.RequestBlock(blockID) @@ -75,7 +75,7 @@ func (b *BlockRequester) SendRequest(blockID iotago.BlockID) { }) } -func (b *BlockRequester) SendResponse(block *model.Block) { +func (b *BlocksProtocol) SendResponse(block *model.Block) { b.workerPool.Submit(func() { b.protocol.Network.SendBlock(block) @@ -83,7 +83,7 @@ func (b *BlockRequester) SendResponse(block *model.Block) { }) } -func (b *BlockRequester) ProcessResponse(block *model.Block, from peer.ID) { +func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { b.workerPool.Submit(func() { commitmentRequest := b.protocol.requestCommitment(block.ProtocolBlock().SlotCommitmentID, true) if commitmentRequest.WasRejected() { @@ -107,7 +107,7 @@ func (b *BlockRequester) ProcessResponse(block *model.Block, from peer.ID) { }) } -func (b *BlockRequester) ProcessRequest(blockID iotago.BlockID, from peer.ID) { +func (b *BlocksProtocol) ProcessRequest(blockID iotago.BlockID, from peer.ID) { b.workerPool.Submit(func() { block, exists := b.protocol.MainEngineInstance().Block(blockID) if !exists { @@ -122,6 +122,6 @@ func (b *BlockRequester) ProcessRequest(blockID iotago.BlockID, from peer.ID) { }) } -func (b *BlockRequester) Shutdown() { +func (b *BlocksProtocol) Shutdown() { b.workerPool.Shutdown().ShutdownComplete.Wait() } diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index ff645661f..8e1d6be09 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -196,10 +196,10 @@ func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, reque commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) if requestCreated { if requestFromPeers { - c.protocol.CommitmentRequester.ticker.StartTicker(commitmentID) + c.protocol.Commitments.ticker.StartTicker(commitmentID) commitmentRequest.OnComplete(func() { - c.protocol.CommitmentRequester.ticker.StopTicker(commitmentID) + c.protocol.Commitments.ticker.StopTicker(commitmentID) }) } diff --git a/pkg/protocol/commitment_requester.go b/pkg/protocol/commitment_requester.go index 8ef769804..54d4c44f0 100644 --- a/pkg/protocol/commitment_requester.go +++ b/pkg/protocol/commitment_requester.go @@ -12,7 +12,7 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -type CommitmentRequester struct { +type CommitmentsProtocol struct { protocol *Protocol workerPool *workerpool.WorkerPool ticker *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] @@ -20,11 +20,11 @@ type CommitmentRequester struct { log.Logger } -func NewCommitmentRequester(protocol *Protocol) *CommitmentRequester { - c := &CommitmentRequester{ - Logger: lo.Return1(protocol.Logger.NewChildLogger("CommitmentRequester")), +func NewCommitmentRequester(protocol *Protocol) *CommitmentsProtocol { + c := &CommitmentsProtocol{ + Logger: lo.Return1(protocol.Logger.NewChildLogger("Commitments")), protocol: protocol, - workerPool: protocol.Workers.CreatePool("CommitmentRequester"), + workerPool: protocol.Workers.CreatePool("Commitments"), ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), } @@ -33,7 +33,7 @@ func NewCommitmentRequester(protocol *Protocol) *CommitmentRequester { return c } -func (c *CommitmentRequester) SendRequest(commitmentID iotago.CommitmentID) { +func (c *CommitmentsProtocol) SendRequest(commitmentID iotago.CommitmentID) { c.workerPool.Submit(func() { c.protocol.Network.RequestSlotCommitment(commitmentID) @@ -41,7 +41,7 @@ func (c *CommitmentRequester) SendRequest(commitmentID iotago.CommitmentID) { }) } -func (c *CommitmentRequester) SendResponse(commitment *Commitment, to peer.ID) { +func (c *CommitmentsProtocol) SendResponse(commitment *Commitment, to peer.ID) { c.workerPool.Submit(func() { c.protocol.Network.SendSlotCommitment(commitment.Commitment, to) @@ -49,7 +49,7 @@ func (c *CommitmentRequester) SendResponse(commitment *Commitment, to peer.ID) { }) } -func (c *CommitmentRequester) ProcessResponse(commitmentModel *model.Commitment, from peer.ID) { +func (c *CommitmentsProtocol) ProcessResponse(commitmentModel *model.Commitment, from peer.ID) { c.workerPool.Submit(func() { if commitment, published, err := c.protocol.PublishCommitment(commitmentModel); err != nil { c.LogError("failed to process commitment", "fromPeer", from, "err", err) @@ -59,7 +59,7 @@ func (c *CommitmentRequester) ProcessResponse(commitmentModel *model.Commitment, }) } -func (c *CommitmentRequester) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { +func (c *CommitmentsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { c.workerPool.Submit(func() { commitment, err := c.protocol.Commitment(commitmentID) if err != nil { @@ -74,7 +74,7 @@ func (c *CommitmentRequester) ProcessRequest(commitmentID iotago.CommitmentID, f }) } -func (c *CommitmentRequester) Shutdown() { +func (c *CommitmentsProtocol) Shutdown() { c.ticker.Shutdown() c.workerPool.Shutdown().ShutdownComplete.Wait() } diff --git a/pkg/protocol/engine_manager.go b/pkg/protocol/engine_manager.go index e5be21311..4b5a352d2 100644 --- a/pkg/protocol/engine_manager.go +++ b/pkg/protocol/engine_manager.go @@ -204,7 +204,7 @@ func (e *EngineManager) provideEngineIfRequested(chain *Chain) { chain.SpawnedEngine.Set(mainEngine) - e.protocol.NetworkManager.OnShutdown(mainEngine.Shutdown) + e.protocol.Network.OnShutdown(mainEngine.Shutdown) } else { forkingPoint := chain.ForkingPoint.Get() snapshotTargetSlot := forkingPoint.Slot() - 1 @@ -216,7 +216,7 @@ func (e *EngineManager) provideEngineIfRequested(chain *Chain) { chain.SpawnedEngine.Set(candidateEngineInstance) - e.protocol.NetworkManager.OnShutdown(candidateEngineInstance.Shutdown) + e.protocol.Network.OnShutdown(candidateEngineInstance.Shutdown) } }() }) diff --git a/pkg/protocol/gossip_protocol.go b/pkg/protocol/gossip_protocol.go deleted file mode 100644 index 63efc8988..000000000 --- a/pkg/protocol/gossip_protocol.go +++ /dev/null @@ -1,166 +0,0 @@ -package protocol - -import ( - "github.com/libp2p/go-libp2p/core/peer" - - "github.com/iotaledger/hive.go/ads" - "github.com/iotaledger/hive.go/core/eventticker" - "github.com/iotaledger/hive.go/ierrors" - "github.com/iotaledger/hive.go/kvstore/mapdb" - "github.com/iotaledger/hive.go/runtime/workerpool" - iotago "github.com/iotaledger/iota.go/v4" - "github.com/iotaledger/iota.go/v4/merklehasher" -) - -type GossipProtocol struct { - protocol *Protocol - - inboundWorkers *workerpool.WorkerPool - outboundWorkers *workerpool.WorkerPool - - warpSyncRequester *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] -} - -func NewGossipProtocol(protocol *Protocol) *GossipProtocol { - g := &GossipProtocol{ - protocol: protocol, - - inboundWorkers: protocol.Workers.CreatePool("Gossip.Inbound"), - outboundWorkers: protocol.Workers.CreatePool("Gossip.Outbound"), - - warpSyncRequester: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), - } - - protocol.HookConstructed(func() { - g.startWarpSyncRequester() - }) - - return g -} - -func (g *GossipProtocol) ProcessWarpSyncResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], from peer.ID) { - g.inboundWorkers.Submit(func() { - commitment, err := g.protocol.Commitment(commitmentID) - if err != nil { - if !ierrors.Is(err, ErrorCommitmentNotFound) { - g.protocol.LogError("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "fromPeer", from, "err", err) - } else { - g.protocol.LogTrace("failed to load commitment for warp-sync response", "commitmentID", commitmentID, "fromPeer", from, "err", err) - } - - return - } - - targetEngine := commitment.Engine.Get() - if targetEngine == nil { - g.protocol.LogDebug("failed to get target engine for warp-sync response", "commitment", commitment.LogName()) - - return - } - - commitment.RequestedBlocksReceived.Compute(func(requestedBlocksReceived bool) bool { - if requestedBlocksReceived || !commitment.RequestBlocks.Get() { - g.protocol.LogTrace("warp-sync response for already synced commitment received", "commitment", commitment.LogName(), "fromPeer", from) - - return requestedBlocksReceived - } - - acceptedBlocks := ads.NewSet[iotago.BlockID](mapdb.NewMapDB(), iotago.BlockID.Bytes, iotago.SlotIdentifierFromBytes) - for _, blockID := range blockIDs { - _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error - } - - if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), commitment.RootsID()) { - g.protocol.LogError("failed to verify merkle proof in warp-sync response", "commitment", commitment.LogName(), "blockIDs", blockIDs, "proof", proof, "fromPeer", from) - - return false - } - - g.warpSyncRequester.StopTicker(commitmentID) - - for _, blockID := range blockIDs { - targetEngine.BlockDAG.GetOrRequestBlock(blockID) - } - - g.protocol.LogDebug("processed warp-sync response", "commitment", commitment.LogName()) - - return true - }) - }) -} - -func (g *GossipProtocol) ProcessWarpSyncRequest(commitmentID iotago.CommitmentID, from peer.ID) { - g.inboundWorkers.Submit(func() { - commitment, err := g.protocol.Commitment(commitmentID) - if err != nil { - if !ierrors.Is(err, ErrorCommitmentNotFound) { - g.protocol.LogError("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) - } else { - g.protocol.LogTrace("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) - } - - return - } - - chain := commitment.Chain.Get() - if chain == nil { - g.protocol.LogTrace("warp-sync request for unsolid commitment", "commitment", commitment.LogName(), "fromPeer", from) - - return - } - - engineInstance := commitment.Engine.Get() - if engineInstance == nil { - g.protocol.LogTrace("warp-sync request for chain without engine", "chain", chain.LogName(), "fromPeer", from) - - return - } - - committedSlot, err := engineInstance.CommittedSlot(commitmentID) - if err != nil { - g.protocol.LogTrace("warp-sync request for uncommitted slot", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from) - - return - } - - blockIDs, err := committedSlot.BlockIDs() - if err != nil { - g.protocol.LogTrace("failed to get block ids for warp-sync request", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from, "err", err) - - return - } - - roots, err := committedSlot.Roots() - if err != nil { - g.protocol.LogTrace("failed to get roots for warp-sync request", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from, "err", err) - - return - } - - g.protocol.Network.SendWarpSyncResponse(commitmentID, blockIDs, roots.TangleProof(), from) - - g.protocol.LogTrace("processed warp-sync request", "commitment", commitment.LogName(), "fromPeer", from) - }) -} - -func (g *GossipProtocol) SendWarpSyncRequest(id iotago.CommitmentID) { - g.outboundWorkers.Submit(func() { - if commitment, err := g.protocol.Commitment(id, false); err == nil { - g.protocol.Network.SendWarpSyncRequest(id) - - g.protocol.LogDebug("sent warp-sync request", "commitment", commitment.LogName()) - } - }) -} - -func (g *GossipProtocol) startWarpSyncRequester() { - g.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.RequestBlocks.OnUpdate(func(_, warpSyncBlocks bool) { - if warpSyncBlocks { - g.warpSyncRequester.StartTicker(commitment.ID()) - } else { - g.warpSyncRequester.StopTicker(commitment.ID()) - } - }) - }) -} diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go index 28c00d8b3..510a73aae 100644 --- a/pkg/protocol/network_manager.go +++ b/pkg/protocol/network_manager.go @@ -3,7 +3,6 @@ package protocol import ( "github.com/libp2p/go-libp2p/core/peer" - "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" @@ -13,71 +12,52 @@ import ( type NetworkManager struct { protocol *Protocol - Network *core.Protocol - AttestationsRequester *AttestationsRequester - BlockRequester *BlockRequester - CommitmentRequester *CommitmentRequester - - shutdown reactive.Event + Network *core.Protocol + Attestations *AttestationsProtocol + Blocks *BlocksProtocol + Commitments *CommitmentsProtocol + WarpSync *WarpSyncProtocol } func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { n := &NetworkManager{ - protocol: protocol, - Network: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), - BlockRequester: NewBlockRequester(protocol), - CommitmentRequester: NewCommitmentRequester(protocol), - AttestationsRequester: NewAttestationsRequester(protocol), - - shutdown: reactive.NewEvent(), + protocol: protocol, + Network: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), + Blocks: NewBlockRequester(protocol), + Commitments: NewCommitmentRequester(protocol), + Attestations: NewAttestationsRequester(protocol), + WarpSync: NewWarpSyncRequester(protocol), } protocol.HookInitialized(func() { unsubscribeFromNetworkEvents := lo.Batch( - n.Network.OnError(func(err error, peer peer.ID) { - n.protocol.LogError("network error", "peer", peer, "error", err) - }), - - // inbound: Network -> GossipProtocol - n.Network.OnWarpSyncResponseReceived(protocol.GossipProtocol.ProcessWarpSyncResponse), - n.Network.OnWarpSyncRequestReceived(protocol.GossipProtocol.ProcessWarpSyncRequest), - - // outbound: GossipProtocol -> Network - - n.protocol.warpSyncRequester.Events.Tick.Hook(protocol.GossipProtocol.SendWarpSyncRequest).Unhook, - - n.Network.OnCommitmentReceived(protocol.CommitmentRequester.ProcessResponse), - n.Network.OnCommitmentRequestReceived(protocol.CommitmentRequester.ProcessRequest), - n.Network.OnBlockReceived(protocol.BlockRequester.ProcessResponse), - n.Network.OnBlockRequestReceived(protocol.BlockRequester.ProcessRequest), - n.Network.OnAttestationsReceived(protocol.AttestationsRequester.ProcessResponse), - n.Network.OnAttestationsRequestReceived(protocol.AttestationsRequester.ProcessRequest), + n.Network.OnError(func(err error, peer peer.ID) { n.protocol.LogError("network error", "peer", peer, "error", err) }), + n.Network.OnBlockReceived(protocol.Blocks.ProcessResponse), + n.Network.OnBlockRequestReceived(protocol.Blocks.ProcessRequest), + n.Network.OnCommitmentReceived(protocol.Commitments.ProcessResponse), + n.Network.OnCommitmentRequestReceived(protocol.Commitments.ProcessRequest), + n.Network.OnAttestationsReceived(protocol.Attestations.ProcessResponse), + n.Network.OnAttestationsRequestReceived(protocol.Attestations.ProcessRequest), + n.Network.OnWarpSyncResponseReceived(protocol.WarpSync.ProcessResponse), + n.Network.OnWarpSyncRequestReceived(protocol.WarpSync.ProcessRequest), ) protocol.HookShutdown(func() { unsubscribeFromNetworkEvents() - protocol.inboundWorkers.Shutdown().ShutdownComplete.Wait() - protocol.outboundWorkers.Shutdown().ShutdownComplete.Wait() - - n.BlockRequester.Shutdown() - n.AttestationsRequester.Shutdown() - + n.Blocks.Shutdown() + n.Commitments.Shutdown() + n.Attestations.Shutdown() + n.WarpSync.Shutdown() n.Network.Shutdown() - - n.shutdown.Trigger() }) }) return n } -func (n *NetworkManager) OnShutdown(callback func()) (unsubscribe func()) { - return n.shutdown.OnTrigger(callback) -} - func (n *NetworkManager) IssueBlock(block *model.Block) error { - n.protocol.MainEngineInstance().ProcessBlockFromPeer(block, "self") + n.Blocks.ProcessResponse(block, "self") return nil } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 6c024fac1..a5bf2fd06 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -23,7 +23,6 @@ type Protocol struct { *NetworkManager *ChainManager *EngineManager - *GossipProtocol log.Logger module.Module @@ -41,7 +40,6 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi p.ChainManager = newChainManager(p) p.EngineManager = NewEngineManager(p) p.NetworkManager = newNetwork(p, dispatcher) - p.GossipProtocol = NewGossipProtocol(p) }, (*Protocol).TriggerConstructed) } diff --git a/pkg/protocol/warp_sync_requester.go b/pkg/protocol/warp_sync_requester.go index dbc94d20b..6293bceb9 100644 --- a/pkg/protocol/warp_sync_requester.go +++ b/pkg/protocol/warp_sync_requester.go @@ -1,5 +1,172 @@ package protocol -type WarpSyncRequester struct { - protocol *Protocol +import ( + "github.com/libp2p/go-libp2p/core/peer" + + "github.com/iotaledger/hive.go/ads" + "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/kvstore/mapdb" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/hive.go/runtime/workerpool" + iotago "github.com/iotaledger/iota.go/v4" + "github.com/iotaledger/iota.go/v4/merklehasher" +) + +type WarpSyncProtocol struct { + protocol *Protocol + workerPool *workerpool.WorkerPool + ticker *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + + log.Logger +} + +func NewWarpSyncRequester(protocol *Protocol) *WarpSyncProtocol { + c := &WarpSyncProtocol{ + Logger: lo.Return1(protocol.Logger.NewChildLogger("WarpSync")), + protocol: protocol, + workerPool: protocol.Workers.CreatePool("WarpSync"), + ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + } + + c.ticker.Events.Tick.Hook(c.SendRequest) + + c.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.RequestBlocks.OnUpdate(func(_, warpSyncBlocks bool) { + if warpSyncBlocks { + c.ticker.StartTicker(commitment.ID()) + } else { + c.ticker.StopTicker(commitment.ID()) + } + }) + }) + + return c +} + +func (w *WarpSyncProtocol) SendRequest(id iotago.CommitmentID) { + w.workerPool.Submit(func() { + if commitment, err := w.protocol.Commitment(id, false); err == nil { + w.protocol.Network.SendWarpSyncRequest(id) + + w.LogDebug("sent request", "commitment", commitment.LogName()) + } + }) +} + +func (w *WarpSyncProtocol) SendResponse(commitment *Commitment, blockIDs iotago.BlockIDs, roots *iotago.Roots, to peer.ID) { + w.workerPool.Submit(func() { + w.protocol.Network.SendWarpSyncResponse(commitment.ID(), blockIDs, roots.TangleProof(), to) + + w.LogTrace("sent response", "commitment", commitment.LogName(), "toPeer", to) + }) +} + +func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blockIDs iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], from peer.ID) { + w.workerPool.Submit(func() { + commitment, err := w.protocol.Commitment(commitmentID) + if err != nil { + if !ierrors.Is(err, ErrorCommitmentNotFound) { + w.LogError("failed to load commitment for response", "commitmentID", commitmentID, "fromPeer", from, "err", err) + } else { + w.LogTrace("failed to load commitment for response", "commitmentID", commitmentID, "fromPeer", from, "err", err) + } + + return + } + + targetEngine := commitment.Engine.Get() + if targetEngine == nil { + w.LogDebug("failed to get target engine for response", "commitment", commitment.LogName()) + + return + } + + commitment.RequestedBlocksReceived.Compute(func(requestedBlocksReceived bool) bool { + if requestedBlocksReceived || !commitment.RequestBlocks.Get() { + w.LogTrace("response for already synced commitment", "commitment", commitment.LogName(), "fromPeer", from) + + return requestedBlocksReceived + } + + acceptedBlocks := ads.NewSet[iotago.BlockID](mapdb.NewMapDB(), iotago.BlockID.Bytes, iotago.SlotIdentifierFromBytes) + for _, blockID := range blockIDs { + _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error + } + + if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), commitment.RootsID()) { + w.LogError("failed to verify merkle proof", "commitment", commitment.LogName(), "blockIDs", blockIDs, "proof", proof, "fromPeer", from) + + return false + } + + w.ticker.StopTicker(commitmentID) + + for _, blockID := range blockIDs { + targetEngine.BlockDAG.GetOrRequestBlock(blockID) + } + + w.LogDebug("received response", "commitment", commitment.LogName()) + + return true + }) + }) +} + +func (w *WarpSyncProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { + w.workerPool.Submit(func() { + commitment, err := w.protocol.Commitment(commitmentID) + if err != nil { + if !ierrors.Is(err, ErrorCommitmentNotFound) { + w.LogError("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) + } else { + w.LogTrace("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) + } + + return + } + + chain := commitment.Chain.Get() + if chain == nil { + w.LogTrace("warp-sync request for unsolid commitment", "commitment", commitment.LogName(), "fromPeer", from) + + return + } + + engineInstance := commitment.Engine.Get() + if engineInstance == nil { + w.LogTrace("warp-sync request for chain without engine", "chain", chain.LogName(), "fromPeer", from) + + return + } + + committedSlot, err := engineInstance.CommittedSlot(commitmentID) + if err != nil { + w.LogTrace("warp-sync request for uncommitted slot", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from) + + return + } + + blockIDs, err := committedSlot.BlockIDs() + if err != nil { + w.LogTrace("failed to get block ids for warp-sync request", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from, "err", err) + + return + } + + roots, err := committedSlot.Roots() + if err != nil { + w.LogTrace("failed to get roots for warp-sync request", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from, "err", err) + + return + } + + w.SendResponse(commitment, blockIDs, roots, from) + }) +} + +func (w *WarpSyncProtocol) Shutdown() { + w.ticker.Shutdown() + w.workerPool.Shutdown().ShutdownComplete.Wait() } From 9bdc2e126fa88e4eb41bece0f32470a2cd92e30d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 02:06:31 +0200 Subject: [PATCH 179/356] Refactor: refactored file structuure --- pkg/protocol/chain_manager.go | 4 +- pkg/protocol/network_manager.go | 65 ------------------- pkg/protocol/protocol.go | 53 +++++++++++++-- ..._requester.go => protocol_attestations.go} | 6 +- ...{block_requester.go => protocol_blocks.go} | 2 +- ...t_requester.go => protocol_commitments.go} | 2 +- ...ync_requester.go => protocol_warp_sync.go} | 24 +++---- 7 files changed, 68 insertions(+), 88 deletions(-) delete mode 100644 pkg/protocol/network_manager.go rename pkg/protocol/{attestations_requester.go => protocol_attestations.go} (95%) rename pkg/protocol/{block_requester.go => protocol_blocks.go} (98%) rename pkg/protocol/{commitment_requester.go => protocol_commitments.go} (97%) rename pkg/protocol/{warp_sync_requester.go => protocol_warp_sync.go} (89%) diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 8e1d6be09..8458a1cf5 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -196,10 +196,10 @@ func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, reque commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) if requestCreated { if requestFromPeers { - c.protocol.Commitments.ticker.StartTicker(commitmentID) + c.protocol.CommitmentsProtocol.ticker.StartTicker(commitmentID) commitmentRequest.OnComplete(func() { - c.protocol.Commitments.ticker.StopTicker(commitmentID) + c.protocol.CommitmentsProtocol.ticker.StopTicker(commitmentID) }) } diff --git a/pkg/protocol/network_manager.go b/pkg/protocol/network_manager.go deleted file mode 100644 index 510a73aae..000000000 --- a/pkg/protocol/network_manager.go +++ /dev/null @@ -1,65 +0,0 @@ -package protocol - -import ( - "github.com/libp2p/go-libp2p/core/peer" - - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/network" - "github.com/iotaledger/iota-core/pkg/network/protocols/core" -) - -type NetworkManager struct { - protocol *Protocol - - Network *core.Protocol - Attestations *AttestationsProtocol - Blocks *BlocksProtocol - Commitments *CommitmentsProtocol - WarpSync *WarpSyncProtocol -} - -func newNetwork(protocol *Protocol, endpoint network.Endpoint) *NetworkManager { - n := &NetworkManager{ - protocol: protocol, - Network: core.NewProtocol(endpoint, protocol.Workers.CreatePool("NetworkProtocol"), protocol), - Blocks: NewBlockRequester(protocol), - Commitments: NewCommitmentRequester(protocol), - Attestations: NewAttestationsRequester(protocol), - WarpSync: NewWarpSyncRequester(protocol), - } - - protocol.HookInitialized(func() { - unsubscribeFromNetworkEvents := lo.Batch( - n.Network.OnError(func(err error, peer peer.ID) { n.protocol.LogError("network error", "peer", peer, "error", err) }), - n.Network.OnBlockReceived(protocol.Blocks.ProcessResponse), - n.Network.OnBlockRequestReceived(protocol.Blocks.ProcessRequest), - n.Network.OnCommitmentReceived(protocol.Commitments.ProcessResponse), - n.Network.OnCommitmentRequestReceived(protocol.Commitments.ProcessRequest), - n.Network.OnAttestationsReceived(protocol.Attestations.ProcessResponse), - n.Network.OnAttestationsRequestReceived(protocol.Attestations.ProcessRequest), - n.Network.OnWarpSyncResponseReceived(protocol.WarpSync.ProcessResponse), - n.Network.OnWarpSyncRequestReceived(protocol.WarpSync.ProcessRequest), - ) - - protocol.HookShutdown(func() { - unsubscribeFromNetworkEvents() - - n.Blocks.Shutdown() - n.Commitments.Shutdown() - n.Attestations.Shutdown() - n.WarpSync.Shutdown() - n.Network.Shutdown() - }) - }) - - return n -} - -func (n *NetworkManager) IssueBlock(block *model.Block) error { - n.Blocks.ProcessResponse(block, "self") - - return nil -} - -func (n *NetworkManager) Shutdown() {} diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index a5bf2fd06..603cf6525 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -4,26 +4,35 @@ import ( "context" "sync" + "github.com/libp2p/go-libp2p/core/peer" + + "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/network" + "github.com/iotaledger/iota-core/pkg/network/protocols/core" "github.com/iotaledger/iota-core/pkg/protocol/engine" ) type Protocol struct { - Events *Events - Workers *workerpool.Group + Events *Events + Workers *workerpool.Group + Network *core.Protocol + BlocksProtocol *BlocksProtocol + CommitmentsProtocol *CommitmentsProtocol + AttestationsProtocol *AttestationsProtocol + WarpSyncProtocol *WarpSyncProtocol + error *event.Event1[error] options *Options *APIProvider - *NetworkManager *ChainManager *EngineManager - log.Logger module.Module } @@ -36,13 +45,47 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi error: event.New1[error](), options: newOptions(), }, opts, func(p *Protocol) { + p.Network = core.NewProtocol(dispatcher, workers.CreatePool("NetworkProtocol"), p) + p.BlocksProtocol = NewBlocksProtocol(p) + p.CommitmentsProtocol = NewCommitmentsProtocol(p) + p.AttestationsProtocol = NewAttestationsProtocol(p) + p.WarpSyncProtocol = NewWarpSyncProtocol(p) p.APIProvider = NewAPIProvider(p) p.ChainManager = newChainManager(p) p.EngineManager = NewEngineManager(p) - p.NetworkManager = newNetwork(p, dispatcher) + + p.HookInitialized(func() { + unsubscribeFromNetworkEvents := lo.Batch( + p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), + p.Network.OnBlockReceived(p.BlocksProtocol.ProcessResponse), + p.Network.OnBlockRequestReceived(p.BlocksProtocol.ProcessRequest), + p.Network.OnCommitmentReceived(p.CommitmentsProtocol.ProcessResponse), + p.Network.OnCommitmentRequestReceived(p.CommitmentsProtocol.ProcessRequest), + p.Network.OnAttestationsReceived(p.AttestationsProtocol.ProcessResponse), + p.Network.OnAttestationsRequestReceived(p.AttestationsProtocol.ProcessRequest), + p.Network.OnWarpSyncResponseReceived(p.WarpSyncProtocol.ProcessResponse), + p.Network.OnWarpSyncRequestReceived(p.WarpSyncProtocol.ProcessRequest), + ) + + p.HookShutdown(func() { + unsubscribeFromNetworkEvents() + + p.BlocksProtocol.Shutdown() + p.CommitmentsProtocol.Shutdown() + p.AttestationsProtocol.Shutdown() + p.WarpSyncProtocol.Shutdown() + p.Network.Shutdown() + }) + }) }, (*Protocol).TriggerConstructed) } +func (p *Protocol) IssueBlock(block *model.Block) error { + p.BlocksProtocol.ProcessResponse(block, "self") + + return nil +} + func (p *Protocol) Run(ctx context.Context) error { p.TriggerInitialized() diff --git a/pkg/protocol/attestations_requester.go b/pkg/protocol/protocol_attestations.go similarity index 95% rename from pkg/protocol/attestations_requester.go rename to pkg/protocol/protocol_attestations.go index d43f068e2..3124a61b3 100644 --- a/pkg/protocol/attestations_requester.go +++ b/pkg/protocol/protocol_attestations.go @@ -24,7 +24,7 @@ type AttestationsProtocol struct { log.Logger } -func NewAttestationsRequester(protocol *Protocol) *AttestationsProtocol { +func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { a := &AttestationsProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("Attestations")), protocol: protocol, @@ -95,14 +95,14 @@ func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment commitmentVerifier, exists := a.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) if !exists { - a.LogDebug("failed to find commitment verifier for commitment %s when processing attestations", "commitment", commitment.LogName()) + a.LogDebug("failed to find commitment verifier", "commitment", commitment.LogName()) return currentWeight } _, actualWeight, err := commitmentVerifier.verifyCommitment(commitment, attestations, merkleProof) if err != nil { - a.LogError("failed to verify commitment when processing attestations", "commitment", commitment.LogName(), "error", err) + a.LogError("failed to verify commitment", "commitment", commitment.LogName(), "error", err) return currentWeight } diff --git a/pkg/protocol/block_requester.go b/pkg/protocol/protocol_blocks.go similarity index 98% rename from pkg/protocol/block_requester.go rename to pkg/protocol/protocol_blocks.go index 482e39173..9a454416f 100644 --- a/pkg/protocol/block_requester.go +++ b/pkg/protocol/protocol_blocks.go @@ -23,7 +23,7 @@ type BlocksProtocol struct { log.Logger } -func NewBlockRequester(protocol *Protocol) *BlocksProtocol { +func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { b := &BlocksProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("Blocks")), protocol: protocol, diff --git a/pkg/protocol/commitment_requester.go b/pkg/protocol/protocol_commitments.go similarity index 97% rename from pkg/protocol/commitment_requester.go rename to pkg/protocol/protocol_commitments.go index 54d4c44f0..7c30fef72 100644 --- a/pkg/protocol/commitment_requester.go +++ b/pkg/protocol/protocol_commitments.go @@ -20,7 +20,7 @@ type CommitmentsProtocol struct { log.Logger } -func NewCommitmentRequester(protocol *Protocol) *CommitmentsProtocol { +func NewCommitmentsProtocol(protocol *Protocol) *CommitmentsProtocol { c := &CommitmentsProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("Commitments")), protocol: protocol, diff --git a/pkg/protocol/warp_sync_requester.go b/pkg/protocol/protocol_warp_sync.go similarity index 89% rename from pkg/protocol/warp_sync_requester.go rename to pkg/protocol/protocol_warp_sync.go index 6293bceb9..7584e5220 100644 --- a/pkg/protocol/warp_sync_requester.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -22,7 +22,7 @@ type WarpSyncProtocol struct { log.Logger } -func NewWarpSyncRequester(protocol *Protocol) *WarpSyncProtocol { +func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { c := &WarpSyncProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("WarpSync")), protocol: protocol, @@ -32,23 +32,25 @@ func NewWarpSyncRequester(protocol *Protocol) *WarpSyncProtocol { c.ticker.Events.Tick.Hook(c.SendRequest) - c.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.RequestBlocks.OnUpdate(func(_, warpSyncBlocks bool) { - if warpSyncBlocks { - c.ticker.StartTicker(commitment.ID()) - } else { - c.ticker.StopTicker(commitment.ID()) - } + protocol.HookConstructed(func() { + c.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + commitment.RequestBlocks.OnUpdate(func(_, warpSyncBlocks bool) { + if warpSyncBlocks { + c.ticker.StartTicker(commitment.ID()) + } else { + c.ticker.StopTicker(commitment.ID()) + } + }) }) }) return c } -func (w *WarpSyncProtocol) SendRequest(id iotago.CommitmentID) { +func (w *WarpSyncProtocol) SendRequest(commitmentID iotago.CommitmentID) { w.workerPool.Submit(func() { - if commitment, err := w.protocol.Commitment(id, false); err == nil { - w.protocol.Network.SendWarpSyncRequest(id) + if commitment, err := w.protocol.Commitment(commitmentID, false); err == nil { + w.protocol.Network.SendWarpSyncRequest(commitmentID) w.LogDebug("sent request", "commitment", commitment.LogName()) } From 7bd12d4591b92821a58cb6d19bda44ca555b7e1f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 02:09:26 +0200 Subject: [PATCH 180/356] Refactor: addressed linter warning --- pkg/network/protocols/core/protocol.go | 4 +-- pkg/protocol/protocol.go | 44 ++++++++++++-------------- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/pkg/network/protocols/core/protocol.go b/pkg/network/protocols/core/protocol.go index bb0e1bd9a..bfd591e7f 100644 --- a/pkg/network/protocols/core/protocol.go +++ b/pkg/network/protocols/core/protocol.go @@ -155,8 +155,8 @@ func (p *Protocol) Shutdown() { p.shutdown.Trigger() } -func (n *Protocol) OnShutdown(callback func()) (unsubscribe func()) { - return n.shutdown.OnTrigger(callback) +func (p *Protocol) OnShutdown(callback func()) (unsubscribe func()) { + return p.shutdown.OnTrigger(callback) } func (p *Protocol) handlePacket(nbr peer.ID, packet proto.Message) (err error) { diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 603cf6525..9fdaaf8db 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -53,30 +53,6 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi p.APIProvider = NewAPIProvider(p) p.ChainManager = newChainManager(p) p.EngineManager = NewEngineManager(p) - - p.HookInitialized(func() { - unsubscribeFromNetworkEvents := lo.Batch( - p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), - p.Network.OnBlockReceived(p.BlocksProtocol.ProcessResponse), - p.Network.OnBlockRequestReceived(p.BlocksProtocol.ProcessRequest), - p.Network.OnCommitmentReceived(p.CommitmentsProtocol.ProcessResponse), - p.Network.OnCommitmentRequestReceived(p.CommitmentsProtocol.ProcessRequest), - p.Network.OnAttestationsReceived(p.AttestationsProtocol.ProcessResponse), - p.Network.OnAttestationsRequestReceived(p.AttestationsProtocol.ProcessRequest), - p.Network.OnWarpSyncResponseReceived(p.WarpSyncProtocol.ProcessResponse), - p.Network.OnWarpSyncRequestReceived(p.WarpSyncProtocol.ProcessRequest), - ) - - p.HookShutdown(func() { - unsubscribeFromNetworkEvents() - - p.BlocksProtocol.Shutdown() - p.CommitmentsProtocol.Shutdown() - p.AttestationsProtocol.Shutdown() - p.WarpSyncProtocol.Shutdown() - p.Network.Shutdown() - }) - }) }, (*Protocol).TriggerConstructed) } @@ -89,8 +65,28 @@ func (p *Protocol) IssueBlock(block *model.Block) error { func (p *Protocol) Run(ctx context.Context) error { p.TriggerInitialized() + unsubscribeFromNetworkEvents := lo.Batch( + p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), + p.Network.OnBlockReceived(p.BlocksProtocol.ProcessResponse), + p.Network.OnBlockRequestReceived(p.BlocksProtocol.ProcessRequest), + p.Network.OnCommitmentReceived(p.CommitmentsProtocol.ProcessResponse), + p.Network.OnCommitmentRequestReceived(p.CommitmentsProtocol.ProcessRequest), + p.Network.OnAttestationsReceived(p.AttestationsProtocol.ProcessResponse), + p.Network.OnAttestationsRequestReceived(p.AttestationsProtocol.ProcessRequest), + p.Network.OnWarpSyncResponseReceived(p.WarpSyncProtocol.ProcessResponse), + p.Network.OnWarpSyncRequestReceived(p.WarpSyncProtocol.ProcessRequest), + ) + <-ctx.Done() + unsubscribeFromNetworkEvents() + + p.BlocksProtocol.Shutdown() + p.CommitmentsProtocol.Shutdown() + p.AttestationsProtocol.Shutdown() + p.WarpSyncProtocol.Shutdown() + p.Network.Shutdown() + p.TriggerShutdown() p.TriggerStopped() From 9fc0104e72c68b3c0a97ba84ff2adc3f6d02e887 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 02:21:35 +0200 Subject: [PATCH 181/356] Fix: fixed bug --- pkg/protocol/protocol.go | 44 ++++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 20 deletions(-) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 9fdaaf8db..603cf6525 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -53,6 +53,30 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi p.APIProvider = NewAPIProvider(p) p.ChainManager = newChainManager(p) p.EngineManager = NewEngineManager(p) + + p.HookInitialized(func() { + unsubscribeFromNetworkEvents := lo.Batch( + p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), + p.Network.OnBlockReceived(p.BlocksProtocol.ProcessResponse), + p.Network.OnBlockRequestReceived(p.BlocksProtocol.ProcessRequest), + p.Network.OnCommitmentReceived(p.CommitmentsProtocol.ProcessResponse), + p.Network.OnCommitmentRequestReceived(p.CommitmentsProtocol.ProcessRequest), + p.Network.OnAttestationsReceived(p.AttestationsProtocol.ProcessResponse), + p.Network.OnAttestationsRequestReceived(p.AttestationsProtocol.ProcessRequest), + p.Network.OnWarpSyncResponseReceived(p.WarpSyncProtocol.ProcessResponse), + p.Network.OnWarpSyncRequestReceived(p.WarpSyncProtocol.ProcessRequest), + ) + + p.HookShutdown(func() { + unsubscribeFromNetworkEvents() + + p.BlocksProtocol.Shutdown() + p.CommitmentsProtocol.Shutdown() + p.AttestationsProtocol.Shutdown() + p.WarpSyncProtocol.Shutdown() + p.Network.Shutdown() + }) + }) }, (*Protocol).TriggerConstructed) } @@ -65,28 +89,8 @@ func (p *Protocol) IssueBlock(block *model.Block) error { func (p *Protocol) Run(ctx context.Context) error { p.TriggerInitialized() - unsubscribeFromNetworkEvents := lo.Batch( - p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), - p.Network.OnBlockReceived(p.BlocksProtocol.ProcessResponse), - p.Network.OnBlockRequestReceived(p.BlocksProtocol.ProcessRequest), - p.Network.OnCommitmentReceived(p.CommitmentsProtocol.ProcessResponse), - p.Network.OnCommitmentRequestReceived(p.CommitmentsProtocol.ProcessRequest), - p.Network.OnAttestationsReceived(p.AttestationsProtocol.ProcessResponse), - p.Network.OnAttestationsRequestReceived(p.AttestationsProtocol.ProcessRequest), - p.Network.OnWarpSyncResponseReceived(p.WarpSyncProtocol.ProcessResponse), - p.Network.OnWarpSyncRequestReceived(p.WarpSyncProtocol.ProcessRequest), - ) - <-ctx.Done() - unsubscribeFromNetworkEvents() - - p.BlocksProtocol.Shutdown() - p.CommitmentsProtocol.Shutdown() - p.AttestationsProtocol.Shutdown() - p.WarpSyncProtocol.Shutdown() - p.Network.Shutdown() - p.TriggerShutdown() p.TriggerStopped() From d8a1fd069596cb2d48d41b2054b1e767450803fb Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 02:26:54 +0200 Subject: [PATCH 182/356] Refactor: reduced change surface --- pkg/protocol/protocol.go | 4 ++-- .../sybilprotection/sybilprotectionv1/sybilprotection.go | 6 +++--- pkg/storage/prunable/prunable.go | 4 +++- 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 603cf6525..60e5524c9 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -55,7 +55,7 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi p.EngineManager = NewEngineManager(p) p.HookInitialized(func() { - unsubscribeFromNetworkEvents := lo.Batch( + unsubscribeFromNetwork := lo.Batch( p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), p.Network.OnBlockReceived(p.BlocksProtocol.ProcessResponse), p.Network.OnBlockRequestReceived(p.BlocksProtocol.ProcessRequest), @@ -68,7 +68,7 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi ) p.HookShutdown(func() { - unsubscribeFromNetworkEvents() + unsubscribeFromNetwork() p.BlocksProtocol.Shutdown() p.CommitmentsProtocol.Shutdown() diff --git a/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go b/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go index e9caedb4d..8d7b310e0 100644 --- a/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go +++ b/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go @@ -86,10 +86,10 @@ func NewProvider(opts ...options.Option[SybilProtection]) module.Provider[*engin panic("failed to load committee for last finalized slot to initialize sybil protection") } o.seatManager.ImportCommittee(currentEpoch, committee) - // TODO: REPLACE WITH LOG: fmt.Println("committee import", committee.TotalStake(), currentEpoch) + fmt.Println("committee import", committee.TotalStake(), currentEpoch) if nextCommittee, nextCommitteeExists := o.performanceTracker.LoadCommitteeForEpoch(currentEpoch + 1); nextCommitteeExists { o.seatManager.ImportCommittee(currentEpoch+1, nextCommittee) - // TODO: REPLACE WITH LOG: fmt.Println("next committee", nextCommittee.TotalStake(), currentEpoch+1) + fmt.Println("next committee", nextCommittee.TotalStake(), currentEpoch+1) } o.TriggerInitialized() @@ -136,7 +136,7 @@ func (o *SybilProtection) CommitSlot(slot iotago.SlotIndex) (committeeRoot, rewa } committee.SetReused() - // TODO: REPLACE WITH LOG: fmt.Println("reuse committee", currentEpoch, "stake", committee.TotalValidatorStake()) + fmt.Println("reuse committee", currentEpoch, "stake", committee.TotalValidatorStake()) o.seatManager.SetCommittee(nextEpoch, committee) o.events.CommitteeSelected.Trigger(committee, nextEpoch) diff --git a/pkg/storage/prunable/prunable.go b/pkg/storage/prunable/prunable.go index b6815240b..8ce6e166b 100644 --- a/pkg/storage/prunable/prunable.go +++ b/pkg/storage/prunable/prunable.go @@ -1,6 +1,8 @@ package prunable import ( + "fmt" + copydir "github.com/otiai10/copy" "github.com/iotaledger/hive.go/ierrors" @@ -166,7 +168,7 @@ func (p *Prunable) Rollback(targetSlot iotago.SlotIndex) error { return ierrors.Wrapf(err, "error while checking if committee for epoch %d should be rolled back", epoch) } - // TODO: REPLACE WITH TRACE LOG fmt.Println("rollback committee", shouldRollback, "epoch", epoch, "lastCommittedEpoch", lastCommittedEpoch, "targetSlotEpoch", targetSlotEpoch) + fmt.Println("rollback committee", shouldRollback, "epoch", epoch, "lastCommittedEpoch", lastCommittedEpoch, "targetSlotEpoch", targetSlotEpoch) if shouldRollback { if err := p.committee.DeleteEpoch(epoch); err != nil { return ierrors.Wrapf(err, "error while deleting committee for epoch %d", epoch) From 460829cb715e4a5161f4a00d7612ca3c8fd66df6 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 02:30:46 +0200 Subject: [PATCH 183/356] Refactor: reverted changes --- pkg/tests/protocol_engine_switching_test.go | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 3246beb70..5a07f18aa 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -36,7 +36,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { testsuite.WithSlotsPerEpochExponent(3), testsuite.WithGenesisTimestampOffset(1000*10), - testsuite.WithWaitFor(50*time.Second), + testsuite.WithWaitFor(15*time.Second), ) defer ts.Shutdown() @@ -362,17 +362,17 @@ func TestProtocol_EngineSwitching(t *testing.T) { // Here we need to let enough time pass for the nodes to sync up the candidate engines and switch them ts.AssertMainEngineSwitchedCount(1, nodesP2...) - // Make sure that nodes that switched their engine still have blocks with prefix P0 from before the fork. - // Those nodes should also have all the blocks from the target fork P1 and should not have blocks from P2. - // This is to make sure that the storage was copied correctly during engine switching. - ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - ts.AssertBlocksExist(ts.BlocksWithPrefix("P1"), true, ts.Nodes()...) - ts.AssertBlocksExist(ts.BlocksWithPrefix("P2"), false, ts.Nodes()...) - - ts.AssertEqualStoredCommitmentAtIndex(expectedCommittedSlotAfterPartitionMerge, ts.Nodes()...) + ctxP1Cancel() wg.Wait() - ctxP1Cancel() } + // Make sure that nodes that switched their engine still have blocks with prefix P0 from before the fork. + // Those nodes should also have all the blocks from the target fork P1 and should not have blocks from P2. + // This is to make sure that the storage was copied correctly during engine switching. + ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) + ts.AssertBlocksExist(ts.BlocksWithPrefix("P1"), true, ts.Nodes()...) + ts.AssertBlocksExist(ts.BlocksWithPrefix("P2"), false, ts.Nodes()...) + + ts.AssertEqualStoredCommitmentAtIndex(expectedCommittedSlotAfterPartitionMerge, ts.Nodes()...) } From e91ed60c56c44f43c54ce74474bf4a5829a4a9ca Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 02:31:22 +0200 Subject: [PATCH 184/356] Refactor: reverted changes --- pkg/tests/protocol_engine_switching_test.go | 1 - 1 file changed, 1 deletion(-) diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 5a07f18aa..2f0d6cea1 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -363,7 +363,6 @@ func TestProtocol_EngineSwitching(t *testing.T) { ts.AssertMainEngineSwitchedCount(1, nodesP2...) ctxP1Cancel() - wg.Wait() } From b5cc8f52b7f46bb0b1c1ee244b4308b809bc2667 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 02:36:59 +0200 Subject: [PATCH 185/356] Refactor: reverted more changes --- pkg/testsuite/mock/node.go | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 9b96342fc..5f5ee2520 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -118,9 +118,7 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto ) n.hookEvents() - if n.Name == "disabled" { - n.hookLogging(failOnBlockFiltered) - } + n.hookLogging(failOnBlockFiltered) n.blockIssuer = blockfactory.New(n.Protocol, blockfactory.WithTipSelectionTimeout(3*time.Second), blockfactory.WithTipSelectionRetryInterval(time.Millisecond*100)) @@ -315,8 +313,8 @@ func (n *Node) attachEngineLogs(failOnBlockFiltered bool, instance *engine.Engin fmt.Printf("%s > [%s] Consensus.BlockGadget.BlockConfirmed: %s %s\n", n.Name, engineName, block.ID(), block.ProtocolBlock().SlotCommitmentID) }) - events.SlotGadget.SlotFinalized.Hook(func(slotIndex iotago.SlotIndex) { - fmt.Printf("%s > [%s] Consensus.SlotGadget.SlotFinalized: %s\n", n.Name, engineName, slotIndex) + events.SlotGadget.SlotFinalized.Hook(func(slot iotago.SlotIndex) { + fmt.Printf("%s > [%s] Consensus.SlotGadget.SlotFinalized: %s\n", n.Name, engineName, slot) }) events.SeatManager.OnlineCommitteeSeatAdded.Hook(func(seat account.SeatIndex, accountID iotago.AccountID) { @@ -463,7 +461,7 @@ func (n *Node) IssueBlock(ctx context.Context, alias string, opts ...options.Opt require.NoErrorf(n.Testing, n.blockIssuer.IssueBlock(block.ModelBlock()), "%s > failed to issue block with alias %s", n.Name, alias) - // fmt.Printf("%s > Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", n.Name, block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot) + fmt.Printf("%s > Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", n.Name, block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot) return block } @@ -479,7 +477,7 @@ func (n *Node) IssueValidationBlock(ctx context.Context, alias string, opts ...o require.NoError(n.Testing, n.blockIssuer.IssueBlock(block.ModelBlock())) - //fmt.Printf("Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot) + fmt.Printf("Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot) return block } From b88389e1e34b9102d6d0011a6bf35fe741f62345 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 22:32:54 +0200 Subject: [PATCH 186/356] Feat: added support for ChainSwitchingThreshold --- pkg/protocol/chain_manager.go | 6 +++++- pkg/protocol/options.go | 5 +++-- pkg/tests/protocol_engine_switching_test.go | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 8458a1cf5..3cb56b980 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -173,7 +173,11 @@ func (c *ChainManager) initChainSwitching() { }) c.HeaviestVerifiedChain.OnUpdate(func(_, heaviestVerifiedChain *Chain) { - c.MainChain.Set(heaviestVerifiedChain) + heaviestVerifiedChain.LatestVerifiedCommitment.OnUpdate(func(_, latestVerifiedCommitment *Commitment) { + if forkingPoint := heaviestVerifiedChain.ForkingPoint.Get(); latestVerifiedCommitment != nil && forkingPoint != nil && latestVerifiedCommitment.ID().Slot()-forkingPoint.ID().Slot() > c.protocol.options.ChainSwitchingThreshold { + c.MainChain.Set(heaviestVerifiedChain) + } + }) }) } diff --git a/pkg/protocol/options.go b/pkg/protocol/options.go index f461e79fc..245d9338a 100644 --- a/pkg/protocol/options.go +++ b/pkg/protocol/options.go @@ -40,13 +40,14 @@ import ( "github.com/iotaledger/iota-core/pkg/retainer" retainer1 "github.com/iotaledger/iota-core/pkg/retainer/retainer" "github.com/iotaledger/iota-core/pkg/storage" + iotago "github.com/iotaledger/iota.go/v4" ) type Options struct { Logger *logger.Logger BaseDirectory string SnapshotPath string - ChainSwitchingThreshold int + ChainSwitchingThreshold iotago.SlotIndex EngineOptions []options.Option[engine.Engine] StorageOptions []options.Option[storage.Storage] @@ -107,7 +108,7 @@ func WithSnapshotPath(snapshot string) options.Option[Protocol] { } } -func WithChainSwitchingThreshold(threshold int) options.Option[Protocol] { +func WithChainSwitchingThreshold(threshold iotago.SlotIndex) options.Option[Protocol] { return func(p *Protocol) { p.options.ChainSwitchingThreshold = threshold } diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 2f0d6cea1..45dea8f0c 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -50,7 +50,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { node7 := ts.AddValidatorNode("node7") node8 := ts.AddNode("node8") - const expectedCommittedSlotAfterPartitionMerge = 19 + const expectedCommittedSlotAfterPartitionMerge = 18 nodesP1 := []*mock.Node{node0, node1, node2, node3, node4, node5} nodesP2 := []*mock.Node{node6, node7, node8} From 3c17e450832aa6c92bcdebb22f0501470083be14 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 23:00:00 +0200 Subject: [PATCH 187/356] Feat: added variables to track down nil pointer exception --- pkg/protocol/engine/engine.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index a9fbbf9bc..e4337ac65 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -298,7 +298,10 @@ func (e *Engine) APIForEpoch(epoch iotago.EpochIndex) iotago.API { } func (e *Engine) APIForVersion(version iotago.Version) (iotago.API, error) { - return e.Storage.Settings().APIProvider().APIForVersion(version) + settings := e.Storage.Settings() + apiProvider := settings.APIProvider() + + return apiProvider.APIForVersion(version) } func (e *Engine) LatestAPI() iotago.API { From 3121333030e33af1b128fa49242cc48e5ef32e92 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 8 Oct 2023 23:35:15 +0200 Subject: [PATCH 188/356] Feat: more checks --- pkg/protocol/engine/engine.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index e4337ac65..63255546e 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -298,7 +298,8 @@ func (e *Engine) APIForEpoch(epoch iotago.EpochIndex) iotago.API { } func (e *Engine) APIForVersion(version iotago.Version) (iotago.API, error) { - settings := e.Storage.Settings() + storageInstance := e.Storage + settings := storageInstance.Settings() apiProvider := settings.APIProvider() return apiProvider.APIForVersion(version) From aa25235140aba0cf17551adb63d66af258308e8f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 9 Oct 2023 00:08:50 +0200 Subject: [PATCH 189/356] Feat: added check to ApiForVersion --- pkg/protocol/api_provider.go | 11 +++++++++-- pkg/protocol/engine/engine.go | 6 +----- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/pkg/protocol/api_provider.go b/pkg/protocol/api_provider.go index 6b81aaecf..7f3a2317c 100644 --- a/pkg/protocol/api_provider.go +++ b/pkg/protocol/api_provider.go @@ -1,6 +1,9 @@ package protocol -import iotago "github.com/iotaledger/iota.go/v4" +import ( + "github.com/iotaledger/hive.go/ierrors" + iotago "github.com/iotaledger/iota.go/v4" +) // APIProvider is a protocol component that exposes the methods to comply with the iotago.APIProvider interface. type APIProvider struct { @@ -15,7 +18,11 @@ func NewAPIProvider(protocol *Protocol) *APIProvider { // APIForVersion returns the API for the given version. func (a *APIProvider) APIForVersion(version iotago.Version) (api iotago.API, err error) { - return a.MainEngineInstance().APIForVersion(version) + if mainEngineInstance := a.MainEngineInstance(); mainEngineInstance != nil { + return a.MainEngineInstance().APIForVersion(version) + } + + return nil, ierrors.New("no engine instance available") } // APIForSlot returns the API for the given slot. diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index 63255546e..a9fbbf9bc 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -298,11 +298,7 @@ func (e *Engine) APIForEpoch(epoch iotago.EpochIndex) iotago.API { } func (e *Engine) APIForVersion(version iotago.Version) (iotago.API, error) { - storageInstance := e.Storage - settings := storageInstance.Settings() - apiProvider := settings.APIProvider() - - return apiProvider.APIForVersion(version) + return e.Storage.Settings().APIProvider().APIForVersion(version) } func (e *Engine) LatestAPI() iotago.API { From 1b00b72e343d70a4bf1e8a3ac9bad78941f96529 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 9 Oct 2023 01:00:30 +0200 Subject: [PATCH 190/356] Refactor: re-enabled disabled test --- pkg/tests/protocol_engine_rollback_test.go | 1541 ++++++++++---------- 1 file changed, 758 insertions(+), 783 deletions(-) diff --git a/pkg/tests/protocol_engine_rollback_test.go b/pkg/tests/protocol_engine_rollback_test.go index a6f2c2840..b472f546a 100644 --- a/pkg/tests/protocol_engine_rollback_test.go +++ b/pkg/tests/protocol_engine_rollback_test.go @@ -1,785 +1,760 @@ package tests -//import ( -// "fmt" -// "testing" -// "time" -// -// "github.com/stretchr/testify/require" -// -// "github.com/iotaledger/hive.go/core/eventticker" -// "github.com/iotaledger/hive.go/lo" -// "github.com/iotaledger/hive.go/runtime/module" -// "github.com/iotaledger/hive.go/runtime/options" -// "github.com/iotaledger/iota-core/pkg/core/account" -// "github.com/iotaledger/iota-core/pkg/protocol" -// "github.com/iotaledger/iota-core/pkg/protocol/chainmanager" -// "github.com/iotaledger/iota-core/pkg/protocol/engine" -// "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" -// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager" -// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager/mock" -// "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" -// "github.com/iotaledger/iota-core/pkg/storage" -// "github.com/iotaledger/iota-core/pkg/testsuite" -// mock2 "github.com/iotaledger/iota-core/pkg/testsuite/mock" -// iotago "github.com/iotaledger/iota.go/v4" -//) -// -//func TestProtocol_EngineRollbackFinalization(t *testing.T) { -// ts := testsuite.NewTestSuite(t, -// testsuite.WithLivenessThresholdLowerBound(10), -// testsuite.WithLivenessThresholdUpperBound(10), -// testsuite.WithMinCommittableAge(2), -// testsuite.WithMaxCommittableAge(3), -// testsuite.WithEpochNearingThreshold(5), -// testsuite.WithSlotsPerEpochExponent(3), -// testsuite.WithGenesisTimestampOffset(1000*10), -// -// testsuite.WithWaitFor(15*time.Second), -// ) -// defer ts.Shutdown() -// -// node0 := ts.AddValidatorNode("node0") -// node1 := ts.AddValidatorNode("node1") -// node2 := ts.AddValidatorNode("node2") -// node3 := ts.AddValidatorNode("node3") -// -// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { -// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { -// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) -// -// for _, node := range []*mock2.Node{node0, node1, node2, node3} { -// if node.Validator { -// poa.AddAccount(node.AccountID, node.Name) -// } -// } -// poa.SetOnline("node0", "node1", "node2", "node3") -// -// return poa -// }) -// } -// -// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) -// for _, node := range ts.Nodes() { -// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ -// protocol.WithChainManagerOptions( -// chainmanager.WithCommitmentRequesterOptions( -// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), -// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), -// ), -// ), -// protocol.WithSybilProtectionProvider( -// sybilprotectionv1.NewProvider( -// sybilprotectionv1.WithSeatManagerProvider( -// poaProvider(), -// ), -// ), -// ), -// protocol.WithEngineOptions( -// engine.WithBlockRequesterOptions( -// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), -// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), -// ), -// ), -// protocol.WithStorageOptions( -// storage.WithPruningDelay(20), -// ), -// } -// } -// -// ts.Run(false, nodeOptions) -// -// // Verify that nodes have the expected states. -// -// expectedCommittee := []iotago.AccountID{ -// node0.AccountID, -// node1.AccountID, -// node2.AccountID, -// node3.AccountID, -// } -// expectedOnlineCommitteeFull := []account.SeatIndex{ -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), -// } -// -// for _, node := range ts.Nodes() { -// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") -// } -// -// { -// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) -// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithSnapshotImported(true), -// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), -// testsuite.WithLatestCommitment(genesisCommitment), -// testsuite.WithLatestFinalizedSlot(0), -// testsuite.WithChainID(genesisCommitment.MustID()), -// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), -// -// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), -// testsuite.WithEvictedSlot(0), -// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), -// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), -// ) -// } -// -// // Issue up to slot 11 - just before committee selection for the next epoch. -// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. -// { -// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) -// -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithLatestFinalizedSlot(8), -// testsuite.WithLatestCommitmentSlotIndex(9), -// testsuite.WithEqualStoredCommitmentAtIndex(9), -// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 -// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), -// testsuite.WithEvictedSlot(9), -// ) -// -// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { -// var attestationBlocks []*blocks.Block -// for _, node := range ts.Nodes() { -// if node.Validator { -// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) -// } -// } -// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) -// } -// -// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) -// } -// -// { -// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", ts.Nodes(), true, nil) -// -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithLatestFinalizedSlot(13), -// testsuite.WithLatestCommitmentSlotIndex(14), -// testsuite.WithEqualStoredCommitmentAtIndex(14), -// testsuite.WithLatestCommitmentCumulativeWeight(48), // 7 for each slot starting from 4 -// testsuite.WithSybilProtectionCommittee(14, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), -// testsuite.WithEvictedSlot(14), -// ) -// -// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) -// } -// -// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) -// require.NoError(t, err) -// -// // Assert state of the forked engine after rollback. -// { -// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Slot()) -// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestFinalizedSlot()) -// require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) -// -// for epoch := 0; epoch <= 2; epoch++ { -// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) -// require.NoError(t, err) -// require.Len(t, committeeEpoch.IDs(), 4) -// } -// -// // Commmittee for the future epoch does not exist. -// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) -// require.NoError(t, err) -// require.Nil(t, committeeEpoch3) -// -// for slot := 1; slot <= 13; slot++ { -// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) -// require.NoError(t, err) -// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) -// require.NoError(t, err) -// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) -// } -// -// // Commitment for the first slot after the fork does not exist. -// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) -// require.Error(t, err) -// } -//} -// -//func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { -// ts := testsuite.NewTestSuite(t, -// testsuite.WithLivenessThresholdLowerBound(10), -// testsuite.WithLivenessThresholdUpperBound(10), -// testsuite.WithMinCommittableAge(2), -// testsuite.WithMaxCommittableAge(3), -// testsuite.WithEpochNearingThreshold(5), -// testsuite.WithSlotsPerEpochExponent(3), -// testsuite.WithGenesisTimestampOffset(1000*10), -// -// testsuite.WithWaitFor(15*time.Second), -// ) -// defer ts.Shutdown() -// -// node0 := ts.AddValidatorNode("node0") -// node1 := ts.AddValidatorNode("node1") -// node2 := ts.AddValidatorNode("node2") -// node3 := ts.AddValidatorNode("node3") -// -// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { -// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { -// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) -// -// for _, node := range []*mock2.Node{node0, node1, node2, node3} { -// if node.Validator { -// poa.AddAccount(node.AccountID, node.Name) -// } -// } -// poa.SetOnline("node0", "node1", "node2", "node3") -// -// return poa -// }) -// } -// -// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) -// for _, node := range ts.Nodes() { -// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ -// protocol.WithChainManagerOptions( -// chainmanager.WithCommitmentRequesterOptions( -// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), -// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), -// ), -// ), -// protocol.WithSybilProtectionProvider( -// sybilprotectionv1.NewProvider( -// sybilprotectionv1.WithSeatManagerProvider( -// poaProvider(), -// ), -// ), -// ), -// protocol.WithEngineOptions( -// engine.WithBlockRequesterOptions( -// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), -// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), -// ), -// ), -// protocol.WithStorageOptions( -// storage.WithPruningDelay(20), -// ), -// } -// } -// -// ts.Run(false, nodeOptions) -// -// // Verify that nodes have the expected states. -// -// expectedCommittee := []iotago.AccountID{ -// node0.AccountID, -// node1.AccountID, -// node2.AccountID, -// node3.AccountID, -// } -// expectedOnlineCommitteeFull := []account.SeatIndex{ -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), -// } -// -// expectedOnlineCommitteeHalf := []account.SeatIndex{ -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), -// } -// -// for _, node := range ts.Nodes() { -// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") -// } -// -// { -// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) -// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithSnapshotImported(true), -// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), -// testsuite.WithLatestCommitment(genesisCommitment), -// testsuite.WithLatestFinalizedSlot(0), -// testsuite.WithChainID(genesisCommitment.MustID()), -// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), -// -// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), -// testsuite.WithEvictedSlot(0), -// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), -// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), -// ) -// } -// -// // Issue up to slot 11 - just before committee selection for the next epoch. -// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. -// { -// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) -// -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithLatestFinalizedSlot(8), -// testsuite.WithLatestCommitmentSlotIndex(9), -// testsuite.WithEqualStoredCommitmentAtIndex(9), -// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 -// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), -// testsuite.WithEvictedSlot(9), -// ) -// -// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { -// var attestationBlocks []*blocks.Block -// for _, node := range ts.Nodes() { -// if node.Validator { -// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) -// } -// } -// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) -// } -// -// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) -// } -// -// // Update online committee. -// for _, node := range ts.Nodes() { -// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) -// manualPOA.SetOnline("node0", "node1") -// manualPOA.SetOffline("node2", "node3") -// } -// -// { -// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) -// -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithLatestFinalizedSlot(8), -// testsuite.WithLatestCommitmentSlotIndex(14), -// testsuite.WithEqualStoredCommitmentAtIndex(14), -// testsuite.WithLatestCommitmentCumulativeWeight(44), // 7 for each slot starting from 4 -// testsuite.WithSybilProtectionCommittee(14, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), -// testsuite.WithEvictedSlot(14), -// ) -// -// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) -// } -// -// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) -// require.NoError(t, err) -// -// // Assert state of the forked engine after rollback. -// { -// require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Slot()) -// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) -// require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) -// -// for epoch := 0; epoch <= 2; epoch++ { -// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) -// require.NoError(t, err) -// require.Len(t, committeeEpoch.IDs(), 4) -// } -// -// // Commmittee for the future epoch does not exist. -// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) -// require.NoError(t, err) -// require.Nil(t, committeeEpoch3) -// -// for slot := 1; slot <= 13; slot++ { -// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) -// require.NoError(t, err) -// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) -// require.NoError(t, err) -// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) -// } -// -// // Commitment for the first slot after the fork does not exist. -// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) -// require.Error(t, err) -// } -//} -// -//func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { -// ts := testsuite.NewTestSuite(t, -// testsuite.WithLivenessThresholdLowerBound(10), -// testsuite.WithLivenessThresholdUpperBound(10), -// testsuite.WithMinCommittableAge(2), -// testsuite.WithMaxCommittableAge(3), -// testsuite.WithEpochNearingThreshold(5), -// testsuite.WithSlotsPerEpochExponent(3), -// testsuite.WithGenesisTimestampOffset(1000*10), -// -// testsuite.WithWaitFor(15*time.Second), -// ) -// defer ts.Shutdown() -// -// node0 := ts.AddValidatorNode("node0") -// node1 := ts.AddValidatorNode("node1") -// node2 := ts.AddValidatorNode("node2") -// node3 := ts.AddValidatorNode("node3") -// -// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { -// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { -// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) -// -// for _, node := range []*mock2.Node{node0, node1, node2, node3} { -// if node.Validator { -// poa.AddAccount(node.AccountID, node.Name) -// } -// } -// poa.SetOnline("node0", "node1", "node2", "node3") -// -// return poa -// }) -// } -// -// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) -// for _, node := range ts.Nodes() { -// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ -// protocol.WithChainManagerOptions( -// chainmanager.WithCommitmentRequesterOptions( -// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), -// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), -// ), -// ), -// protocol.WithSybilProtectionProvider( -// sybilprotectionv1.NewProvider( -// sybilprotectionv1.WithSeatManagerProvider( -// poaProvider(), -// ), -// ), -// ), -// protocol.WithEngineOptions( -// engine.WithBlockRequesterOptions( -// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), -// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), -// ), -// ), -// protocol.WithStorageOptions( -// storage.WithPruningDelay(20), -// ), -// } -// } -// -// ts.Run(false, nodeOptions) -// -// // Verify that nodes have the expected states. -// -// expectedCommittee := []iotago.AccountID{ -// node0.AccountID, -// node1.AccountID, -// node2.AccountID, -// node3.AccountID, -// } -// expectedOnlineCommitteeFull := []account.SeatIndex{ -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), -// } -// -// expectedOnlineCommitteeHalf := []account.SeatIndex{ -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), -// } -// -// for _, node := range ts.Nodes() { -// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") -// } -// -// { -// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) -// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithSnapshotImported(true), -// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), -// testsuite.WithLatestCommitment(genesisCommitment), -// testsuite.WithLatestFinalizedSlot(0), -// testsuite.WithChainID(genesisCommitment.MustID()), -// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), -// -// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), -// testsuite.WithEvictedSlot(0), -// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), -// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), -// ) -// } -// -// // Issue up to slot 11 - just before committee selection for the next epoch. -// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. -// { -// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) -// -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithLatestFinalizedSlot(8), -// testsuite.WithLatestCommitmentSlotIndex(9), -// testsuite.WithEqualStoredCommitmentAtIndex(9), -// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 -// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), -// testsuite.WithEvictedSlot(9), -// ) -// -// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { -// var attestationBlocks []*blocks.Block -// for _, node := range ts.Nodes() { -// if node.Validator { -// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) -// } -// } -// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) -// } -// -// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) -// } -// -// // Update online committee. -// for _, node := range ts.Nodes() { -// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) -// manualPOA.SetOnline("node0", "node1") -// manualPOA.SetOffline("node2", "node3") -// } -// -// { -// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16, 17, 18, 19}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) -// -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithLatestFinalizedSlot(8), -// testsuite.WithLatestCommitmentSlotIndex(17), -// testsuite.WithEqualStoredCommitmentAtIndex(17), -// testsuite.WithLatestCommitmentCumulativeWeight(50), // 7 for each slot starting from 4 -// testsuite.WithSybilProtectionCommittee(17, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), -// testsuite.WithEvictedSlot(17), -// ) -// -// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) -// } -// -// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(15) -// require.NoError(t, err) -// -// // Assert state of the forked engine after rollback. -// { -// require.EqualValues(t, 15, newEngine.Storage.Settings().LatestCommitment().Slot()) -// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) -// require.EqualValues(t, 15, newEngine.EvictionState.LastEvictedSlot()) -// -// for epoch := 0; epoch <= 2; epoch++ { -// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) -// require.NoError(t, err) -// require.Len(t, committeeEpoch.IDs(), 4) -// } -// -// // Commmittee for the future epoch does not exist. -// committeeEpoch3, err := newEngine.Storage.Committee().Load(3) -// require.NoError(t, err) -// require.Nil(t, committeeEpoch3) -// -// for slot := 1; slot <= 15; slot++ { -// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) -// require.NoError(t, err) -// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) -// require.NoError(t, err) -// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) -// } -// -// // Commitment for the first slot after the fork does not exist. -// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(16)) -// require.Error(t, err) -// } -//} -// -//func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T) { -// ts := testsuite.NewTestSuite(t, -// testsuite.WithLivenessThresholdLowerBound(10), -// testsuite.WithLivenessThresholdUpperBound(10), -// testsuite.WithMinCommittableAge(2), -// testsuite.WithMaxCommittableAge(3), -// testsuite.WithEpochNearingThreshold(5), -// testsuite.WithSlotsPerEpochExponent(3), -// testsuite.WithGenesisTimestampOffset(1000*10), -// -// testsuite.WithWaitFor(15*time.Second), -// ) -// defer ts.Shutdown() -// -// node0 := ts.AddValidatorNode("node0") -// node1 := ts.AddValidatorNode("node1") -// node2 := ts.AddValidatorNode("node2") -// node3 := ts.AddValidatorNode("node3") -// -// poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { -// return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { -// poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) -// -// for _, node := range []*mock2.Node{node0, node1, node2, node3} { -// if node.Validator { -// poa.AddAccount(node.AccountID, node.Name) -// } -// } -// poa.SetOnline("node0", "node1", "node2", "node3") -// -// return poa -// }) -// } -// -// nodeOptions := make(map[string][]options.Option[protocol.Protocol]) -// for _, node := range ts.Nodes() { -// nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ -// protocol.WithChainManagerOptions( -// chainmanager.WithCommitmentRequesterOptions( -// eventticker.RetryInterval[iotago.SlotIndex, iotago.CommitmentID](1*time.Second), -// eventticker.RetryJitter[iotago.SlotIndex, iotago.CommitmentID](500*time.Millisecond), -// ), -// ), -// protocol.WithSybilProtectionProvider( -// sybilprotectionv1.NewProvider( -// sybilprotectionv1.WithSeatManagerProvider( -// poaProvider(), -// ), -// ), -// ), -// protocol.WithEngineOptions( -// engine.WithBlockRequesterOptions( -// eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), -// eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), -// ), -// ), -// protocol.WithStorageOptions( -// storage.WithPruningDelay(20), -// ), -// } -// } -// -// ts.Run(false, nodeOptions) -// -// // Verify that nodes have the expected states. -// -// expectedCommittee := []iotago.AccountID{ -// node0.AccountID, -// node1.AccountID, -// node2.AccountID, -// node3.AccountID, -// } -// expectedOnlineCommitteeFull := []account.SeatIndex{ -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), -// } -// -// expectedOnlineCommitteeHalf := []account.SeatIndex{ -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), -// lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), -// } -// -// for _, node := range ts.Nodes() { -// node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") -// } -// -// { -// genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) -// genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithSnapshotImported(true), -// testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), -// testsuite.WithLatestCommitment(genesisCommitment), -// testsuite.WithLatestFinalizedSlot(0), -// testsuite.WithChainID(genesisCommitment.MustID()), -// testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), -// -// testsuite.WithSybilProtectionCommittee(0, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), -// testsuite.WithEvictedSlot(0), -// testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), -// testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), -// ) -// } -// -// // Issue up to slot 11 - just before committee selection for the next epoch. -// // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. -// { -// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) -// -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithLatestFinalizedSlot(8), -// testsuite.WithLatestCommitmentSlotIndex(9), -// testsuite.WithEqualStoredCommitmentAtIndex(9), -// testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 -// testsuite.WithSybilProtectionCommittee(9, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), -// testsuite.WithEvictedSlot(9), -// ) -// -// for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { -// var attestationBlocks []*blocks.Block -// for _, node := range ts.Nodes() { -// if node.Validator { -// attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) -// } -// } -// ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) -// } -// -// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) -// } -// -// // Update online committee. -// for _, node := range ts.Nodes() { -// manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) -// manualPOA.SetOnline("node0", "node1") -// manualPOA.SetOffline("node2", "node3") -// } -// -// { -// ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) -// -// ts.AssertNodeState(ts.Nodes(), -// testsuite.WithLatestFinalizedSlot(8), -// testsuite.WithLatestCommitmentSlotIndex(13), -// testsuite.WithEqualStoredCommitmentAtIndex(13), -// testsuite.WithLatestCommitmentCumulativeWeight(42), // 7 for each slot starting from 4 -// testsuite.WithSybilProtectionCommittee(13, expectedCommittee), -// testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), -// testsuite.WithEvictedSlot(13), -// ) -// -// ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) -// } -// -// newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(9) -// require.NoError(t, err) -// -// // Assert state of the forked engine after rollback. -// { -// require.EqualValues(t, 9, newEngine.Storage.Settings().LatestCommitment().Slot()) -// require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) -// require.EqualValues(t, 9, newEngine.EvictionState.LastEvictedSlot()) -// -// for epoch := 0; epoch <= 1; epoch++ { -// committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) -// require.NoError(t, err) -// require.Len(t, committeeEpoch.IDs(), 4) -// } -// -// // Commmittee for the future epoch does not exist. -// committeeEpoch2, err := newEngine.Storage.Committee().Load(2) -// require.NoError(t, err) -// require.Nil(t, committeeEpoch2) -// -// for slot := 1; slot <= 9; slot++ { -// copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) -// require.NoError(t, err) -// sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) -// require.NoError(t, err) -// require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) -// } -// -// // Commitment for the first slot after the fork does not exist. -// _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(10)) -// require.Error(t, err) -// } -//} -// -//// TODO: test fork before point of no return (slot 12) -//// TODO: test fork on last slot of an epoch (slot 15) +import ( + "fmt" + "testing" + "time" + + "github.com/stretchr/testify/require" + + "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/runtime/module" + "github.com/iotaledger/hive.go/runtime/options" + "github.com/iotaledger/iota-core/pkg/core/account" + "github.com/iotaledger/iota-core/pkg/protocol" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/seatmanager/mock" + "github.com/iotaledger/iota-core/pkg/protocol/sybilprotection/sybilprotectionv1" + "github.com/iotaledger/iota-core/pkg/storage" + "github.com/iotaledger/iota-core/pkg/testsuite" + mock2 "github.com/iotaledger/iota-core/pkg/testsuite/mock" + iotago "github.com/iotaledger/iota.go/v4" +) + +func TestProtocol_EngineRollbackFinalization(t *testing.T) { + ts := testsuite.NewTestSuite(t, + testsuite.WithLivenessThresholdLowerBound(10), + testsuite.WithLivenessThresholdUpperBound(10), + testsuite.WithMinCommittableAge(2), + testsuite.WithMaxCommittableAge(3), + testsuite.WithEpochNearingThreshold(5), + testsuite.WithSlotsPerEpochExponent(3), + testsuite.WithGenesisTimestampOffset(1000*10), + + testsuite.WithWaitFor(15*time.Second), + ) + defer ts.Shutdown() + + node0 := ts.AddValidatorNode("node0") + node1 := ts.AddValidatorNode("node1") + node2 := ts.AddValidatorNode("node2") + node3 := ts.AddValidatorNode("node3") + + poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { + return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { + poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) + + for _, node := range []*mock2.Node{node0, node1, node2, node3} { + if node.Validator { + poa.AddAccount(node.AccountID, node.Name) + } + } + poa.SetOnline("node0", "node1", "node2", "node3") + + return poa + }) + } + + nodeOptions := make(map[string][]options.Option[protocol.Protocol]) + for _, node := range ts.Nodes() { + nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ + protocol.WithSybilProtectionProvider( + sybilprotectionv1.NewProvider( + sybilprotectionv1.WithSeatManagerProvider( + poaProvider(), + ), + ), + ), + protocol.WithEngineOptions( + engine.WithBlockRequesterOptions( + eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), + eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), + ), + ), + protocol.WithStorageOptions( + storage.WithPruningDelay(20), + ), + } + } + + ts.Run(false, nodeOptions) + + // Verify that nodes have the expected states. + + expectedCommittee := []iotago.AccountID{ + node0.AccountID, + node1.AccountID, + node2.AccountID, + node3.AccountID, + } + expectedOnlineCommitteeFull := []account.SeatIndex{ + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), + } + + for _, node := range ts.Nodes() { + node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + } + + { + genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) + genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost + ts.AssertNodeState(ts.Nodes(), + testsuite.WithSnapshotImported(true), + testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), + testsuite.WithLatestCommitment(genesisCommitment), + testsuite.WithLatestFinalizedSlot(0), + testsuite.WithChainID(genesisCommitment.MustID()), + testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), + + testsuite.WithSybilProtectionCommittee(0, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), + testsuite.WithEvictedSlot(0), + testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), + testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), + ) + } + + // Issue up to slot 11 - just before committee selection for the next epoch. + // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. + { + ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) + + ts.AssertNodeState(ts.Nodes(), + testsuite.WithLatestFinalizedSlot(8), + testsuite.WithLatestCommitmentSlotIndex(9), + testsuite.WithEqualStoredCommitmentAtIndex(9), + testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 + testsuite.WithSybilProtectionCommittee(9, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), + testsuite.WithEvictedSlot(9), + ) + + for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { + var attestationBlocks []*blocks.Block + for _, node := range ts.Nodes() { + if node.Validator { + attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) + } + } + ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) + } + + ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) + } + + { + ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", ts.Nodes(), true, nil) + + ts.AssertNodeState(ts.Nodes(), + testsuite.WithLatestFinalizedSlot(13), + testsuite.WithLatestCommitmentSlotIndex(14), + testsuite.WithEqualStoredCommitmentAtIndex(14), + testsuite.WithLatestCommitmentCumulativeWeight(48), // 7 for each slot starting from 4 + testsuite.WithSybilProtectionCommittee(14, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), + testsuite.WithEvictedSlot(14), + ) + + ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) + } + + newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) + require.NoError(t, err) + + // Assert state of the forked engine after rollback. + { + require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Slot()) + require.EqualValues(t, 13, newEngine.Storage.Settings().LatestFinalizedSlot()) + require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) + + for epoch := 0; epoch <= 2; epoch++ { + committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) + require.NoError(t, err) + require.Len(t, committeeEpoch.IDs(), 4) + } + + // Commmittee for the future epoch does not exist. + committeeEpoch3, err := newEngine.Storage.Committee().Load(3) + require.NoError(t, err) + require.Nil(t, committeeEpoch3) + + for slot := 1; slot <= 13; slot++ { + copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) + require.NoError(t, err) + sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) + require.NoError(t, err) + require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) + } + + // Commitment for the first slot after the fork does not exist. + _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) + require.Error(t, err) + } +} + +func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { + ts := testsuite.NewTestSuite(t, + testsuite.WithLivenessThresholdLowerBound(10), + testsuite.WithLivenessThresholdUpperBound(10), + testsuite.WithMinCommittableAge(2), + testsuite.WithMaxCommittableAge(3), + testsuite.WithEpochNearingThreshold(5), + testsuite.WithSlotsPerEpochExponent(3), + testsuite.WithGenesisTimestampOffset(1000*10), + + testsuite.WithWaitFor(15*time.Second), + ) + defer ts.Shutdown() + + node0 := ts.AddValidatorNode("node0") + node1 := ts.AddValidatorNode("node1") + node2 := ts.AddValidatorNode("node2") + node3 := ts.AddValidatorNode("node3") + + poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { + return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { + poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) + + for _, node := range []*mock2.Node{node0, node1, node2, node3} { + if node.Validator { + poa.AddAccount(node.AccountID, node.Name) + } + } + poa.SetOnline("node0", "node1", "node2", "node3") + + return poa + }) + } + + nodeOptions := make(map[string][]options.Option[protocol.Protocol]) + for _, node := range ts.Nodes() { + nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ + protocol.WithSybilProtectionProvider( + sybilprotectionv1.NewProvider( + sybilprotectionv1.WithSeatManagerProvider( + poaProvider(), + ), + ), + ), + protocol.WithEngineOptions( + engine.WithBlockRequesterOptions( + eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), + eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), + ), + ), + protocol.WithStorageOptions( + storage.WithPruningDelay(20), + ), + } + } + + ts.Run(false, nodeOptions) + + // Verify that nodes have the expected states. + + expectedCommittee := []iotago.AccountID{ + node0.AccountID, + node1.AccountID, + node2.AccountID, + node3.AccountID, + } + expectedOnlineCommitteeFull := []account.SeatIndex{ + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), + } + + expectedOnlineCommitteeHalf := []account.SeatIndex{ + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), + } + + for _, node := range ts.Nodes() { + node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + } + + { + genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) + genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost + ts.AssertNodeState(ts.Nodes(), + testsuite.WithSnapshotImported(true), + testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), + testsuite.WithLatestCommitment(genesisCommitment), + testsuite.WithLatestFinalizedSlot(0), + testsuite.WithChainID(genesisCommitment.MustID()), + testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), + + testsuite.WithSybilProtectionCommittee(0, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), + testsuite.WithEvictedSlot(0), + testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), + testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), + ) + } + + // Issue up to slot 11 - just before committee selection for the next epoch. + // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. + { + ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) + + ts.AssertNodeState(ts.Nodes(), + testsuite.WithLatestFinalizedSlot(8), + testsuite.WithLatestCommitmentSlotIndex(9), + testsuite.WithEqualStoredCommitmentAtIndex(9), + testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 + testsuite.WithSybilProtectionCommittee(9, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), + testsuite.WithEvictedSlot(9), + ) + + for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { + var attestationBlocks []*blocks.Block + for _, node := range ts.Nodes() { + if node.Validator { + attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) + } + } + ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) + } + + ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) + } + + // Update online committee. + for _, node := range ts.Nodes() { + manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) + manualPOA.SetOnline("node0", "node1") + manualPOA.SetOffline("node2", "node3") + } + + { + ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) + + ts.AssertNodeState(ts.Nodes(), + testsuite.WithLatestFinalizedSlot(8), + testsuite.WithLatestCommitmentSlotIndex(14), + testsuite.WithEqualStoredCommitmentAtIndex(14), + testsuite.WithLatestCommitmentCumulativeWeight(44), // 7 for each slot starting from 4 + testsuite.WithSybilProtectionCommittee(14, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), + testsuite.WithEvictedSlot(14), + ) + + ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) + } + + newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) + require.NoError(t, err) + + // Assert state of the forked engine after rollback. + { + require.EqualValues(t, 13, newEngine.Storage.Settings().LatestCommitment().Slot()) + require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) + require.EqualValues(t, 13, newEngine.EvictionState.LastEvictedSlot()) + + for epoch := 0; epoch <= 2; epoch++ { + committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) + require.NoError(t, err) + require.Len(t, committeeEpoch.IDs(), 4) + } + + // Commmittee for the future epoch does not exist. + committeeEpoch3, err := newEngine.Storage.Committee().Load(3) + require.NoError(t, err) + require.Nil(t, committeeEpoch3) + + for slot := 1; slot <= 13; slot++ { + copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) + require.NoError(t, err) + sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) + require.NoError(t, err) + require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) + } + + // Commitment for the first slot after the fork does not exist. + _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(14)) + require.Error(t, err) + } +} + +func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { + ts := testsuite.NewTestSuite(t, + testsuite.WithLivenessThresholdLowerBound(10), + testsuite.WithLivenessThresholdUpperBound(10), + testsuite.WithMinCommittableAge(2), + testsuite.WithMaxCommittableAge(3), + testsuite.WithEpochNearingThreshold(5), + testsuite.WithSlotsPerEpochExponent(3), + testsuite.WithGenesisTimestampOffset(1000*10), + + testsuite.WithWaitFor(15*time.Second), + ) + defer ts.Shutdown() + + node0 := ts.AddValidatorNode("node0") + node1 := ts.AddValidatorNode("node1") + node2 := ts.AddValidatorNode("node2") + node3 := ts.AddValidatorNode("node3") + + poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { + return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { + poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) + + for _, node := range []*mock2.Node{node0, node1, node2, node3} { + if node.Validator { + poa.AddAccount(node.AccountID, node.Name) + } + } + poa.SetOnline("node0", "node1", "node2", "node3") + + return poa + }) + } + + nodeOptions := make(map[string][]options.Option[protocol.Protocol]) + for _, node := range ts.Nodes() { + nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ + protocol.WithSybilProtectionProvider( + sybilprotectionv1.NewProvider( + sybilprotectionv1.WithSeatManagerProvider( + poaProvider(), + ), + ), + ), + protocol.WithEngineOptions( + engine.WithBlockRequesterOptions( + eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), + eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), + ), + ), + protocol.WithStorageOptions( + storage.WithPruningDelay(20), + ), + } + } + + ts.Run(false, nodeOptions) + + // Verify that nodes have the expected states. + + expectedCommittee := []iotago.AccountID{ + node0.AccountID, + node1.AccountID, + node2.AccountID, + node3.AccountID, + } + expectedOnlineCommitteeFull := []account.SeatIndex{ + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), + } + + expectedOnlineCommitteeHalf := []account.SeatIndex{ + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), + } + + for _, node := range ts.Nodes() { + node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + } + + { + genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) + genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost + ts.AssertNodeState(ts.Nodes(), + testsuite.WithSnapshotImported(true), + testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), + testsuite.WithLatestCommitment(genesisCommitment), + testsuite.WithLatestFinalizedSlot(0), + testsuite.WithChainID(genesisCommitment.MustID()), + testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), + + testsuite.WithSybilProtectionCommittee(0, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), + testsuite.WithEvictedSlot(0), + testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), + testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), + ) + } + + // Issue up to slot 11 - just before committee selection for the next epoch. + // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. + { + ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) + + ts.AssertNodeState(ts.Nodes(), + testsuite.WithLatestFinalizedSlot(8), + testsuite.WithLatestCommitmentSlotIndex(9), + testsuite.WithEqualStoredCommitmentAtIndex(9), + testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 + testsuite.WithSybilProtectionCommittee(9, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), + testsuite.WithEvictedSlot(9), + ) + + for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { + var attestationBlocks []*blocks.Block + for _, node := range ts.Nodes() { + if node.Validator { + attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) + } + } + ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) + } + + ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) + } + + // Update online committee. + for _, node := range ts.Nodes() { + manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) + manualPOA.SetOnline("node0", "node1") + manualPOA.SetOffline("node2", "node3") + } + + { + ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15, 16, 17, 18, 19}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) + + ts.AssertNodeState(ts.Nodes(), + testsuite.WithLatestFinalizedSlot(8), + testsuite.WithLatestCommitmentSlotIndex(17), + testsuite.WithEqualStoredCommitmentAtIndex(17), + testsuite.WithLatestCommitmentCumulativeWeight(50), // 7 for each slot starting from 4 + testsuite.WithSybilProtectionCommittee(17, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), + testsuite.WithEvictedSlot(17), + ) + + ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) + } + + newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(15) + require.NoError(t, err) + + // Assert state of the forked engine after rollback. + { + require.EqualValues(t, 15, newEngine.Storage.Settings().LatestCommitment().Slot()) + require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) + require.EqualValues(t, 15, newEngine.EvictionState.LastEvictedSlot()) + + for epoch := 0; epoch <= 2; epoch++ { + committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) + require.NoError(t, err) + require.Len(t, committeeEpoch.IDs(), 4) + } + + // Commmittee for the future epoch does not exist. + committeeEpoch3, err := newEngine.Storage.Committee().Load(3) + require.NoError(t, err) + require.Nil(t, committeeEpoch3) + + for slot := 1; slot <= 15; slot++ { + copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) + require.NoError(t, err) + sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) + require.NoError(t, err) + require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) + } + + // Commitment for the first slot after the fork does not exist. + _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(16)) + require.Error(t, err) + } +} + +func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T) { + ts := testsuite.NewTestSuite(t, + testsuite.WithLivenessThresholdLowerBound(10), + testsuite.WithLivenessThresholdUpperBound(10), + testsuite.WithMinCommittableAge(2), + testsuite.WithMaxCommittableAge(3), + testsuite.WithEpochNearingThreshold(5), + testsuite.WithSlotsPerEpochExponent(3), + testsuite.WithGenesisTimestampOffset(1000*10), + + testsuite.WithWaitFor(15*time.Second), + ) + defer ts.Shutdown() + + node0 := ts.AddValidatorNode("node0") + node1 := ts.AddValidatorNode("node1") + node2 := ts.AddValidatorNode("node2") + node3 := ts.AddValidatorNode("node3") + + poaProvider := func() module.Provider[*engine.Engine, seatmanager.SeatManager] { + return module.Provide(func(e *engine.Engine) seatmanager.SeatManager { + poa := mock.NewManualPOAProvider()(e).(*mock.ManualPOA) + + for _, node := range []*mock2.Node{node0, node1, node2, node3} { + if node.Validator { + poa.AddAccount(node.AccountID, node.Name) + } + } + poa.SetOnline("node0", "node1", "node2", "node3") + + return poa + }) + } + + nodeOptions := make(map[string][]options.Option[protocol.Protocol]) + for _, node := range ts.Nodes() { + nodeOptions[node.Name] = []options.Option[protocol.Protocol]{ + protocol.WithSybilProtectionProvider( + sybilprotectionv1.NewProvider( + sybilprotectionv1.WithSeatManagerProvider( + poaProvider(), + ), + ), + ), + protocol.WithEngineOptions( + engine.WithBlockRequesterOptions( + eventticker.RetryInterval[iotago.SlotIndex, iotago.BlockID](1*time.Second), + eventticker.RetryJitter[iotago.SlotIndex, iotago.BlockID](500*time.Millisecond), + ), + ), + protocol.WithStorageOptions( + storage.WithPruningDelay(20), + ), + } + } + + ts.Run(false, nodeOptions) + + // Verify that nodes have the expected states. + + expectedCommittee := []iotago.AccountID{ + node0.AccountID, + node1.AccountID, + node2.AccountID, + node3.AccountID, + } + expectedOnlineCommitteeFull := []account.SeatIndex{ + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.AccountID)), + } + + expectedOnlineCommitteeHalf := []account.SeatIndex{ + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.AccountID)), + lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.AccountID)), + } + + for _, node := range ts.Nodes() { + node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + } + + { + genesisCommitment := iotago.NewEmptyCommitment(ts.API.ProtocolParameters().Version()) + genesisCommitment.ReferenceManaCost = ts.API.ProtocolParameters().CongestionControlParameters().MinReferenceManaCost + ts.AssertNodeState(ts.Nodes(), + testsuite.WithSnapshotImported(true), + testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), + testsuite.WithLatestCommitment(genesisCommitment), + testsuite.WithLatestFinalizedSlot(0), + testsuite.WithChainID(genesisCommitment.MustID()), + testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), + + testsuite.WithSybilProtectionCommittee(0, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), + testsuite.WithEvictedSlot(0), + testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), + testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), + ) + } + + // Issue up to slot 11 - just before committee selection for the next epoch. + // Committee will be reused at slot 10 is finalized or slot 12 is committed, whichever happens first. + { + ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11}, 4, "Genesis", ts.Nodes(), true, nil) + + ts.AssertNodeState(ts.Nodes(), + testsuite.WithLatestFinalizedSlot(8), + testsuite.WithLatestCommitmentSlotIndex(9), + testsuite.WithEqualStoredCommitmentAtIndex(9), + testsuite.WithLatestCommitmentCumulativeWeight(28), // 7 for each slot starting from 4 + testsuite.WithSybilProtectionCommittee(9, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeFull...), + testsuite.WithEvictedSlot(9), + ) + + for _, slot := range []iotago.SlotIndex{4, 5, 6, 7, 8, 9} { + var attestationBlocks []*blocks.Block + for _, node := range ts.Nodes() { + if node.Validator { + attestationBlocks = append(attestationBlocks, ts.Block(fmt.Sprintf("P0:%d.3-%s", slot, node.Name))) + } + } + ts.AssertAttestationsForSlot(slot, attestationBlocks, ts.Nodes()...) + } + + ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) + } + + // Update online committee. + for _, node := range ts.Nodes() { + manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock.ManualPOA) + manualPOA.SetOnline("node0", "node1") + manualPOA.SetOffline("node2", "node3") + } + + { + ts.IssueBlocksAtSlots("P0:", []iotago.SlotIndex{12, 13, 14, 15}, 4, "P0:11.3", []*mock2.Node{node0, node1}, true, nil) + + ts.AssertNodeState(ts.Nodes(), + testsuite.WithLatestFinalizedSlot(8), + testsuite.WithLatestCommitmentSlotIndex(13), + testsuite.WithEqualStoredCommitmentAtIndex(13), + testsuite.WithLatestCommitmentCumulativeWeight(42), // 7 for each slot starting from 4 + testsuite.WithSybilProtectionCommittee(13, expectedCommittee), + testsuite.WithSybilProtectionOnlineCommittee(expectedOnlineCommitteeHalf...), + testsuite.WithEvictedSlot(13), + ) + + ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) + } + + newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(9) + require.NoError(t, err) + + // Assert state of the forked engine after rollback. + { + require.EqualValues(t, 9, newEngine.Storage.Settings().LatestCommitment().Slot()) + require.EqualValues(t, 8, newEngine.Storage.Settings().LatestFinalizedSlot()) + require.EqualValues(t, 9, newEngine.EvictionState.LastEvictedSlot()) + + for epoch := 0; epoch <= 1; epoch++ { + committeeEpoch, err := newEngine.Storage.Committee().Load(iotago.EpochIndex(epoch)) + require.NoError(t, err) + require.Len(t, committeeEpoch.IDs(), 4) + } + + // Commmittee for the future epoch does not exist. + committeeEpoch2, err := newEngine.Storage.Committee().Load(2) + require.NoError(t, err) + require.Nil(t, committeeEpoch2) + + for slot := 1; slot <= 9; slot++ { + copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) + require.NoError(t, err) + sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) + require.NoError(t, err) + require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) + } + + // Commitment for the first slot after the fork does not exist. + _, err = newEngine.Storage.Commitments().Load(iotago.SlotIndex(10)) + require.Error(t, err) + } +} + +// TODO: test fork before point of no return (slot 12) +// TODO: test fork on last slot of an epoch (slot 15) From ca06d5fc3443e50ce24ebdd4f7ad0689fb5f6a72 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 9 Oct 2023 03:23:05 +0200 Subject: [PATCH 191/356] Feat: cleaned up EngineManager --- pkg/protocol/chain.go | 14 +- pkg/protocol/chain_manager.go | 20 +- pkg/protocol/commitment.go | 6 +- pkg/protocol/engine_manager.go | 257 +++++++++++---------- pkg/protocol/options.go | 44 ++-- pkg/protocol/protocol.go | 37 +-- pkg/protocol/protocol_attestations.go | 2 +- pkg/tests/protocol_engine_rollback_test.go | 8 +- 8 files changed, 200 insertions(+), 188 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index e0b48b6d1..8c0b09495 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -24,8 +24,8 @@ type Chain struct { VerifiedWeight reactive.Variable[uint64] SyncThreshold reactive.Variable[iotago.SlotIndex] WarpSyncThreshold reactive.Variable[iotago.SlotIndex] - CheckAttestations reactive.Variable[bool] - SpawnEngine reactive.Variable[bool] + VerifyAttestations reactive.Variable[bool] + VerifyState reactive.Variable[bool] Engine reactive.Variable[*engine.Engine] IsSolid reactive.Event IsEvicted reactive.Event @@ -45,12 +45,12 @@ func NewChain(logger log.Logger) *Chain { LatestCommitment: reactive.NewVariable[*Commitment](), LatestAttestedCommitment: reactive.NewVariable[*Commitment](), LatestVerifiedCommitment: reactive.NewVariable[*Commitment](), - CheckAttestations: reactive.NewVariable[bool](), + VerifyAttestations: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), parentEngine: reactive.NewVariable[*engine.Engine](), - SpawnEngine: reactive.NewVariable[bool](), + VerifyState: reactive.NewVariable[bool](), SpawnedEngine: reactive.NewVariable[*engine.Engine](), } @@ -116,8 +116,8 @@ func NewChain(logger log.Logger) *Chain { c.VerifiedWeight.LogUpdates(entityLogger, log.LevelTrace, "VerifiedWeight") c.LatestCommitment.LogUpdates(entityLogger, log.LevelTrace, "LatestCommitment", (*Commitment).LogName) c.LatestVerifiedCommitment.LogUpdates(entityLogger, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName) - c.CheckAttestations.LogUpdates(entityLogger, log.LevelTrace, "CheckAttestations") - c.SpawnEngine.LogUpdates(entityLogger, log.LevelDebug, "SpawnEngine") + c.VerifyAttestations.LogUpdates(entityLogger, log.LevelTrace, "VerifyAttestations") + c.VerifyState.LogUpdates(entityLogger, log.LevelDebug, "VerifyState") }) return c @@ -152,7 +152,7 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { success = true for _, chain := range append([]*Chain{c}, c.ChildChains.ToSlice()...) { - if targetSlot := block.ID().Slot(); chain.SpawnEngine.Get() && chain.earliestUncommittedSlot() <= targetSlot { + if targetSlot := block.ID().Slot(); chain.VerifyState.Get() && chain.earliestUncommittedSlot() <= targetSlot { if targetEngine := chain.SpawnedEngine.Get(); targetEngine != nil && targetSlot < c.SyncThreshold.Get() { targetEngine.ProcessBlockFromPeer(block, src) } else { diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 3cb56b980..9ba0aec3b 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -131,7 +131,7 @@ func (c *ChainManager) initMainChain() { c.protocol.LogDebug("new chain created", "name", mainChain.LogName(), "forkingPoint", "") - mainChain.SpawnEngine.Set(true) + mainChain.VerifyState.Set(true) mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) c.MainChain.Set(mainChain) @@ -159,22 +159,28 @@ func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent func (c *ChainManager) initChainSwitching() { c.HeaviestChain.OnUpdate(func(prevHeaviestChain, heaviestChain *Chain) { if prevHeaviestChain != nil { - prevHeaviestChain.CheckAttestations.Set(false) + prevHeaviestChain.VerifyAttestations.Set(false) } - if !heaviestChain.SpawnEngine.Get() { - heaviestChain.CheckAttestations.Set(true) + if !heaviestChain.VerifyState.Get() { + heaviestChain.VerifyAttestations.Set(true) } }) c.HeaviestAttestedChain.OnUpdate(func(_, heaviestAttestedChain *Chain) { - heaviestAttestedChain.CheckAttestations.Set(false) - heaviestAttestedChain.SpawnEngine.Set(true) + heaviestAttestedChain.VerifyAttestations.Set(false) + heaviestAttestedChain.VerifyState.Set(true) }) c.HeaviestVerifiedChain.OnUpdate(func(_, heaviestVerifiedChain *Chain) { heaviestVerifiedChain.LatestVerifiedCommitment.OnUpdate(func(_, latestVerifiedCommitment *Commitment) { - if forkingPoint := heaviestVerifiedChain.ForkingPoint.Get(); latestVerifiedCommitment != nil && forkingPoint != nil && latestVerifiedCommitment.ID().Slot()-forkingPoint.ID().Slot() > c.protocol.options.ChainSwitchingThreshold { + forkingPoint := heaviestVerifiedChain.ForkingPoint.Get() + if forkingPoint == nil || latestVerifiedCommitment == nil { + return + } + + distanceFromForkingPoint := latestVerifiedCommitment.ID().Slot() - forkingPoint.ID().Slot() + if distanceFromForkingPoint > c.protocol.Options.ChainSwitchingThreshold { c.MainChain.Set(heaviestVerifiedChain) } }) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 0bd5d1f39..6499dd4fd 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -119,9 +119,9 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment } withinContext(func() (unsubscribe func()) { - requestAttestations := reactive.NewDerivedVariable2(func(requestAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { - return requestAttestations && isDirectlyAboveLatestAttestedCommitment - }, chain.CheckAttestations, c.isDirectlyAboveLatestAttestedCommitment) + requestAttestations := reactive.NewDerivedVariable2(func(verifyAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { + return verifyAttestations && isDirectlyAboveLatestAttestedCommitment + }, chain.VerifyAttestations, c.isDirectlyAboveLatestAttestedCommitment) c.RequestAttestations.InheritFrom(requestAttestations) diff --git a/pkg/protocol/engine_manager.go b/pkg/protocol/engine_manager.go index 4b5a352d2..1396625b6 100644 --- a/pkg/protocol/engine_manager.go +++ b/pkg/protocol/engine_manager.go @@ -1,15 +1,16 @@ package protocol import ( - "fmt" "os" "path/filepath" "github.com/google/uuid" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/runtime/ioutils" + "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts/accountsledger" "github.com/iotaledger/iota-core/pkg/protocol/engine/blocks" @@ -19,132 +20,95 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -const engineInfoFile = "info" - -type engineInfo struct { - Name string `json:"name"` -} - type EngineManager struct { - protocol *Protocol - directory *utils.Directory - activeInstance *engine.Engine + MainEngine reactive.Variable[*engine.Engine] + + protocol *Protocol + worker *workerpool.WorkerPool + directory *utils.Directory } func NewEngineManager(protocol *Protocol) *EngineManager { e := &EngineManager{ - protocol: protocol, - directory: utils.NewDirectory(protocol.options.BaseDirectory), + MainEngine: reactive.NewVariable[*engine.Engine](), + protocol: protocol, + worker: protocol.Workers.CreatePool("EngineManager", 1), + directory: utils.NewDirectory(protocol.Options.BaseDirectory), } - protocol.HookConstructed(func() { - protocol.OnChainCreated(e.provideEngineIfRequested) + protocol.MainChain.OnUpdateWithContext(func(_, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + unsubscribeOnUpdate(func() (unsubscribe func()) { + return e.MainEngine.InheritFrom(mainChain.SpawnedEngine) + }) + }) + + protocol.MainChain.OnUpdate(func(_, mainChain *Chain) { + e.MainEngine.InheritFrom(mainChain.SpawnedEngine) + }) + + e.MainEngine.OnUpdate(func(_, mainEngine *engine.Engine) { + err := ioutils.WriteJSONToFile(e.infoFilePath(), &engineInfo{ + Name: filepath.Base(mainEngine.Storage.Directory()), + }, 0o644) + + if err != nil { + panic(ierrors.Wrap(err, "unable to write engine info file")) + } }) + protocol.HookConstructed(e.injectEngineInstances) + return e } -func (e *EngineManager) LoadActiveEngine(snapshotPath string) (*engine.Engine, error) { +func (e *EngineManager) LoadMainEngine(snapshotPath string) (*engine.Engine, error) { info := &engineInfo{} - if err := ioutils.ReadJSONFromFile(e.infoFilePath(), info); err != nil { - if !ierrors.Is(err, os.ErrNotExist) { - return nil, ierrors.Errorf("unable to read engine info file: %w", err) - } + if err := ioutils.ReadJSONFromFile(e.infoFilePath(), info); err != nil && !ierrors.Is(err, os.ErrNotExist) { + return nil, ierrors.Errorf("unable to read engine info file: %w", err) } + // load previous engine as main engine if it exists. if len(info.Name) > 0 { if exists, isDirectory, err := ioutils.PathExists(e.directory.Path(info.Name)); err == nil && exists && isDirectory { - // Load previous engine as active - e.activeInstance = e.loadEngineInstanceFromSnapshot(info.Name, snapshotPath) + e.MainEngine.Set(e.loadEngineInstanceFromSnapshot(info.Name, snapshotPath)) } } - if e.activeInstance == nil { - // Start with a new instance and set to active - instance := e.loadEngineInstanceFromSnapshot(lo.PanicOnErr(uuid.NewUUID()).String(), snapshotPath) - - if err := e.SetActiveInstance(instance); err != nil { - return nil, err + // load new engine if no previous engine exists. + e.MainEngine.Compute(func(mainEngine *engine.Engine) *engine.Engine { + if mainEngine != nil { + return mainEngine } - } - - // Cleanup non-active instances - if err := e.CleanupNonActive(); err != nil { - return nil, err - } - - return e.activeInstance, nil -} - -func (e *EngineManager) CleanupNonActive() error { - activeDir := filepath.Base(e.activeInstance.Storage.Directory()) - - dirs, err := e.directory.SubDirs() - if err != nil { - return ierrors.Wrapf(err, "unable to list subdirectories of %s", e.directory.Path()) - } - for _, dir := range dirs { - if dir == activeDir { - continue - } - if err := e.directory.RemoveSubdir(dir); err != nil { - return ierrors.Wrapf(err, "unable to remove subdirectory %s", dir) - } - } - - return nil -} - -func (e *EngineManager) infoFilePath() string { - return e.directory.Path(engineInfoFile) -} - -func (e *EngineManager) SetActiveInstance(instance *engine.Engine) error { - e.activeInstance = instance - - info := &engineInfo{ - Name: filepath.Base(instance.Storage.Directory()), - } - - return ioutils.WriteJSONToFile(e.infoFilePath(), info, 0o644) -} - -func (e *EngineManager) loadEngineInstanceFromSnapshot(engineAlias string, snapshotPath string) *engine.Engine { - errorHandler := func(err error) { - e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) - } - e.protocol.options.EngineOptions = append(e.protocol.options.EngineOptions, engine.WithSnapshotPath(snapshotPath)) - - return e.loadEngineInstanceWithStorage(engineAlias, storage.Create(e.directory.Path(engineAlias), DatabaseVersion, errorHandler, e.protocol.options.StorageOptions...)) -} + return e.loadEngineInstanceFromSnapshot(lo.PanicOnErr(uuid.NewUUID()).String(), snapshotPath) + }) -func (e *EngineManager) loadEngineInstanceWithStorage(engineAlias string, storage *storage.Storage) *engine.Engine { - errorHandler := func(err error) { - e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) + // cleanup candidates + if err := e.CleanupCandidates(); err != nil { + return nil, err } - return engine.New(e.protocol.Workers.CreateGroup(engineAlias), errorHandler, storage, e.protocol.options.FilterProvider, e.protocol.options.CommitmentFilterProvider, e.protocol.options.BlockDAGProvider, e.protocol.options.BookerProvider, e.protocol.options.ClockProvider, e.protocol.options.BlockGadgetProvider, e.protocol.options.SlotGadgetProvider, e.protocol.options.SybilProtectionProvider, e.protocol.options.NotarizationProvider, e.protocol.options.AttestationProvider, e.protocol.options.LedgerProvider, e.protocol.options.SchedulerProvider, e.protocol.options.TipManagerProvider, e.protocol.options.TipSelectionProvider, e.protocol.options.RetainerProvider, e.protocol.options.UpgradeOrchestratorProvider, e.protocol.options.SyncManagerProvider, e.protocol.options.EngineOptions...) + return e.MainEngine.Get(), nil } -func (e *EngineManager) ForkEngineAtSlot(index iotago.SlotIndex) (*engine.Engine, error) { - engineAlias := newEngineAlias() +func (e *EngineManager) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error) { + newEngineAlias := lo.PanicOnErr(uuid.NewUUID()).String() errorHandler := func(err error) { - e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) + e.protocol.LogError("engine error", "err", err, "name", newEngineAlias[0:8]) } - // Copy raw data on disk. - newStorage, err := storage.Clone(e.activeInstance.Storage, e.directory.Path(engineAlias), DatabaseVersion, errorHandler, e.protocol.options.StorageOptions...) + // copy raw data on disk. + newStorage, err := storage.Clone(e.MainEngine.Get().Storage, e.directory.Path(newEngineAlias), DatabaseVersion, errorHandler, e.protocol.Options.StorageOptions...) if err != nil { - return nil, ierrors.Wrapf(err, "failed to copy storage from active engine instance (%s) to new engine instance (%s)", e.activeInstance.Storage.Directory(), e.directory.Path(engineAlias)) + return nil, ierrors.Wrapf(err, "failed to copy storage from active engine instance (%s) to new engine instance (%s)", e.MainEngine.Get().Storage.Directory(), e.directory.Path(newEngineAlias)) } - // Remove commitments that after forking point. + // remove commitments that after forking point. latestCommitment := newStorage.Settings().LatestCommitment() - if err := newStorage.Commitments().Rollback(index, latestCommitment.Slot()); err != nil { + if err := newStorage.Commitments().Rollback(slot, latestCommitment.Slot()); err != nil { return nil, ierrors.Wrap(err, "failed to rollback commitments") } - // Create temporary components and rollback their permanent state, which will be reflected on disk. + // create temporary components and rollback their permanent state, which will be reflected on disk. evictionState := eviction.NewState(newStorage.LatestNonEmptySlot(), newStorage.RootBlocks) evictionState.Initialize(latestCommitment.Slot()) @@ -152,76 +116,115 @@ func (e *EngineManager) ForkEngineAtSlot(index iotago.SlotIndex) (*engine.Engine accountsManager := accountsledger.New(newStorage.Settings().APIProvider(), blockCache.Block, newStorage.AccountDiffs, newStorage.Accounts()) accountsManager.SetLatestCommittedSlot(latestCommitment.Slot()) - if err := accountsManager.Rollback(index); err != nil { + if err := accountsManager.Rollback(slot); err != nil { return nil, ierrors.Wrap(err, "failed to rollback accounts manager") } - if err := evictionState.Rollback(newStorage.Settings().LatestFinalizedSlot(), index); err != nil { + if err := evictionState.Rollback(newStorage.Settings().LatestFinalizedSlot(), slot); err != nil { return nil, ierrors.Wrap(err, "failed to rollback eviction state") } - if err := newStorage.Ledger().Rollback(index); err != nil { + if err := newStorage.Ledger().Rollback(slot); err != nil { return nil, err } - targetCommitment, err := newStorage.Commitments().Load(index) + targetCommitment, err := newStorage.Commitments().Load(slot) if err != nil { - return nil, ierrors.Wrapf(err, "error while retrieving commitment for target index %d", index) + return nil, ierrors.Wrapf(err, "error while retrieving commitment for target index %d", slot) } if err := newStorage.Settings().Rollback(targetCommitment); err != nil { return nil, err } - if err := newStorage.RollbackPrunable(index); err != nil { + if err := newStorage.RollbackPrunable(slot); err != nil { return nil, err } - candidateEngine := e.loadEngineInstanceWithStorage(engineAlias, newStorage) + candidateEngine := e.loadEngineInstanceWithStorage(newEngineAlias, newStorage) - // Rollback attestations already on created engine instance, because this action modifies the in-memory storage. - if err := candidateEngine.Attestations.Rollback(index); err != nil { + // rollback attestations already on created engine instance, because this action modifies the in-memory storage. + if err := candidateEngine.Attestations.Rollback(slot); err != nil { return nil, ierrors.Wrap(err, "error while rolling back attestations storage on candidate engine") } return candidateEngine, nil } -func (e *EngineManager) provideEngineIfRequested(chain *Chain) { - chain.SpawnEngine.OnUpdate(func(_, instantiate bool) { - // TODO: MOVE TO WORKERPOOL - go func() { - if !instantiate { - chain.SpawnedEngine.Set(nil) +func (e *EngineManager) CleanupCandidates() error { + activeDir := filepath.Base(e.MainEngine.Get().Storage.Directory()) - return - } + dirs, err := e.directory.SubDirs() + if err != nil { + return ierrors.Wrapf(err, "unable to list subdirectories of %s", e.directory.Path()) + } + for _, dir := range dirs { + if dir == activeDir { + continue + } + if err := e.directory.RemoveSubdir(dir); err != nil { + return ierrors.Wrapf(err, "unable to remove subdirectory %s", dir) + } + } - if currentEngine := chain.Engine.Get(); currentEngine == nil { - mainEngine, err := e.LoadActiveEngine(e.protocol.options.SnapshotPath) - if err != nil { - panic(fmt.Sprintf("could not load active engine: %s", err)) - } + return nil +} - chain.SpawnedEngine.Set(mainEngine) +func (e *EngineManager) Shutdown() { + e.worker.Shutdown(true) +} - e.protocol.Network.OnShutdown(mainEngine.Shutdown) - } else { - forkingPoint := chain.ForkingPoint.Get() - snapshotTargetSlot := forkingPoint.Slot() - 1 +func (e *EngineManager) infoFilePath() string { + return e.directory.Path(engineInfoFile) +} - candidateEngineInstance, err := e.ForkEngineAtSlot(snapshotTargetSlot) - if err != nil { - panic(ierrors.Wrap(err, "error creating new candidate engine")) +func (e *EngineManager) loadEngineInstanceFromSnapshot(engineAlias string, snapshotPath string) *engine.Engine { + errorHandler := func(err error) { + e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) + } + + e.protocol.Options.EngineOptions = append(e.protocol.Options.EngineOptions, engine.WithSnapshotPath(snapshotPath)) + + return e.loadEngineInstanceWithStorage(engineAlias, storage.Create(e.directory.Path(engineAlias), DatabaseVersion, errorHandler, e.protocol.Options.StorageOptions...)) +} + +func (e *EngineManager) loadEngineInstanceWithStorage(engineAlias string, storage *storage.Storage) *engine.Engine { + errorHandler := func(err error) { + e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) + } + + return engine.New(e.protocol.Workers.CreateGroup(engineAlias), errorHandler, storage, e.protocol.Options.FilterProvider, e.protocol.Options.CommitmentFilterProvider, e.protocol.Options.BlockDAGProvider, e.protocol.Options.BookerProvider, e.protocol.Options.ClockProvider, e.protocol.Options.BlockGadgetProvider, e.protocol.Options.SlotGadgetProvider, e.protocol.Options.SybilProtectionProvider, e.protocol.Options.NotarizationProvider, e.protocol.Options.AttestationProvider, e.protocol.Options.LedgerProvider, e.protocol.Options.SchedulerProvider, e.protocol.Options.TipManagerProvider, e.protocol.Options.TipSelectionProvider, e.protocol.Options.RetainerProvider, e.protocol.Options.UpgradeOrchestratorProvider, e.protocol.Options.SyncManagerProvider, e.protocol.Options.EngineOptions...) +} + +func (e *EngineManager) injectEngineInstances() { + e.protocol.OnChainCreated(func(chain *Chain) { + chain.VerifyState.OnUpdate(func(_, instantiate bool) { + e.worker.Submit(func() { + if !instantiate { + chain.SpawnedEngine.Set(nil) + + return } - chain.SpawnedEngine.Set(candidateEngineInstance) + if newEngine, err := func() (*engine.Engine, error) { + if e.MainEngine.Get() == nil { + return e.LoadMainEngine(e.protocol.Options.SnapshotPath) + } - e.protocol.Network.OnShutdown(candidateEngineInstance.Shutdown) - } - }() + return e.ForkAtSlot(chain.ForkingPoint.Get().Slot() - 1) + }(); err != nil { + panic(ierrors.Wrap(err, "failed to create new engine instance")) + } else { + e.protocol.Network.OnShutdown(newEngine.Shutdown) + + chain.SpawnedEngine.Set(newEngine) + } + }) + }) }) } -func newEngineAlias() string { - return lo.PanicOnErr(uuid.NewUUID()).String() +const engineInfoFile = "info" + +type engineInfo struct { + Name string `json:"name"` } diff --git a/pkg/protocol/options.go b/pkg/protocol/options.go index 245d9338a..43b97f7ec 100644 --- a/pkg/protocol/options.go +++ b/pkg/protocol/options.go @@ -71,7 +71,7 @@ type Options struct { UpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] } -func newOptions() *Options { +func NewDefaultOptions() *Options { return &Options{ BaseDirectory: "", ChainSwitchingThreshold: 3, @@ -98,126 +98,126 @@ func newOptions() *Options { func WithBaseDirectory(baseDirectory string) options.Option[Protocol] { return func(p *Protocol) { - p.options.BaseDirectory = baseDirectory + p.Options.BaseDirectory = baseDirectory } } func WithSnapshotPath(snapshot string) options.Option[Protocol] { return func(p *Protocol) { - p.options.SnapshotPath = snapshot + p.Options.SnapshotPath = snapshot } } func WithChainSwitchingThreshold(threshold iotago.SlotIndex) options.Option[Protocol] { return func(p *Protocol) { - p.options.ChainSwitchingThreshold = threshold + p.Options.ChainSwitchingThreshold = threshold } } func WithFilterProvider(optsFilterProvider module.Provider[*engine.Engine, filter.Filter]) options.Option[Protocol] { return func(p *Protocol) { - p.options.FilterProvider = optsFilterProvider + p.Options.FilterProvider = optsFilterProvider } } func WithCommitmentFilterProvider(optsCommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter]) options.Option[Protocol] { return func(p *Protocol) { - p.options.CommitmentFilterProvider = optsCommitmentFilterProvider + p.Options.CommitmentFilterProvider = optsCommitmentFilterProvider } } func WithBlockDAGProvider(optsBlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG]) options.Option[Protocol] { return func(p *Protocol) { - p.options.BlockDAGProvider = optsBlockDAGProvider + p.Options.BlockDAGProvider = optsBlockDAGProvider } } func WithTipManagerProvider(optsTipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager]) options.Option[Protocol] { return func(p *Protocol) { - p.options.TipManagerProvider = optsTipManagerProvider + p.Options.TipManagerProvider = optsTipManagerProvider } } func WithTipSelectionProvider(optsTipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection]) options.Option[Protocol] { return func(p *Protocol) { - p.options.TipSelectionProvider = optsTipSelectionProvider + p.Options.TipSelectionProvider = optsTipSelectionProvider } } func WithBookerProvider(optsBookerProvider module.Provider[*engine.Engine, booker.Booker]) options.Option[Protocol] { return func(p *Protocol) { - p.options.BookerProvider = optsBookerProvider + p.Options.BookerProvider = optsBookerProvider } } func WithClockProvider(optsClockProvider module.Provider[*engine.Engine, clock.Clock]) options.Option[Protocol] { return func(p *Protocol) { - p.options.ClockProvider = optsClockProvider + p.Options.ClockProvider = optsClockProvider } } func WithSybilProtectionProvider(optsSybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection]) options.Option[Protocol] { return func(p *Protocol) { - p.options.SybilProtectionProvider = optsSybilProtectionProvider + p.Options.SybilProtectionProvider = optsSybilProtectionProvider } } func WithBlockGadgetProvider(optsBlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget]) options.Option[Protocol] { return func(p *Protocol) { - p.options.BlockGadgetProvider = optsBlockGadgetProvider + p.Options.BlockGadgetProvider = optsBlockGadgetProvider } } func WithSlotGadgetProvider(optsSlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget]) options.Option[Protocol] { return func(p *Protocol) { - p.options.SlotGadgetProvider = optsSlotGadgetProvider + p.Options.SlotGadgetProvider = optsSlotGadgetProvider } } func WithEpochGadgetProvider(optsEpochGadgetProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection]) options.Option[Protocol] { return func(p *Protocol) { - p.options.SybilProtectionProvider = optsEpochGadgetProvider + p.Options.SybilProtectionProvider = optsEpochGadgetProvider } } func WithNotarizationProvider(optsNotarizationProvider module.Provider[*engine.Engine, notarization.Notarization]) options.Option[Protocol] { return func(p *Protocol) { - p.options.NotarizationProvider = optsNotarizationProvider + p.Options.NotarizationProvider = optsNotarizationProvider } } func WithAttestationProvider(optsAttestationProvider module.Provider[*engine.Engine, attestation.Attestations]) options.Option[Protocol] { return func(p *Protocol) { - p.options.AttestationProvider = optsAttestationProvider + p.Options.AttestationProvider = optsAttestationProvider } } func WithLedgerProvider(optsLedgerProvider module.Provider[*engine.Engine, ledger.Ledger]) options.Option[Protocol] { return func(p *Protocol) { - p.options.LedgerProvider = optsLedgerProvider + p.Options.LedgerProvider = optsLedgerProvider } } func WithUpgradeOrchestratorProvider(optsUpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator]) options.Option[Protocol] { return func(p *Protocol) { - p.options.UpgradeOrchestratorProvider = optsUpgradeOrchestratorProvider + p.Options.UpgradeOrchestratorProvider = optsUpgradeOrchestratorProvider } } func WithSyncManagerProvider(optsSyncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager]) options.Option[Protocol] { return func(p *Protocol) { - p.options.SyncManagerProvider = optsSyncManagerProvider + p.Options.SyncManagerProvider = optsSyncManagerProvider } } func WithEngineOptions(opts ...options.Option[engine.Engine]) options.Option[Protocol] { return func(p *Protocol) { - p.options.EngineOptions = append(p.options.EngineOptions, opts...) + p.Options.EngineOptions = append(p.Options.EngineOptions, opts...) } } func WithStorageOptions(opts ...options.Option[storage.Storage]) options.Option[Protocol] { return func(p *Protocol) { - p.options.StorageOptions = append(p.options.StorageOptions, opts...) + p.Options.StorageOptions = append(p.Options.StorageOptions, opts...) } } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 60e5524c9..f0fe1f1ab 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -8,7 +8,6 @@ import ( "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" @@ -18,6 +17,7 @@ import ( "github.com/iotaledger/iota-core/pkg/protocol/engine" ) +// Protocol implements the meta-protocol that is responsible for syncing with the heaviest chain. type Protocol struct { Events *Events Workers *workerpool.Group @@ -26,33 +26,32 @@ type Protocol struct { CommitmentsProtocol *CommitmentsProtocol AttestationsProtocol *AttestationsProtocol WarpSyncProtocol *WarpSyncProtocol + Options *Options - error *event.Event1[error] - options *Options - - *APIProvider *ChainManager *EngineManager + *APIProvider + log.Logger module.Module } -func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoint, opts ...options.Option[Protocol]) *Protocol { +// New creates a new protocol instance. +func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.Endpoint, opts ...options.Option[Protocol]) *Protocol { return options.Apply(&Protocol{ Events: NewEvents(), Workers: workers, Logger: logger, - error: event.New1[error](), - options: newOptions(), + Options: NewDefaultOptions(), }, opts, func(p *Protocol) { - p.Network = core.NewProtocol(dispatcher, workers.CreatePool("NetworkProtocol"), p) + p.Network = core.NewProtocol(networkEndpoint, workers.CreatePool("NetworkProtocol"), p) p.BlocksProtocol = NewBlocksProtocol(p) p.CommitmentsProtocol = NewCommitmentsProtocol(p) p.AttestationsProtocol = NewAttestationsProtocol(p) p.WarpSyncProtocol = NewWarpSyncProtocol(p) - p.APIProvider = NewAPIProvider(p) p.ChainManager = newChainManager(p) p.EngineManager = NewEngineManager(p) + p.APIProvider = NewAPIProvider(p) p.HookInitialized(func() { unsubscribeFromNetwork := lo.Batch( @@ -75,17 +74,20 @@ func New(logger log.Logger, workers *workerpool.Group, dispatcher network.Endpoi p.AttestationsProtocol.Shutdown() p.WarpSyncProtocol.Shutdown() p.Network.Shutdown() + p.EngineManager.Shutdown() }) }) }, (*Protocol).TriggerConstructed) } +// IssueBlock issues a block to the node. func (p *Protocol) IssueBlock(block *model.Block) error { p.BlocksProtocol.ProcessResponse(block, "self") return nil } +// Run starts the protocol. func (p *Protocol) Run(ctx context.Context) error { p.TriggerInitialized() @@ -99,17 +101,18 @@ func (p *Protocol) Run(ctx context.Context) error { return ctx.Err() } +// TriggerInitialized overrides the Module.TriggerInitialized method to only trigger once the main chain and engine were +// initialized. func (p *Protocol) TriggerInitialized() { - var waitInitialized sync.WaitGroup + var waitEngineInitialized sync.WaitGroup - waitInitialized.Add(1) + waitEngineInitialized.Add(1) p.MainChain.OnUpdateOnce(func(_, mainChain *Chain) { - mainChain.Engine.OnUpdateOnce(func(_, _ *engine.Engine) { - p.Module.TriggerInitialized() - - waitInitialized.Done() + mainChain.Engine.OnUpdateOnce(func(_, engine *engine.Engine) { + engine.HookInitialized(waitEngineInitialized.Done) }) }) + waitEngineInitialized.Wait() - waitInitialized.Wait() + p.Module.TriggerInitialized() } diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 3124a61b3..c2a4f7027 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -37,7 +37,7 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { protocol.HookConstructed(func() { protocol.OnChainCreated(func(chain *Chain) { - chain.CheckAttestations.OnUpdate(func(_, requestAttestations bool) { + chain.VerifyAttestations.OnUpdate(func(_, requestAttestations bool) { forkingPoint := chain.ForkingPoint.Get() if requestAttestations { diff --git a/pkg/tests/protocol_engine_rollback_test.go b/pkg/tests/protocol_engine_rollback_test.go index b472f546a..180e9e404 100644 --- a/pkg/tests/protocol_engine_rollback_test.go +++ b/pkg/tests/protocol_engine_rollback_test.go @@ -164,7 +164,7 @@ func TestProtocol_EngineRollbackFinalization(t *testing.T) { ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) } - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) + newEngine, err := node3.Protocol.EngineManager.ForkAtSlot(13) require.NoError(t, err) // Assert state of the forked engine after rollback. @@ -350,7 +350,7 @@ func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) } - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(13) + newEngine, err := node3.Protocol.EngineManager.ForkAtSlot(13) require.NoError(t, err) // Assert state of the forked engine after rollback. @@ -536,7 +536,7 @@ func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) } - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(15) + newEngine, err := node3.Protocol.EngineManager.ForkAtSlot(15) require.NoError(t, err) // Assert state of the forked engine after rollback. @@ -722,7 +722,7 @@ func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) } - newEngine, err := node3.Protocol.EngineManager.ForkEngineAtSlot(9) + newEngine, err := node3.Protocol.EngineManager.ForkAtSlot(9) require.NoError(t, err) // Assert state of the forked engine after rollback. From a10b0d42abced98ee75b48d144f68c91753f6da7 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 9 Oct 2023 03:55:05 +0200 Subject: [PATCH 192/356] Feat: improved logging to find reason for failing test --- pkg/tests/protocol_engine_switching_test.go | 4 ++-- pkg/testsuite/mock/node.go | 21 +++++++++++++++++---- 2 files changed, 19 insertions(+), 6 deletions(-) diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 45dea8f0c..2e5334b1f 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -107,8 +107,8 @@ func TestProtocol_EngineSwitching(t *testing.T) { node4.Protocol.SetLogLevel(log.LevelInfo) node5.Protocol.SetLogLevel(log.LevelInfo) node6.Protocol.SetLogLevel(log.LevelDebug) - node7.Protocol.SetLogLevel(log.LevelInfo) - node8.Protocol.SetLogLevel(log.LevelInfo) + node7.Protocol.SetLogLevel(log.LevelDebug) + node8.Protocol.SetLogLevel(log.LevelDebug) expectedCommittee := []iotago.AccountID{ node0.AccountID, diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 5f5ee2520..3b5a48e29 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -75,6 +75,8 @@ type Node struct { candidateEngineActivatedCount atomic.Uint32 mainEngineSwitchedCount atomic.Uint32 + enableEngineLogging bool + mutex syncutils.RWMutex attachedBlocks []*blocks.Block } @@ -105,6 +107,8 @@ func NewNode(t *testing.T, net *Network, partition string, name string, validato Endpoint: net.JoinWithEndpointID(peerID, partition), Workers: workerpool.NewGroup(name), + enableEngineLogging: false, + attachedBlocks: make([]*blocks.Block, 0), } } @@ -118,7 +122,10 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto ) n.hookEvents() - n.hookLogging(failOnBlockFiltered) + + if n.enableEngineLogging { + n.hookLogging(failOnBlockFiltered) + } n.blockIssuer = blockfactory.New(n.Protocol, blockfactory.WithTipSelectionTimeout(3*time.Second), blockfactory.WithTipSelectionRetryInterval(time.Millisecond*100)) @@ -461,7 +468,9 @@ func (n *Node) IssueBlock(ctx context.Context, alias string, opts ...options.Opt require.NoErrorf(n.Testing, n.blockIssuer.IssueBlock(block.ModelBlock()), "%s > failed to issue block with alias %s", n.Name, alias) - fmt.Printf("%s > Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", n.Name, block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot) + if n.enableEngineLogging { + fmt.Printf("%s > Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", n.Name, block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot) + } return block } @@ -469,7 +478,9 @@ func (n *Node) IssueBlock(ctx context.Context, alias string, opts ...options.Opt func (n *Node) IssueExistingBlock(block *blocks.Block) { require.NoErrorf(n.Testing, n.blockIssuer.IssueBlock(block.ModelBlock()), "%s > failed to issue block with alias %s", n.Name, block.ID().Alias()) - fmt.Printf("%s > Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", n.Name, block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot) + if n.enableEngineLogging { + fmt.Printf("%s > Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", n.Name, block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot) + } } func (n *Node) IssueValidationBlock(ctx context.Context, alias string, opts ...options.Option[blockfactory.ValidatorBlockParams]) *blocks.Block { @@ -477,7 +488,9 @@ func (n *Node) IssueValidationBlock(ctx context.Context, alias string, opts ...o require.NoError(n.Testing, n.blockIssuer.IssueBlock(block.ModelBlock())) - fmt.Printf("Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot) + if n.enableEngineLogging { + fmt.Printf("Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot) + } return block } From 7a3a28941f2bc4621990926df1f57c2949dd7f5a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 9 Oct 2023 17:11:11 +0200 Subject: [PATCH 193/356] Refactor: reverted changes --- pkg/tests/protocol_startup_test.go | 3 --- 1 file changed, 3 deletions(-) diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index bcb4cec5b..20ffe89a3 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -10,7 +10,6 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds/types" "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/core/account" "github.com/iotaledger/iota-core/pkg/protocol" @@ -294,8 +293,6 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { ) ts.Wait() - nodeC1.Protocol.SetLogLevel(log.LevelDebug) - // Everything that was accepted before shutting down should be available on disk (verifying that restoring the block cache from disk works). ts.AssertBlocksExist(ts.BlocksWithPrefixes("8", "9", "11", "12", "13.0", "13.1", "13.2", "13.3"), true, ts.Nodes("nodeC-restarted")...) ts.AssertStorageRootBlocks(expectedStorageRootBlocksFrom0, ts.Nodes("nodeC-restarted")...) From 84628ee4b0af27aa132d065cbfdbfe2bb71750d1 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 9 Oct 2023 20:55:38 +0200 Subject: [PATCH 194/356] Feat: used reactivemodule --- components/dashboard/component.go | 2 +- go.mod | 4 +-- go.sum | 8 ++--- pkg/protocol/chain_manager.go | 4 +-- pkg/protocol/engine_manager.go | 4 +-- pkg/protocol/protocol.go | 48 ++++++++++++--------------- pkg/protocol/protocol_attestations.go | 2 +- pkg/protocol/protocol_blocks.go | 2 +- pkg/protocol/protocol_warp_sync.go | 2 +- pkg/testsuite/mock/node.go | 4 +-- tools/evil-spammer/go.mod | 2 +- tools/evil-spammer/go.sum | 1 + tools/gendoc/go.mod | 2 +- tools/gendoc/go.sum | 1 + tools/genesis-snapshot/go.mod | 2 +- tools/genesis-snapshot/go.sum | 1 + 16 files changed, 44 insertions(+), 45 deletions(-) diff --git a/components/dashboard/component.go b/components/dashboard/component.go index 62326f082..400e2ad68 100644 --- a/components/dashboard/component.go +++ b/components/dashboard/component.go @@ -150,7 +150,7 @@ func currentNodeStatus() *nodestatus { LastPauseGC: m.PauseNs[(m.NumGC+255)%256], } // get TangleTime - cl := deps.Protocol.MainEngineInstance().Clock + cl := deps.Protocol.MainEngine.Get().Clock syncStatus := deps.Protocol.MainEngineInstance().SyncManager.SyncStatus() status.TangleTime = tangleTime{ diff --git a/go.mod b/go.mod index d762e9464..c9ca8049a 100644 --- a/go.mod +++ b/go.mod @@ -20,8 +20,9 @@ require ( github.com/iotaledger/hive.go/ierrors v0.0.0-20231005142627-86973b2edb3b github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 github.com/iotaledger/hive.go/lo v0.0.0-20231005142627-86973b2edb3b + github.com/iotaledger/hive.go/log v0.0.0-20231009161204-3b7699bf3ba2 github.com/iotaledger/hive.go/logger v0.0.0-20231005142627-86973b2edb3b - github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b + github.com/iotaledger/hive.go/runtime v0.0.0-20231009180217-9dd2605b54cf github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005142627-86973b2edb3b github.com/iotaledger/hive.go/stringify v0.0.0-20231005142627-86973b2edb3b github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231005192108-08a985c2e217 @@ -89,7 +90,6 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231005142627-86973b2edb3b // indirect github.com/ipfs/boxo v0.10.0 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect diff --git a/go.sum b/go.sum index d0b4617d5..33a3fd391 100644 --- a/go.sum +++ b/go.sum @@ -293,12 +293,12 @@ github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 h1:XCYv github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= github.com/iotaledger/hive.go/lo v0.0.0-20231005142627-86973b2edb3b h1:UnWVwiVj/BceDDL9J/nCAVRlUDVnbTsCf7PI4lWrdfU= github.com/iotaledger/hive.go/lo v0.0.0-20231005142627-86973b2edb3b/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/log v0.0.0-20231005142627-86973b2edb3b h1:h/lhy72RqsNBrMyh2/vQmGiC7w/NxReajpTX4oe56tI= -github.com/iotaledger/hive.go/log v0.0.0-20231005142627-86973b2edb3b/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/log v0.0.0-20231009161204-3b7699bf3ba2 h1:rrhdEp/FxX4I/NPNLuRD4nkddBoXHPD3XzK2eGh79NQ= +github.com/iotaledger/hive.go/log v0.0.0-20231009161204-3b7699bf3ba2/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= github.com/iotaledger/hive.go/logger v0.0.0-20231005142627-86973b2edb3b h1:fYJ2yrb9cYyoLzlEIxLsdPSSufxh0Xw/AoawlGdpdU8= github.com/iotaledger/hive.go/logger v0.0.0-20231005142627-86973b2edb3b/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b h1:skHzoSAI2TNmoJwgW7/aq/Il3JZ5Fa9D5d9U41oWKYg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/runtime v0.0.0-20231009180217-9dd2605b54cf h1:QpWPyH389go/w5HrsnOZiHnQBPygWwBDZr5ejZtDDYo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231009180217-9dd2605b54cf/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005142627-86973b2edb3b h1:6anjtWbaCszD5h43psnE8lsgIM0etpjr62ZlN59t0H8= github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005142627-86973b2edb3b/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= github.com/iotaledger/hive.go/stringify v0.0.0-20231005142627-86973b2edb3b h1:cc9VsDzLxPAaC8fj96EA1bJxbmrEZndJV+3SmG+HHOs= diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 9ba0aec3b..9facc83ff 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -44,7 +44,7 @@ func newChainManager(protocol *Protocol) *ChainManager { c.HeaviestChain.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) c.HeaviestAttestedChain.LogUpdates(c.protocol, log.LevelTrace, "Attested Heavier Chain", (*Chain).LogName) - protocol.HookConstructed(func() { + protocol.Constructed.OnTrigger(func() { trackHeaviestChain := func(chainVariable reactive.Variable[*Chain], getWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { return getWeightVariable(candidate).OnUpdate(func(_, newChainWeight uint64) { if heaviestChain := c.HeaviestVerifiedChain.Get(); heaviestChain != nil && newChainWeight < heaviestChain.VerifiedWeight.Get() { @@ -115,7 +115,7 @@ func (c *ChainManager) Commitment(commitmentID iotago.CommitmentID, requestMissi } func (c *ChainManager) MainEngineInstance() *engine.Engine { - return c.MainChain.Get().Engine.Get() + return c.protocol.EngineManager.MainEngine.Get() } func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { diff --git a/pkg/protocol/engine_manager.go b/pkg/protocol/engine_manager.go index 1396625b6..dfcb726b4 100644 --- a/pkg/protocol/engine_manager.go +++ b/pkg/protocol/engine_manager.go @@ -56,7 +56,7 @@ func NewEngineManager(protocol *Protocol) *EngineManager { } }) - protocol.HookConstructed(e.injectEngineInstances) + protocol.Constructed.OnTrigger(e.injectEngineInstances) return e } @@ -169,7 +169,7 @@ func (e *EngineManager) CleanupCandidates() error { return nil } -func (e *EngineManager) Shutdown() { +func (e *EngineManager) shutdown() { e.worker.Shutdown(true) } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index f0fe1f1ab..fbd390e5e 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -32,17 +32,16 @@ type Protocol struct { *EngineManager *APIProvider - log.Logger - module.Module + *module.ReactiveModule } // New creates a new protocol instance. func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.Endpoint, opts ...options.Option[Protocol]) *Protocol { return options.Apply(&Protocol{ - Events: NewEvents(), - Workers: workers, - Logger: logger, - Options: NewDefaultOptions(), + Events: NewEvents(), + Workers: workers, + Options: NewDefaultOptions(), + ReactiveModule: module.NewReactiveModule(logger), }, opts, func(p *Protocol) { p.Network = core.NewProtocol(networkEndpoint, workers.CreatePool("NetworkProtocol"), p) p.BlocksProtocol = NewBlocksProtocol(p) @@ -53,7 +52,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.EngineManager = NewEngineManager(p) p.APIProvider = NewAPIProvider(p) - p.HookInitialized(func() { + p.Initialized.OnTrigger(func() { unsubscribeFromNetwork := lo.Batch( p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), p.Network.OnBlockReceived(p.BlocksProtocol.ProcessResponse), @@ -66,7 +65,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.Network.OnWarpSyncRequestReceived(p.WarpSyncProtocol.ProcessRequest), ) - p.HookShutdown(func() { + p.Shutdown.OnTrigger(func() { unsubscribeFromNetwork() p.BlocksProtocol.Shutdown() @@ -74,10 +73,12 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.AttestationsProtocol.Shutdown() p.WarpSyncProtocol.Shutdown() p.Network.Shutdown() - p.EngineManager.Shutdown() + p.EngineManager.shutdown() }) }) - }, (*Protocol).TriggerConstructed) + + p.Constructed.Trigger() + }) } // IssueBlock issues a block to the node. @@ -89,30 +90,25 @@ func (p *Protocol) IssueBlock(block *model.Block) error { // Run starts the protocol. func (p *Protocol) Run(ctx context.Context) error { - p.TriggerInitialized() + p.waitEngineInitialized() - <-ctx.Done() + p.Initialized.Trigger() - p.TriggerShutdown() - p.TriggerStopped() + <-ctx.Done() + p.Shutdown.Trigger() p.Workers.Shutdown() + p.Stopped.Trigger() return ctx.Err() } -// TriggerInitialized overrides the Module.TriggerInitialized method to only trigger once the main chain and engine were -// initialized. -func (p *Protocol) TriggerInitialized() { - var waitEngineInitialized sync.WaitGroup +func (p *Protocol) waitEngineInitialized() { + var waitInitialized sync.WaitGroup - waitEngineInitialized.Add(1) - p.MainChain.OnUpdateOnce(func(_, mainChain *Chain) { - mainChain.Engine.OnUpdateOnce(func(_, engine *engine.Engine) { - engine.HookInitialized(waitEngineInitialized.Done) - }) + waitInitialized.Add(1) + p.MainEngine.OnUpdateOnce(func(_, engine *engine.Engine) { + engine.HookInitialized(waitInitialized.Done) }) - waitEngineInitialized.Wait() - - p.Module.TriggerInitialized() + waitInitialized.Wait() } diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index c2a4f7027..6b34fc1c9 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -35,7 +35,7 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { a.ticker.Events.Tick.Hook(a.sendRequest) - protocol.HookConstructed(func() { + protocol.Constructed.OnTrigger(func() { protocol.OnChainCreated(func(chain *Chain) { chain.VerifyAttestations.OnUpdate(func(_, requestAttestations bool) { forkingPoint := chain.ForkingPoint.Get() diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 9a454416f..2ee6270de 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -31,7 +31,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { droppedBlocksBuffer: buffer.NewUnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]](20, 100), } - protocol.HookConstructed(func() { + protocol.Constructed.OnTrigger(func() { protocol.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { if inSyncRange { diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 2947d5915..e43fa2c74 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -32,7 +32,7 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { c.ticker.Events.Tick.Hook(c.SendRequest) - protocol.HookConstructed(func() { + protocol.Constructed.OnTrigger(func() { c.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.RequestBlocks.OnUpdate(func(_, warpSyncBlocks bool) { if warpSyncBlocks { diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 36471a0d4..6b2ea0877 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -134,7 +134,7 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto started := make(chan struct{}, 1) - n.Protocol.HookInitialized(func() { + n.Protocol.Initialized.OnTrigger(func() { close(started) }) @@ -401,7 +401,7 @@ func (n *Node) Shutdown() { stopped := make(chan struct{}, 1) if n.Protocol != nil { - n.Protocol.HookStopped(func() { + n.Protocol.Stopped.OnTrigger(func() { close(stopped) }) } else { diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index 08e5d1d90..ed94efc8a 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -14,7 +14,7 @@ require ( github.com/iotaledger/hive.go/ierrors v0.0.0-20231005142627-86973b2edb3b github.com/iotaledger/hive.go/lo v0.0.0-20231005142627-86973b2edb3b github.com/iotaledger/hive.go/logger v0.0.0-20231005142627-86973b2edb3b - github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b + github.com/iotaledger/hive.go/runtime v0.0.0-20231009180217-9dd2605b54cf github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231005184534-62e6761a7b7c diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index 9bbd459ce..3b2724452 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -191,6 +191,7 @@ github.com/iotaledger/hive.go/logger v0.0.0-20231005142627-86973b2edb3b h1:fYJ2y github.com/iotaledger/hive.go/logger v0.0.0-20231005142627-86973b2edb3b/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b h1:skHzoSAI2TNmoJwgW7/aq/Il3JZ5Fa9D5d9U41oWKYg= github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/runtime v0.0.0-20231009180217-9dd2605b54cf/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005142627-86973b2edb3b h1:6anjtWbaCszD5h43psnE8lsgIM0etpjr62ZlN59t0H8= github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005142627-86973b2edb3b/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= github.com/iotaledger/hive.go/stringify v0.0.0-20231005142627-86973b2edb3b h1:cc9VsDzLxPAaC8fj96EA1bJxbmrEZndJV+3SmG+HHOs= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 3d6a97cb4..2f8bab6e1 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -67,7 +67,7 @@ require ( github.com/iotaledger/hive.go/kvstore v0.0.0-20230928074706-d58e32f86729 // indirect github.com/iotaledger/hive.go/lo v0.0.0-20231005142627-86973b2edb3b // indirect github.com/iotaledger/hive.go/logger v0.0.0-20231005142627-86973b2edb3b // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231009180217-9dd2605b54cf // indirect github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005142627-86973b2edb3b // indirect github.com/iotaledger/hive.go/stringify v0.0.0-20231005142627-86973b2edb3b // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231005192108-08a985c2e217 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 8383833c9..8fb5e3b11 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -303,6 +303,7 @@ github.com/iotaledger/hive.go/logger v0.0.0-20231005142627-86973b2edb3b h1:fYJ2y github.com/iotaledger/hive.go/logger v0.0.0-20231005142627-86973b2edb3b/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b h1:skHzoSAI2TNmoJwgW7/aq/Il3JZ5Fa9D5d9U41oWKYg= github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/runtime v0.0.0-20231009180217-9dd2605b54cf/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005142627-86973b2edb3b h1:6anjtWbaCszD5h43psnE8lsgIM0etpjr62ZlN59t0H8= github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005142627-86973b2edb3b/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= github.com/iotaledger/hive.go/stringify v0.0.0-20231005142627-86973b2edb3b h1:cc9VsDzLxPAaC8fj96EA1bJxbmrEZndJV+3SmG+HHOs= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 72a019bb7..7c7d72340 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -8,7 +8,7 @@ require ( github.com/iotaledger/hive.go/crypto v0.0.0-20231005142627-86973b2edb3b github.com/iotaledger/hive.go/ierrors v0.0.0-20231005142627-86973b2edb3b github.com/iotaledger/hive.go/lo v0.0.0-20231005142627-86973b2edb3b - github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b + github.com/iotaledger/hive.go/runtime v0.0.0-20231009180217-9dd2605b54cf github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231005184534-62e6761a7b7c github.com/mr-tron/base58 v1.2.0 diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 2f45945f8..117b2b5fc 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -46,6 +46,7 @@ github.com/iotaledger/hive.go/lo v0.0.0-20231005142627-86973b2edb3b h1:UnWVwiVj/ github.com/iotaledger/hive.go/lo v0.0.0-20231005142627-86973b2edb3b/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b h1:skHzoSAI2TNmoJwgW7/aq/Il3JZ5Fa9D5d9U41oWKYg= github.com/iotaledger/hive.go/runtime v0.0.0-20231005142627-86973b2edb3b/go.mod h1:fXVyQ1MAwxe/EmjAnG8WcQqbzGk9EW/FsJ/n16H/f/w= +github.com/iotaledger/hive.go/runtime v0.0.0-20231009180217-9dd2605b54cf/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005142627-86973b2edb3b h1:6anjtWbaCszD5h43psnE8lsgIM0etpjr62ZlN59t0H8= github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231005142627-86973b2edb3b/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= github.com/iotaledger/hive.go/stringify v0.0.0-20231005142627-86973b2edb3b h1:cc9VsDzLxPAaC8fj96EA1bJxbmrEZndJV+3SmG+HHOs= From d39b555570c8ad2da015ed4e835e5047c8f78090 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 9 Oct 2023 21:31:32 +0200 Subject: [PATCH 195/356] Refactor: removed MainEngineInstance --- components/dashboard/component.go | 4 +- components/dashboard/explorer_routes.go | 20 +++---- components/dashboard/tip.go | 2 +- components/dashboard/visualizer.go | 4 +- components/dashboard/ws.go | 2 +- components/dashboard_metrics/node.go | 6 +- components/debugapi/blocks.go | 2 +- components/debugapi/component.go | 2 +- components/debugapi/node.go | 4 +- components/debugapi/transactions.go | 2 +- components/inx/server_blocks.go | 4 +- components/inx/server_commitments.go | 2 +- components/inx/server_issuance.go | 4 +- components/inx/server_node.go | 6 +- components/inx/server_utxo.go | 18 +++--- components/metrics/metrics_accounts.go | 4 +- components/metrics/metrics_conflicts.go | 4 +- components/metrics/metrics_db.go | 4 +- components/metrics/metrics_info.go | 2 +- components/metrics/metrics_scheduler.go | 40 ++++++------- components/metrics/metrics_slots.go | 14 ++--- components/metrics/metrics_tangle.go | 4 +- components/metricstracker/component.go | 2 +- components/restapi/core/accounts.go | 34 +++++------ components/restapi/core/blocks.go | 10 ++-- components/restapi/core/commitment.go | 4 +- components/restapi/core/component.go | 2 +- components/restapi/core/node.go | 6 +- components/restapi/core/transaction.go | 4 +- components/restapi/core/utxo.go | 14 ++--- components/restapi/management/pruning.go | 10 ++-- components/restapi/routes.go | 2 +- components/validator/component.go | 2 +- components/validator/issuer.go | 2 +- pkg/protocol/api_provider.go | 12 ++-- pkg/protocol/chain_manager.go | 4 -- pkg/protocol/protocol_blocks.go | 2 +- pkg/tests/accounts_test.go | 22 +++---- pkg/tests/booker_test.go | 8 +-- pkg/tests/confirmation_state_test.go | 22 +++---- pkg/tests/protocol_engine_rollback_test.go | 66 ++++++++++----------- pkg/tests/protocol_engine_switching_test.go | 20 +++---- pkg/tests/protocol_startup_test.go | 14 ++--- pkg/tests/upgrade_signaling_test.go | 6 +- pkg/testsuite/accounts.go | 6 +- pkg/testsuite/attestations.go | 2 +- pkg/testsuite/blocks.go | 8 +-- pkg/testsuite/chainmanager.go | 2 +- pkg/testsuite/conflicts.go | 2 +- pkg/testsuite/eviction.go | 6 +- pkg/testsuite/mock/blockissuer.go | 20 +++---- pkg/testsuite/mock/node.go | 2 +- pkg/testsuite/storage_accountdiffs.go | 2 +- pkg/testsuite/storage_blocks.go | 4 +- pkg/testsuite/storage_commitments.go | 4 +- pkg/testsuite/storage_prunable.go | 2 +- pkg/testsuite/storage_rootblocks.go | 2 +- pkg/testsuite/storage_settings.go | 24 ++++---- pkg/testsuite/sybilprotection.go | 4 +- pkg/testsuite/testsuite_issue_blocks.go | 6 +- pkg/testsuite/tips.go | 2 +- pkg/testsuite/transactions.go | 8 +-- pkg/testsuite/transactions_framework.go | 4 +- pkg/testsuite/upgrades.go | 6 +- 64 files changed, 267 insertions(+), 271 deletions(-) diff --git a/components/dashboard/component.go b/components/dashboard/component.go index 400e2ad68..20617cc4b 100644 --- a/components/dashboard/component.go +++ b/components/dashboard/component.go @@ -151,11 +151,11 @@ func currentNodeStatus() *nodestatus { } // get TangleTime cl := deps.Protocol.MainEngine.Get().Clock - syncStatus := deps.Protocol.MainEngineInstance().SyncManager.SyncStatus() + syncStatus := deps.Protocol.MainEngine.Get().SyncManager.SyncStatus() status.TangleTime = tangleTime{ Synced: syncStatus.NodeSynced, - Bootstrapped: deps.Protocol.MainEngineInstance().SyncManager.IsBootstrapped(), + Bootstrapped: deps.Protocol.MainEngine.Get().SyncManager.IsBootstrapped(), AcceptedBlockSlot: int64(syncStatus.LastAcceptedBlockSlot), ConfirmedBlockSlot: int64(syncStatus.LastConfirmedBlockSlot), CommittedSlot: int64(syncStatus.LatestCommitment.Slot()), diff --git a/components/dashboard/explorer_routes.go b/components/dashboard/explorer_routes.go index fb9c6ef6e..4b9ef99ab 100644 --- a/components/dashboard/explorer_routes.go +++ b/components/dashboard/explorer_routes.go @@ -79,14 +79,14 @@ func setupExplorerRoutes(routeGroup *echo.Group) { } func findBlock(blockID iotago.BlockID) (explorerBlk *ExplorerBlock, err error) { - block, exists := deps.Protocol.MainEngineInstance().Block(blockID) + block, exists := deps.Protocol.MainEngine.Get().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.ToHex()) } - cachedBlock, _ := deps.Protocol.MainEngineInstance().BlockCache.Block(blockID) + cachedBlock, _ := deps.Protocol.MainEngine.Get().BlockCache.Block(blockID) - blockMetadata, err := deps.Protocol.MainEngineInstance().Retainer.BlockMetadata(blockID) + blockMetadata, err := deps.Protocol.MainEngine.Get().Retainer.BlockMetadata(blockID) if err != nil { return nil, ierrors.Wrapf(err, "block metadata %s", blockID.ToHex()) } @@ -201,12 +201,12 @@ func getTransaction(c echo.Context) error { outputID := iotago.OutputID{} copy(outputID[:], txID[:]) - output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngine.Get().Ledger.Output(outputID) if err != nil { return err } - block, exists := deps.Protocol.MainEngineInstance().Block(output.BlockID()) + block, exists := deps.Protocol.MainEngine.Get().Block(output.BlockID()) if !exists { return ierrors.Errorf("block not found: %s", output.BlockID().ToHex()) } @@ -228,12 +228,12 @@ func getTransactionMetadata(c echo.Context) error { // Get the first output of that transaction (using index 0) outputID := iotago.OutputID{} copy(outputID[:], txID[:]) - txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(txID) + txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.MemPool().TransactionMetadata(txID) if !exists { return ierrors.Errorf("tx metadata not found: %s", txID.ToHex()) } - conflicts, _ := deps.Protocol.MainEngineInstance().Ledger.ConflictDAG().ConflictingConflicts(txID) + conflicts, _ := deps.Protocol.MainEngine.Get().Ledger.ConflictDAG().ConflictingConflicts(txID) return httpserver.JSONResponse(c, http.StatusOK, NewTransactionMetadata(txMetadata, conflicts)) } @@ -244,7 +244,7 @@ func getOutput(c echo.Context) error { return err } - output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngine.Get().Ledger.Output(outputID) if err != nil { return err } @@ -258,12 +258,12 @@ func getSlotDetailsByID(c echo.Context) error { return err } - commitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(commitmentID.Slot()) + commitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(commitmentID.Slot()) if err != nil { return err } - diffs, err := deps.Protocol.MainEngineInstance().Ledger.SlotDiffs(commitmentID.Slot()) + diffs, err := deps.Protocol.MainEngine.Get().Ledger.SlotDiffs(commitmentID.Slot()) if err != nil { return err } diff --git a/components/dashboard/tip.go b/components/dashboard/tip.go index 0b75d9663..18073d4c2 100644 --- a/components/dashboard/tip.go +++ b/components/dashboard/tip.go @@ -17,7 +17,7 @@ func setupTipsRoutes(routeGroup *echo.Group) { } func tips() *TipsResponse { - allTips := append(deps.Protocol.MainEngineInstance().TipManager.StrongTips(), deps.Protocol.MainEngineInstance().TipManager.WeakTips()...) + allTips := append(deps.Protocol.MainEngine.Get().TipManager.StrongTips(), deps.Protocol.MainEngine.Get().TipManager.WeakTips()...) t := make([]string, len(allTips)) for i, tip := range allTips { diff --git a/components/dashboard/visualizer.go b/components/dashboard/visualizer.go index 1475721af..aa28278ca 100644 --- a/components/dashboard/visualizer.go +++ b/components/dashboard/visualizer.go @@ -54,7 +54,7 @@ func sendVertex(blk *blocks.Block, confirmed bool) { IsTx: isTx, IsTxAccepted: func() bool { if isTx { - txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(signedTransaction.Transaction.ID())) + txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(signedTransaction.Transaction.ID())) if exists { return txMetadata.IsAccepted() } @@ -87,7 +87,7 @@ func runVisualizer(component *app.Component) { signedTransaction, hasTx := block.SignedTransaction() if hasTx { - txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(signedTransaction.Transaction.ID())) + txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(signedTransaction.Transaction.ID())) if exists { txMetadata.OnAccepted(func() { sendTxAccepted(block.ID(), true) diff --git a/components/dashboard/ws.go b/components/dashboard/ws.go index 251da18e6..2d31869e3 100644 --- a/components/dashboard/ws.go +++ b/components/dashboard/ws.go @@ -50,7 +50,7 @@ func runWebSocketStreams(component *app.Component) { broadcastWsBlock(&wsblk{MsgTypeNodeStatus, currentNodeStatus()}) broadcastWsBlock(&wsblk{MsgTypeNeighborMetric, neighborMetrics()}) broadcastWsBlock(&wsblk{MsgTypeTipsMetric, &tipsInfo{ - TotalTips: len(deps.Protocol.MainEngineInstance().TipManager.StrongTips()) + len(deps.Protocol.MainEngineInstance().TipManager.WeakTips()), + TotalTips: len(deps.Protocol.MainEngine.Get().TipManager.StrongTips()) + len(deps.Protocol.MainEngine.Get().TipManager.WeakTips()), }}) case *componentsmetric: broadcastWsBlock(&wsblk{MsgTypeComponentCounterMetric, x}) diff --git a/components/dashboard_metrics/node.go b/components/dashboard_metrics/node.go index 2e347ab0d..7a6d98658 100644 --- a/components/dashboard_metrics/node.go +++ b/components/dashboard_metrics/node.go @@ -27,9 +27,9 @@ func nodeInfoExtended() *NodeInfoExtended { func databaseSizesMetrics() (*DatabaseSizesMetric, error) { return &DatabaseSizesMetric{ - Prunable: deps.Protocol.MainEngineInstance().Storage.PrunableDatabaseSize(), - Permanent: deps.Protocol.MainEngineInstance().Storage.PermanentDatabaseSize(), - Total: deps.Protocol.MainEngineInstance().Storage.Size(), + Prunable: deps.Protocol.MainEngine.Get().Storage.PrunableDatabaseSize(), + Permanent: deps.Protocol.MainEngine.Get().Storage.PermanentDatabaseSize(), + Total: deps.Protocol.MainEngine.Get().Storage.Size(), Time: time.Now().Unix(), }, nil } diff --git a/components/debugapi/blocks.go b/components/debugapi/blocks.go index f04fce315..954ddbc7e 100644 --- a/components/debugapi/blocks.go +++ b/components/debugapi/blocks.go @@ -10,7 +10,7 @@ import ( ) func getSlotBlockIDs(index iotago.SlotIndex) (*BlockChangesResponse, error) { - blocksForSlot, err := deps.Protocol.MainEngineInstance().Storage.Blocks(index) + blocksForSlot, err := deps.Protocol.MainEngine.Get().Storage.Blocks(index) if err != nil { return nil, ierrors.Wrapf(err, "failed to get block storage bucket for slot %d", index) } diff --git a/components/debugapi/component.go b/components/debugapi/component.go index 9ecbb674c..48ad5c510 100644 --- a/components/debugapi/component.go +++ b/components/debugapi/component.go @@ -153,7 +153,7 @@ func configure() error { return err } - if block, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(blockID); exists && block.ProtocolBlock() != nil { + if block, exists := deps.Protocol.MainEngine.Get().BlockCache.Block(blockID); exists && block.ProtocolBlock() != nil { response := BlockMetadataResponseFromBlock(block) return httpserver.JSONResponse(c, http.StatusOK, response) diff --git a/components/debugapi/node.go b/components/debugapi/node.go index 893fb7c4e..36b13b763 100644 --- a/components/debugapi/node.go +++ b/components/debugapi/node.go @@ -8,8 +8,8 @@ import ( //nolint:unparam // we have no error case right now func validatorsSummary() (*ValidatorsSummaryResponse, error) { - seatManager := deps.Protocol.MainEngineInstance().SybilProtection.SeatManager() - latestSlotIndex := deps.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Slot() + seatManager := deps.Protocol.MainEngine.Get().SybilProtection.SeatManager() + latestSlotIndex := deps.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot() latestCommittee := seatManager.Committee(latestSlotIndex) validatorSeats := []*Validator{} latestCommittee.Accounts().ForEach(func(id iotago.AccountID, pool *account.Pool) bool { diff --git a/components/debugapi/transactions.go b/components/debugapi/transactions.go index 890e7660d..a3216c529 100644 --- a/components/debugapi/transactions.go +++ b/components/debugapi/transactions.go @@ -17,7 +17,7 @@ func init() { func storeTransactionsPerSlot(scd *notarization.SlotCommittedDetails) error { slot := scd.Commitment.Slot() - stateDiff := deps.Protocol.MainEngineInstance().Ledger.MemPool().StateDiff(slot) + stateDiff := deps.Protocol.MainEngine.Get().Ledger.MemPool().StateDiff(slot) mutationsTree := ads.NewSet(mapdb.NewMapDB(), iotago.TransactionID.Bytes, iotago.TransactionIDFromBytes) tcs := &TransactionsChangesResponse{ Index: slot, diff --git a/components/inx/server_blocks.go b/components/inx/server_blocks.go index e45569dab..3ad9b2c16 100644 --- a/components/inx/server_blocks.go +++ b/components/inx/server_blocks.go @@ -18,7 +18,7 @@ import ( func (s *Server) ReadBlock(_ context.Context, blockID *inx.BlockId) (*inx.RawBlock, error) { blkID := blockID.Unwrap() - block, exists := deps.Protocol.MainEngineInstance().Block(blkID) // block +1 + block, exists := deps.Protocol.MainEngine.Get().Block(blkID) // block +1 if !exists { return nil, status.Errorf(codes.NotFound, "block %s not found", blkID.ToHex()) } @@ -148,7 +148,7 @@ func (s *Server) attachBlock(ctx context.Context, block *iotago.ProtocolBlock) ( } func getINXBlockMetadata(blockID iotago.BlockID) (*inx.BlockMetadata, error) { - blockMetadata, err := deps.Protocol.MainEngineInstance().Retainer.BlockMetadata(blockID) + blockMetadata, err := deps.Protocol.MainEngine.Get().Retainer.BlockMetadata(blockID) if err != nil { return nil, ierrors.Errorf("failed to get BlockMetadata: %v", err) } diff --git a/components/inx/server_commitments.go b/components/inx/server_commitments.go index d297a8b21..3e91f709b 100644 --- a/components/inx/server_commitments.go +++ b/components/inx/server_commitments.go @@ -29,7 +29,7 @@ func (s *Server) ReadCommitment(_ context.Context, req *inx.CommitmentRequest) ( commitmentIndex = req.GetCommitmentId().Unwrap().Slot() } - commitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(commitmentIndex) + commitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(commitmentIndex) if err != nil { if ierrors.Is(err, kvstore.ErrKeyNotFound) { return nil, status.Errorf(codes.NotFound, "commitment index %d not found", req.GetCommitmentIndex()) diff --git a/components/inx/server_issuance.go b/components/inx/server_issuance.go index 828380f08..eaa731bb8 100644 --- a/components/inx/server_issuance.go +++ b/components/inx/server_issuance.go @@ -12,7 +12,7 @@ import ( ) func (s *Server) RequestTips(_ context.Context, req *inx.TipsRequest) (*inx.TipsResponse, error) { - references := deps.Protocol.MainEngineInstance().TipSelection.SelectTips(int(req.GetCount())) + references := deps.Protocol.MainEngine.Get().TipSelection.SelectTips(int(req.GetCount())) return &inx.TipsResponse{ StrongTips: inx.NewBlockIds(references[iotago.StrongParentType]), @@ -30,7 +30,7 @@ func (s *Server) ValidatePayload(_ context.Context, payload *inx.RawPayload) (*i switch typedPayload := blockPayload.(type) { case *iotago.SignedTransaction: - memPool := deps.Protocol.MainEngineInstance().Ledger.MemPool() + memPool := deps.Protocol.MainEngine.Get().Ledger.MemPool() inputReferences, inputsErr := memPool.VM().Inputs(typedPayload.Transaction) if inputsErr != nil { diff --git a/components/inx/server_node.go b/components/inx/server_node.go index 687492207..ff324262b 100644 --- a/components/inx/server_node.go +++ b/components/inx/server_node.go @@ -16,7 +16,7 @@ func inxNodeStatus(status *syncmanager.SyncStatus) *inx.NodeStatus { // HasPruned is false when a node just started from a snapshot and keeps data of the LastPrunedEpoch, thus still need // to send finalized commitment. if !status.HasPruned || status.LatestFinalizedSlot > deps.Protocol.CurrentAPI().TimeProvider().EpochEnd(status.LastPrunedEpoch) { - finalizedCommitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(status.LatestFinalizedSlot) + finalizedCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(status.LatestFinalizedSlot) if err != nil { return nil } @@ -34,7 +34,7 @@ func inxNodeStatus(status *syncmanager.SyncStatus) *inx.NodeStatus { } func (s *Server) ReadNodeStatus(context.Context, *inx.NoParams) (*inx.NodeStatus, error) { - return inxNodeStatus(deps.Protocol.MainEngineInstance().SyncManager.SyncStatus()), nil + return inxNodeStatus(deps.Protocol.MainEngine.Get().SyncManager.SyncStatus()), nil } func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_ListenToNodeStatusServer) error { @@ -95,7 +95,7 @@ func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_List func (s *Server) ReadNodeConfiguration(context.Context, *inx.NoParams) (*inx.NodeConfiguration, error) { protoParams := make([]*inx.RawProtocolParameters, 0) - provider := deps.Protocol.MainEngineInstance().Storage.Settings().APIProvider() + provider := deps.Protocol.MainEngine.Get().Storage.Settings().APIProvider() for _, version := range provider.ProtocolEpochVersions() { protocolParams := provider.ProtocolParameters(version.Version) if protocolParams == nil { diff --git a/components/inx/server_utxo.go b/components/inx/server_utxo.go index 7d2160363..67b3a1bde 100644 --- a/components/inx/server_utxo.go +++ b/components/inx/server_utxo.go @@ -15,7 +15,7 @@ import ( ) func NewLedgerOutput(o *utxoledger.Output) (*inx.LedgerOutput, error) { - latestCommitment := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() l := &inx.LedgerOutput{ OutputId: inx.NewOutputId(o.OutputID()), @@ -29,7 +29,7 @@ func NewLedgerOutput(o *utxoledger.Output) (*inx.LedgerOutput, error) { includedSlotIndex := o.SlotBooked() if includedSlotIndex <= latestCommitment.Slot() { - includedCommitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(includedSlotIndex) + includedCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(includedSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", includedSlotIndex) } @@ -51,10 +51,10 @@ func NewLedgerSpent(s *utxoledger.Spent) (*inx.LedgerSpent, error) { SlotSpent: uint64(s.SlotIndexSpent()), } - latestCommitment := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() spentSlotIndex := s.SlotIndexSpent() if spentSlotIndex <= latestCommitment.Slot() { - spentCommitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(spentSlotIndex) + spentCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(spentSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", spentSlotIndex) } @@ -117,7 +117,7 @@ func NewLedgerUpdateBatchOperationConsumed(spent *utxoledger.Spent) (*inx.Ledger } func (s *Server) ReadOutput(_ context.Context, id *inx.OutputId) (*inx.OutputResponse, error) { - engine := deps.Protocol.MainEngineInstance() + engine := deps.Protocol.MainEngine.Get() latestCommitment := engine.Storage.Settings().LatestCommitment() @@ -156,7 +156,7 @@ func (s *Server) ReadOutput(_ context.Context, id *inx.OutputId) (*inx.OutputRes } func (s *Server) ReadUnspentOutputs(_ *inx.NoParams, srv inx.INX_ReadUnspentOutputsServer) error { - engine := deps.Protocol.MainEngineInstance() + engine := deps.Protocol.MainEngine.Get() latestCommitment := engine.Storage.Settings().LatestCommitment() var innerErr error @@ -229,7 +229,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li sendStateDiffsRange := func(startIndex iotago.SlotIndex, endIndex iotago.SlotIndex) error { for currentIndex := startIndex; currentIndex <= endIndex; currentIndex++ { - stateDiff, err := deps.Protocol.MainEngineInstance().Ledger.SlotDiffs(currentIndex) + stateDiff, err := deps.Protocol.MainEngine.Get().Ledger.SlotDiffs(currentIndex) if err != nil { return status.Errorf(codes.NotFound, "ledger update for milestoneIndex %d not found", currentIndex) } @@ -251,7 +251,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li return 0, nil } - latestCommitment := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() if startIndex > latestCommitment.Slot() { // no need to send previous milestone diffs @@ -259,7 +259,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li } // Stream all available milestone diffs first - pruningIndex := deps.Protocol.MainEngineInstance().SyncManager.LatestFinalizedSlot() + pruningIndex := deps.Protocol.MainEngine.Get().SyncManager.LatestFinalizedSlot() if startIndex <= pruningIndex { return 0, status.Errorf(codes.InvalidArgument, "given startMilestoneIndex %d is older than the current pruningIndex %d", startIndex, pruningIndex) } diff --git a/components/metrics/metrics_accounts.go b/components/metrics/metrics_accounts.go index a6950ba5e..0f7bf1086 100644 --- a/components/metrics/metrics_accounts.go +++ b/components/metrics/metrics_accounts.go @@ -23,7 +23,7 @@ var AccountMetrics = collector.NewCollection(accountNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - accountData, exists, _ := deps.Protocol.MainEngineInstance().Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Slot()) + accountData, exists, _ := deps.Protocol.MainEngine.Get().Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot()) if exists { deps.Collector.Update(accountNamespace, credits, float64(accountData.Credits.Value), accountData.ID.String()) } @@ -34,7 +34,7 @@ var AccountMetrics = collector.NewCollection(accountNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Seats seen as active by the node."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngineInstance().SybilProtection.SeatManager().OnlineCommittee().Size()), nil + return float64(deps.Protocol.MainEngine.Get().SybilProtection.SeatManager().OnlineCommittee().Size()), nil }), )), ) diff --git a/components/metrics/metrics_conflicts.go b/components/metrics/metrics_conflicts.go index 54caa7a8c..22baf4cd3 100644 --- a/components/metrics/metrics_conflicts.go +++ b/components/metrics/metrics_conflicts.go @@ -22,9 +22,9 @@ var ConflictMetrics = collector.NewCollection(conflictNamespace, collector.WithHelp("Time since transaction issuance to the conflict acceptance"), collector.WithInitFunc(func() { deps.Protocol.Events.Engine.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.MemPool().TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.MemPool().TransactionMetadata(conflictID); exists { firstAttachmentID := txMetadata.EarliestIncludedAttachment() - if block, blockExists := deps.Protocol.MainEngineInstance().BlockFromCache(firstAttachmentID); blockExists { + if block, blockExists := deps.Protocol.MainEngine.Get().BlockFromCache(firstAttachmentID); blockExists { timeSinceIssuance := time.Since(block.IssuingTime()).Milliseconds() timeIssuanceSeconds := float64(timeSinceIssuance) / 1000 deps.Collector.Update(conflictNamespace, resolutionTime, timeIssuanceSeconds) diff --git a/components/metrics/metrics_db.go b/components/metrics/metrics_db.go index c5147900e..65260a2ad 100644 --- a/components/metrics/metrics_db.go +++ b/components/metrics/metrics_db.go @@ -17,14 +17,14 @@ var DBMetrics = collector.NewCollection(dbNamespace, collector.WithType(collector.Gauge), collector.WithHelp("DB size in bytes for permanent storage."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngineInstance().Storage.PermanentDatabaseSize()), nil + return float64(deps.Protocol.MainEngine.Get().Storage.PermanentDatabaseSize()), nil }), )), collector.WithMetric(collector.NewMetric(sizeBytesPrunable, collector.WithType(collector.Gauge), collector.WithHelp("DB size in bytes for prunable storage."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngineInstance().Storage.PrunableDatabaseSize()), nil + return float64(deps.Protocol.MainEngine.Get().Storage.PrunableDatabaseSize()), nil }), )), ) diff --git a/components/metrics/metrics_info.go b/components/metrics/metrics_info.go index 7072124f3..4d3457798 100644 --- a/components/metrics/metrics_info.go +++ b/components/metrics/metrics_info.go @@ -36,7 +36,7 @@ var InfoMetrics = collector.NewCollection(infoNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Node sync status based on ATT."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - if deps.Protocol.MainEngineInstance().SyncManager.IsNodeSynced() { + if deps.Protocol.MainEngine.Get().SyncManager.IsNodeSynced() { return 1, nil } diff --git a/components/metrics/metrics_scheduler.go b/components/metrics/metrics_scheduler.go index 770f13baa..93180858d 100644 --- a/components/metrics/metrics_scheduler.go +++ b/components/metrics/metrics_scheduler.go @@ -38,22 +38,22 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithHelp("Current size of each node's queue (in work units)."), collector.WithInitFunc(func() { deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -66,25 +66,25 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithInitFunc(func() { deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { if _, isBasic := block.BasicBlock(); isBasic { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { if _, isBasic := block.BasicBlock(); isBasic { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { if _, isBasic := block.BasicBlock(); isBasic { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { if _, isBasic := block.BasicBlock(); isBasic { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -97,25 +97,25 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithInitFunc(func() { deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { if _, isValidation := block.ValidationBlock(); isValidation { - deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { if _, isValidation := block.ValidationBlock(); isValidation { - deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { if _, isValidation := block.ValidationBlock(); isValidation { - deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { if _, isValidation := block.ValidationBlock(); isValidation { - deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngineInstance().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -127,9 +127,9 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithHelp("Current amount of mana of each issuer in the queue."), collector.WithInitFunc(func() { deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - mana, err := deps.Protocol.MainEngineInstance().Ledger.ManaManager().GetManaOnAccount(block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Slot()) + mana, err := deps.Protocol.MainEngine.Get().Ledger.ManaManager().GetManaOnAccount(block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Slot()) if err != nil { - deps.Protocol.MainEngineInstance().ErrorHandler("metrics")(ierrors.Wrapf(err, "failed to retrieve mana on account %s for slot %d", block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Slot())) + deps.Protocol.MainEngine.Get().ErrorHandler("metrics")(ierrors.Wrapf(err, "failed to retrieve mana on account %s for slot %d", block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Slot())) return } @@ -168,42 +168,42 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Maximum number of basic blocks that can be stored in the buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngineInstance().CurrentAPI().ProtocolParameters().CongestionControlParameters().MaxBufferSize), []string{} + return float64(deps.Protocol.MainEngine.Get().CurrentAPI().ProtocolParameters().CongestionControlParameters().MaxBufferSize), []string{} }), )), collector.WithMetric(collector.NewMetric(basicBufferReadyBlockCount, collector.WithType(collector.Gauge), collector.WithHelp("Number of ready blocks in the scheduler buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngineInstance().Scheduler.ReadyBlocksCount()), []string{} + return float64(deps.Protocol.MainEngine.Get().Scheduler.ReadyBlocksCount()), []string{} }), )), collector.WithMetric(collector.NewMetric(basicBufferTotalSize, collector.WithType(collector.Gauge), collector.WithHelp("Current number of basic blocks in the scheduler buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngineInstance().Scheduler.BasicBufferSize()), []string{} + return float64(deps.Protocol.MainEngine.Get().Scheduler.BasicBufferSize()), []string{} }), )), collector.WithMetric(collector.NewMetric(rate, collector.WithType(collector.Gauge), collector.WithHelp("Current scheduling rate of basic blocks."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngineInstance().CurrentAPI().ProtocolParameters().CongestionControlParameters().SchedulerRate), []string{} + return float64(deps.Protocol.MainEngine.Get().CurrentAPI().ProtocolParameters().CongestionControlParameters().SchedulerRate), []string{} }), )), collector.WithMetric(collector.NewMetric(validatorBufferTotalSize, collector.WithType(collector.Gauge), collector.WithHelp("Current number of validation blocks in the scheduling buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngineInstance().Scheduler.ValidatorBufferSize()), []string{} + return float64(deps.Protocol.MainEngine.Get().Scheduler.ValidatorBufferSize()), []string{} }), )), collector.WithMetric(collector.NewMetric(validatorQueueMaxSize, collector.WithType(collector.Gauge), collector.WithHelp("Maximum number of validation blocks that can be stored in each validator queue."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngineInstance().CurrentAPI().ProtocolParameters().CongestionControlParameters().MaxValidationBufferSize), []string{} + return float64(deps.Protocol.MainEngine.Get().CurrentAPI().ProtocolParameters().CongestionControlParameters().MaxValidationBufferSize), []string{} }), )), ) diff --git a/components/metrics/metrics_slots.go b/components/metrics/metrics_slots.go index 02f49c8df..03423acfb 100644 --- a/components/metrics/metrics_slots.go +++ b/components/metrics/metrics_slots.go @@ -69,10 +69,10 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Number of accepted attachments by the node per slot."), collector.WithInitFunc(func() { - deps.Protocol.MainEngineInstance().Ledger.OnTransactionAttached(func(transactionMetadata mempool.TransactionMetadata) { + deps.Protocol.MainEngine.Get().Ledger.OnTransactionAttached(func(transactionMetadata mempool.TransactionMetadata) { transactionMetadata.OnAccepted(func() { for _, attachmentBlockID := range transactionMetadata.ValidAttachments() { - if block, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(attachmentBlockID); exists && block.IsAccepted() { + if block, exists := deps.Protocol.MainEngine.Get().BlockCache.Block(attachmentBlockID); exists && block.IsAccepted() { deps.Collector.Increment(slotNamespace, acceptedAttachments, strconv.Itoa(int(attachmentBlockID.Slot()))) } } @@ -94,7 +94,7 @@ var SlotMetrics = collector.NewCollection(slotNamespace, }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.TransactionMetadata(conflictID); exists { for _, attachment := range txMetadata.ValidAttachments() { deps.Collector.Increment(slotNamespace, createdConflicts, strconv.Itoa(int(attachment.Slot()))) } @@ -116,9 +116,9 @@ var SlotMetrics = collector.NewCollection(slotNamespace, }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.TransactionMetadata(conflictID); exists { for _, attachmentBlockID := range txMetadata.ValidAttachments() { - if attachment, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { + if attachment, exists := deps.Protocol.MainEngine.Get().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { deps.Collector.Increment(slotNamespace, acceptedConflicts, strconv.Itoa(int(attachment.ID().Slot()))) } } @@ -140,9 +140,9 @@ var SlotMetrics = collector.NewCollection(slotNamespace, }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.ConflictDAG.ConflictRejected.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngineInstance().Ledger.TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.TransactionMetadata(conflictID); exists { for _, attachmentBlockID := range txMetadata.ValidAttachments() { - if attachment, exists := deps.Protocol.MainEngineInstance().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { + if attachment, exists := deps.Protocol.MainEngine.Get().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { deps.Collector.Increment(slotNamespace, rejectedConflicts, strconv.Itoa(int(attachment.ID().Slot()))) } } diff --git a/components/metrics/metrics_tangle.go b/components/metrics/metrics_tangle.go index 44a20ba72..a6bb7d3e6 100644 --- a/components/metrics/metrics_tangle.go +++ b/components/metrics/metrics_tangle.go @@ -21,7 +21,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Number of strong tips in the tangle"), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - count := len(deps.Protocol.MainEngineInstance().TipManager.StrongTips()) + count := len(deps.Protocol.MainEngine.Get().TipManager.StrongTips()) return float64(count), nil }), @@ -30,7 +30,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Number of weak tips in the tangle"), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - count := len(deps.Protocol.MainEngineInstance().TipManager.WeakTips()) + count := len(deps.Protocol.MainEngine.Get().TipManager.WeakTips()) return float64(count), nil }), diff --git a/components/metricstracker/component.go b/components/metricstracker/component.go index a5d0ac03b..dd32ff1a3 100644 --- a/components/metricstracker/component.go +++ b/components/metricstracker/component.go @@ -46,7 +46,7 @@ func provide(c *dig.Container) error { } if err := c.Provide(func(deps metricsTrackerDeps) *MetricsTracker { - m := New(deps.Protocol.MainEngineInstance().SyncManager.IsBootstrapped) + m := New(deps.Protocol.MainEngine.Get().SyncManager.IsBootstrapped) return m }); err != nil { diff --git a/components/restapi/core/accounts.go b/components/restapi/core/accounts.go index 4790b3d58..3baa9d3dd 100644 --- a/components/restapi/core/accounts.go +++ b/components/restapi/core/accounts.go @@ -23,9 +23,9 @@ func congestionForAccountID(c echo.Context) (*apimodels.CongestionResponse, erro return nil, err } - slot := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Slot() + slot := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot() - acc, exists, err := deps.Protocol.MainEngineInstance().Ledger.Account(accountID, slot) + acc, exists, err := deps.Protocol.MainEngine.Get().Ledger.Account(accountID, slot) if err != nil { return nil, ierrors.Wrapf(err, "failed to get account: %s form the Ledger", accountID.ToHex()) } @@ -36,14 +36,14 @@ func congestionForAccountID(c echo.Context) (*apimodels.CongestionResponse, erro if err != nil { rmcSlot = 0 } - rmc, err := deps.Protocol.MainEngineInstance().Ledger.RMCManager().RMC(rmcSlot) + rmc, err := deps.Protocol.MainEngine.Get().Ledger.RMCManager().RMC(rmcSlot) if err != nil { return nil, ierrors.Wrapf(err, "failed to get RMC for slot: %d", rmcSlot) } return &apimodels.CongestionResponse{ SlotIndex: slot, - Ready: deps.Protocol.MainEngineInstance().Scheduler.IsBlockIssuerReady(accountID), + Ready: deps.Protocol.MainEngine.Get().Scheduler.IsBlockIssuerReady(accountID), ReferenceManaCost: rmc, BlockIssuanceCredits: acc.Credits.Value, }, nil @@ -61,7 +61,7 @@ func validators(c echo.Context) (*apimodels.ValidatorsResponse, error) { pageSize = restapi.ParamsRestAPI.MaxPageSize } } - latestCommittedSlot := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Slot() + latestCommittedSlot := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot() // no cursor provided will be the first request requestedSlot := latestCommittedSlot var cursorIndex uint32 @@ -80,13 +80,13 @@ func validators(c echo.Context) (*apimodels.ValidatorsResponse, error) { nextEpoch := deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 slotRange := uint32(requestedSlot) / restapi.ParamsRestAPI.RequestsMemoryCacheGranularity - registeredValidators, exists := deps.Protocol.MainEngineInstance().Retainer.RegisteredValidatorsCache(slotRange) + registeredValidators, exists := deps.Protocol.MainEngine.Get().Retainer.RegisteredValidatorsCache(slotRange) if !exists { - registeredValidators, err = deps.Protocol.MainEngineInstance().SybilProtection.OrderedRegisteredCandidateValidatorsList(nextEpoch) + registeredValidators, err = deps.Protocol.MainEngine.Get().SybilProtection.OrderedRegisteredCandidateValidatorsList(nextEpoch) if err != nil { return nil, ierrors.Wrapf(err, "failed to get ordered registered validators list for epoch %d", nextEpoch) } - deps.Protocol.MainEngineInstance().Retainer.RetainRegisteredValidatorsCache(slotRange, registeredValidators) + deps.Protocol.MainEngine.Get().Retainer.RetainRegisteredValidatorsCache(slotRange, registeredValidators) } page := registeredValidators[cursorIndex:lo.Min(cursorIndex+pageSize, uint32(len(registeredValidators)))] @@ -109,9 +109,9 @@ func validatorByAccountID(c echo.Context) (*apimodels.ValidatorResponse, error) if err != nil { return nil, ierrors.Wrapf(err, "failed to parse the %s parameter", restapipkg.ParameterAccountID) } - latestCommittedSlot := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Slot() + latestCommittedSlot := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot() - accountData, exists, err := deps.Protocol.MainEngineInstance().Ledger.Account(accountID, latestCommittedSlot) + accountData, exists, err := deps.Protocol.MainEngine.Get().Ledger.Account(accountID, latestCommittedSlot) if err != nil { return nil, ierrors.Wrapf(err, "failed to get account: %s form the Ledger", accountID.ToHex()) } @@ -119,7 +119,7 @@ func validatorByAccountID(c echo.Context) (*apimodels.ValidatorResponse, error) return nil, ierrors.Errorf("account not found: %s for latest committedSlot %d", accountID.ToHex(), latestCommittedSlot) } nextEpoch := deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 - active := deps.Protocol.MainEngineInstance().SybilProtection.IsCandidateActive(accountID, nextEpoch) + active := deps.Protocol.MainEngine.Get().SybilProtection.IsCandidateActive(accountID, nextEpoch) return &apimodels.ValidatorResponse{ AccountID: accountID, @@ -139,7 +139,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { return nil, ierrors.Wrapf(err, "failed to parse the %s parameter", restapipkg.ParameterOutputID) } - utxoOutput, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) + utxoOutput, err := deps.Protocol.MainEngine.Get().Ledger.Output(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output %s from ledger", outputID) } @@ -159,7 +159,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { stakingFeature := feature.(*iotago.StakingFeature) // check if the account is a validator - reward, actualStart, actualEnd, err = deps.Protocol.MainEngineInstance().SybilProtection.ValidatorReward( + reward, actualStart, actualEnd, err = deps.Protocol.MainEngine.Get().SybilProtection.ValidatorReward( accountOutput.AccountID, stakingFeature.StakedAmount, stakingFeature.StartEpoch, @@ -169,13 +169,13 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { case iotago.OutputDelegation: //nolint:forcetypeassert delegationOutput := utxoOutput.Output().(*iotago.DelegationOutput) - latestCommittedSlot := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Slot() + latestCommittedSlot := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot() stakingEnd := delegationOutput.EndEpoch // the output is in delayed calaiming state if endEpoch is set, otherwise we use latest possible epoch if delegationOutput.EndEpoch == 0 { - stakingEnd = deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Slot()) + stakingEnd = deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot()) } - reward, actualStart, actualEnd, err = deps.Protocol.MainEngineInstance().SybilProtection.DelegatorReward( + reward, actualStart, actualEnd, err = deps.Protocol.MainEngine.Get().SybilProtection.DelegatorReward( delegationOutput.ValidatorAddress.AccountID(), delegationOutput.DelegatedAmount, delegationOutput.StartEpoch, @@ -207,7 +207,7 @@ func selectedCommittee(c echo.Context) *apimodels.CommitteeResponse { slot = timeProvider.EpochEnd(epoch) } - seatedAccounts := deps.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(slot) + seatedAccounts := deps.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(slot) committee := make([]*apimodels.CommitteeMemberResponse, 0, seatedAccounts.Accounts().Size()) seatedAccounts.Accounts().ForEach(func(accountID iotago.AccountID, seat *account.Pool) bool { committee = append(committee, &apimodels.CommitteeMemberResponse{ diff --git a/components/restapi/core/blocks.go b/components/restapi/core/blocks.go index 67b041b16..a5aa696e6 100644 --- a/components/restapi/core/blocks.go +++ b/components/restapi/core/blocks.go @@ -21,7 +21,7 @@ func blockByID(c echo.Context) (*model.Block, error) { return nil, ierrors.Wrapf(err, "failed to parse block ID: %s", c.Param(restapi.ParameterBlockID)) } - block, exists := deps.Protocol.MainEngineInstance().Block(blockID) + block, exists := deps.Protocol.MainEngine.Get().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.ToHex()) } @@ -30,7 +30,7 @@ func blockByID(c echo.Context) (*model.Block, error) { } func blockMetadataByBlockID(blockID iotago.BlockID) (*apimodels.BlockMetadataResponse, error) { - blockMetadata, err := deps.Protocol.MainEngineInstance().Retainer.BlockMetadata(blockID) + blockMetadata, err := deps.Protocol.MainEngine.Get().Retainer.BlockMetadata(blockID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get block metadata: %s", blockID.ToHex()) } @@ -48,8 +48,8 @@ func blockMetadataByID(c echo.Context) (*apimodels.BlockMetadataResponse, error) } func blockIssuance(_ echo.Context) (*apimodels.IssuanceBlockHeaderResponse, error) { - references := deps.Protocol.MainEngineInstance().TipSelection.SelectTips(iotago.BlockMaxParents) - slotCommitment := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment() + references := deps.Protocol.MainEngine.Get().TipSelection.SelectTips(iotago.BlockMaxParents) + slotCommitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() if len(references[iotago.StrongParentType]) == 0 { return nil, ierrors.Wrap(echo.ErrServiceUnavailable, "get references failed") @@ -59,7 +59,7 @@ func blockIssuance(_ echo.Context) (*apimodels.IssuanceBlockHeaderResponse, erro StrongParents: references[iotago.StrongParentType], WeakParents: references[iotago.WeakParentType], ShallowLikeParents: references[iotago.ShallowLikeParentType], - LatestFinalizedSlot: deps.Protocol.MainEngineInstance().SyncManager.LatestFinalizedSlot(), + LatestFinalizedSlot: deps.Protocol.MainEngine.Get().SyncManager.LatestFinalizedSlot(), Commitment: slotCommitment.Commitment(), } diff --git a/components/restapi/core/commitment.go b/components/restapi/core/commitment.go index 6eb3d30a1..53de1df08 100644 --- a/components/restapi/core/commitment.go +++ b/components/restapi/core/commitment.go @@ -20,7 +20,7 @@ func indexByCommitmentID(c echo.Context) (iotago.SlotIndex, error) { } func getCommitmentDetails(index iotago.SlotIndex) (*iotago.Commitment, error) { - commitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(index) + commitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(index) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment: %d", index) } @@ -29,7 +29,7 @@ func getCommitmentDetails(index iotago.SlotIndex) (*iotago.Commitment, error) { } func getUTXOChanges(index iotago.SlotIndex) (*apimodels.UTXOChangesResponse, error) { - diffs, err := deps.Protocol.MainEngineInstance().Ledger.SlotDiffs(index) + diffs, err := deps.Protocol.MainEngine.Get().Ledger.SlotDiffs(index) if err != nil { return nil, ierrors.Wrapf(err, "failed to get slot diffs: %d", index) } diff --git a/components/restapi/core/component.go b/components/restapi/core/component.go index fb4085c48..22ee88e26 100644 --- a/components/restapi/core/component.go +++ b/components/restapi/core/component.go @@ -343,7 +343,7 @@ func AddFeature(feature string) { func checkNodeSynced() echo.MiddlewareFunc { return func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { - if !deps.Protocol.MainEngineInstance().SyncManager.IsNodeSynced() { + if !deps.Protocol.MainEngine.Get().SyncManager.IsNodeSynced() { return ierrors.Wrap(echo.ErrServiceUnavailable, "node is not synced") } diff --git a/components/restapi/core/node.go b/components/restapi/core/node.go index 927c58515..325aba0c3 100644 --- a/components/restapi/core/node.go +++ b/components/restapi/core/node.go @@ -6,7 +6,7 @@ import ( func protocolParameters() []*apimodels.InfoResProtocolParameters { protoParams := make([]*apimodels.InfoResProtocolParameters, 0) - provider := deps.Protocol.MainEngineInstance().Storage.Settings().APIProvider() + provider := deps.Protocol.MainEngine.Get().Storage.Settings().APIProvider() for _, version := range provider.ProtocolEpochVersions() { protocolParams := provider.ProtocolParameters(version.Version) if protocolParams == nil { @@ -23,8 +23,8 @@ func protocolParameters() []*apimodels.InfoResProtocolParameters { } func info() *apimodels.InfoResponse { - clSnapshot := deps.Protocol.MainEngineInstance().Clock.Snapshot() - syncStatus := deps.Protocol.MainEngineInstance().SyncManager.SyncStatus() + clSnapshot := deps.Protocol.MainEngine.Get().Clock.Snapshot() + syncStatus := deps.Protocol.MainEngine.Get().SyncManager.SyncStatus() metrics := deps.MetricsTracker.NodeMetrics() return &apimodels.InfoResponse{ diff --git a/components/restapi/core/transaction.go b/components/restapi/core/transaction.go index 0ee22c7d4..28bf683f4 100644 --- a/components/restapi/core/transaction.go +++ b/components/restapi/core/transaction.go @@ -25,7 +25,7 @@ func blockIDFromTransactionID(transactionID iotago.TransactionID) (iotago.BlockI outputID := iotago.OutputID{} copy(outputID[:], transactionID[:]) - output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngine.Get().Ledger.Output(outputID) if err != nil { return iotago.EmptyBlockID, ierrors.Wrapf(err, "failed to get output: %s", outputID.String()) } @@ -39,7 +39,7 @@ func blockByTransactionID(c echo.Context) (*model.Block, error) { return nil, ierrors.Wrapf(err, "failed to get block ID by transaction ID") } - block, exists := deps.Protocol.MainEngineInstance().Block(blockID) + block, exists := deps.Protocol.MainEngine.Get().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.String()) } diff --git a/components/restapi/core/utxo.go b/components/restapi/core/utxo.go index c62280f3b..2b61d2afc 100644 --- a/components/restapi/core/utxo.go +++ b/components/restapi/core/utxo.go @@ -16,7 +16,7 @@ func getOutput(c echo.Context) (*utxoledger.Output, error) { return nil, ierrors.Wrapf(err, "failed to parse output ID param: %s", c.Param(restapipkg.ParameterOutputID)) } - output, err := deps.Protocol.MainEngineInstance().Ledger.Output(outputID) + output, err := deps.Protocol.MainEngine.Get().Ledger.Output(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output: %s from the Ledger", outputID.String()) } @@ -30,7 +30,7 @@ func getOutputMetadata(c echo.Context) (*apimodels.OutputMetadataResponse, error return nil, ierrors.Wrapf(err, "failed to parse output ID param: %s", c.Param(restapipkg.ParameterOutputID)) } - output, spent, err := deps.Protocol.MainEngineInstance().Ledger.OutputOrSpent(outputID) + output, spent, err := deps.Protocol.MainEngine.Get().Ledger.OutputOrSpent(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output: %s from the Ledger", outputID.String()) } @@ -43,7 +43,7 @@ func getOutputMetadata(c echo.Context) (*apimodels.OutputMetadataResponse, error } func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMetadataResponse, error) { - latestCommitment := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() resp := &apimodels.OutputMetadataResponse{ BlockID: output.BlockID(), @@ -55,7 +55,7 @@ func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMeta includedSlotIndex := output.SlotBooked() if includedSlotIndex <= latestCommitment.Slot() { - includedCommitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(includedSlotIndex) + includedCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(includedSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", includedSlotIndex) } @@ -66,7 +66,7 @@ func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMeta } func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadataResponse, error) { - latestCommitment := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() resp := &apimodels.OutputMetadataResponse{ BlockID: spent.BlockID(), @@ -79,7 +79,7 @@ func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadat includedSlotIndex := spent.Output().SlotBooked() if includedSlotIndex <= latestCommitment.Slot() { - includedCommitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(includedSlotIndex) + includedCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(includedSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", includedSlotIndex) } @@ -88,7 +88,7 @@ func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadat spentSlotIndex := spent.SlotIndexSpent() if spentSlotIndex <= latestCommitment.Slot() { - spentCommitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(spentSlotIndex) + spentCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(spentSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", spentSlotIndex) } diff --git a/components/restapi/management/pruning.go b/components/restapi/management/pruning.go index 2907feaad..6ab776de0 100644 --- a/components/restapi/management/pruning.go +++ b/components/restapi/management/pruning.go @@ -10,7 +10,7 @@ import ( ) func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { - if deps.Protocol.MainEngineInstance().Storage.IsPruning() { + if deps.Protocol.MainEngine.Get().Storage.IsPruning() { return nil, ierrors.Wrapf(echo.ErrServiceUnavailable, "node is already pruning") } @@ -30,14 +30,14 @@ func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { var err error if request.Index != 0 { - err = deps.Protocol.MainEngineInstance().Storage.PruneByEpochIndex(request.Index) + err = deps.Protocol.MainEngine.Get().Storage.PruneByEpochIndex(request.Index) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } } if request.Depth != 0 { - _, _, err := deps.Protocol.MainEngineInstance().Storage.PruneByDepth(request.Depth) + _, _, err := deps.Protocol.MainEngine.Get().Storage.PruneByDepth(request.Depth) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } @@ -49,13 +49,13 @@ func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } - err = deps.Protocol.MainEngineInstance().Storage.PruneBySize(pruningTargetDatabaseSizeBytes) + err = deps.Protocol.MainEngine.Get().Storage.PruneBySize(pruningTargetDatabaseSizeBytes) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } } - targetIndex, hasPruned := deps.Protocol.MainEngineInstance().Storage.LastPrunedEpoch() + targetIndex, hasPruned := deps.Protocol.MainEngine.Get().Storage.LastPrunedEpoch() if hasPruned { targetIndex++ } diff --git a/components/restapi/routes.go b/components/restapi/routes.go index 262284b27..d03cb7820 100644 --- a/components/restapi/routes.go +++ b/components/restapi/routes.go @@ -21,7 +21,7 @@ type RoutesResponse struct { func setupRoutes() { deps.Echo.GET(nodeAPIHealthRoute, func(c echo.Context) error { - if deps.Protocol.MainEngineInstance().SyncManager.IsNodeSynced() { + if deps.Protocol.MainEngine.Get().SyncManager.IsNodeSynced() { return c.NoContent(http.StatusOK) } diff --git a/components/validator/component.go b/components/validator/component.go index c7a79bb96..ee174943b 100644 --- a/components/validator/component.go +++ b/components/validator/component.go @@ -68,7 +68,7 @@ func run() error { } func checkValidatorStatus(ctx context.Context) { - account, exists, err := deps.Protocol.MainEngineInstance().Ledger.Account(validatorAccount.ID(), deps.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Slot()) + account, exists, err := deps.Protocol.MainEngine.Get().Ledger.Account(validatorAccount.ID(), deps.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot()) if err != nil { Component.LogErrorf("error when retrieving BlockIssuer account %s: %w", validatorAccount.ID(), err) diff --git a/components/validator/issuer.go b/components/validator/issuer.go index 97c0497a6..e300a189a 100644 --- a/components/validator/issuer.go +++ b/components/validator/issuer.go @@ -11,7 +11,7 @@ import ( func issueValidatorBlock(ctx context.Context) { // Get the main engine instance in case it changes mid-execution. - engineInstance := deps.Protocol.MainEngineInstance() + engineInstance := deps.Protocol.MainEngine.Get() // Get the latest commitment from the engine before to avoid race conditions if something is committed after we fix block issuing time. latestCommitment := engineInstance.Storage.Settings().LatestCommitment() diff --git a/pkg/protocol/api_provider.go b/pkg/protocol/api_provider.go index 7f3a2317c..1c592a52c 100644 --- a/pkg/protocol/api_provider.go +++ b/pkg/protocol/api_provider.go @@ -18,8 +18,8 @@ func NewAPIProvider(protocol *Protocol) *APIProvider { // APIForVersion returns the API for the given version. func (a *APIProvider) APIForVersion(version iotago.Version) (api iotago.API, err error) { - if mainEngineInstance := a.MainEngineInstance(); mainEngineInstance != nil { - return a.MainEngineInstance().APIForVersion(version) + if mainEngineInstance := a.MainEngine.Get(); mainEngineInstance != nil { + return a.MainEngine.Get().APIForVersion(version) } return nil, ierrors.New("no engine instance available") @@ -27,20 +27,20 @@ func (a *APIProvider) APIForVersion(version iotago.Version) (api iotago.API, err // APIForSlot returns the API for the given slot. func (a *APIProvider) APIForSlot(slot iotago.SlotIndex) iotago.API { - return a.MainEngineInstance().APIForSlot(slot) + return a.MainEngine.Get().APIForSlot(slot) } // APIForEpoch returns the API for the given epoch. func (a *APIProvider) APIForEpoch(epoch iotago.EpochIndex) iotago.API { - return a.MainEngineInstance().APIForEpoch(epoch) + return a.MainEngine.Get().APIForEpoch(epoch) } // CurrentAPI returns the current API. func (a *APIProvider) CurrentAPI() iotago.API { - return a.MainEngineInstance().CurrentAPI() + return a.MainEngine.Get().CurrentAPI() } // LatestAPI returns the latest API. func (a *APIProvider) LatestAPI() iotago.API { - return a.MainEngineInstance().LatestAPI() + return a.MainEngine.Get().LatestAPI() } diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 9facc83ff..88b53a475 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -114,10 +114,6 @@ func (c *ChainManager) Commitment(commitmentID iotago.CommitmentID, requestMissi return commitmentRequest.Result(), nil } -func (c *ChainManager) MainEngineInstance() *engine.Engine { - return c.protocol.EngineManager.MainEngine.Get() -} - func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { return c.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { mutations.AddedElements().Range(callback) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 2ee6270de..05019d6b0 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -109,7 +109,7 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { func (b *BlocksProtocol) ProcessRequest(blockID iotago.BlockID, from peer.ID) { b.workerPool.Submit(func() { - block, exists := b.protocol.MainEngineInstance().Block(blockID) + block, exists := b.protocol.MainEngine.Get().Block(blockID) if !exists { b.LogTrace("requested block not found", "blockID", blockID) diff --git a/pkg/tests/accounts_test.go b/pkg/tests/accounts_test.go index c0bfc7b00..b17709be0 100644 --- a/pkg/tests/accounts_test.go +++ b/pkg/tests/accounts_test.go @@ -61,7 +61,7 @@ func Test_TransitionAccount(t *testing.T) { newGenesisOutputKey := utils.RandBlockIssuerKey() newAccountBlockIssuerKey := utils.RandBlockIssuerKey() - latestCommitmentID := node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID() + latestCommitmentID := node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID() accountInput, accountOutputs, accountWallets := ts.TransactionFramework.TransitionAccount( "Genesis:1", @@ -120,7 +120,7 @@ func Test_TransitionAccount(t *testing.T) { // commit until the expiry slot of the transitioned genesis account plus one latestParent = ts.CommitUntilSlot(accountOutputs[0].FeatureSet().BlockIssuer().ExpirySlot+1, latestParent) // set the expiry slof of the transitioned genesis account to the latest committed + MaxCommittableAge - newAccountExpirySlot := node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Slot() + ts.API.ProtocolParameters().MaxCommittableAge() + newAccountExpirySlot := node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot() + ts.API.ProtocolParameters().MaxCommittableAge() inputForNewAccount, newAccountOutputs, newAccountWallets := ts.TransactionFramework.CreateAccountFromInput("TX1:1", testsuite.WithAccountConditions(iotago.AccountOutputUnlockConditions{ &iotago.StateControllerAddressUnlockCondition{Address: ts.TransactionFramework.DefaultAddress()}, @@ -140,7 +140,7 @@ func Test_TransitionAccount(t *testing.T) { AccountID: genesisAccountOutput.AccountID, }, &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForNewAccount), @@ -149,7 +149,7 @@ func Test_TransitionAccount(t *testing.T) { testsuite.WithSlotCreated(block2Slot), )) - block2 := ts.IssueBasicBlockAtSlotWithOptions("block2", block2Slot, node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx2, mock.WithStrongParents(latestParent.ID())) + block2 := ts.IssueBasicBlockAtSlotWithOptions("block2", block2Slot, node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx2, mock.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(block2Slot, block2) @@ -211,7 +211,7 @@ func Test_TransitionAccount(t *testing.T) { tx3 := lo.PanicOnErr(ts.TransactionFramework.CreateSignedTransactionWithOptions("TX3", newDelegationWallets, testsuite.WithContextInputs(iotago.TxEssenceContextInputs{ &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForNewDelegation), @@ -219,7 +219,7 @@ func Test_TransitionAccount(t *testing.T) { testsuite.WithSlotCreated(block3Slot), )) - block3 := ts.IssueBasicBlockAtSlotWithOptions("block3", block3Slot, node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx3, mock.WithStrongParents(latestParent.ID())) + block3 := ts.IssueBasicBlockAtSlotWithOptions("block3", block3Slot, node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx3, mock.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(block3Slot, block3) delegatedAmount := inputForNewDelegation[0].BaseTokenAmount() @@ -255,7 +255,7 @@ func Test_TransitionAccount(t *testing.T) { tx4 := lo.PanicOnErr(ts.TransactionFramework.CreateSignedTransactionWithOptions("TX4", delegationTransitionWallets, testsuite.WithContextInputs(iotago.TxEssenceContextInputs{ &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForDelegationTransition), @@ -265,7 +265,7 @@ func Test_TransitionAccount(t *testing.T) { block4Slot := latestParent.ID().Slot() - block4 := ts.IssueBasicBlockAtSlotWithOptions("block4", block4Slot, node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx4, mock.WithStrongParents(latestParent.ID())) + block4 := ts.IssueBasicBlockAtSlotWithOptions("block4", block4Slot, node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx4, mock.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(block4Slot, block4) @@ -309,7 +309,7 @@ func Test_TransitionAccount(t *testing.T) { slotIndexBlock5 := latestParent.ID().Index() - block5 := ts.IssueBasicBlockAtSlotWithOptions("block5", slotIndexBlock5, node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx5, mock.WithStrongParents(latestParent.ID())) + block5 := ts.IssueBasicBlockAtSlotWithOptions("block5", slotIndexBlock5, node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx5, mock.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(slotIndexBlock5, block5) @@ -341,7 +341,7 @@ func Test_TransitionAccount(t *testing.T) { AccountID: implicitAccountID, }, &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForImplicitAccountTransition), @@ -351,7 +351,7 @@ func Test_TransitionAccount(t *testing.T) { slotIndexBlock6 := latestParent.ID().Index() - block6 := ts.IssueBasicBlockAtSlotWithOptions("block6", slotIndexBlock6, node1.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx6, mock.WithStrongParents(latestParent.ID())) + block6 := ts.IssueBasicBlockAtSlotWithOptions("block6", slotIndexBlock6, node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx6, mock.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(slotIndexBlock6, block6) diff --git a/pkg/tests/booker_test.go b/pkg/tests/booker_test.go index 5fe14486a..5e1acf4e3 100644 --- a/pkg/tests/booker_test.go +++ b/pkg/tests/booker_test.go @@ -242,7 +242,7 @@ func Test_SpendRejectedCommittedRace(t *testing.T) { node2.Validator.AccountID, }, ts.Nodes()...) - genesisCommitment := lo.PanicOnErr(node1.Protocol.MainEngineInstance().Storage.Commitments().Load(0)).Commitment() + genesisCommitment := lo.PanicOnErr(node1.Protocol.MainEngine.Get().Storage.Commitments().Load(0)).Commitment() // Create and issue double spends { @@ -347,7 +347,7 @@ func Test_SpendRejectedCommittedRace(t *testing.T) { ) } - commitment1 := lo.PanicOnErr(node2.Protocol.MainEngineInstance().Storage.Commitments().Load(1)).Commitment() + commitment1 := lo.PanicOnErr(node2.Protocol.MainEngine.Get().Storage.Commitments().Load(1)).Commitment() // This should be booked on the rejected tx1 conflict tx4 := lo.PanicOnErr(ts.TransactionFramework.CreateSimpleTransaction("tx4", 1, "tx1:0")) @@ -494,7 +494,7 @@ func Test_SpendPendingCommittedRace(t *testing.T) { node2.Validator.AccountID, }, ts.Nodes()...) - genesisCommitment := lo.PanicOnErr(node1.Protocol.MainEngineInstance().Storage.Commitments().Load(0)).Commitment() + genesisCommitment := lo.PanicOnErr(node1.Protocol.MainEngine.Get().Storage.Commitments().Load(0)).Commitment() // Create and issue double spends { @@ -575,7 +575,7 @@ func Test_SpendPendingCommittedRace(t *testing.T) { ) } - commitment1 := lo.PanicOnErr(node2.Protocol.MainEngineInstance().Storage.Commitments().Load(1)).Commitment() + commitment1 := lo.PanicOnErr(node2.Protocol.MainEngine.Get().Storage.Commitments().Load(1)).Commitment() // Issue a block booked on a pending conflict on node2 { diff --git a/pkg/tests/confirmation_state_test.go b/pkg/tests/confirmation_state_test.go index 23e10e812..f97bf1c5b 100644 --- a/pkg/tests/confirmation_state_test.go +++ b/pkg/tests/confirmation_state_test.go @@ -98,7 +98,7 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithChainID(genesisCommitment.MustID()), testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID))), + testsuite.WithSybilProtectionOnlineCommittee(lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID))), testsuite.WithEvictedSlot(0), testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), @@ -135,7 +135,7 @@ func TestConfirmationFlags(t *testing.T) { // Issue in the next slot so that slot 2 becomes committed. - slot1Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngineInstance().Storage.Commitments().Load(1)).Commitment() + slot1Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine.Get().Storage.Commitments().Load(1)).Commitment() slot2CommittableSlot := slot1CommittableSlot + 1 alias2A0 := fmt.Sprintf("A.%d.0", slot2CommittableSlot) alias2A1 := fmt.Sprintf("A.%d.1", slot2CommittableSlot) @@ -155,15 +155,15 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(2), testsuite.WithSybilProtectionCommittee(slot2CommittableSlot, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), ), testsuite.WithEvictedSlot(2), ) // Confirm aliasA0 by pre-confirming a block a 3rd validator in the next slot. - slot2Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngineInstance().Storage.Commitments().Load(2)).Commitment() + slot2Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine.Get().Storage.Commitments().Load(2)).Commitment() slot3CommittableSlot := slot2CommittableSlot + 1 alias3C0 := fmt.Sprintf("C.%d.0", slot3CommittableSlot) @@ -195,9 +195,9 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(2), testsuite.WithSybilProtectionCommittee(slot3CommittableSlot, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.Validator.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.Validator.AccountID)), ), testsuite.WithEvictedSlot(2), ) @@ -250,9 +250,9 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(3), testsuite.WithSybilProtectionCommittee(slot4CommittableSlot, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.Validator.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.Validator.AccountID)), ), testsuite.WithEvictedSlot(3), ) diff --git a/pkg/tests/protocol_engine_rollback_test.go b/pkg/tests/protocol_engine_rollback_test.go index 4baa862d1..07b271db1 100644 --- a/pkg/tests/protocol_engine_rollback_test.go +++ b/pkg/tests/protocol_engine_rollback_test.go @@ -91,14 +91,14 @@ func TestProtocol_EngineRollbackFinalization(t *testing.T) { node3.Validator.AccountID, } expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), } for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") } { @@ -187,7 +187,7 @@ func TestProtocol_EngineRollbackFinalization(t *testing.T) { for slot := 1; slot <= 13; slot++ { copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) + sourceCommitment, err := node1.Protocol.MainEngine.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) } @@ -265,19 +265,19 @@ func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { node3.Validator.AccountID, } expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), } expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), } for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") } { @@ -329,7 +329,7 @@ func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { // Update online committee. for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) manualPOA.SetOnline("node0", "node1") manualPOA.SetOffline("node2", "node3") } @@ -373,7 +373,7 @@ func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { for slot := 1; slot <= 13; slot++ { copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) + sourceCommitment, err := node1.Protocol.MainEngine.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) } @@ -451,19 +451,19 @@ func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { node3.Validator.AccountID, } expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), } expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), } for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") } { @@ -515,7 +515,7 @@ func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { // Update online committee. for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) manualPOA.SetOnline("node0", "node1") manualPOA.SetOffline("node2", "node3") } @@ -559,7 +559,7 @@ func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { for slot := 1; slot <= 15; slot++ { copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) + sourceCommitment, err := node1.Protocol.MainEngine.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) } @@ -637,19 +637,19 @@ func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T node3.Validator.AccountID, } expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), } expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), } for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") } { @@ -701,7 +701,7 @@ func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T // Update online committee. for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) manualPOA.SetOnline("node0", "node1") manualPOA.SetOffline("node2", "node3") } @@ -745,7 +745,7 @@ func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T for slot := 1; slot <= 9; slot++ { copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngineInstance().Storage.Commitments().Load(iotago.SlotIndex(slot)) + sourceCommitment, err := node1.Protocol.MainEngine.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) } diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 7643b3199..59c1e0a61 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -121,20 +121,20 @@ func TestProtocol_EngineSwitching(t *testing.T) { node7.Validator.AccountID, } expectedP1OnlineCommittee := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node4.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node4.Validator.AccountID)), } expectedP2OnlineCommittee := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node6.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(node7.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node6.Validator.AccountID)), + lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node7.Validator.AccountID)), } expectedOnlineCommittee := append(expectedP1OnlineCommittee, expectedP2OnlineCommittee...) for _, node := range ts.Nodes() { - node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") + node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") } // Verify that nodes have the expected states. @@ -200,7 +200,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { // Set online committee for each partition. for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) if node.Partition == "P1" { manualPOA.SetOnline("node0", "node1", "node2", "node3", "node4") manualPOA.SetOffline("node6", "node7") @@ -322,7 +322,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { } for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) manualPOA.SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") } // Merge the partitions diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index 20ffe89a3..8a5d674b2 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -51,7 +51,7 @@ func Test_BookInCommittedSlot(t *testing.T) { } expectedOnlineCommittee := []account.SeatIndex{ - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), } // Verify that nodes have the expected states. @@ -106,7 +106,7 @@ func Test_BookInCommittedSlot(t *testing.T) { }) ts.AssertAttestationsForSlot(slot, ts.Blocks(aliases...), ts.Nodes()...) } - ts.IssueValidationBlockAtSlot("5*", 5, lo.PanicOnErr(nodeA.Protocol.MainEngineInstance().Storage.Commitments().Load(3)).Commitment(), ts.Node("nodeA"), ts.BlockIDsWithPrefix("4.3-")...) + ts.IssueValidationBlockAtSlot("5*", 5, lo.PanicOnErr(nodeA.Protocol.MainEngine.Get().Storage.Commitments().Load(3)).Commitment(), ts.Node("nodeA"), ts.BlockIDsWithPrefix("4.3-")...) ts.AssertBlocksExist(ts.Blocks("5*"), false, ts.Nodes("nodeA")...) } @@ -154,8 +154,8 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { } expectedOnlineCommittee := []account.SeatIndex{ - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), + lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), } // Verify that nodes have the expected states. @@ -310,7 +310,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngineInstance().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.MainEngine.Get().WriteSnapshot(snapshotPath)) nodeD := ts.AddNode("nodeD") nodeD.Initialize(true, append(nodeOptions, @@ -331,7 +331,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { ts.AssertStorageRootBlocks(expectedStorageRootBlocksFrom9, ts.Nodes("nodeD")...) } - slot7Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngineInstance().Storage.Commitments().Load(7)) + slot7Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine.Get().Storage.Commitments().Load(7)) ts.AssertNodeState(ts.Nodes("nodeC-restarted", "nodeD"), testsuite.WithSnapshotImported(true), @@ -460,7 +460,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngineInstance().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.MainEngine.Get().WriteSnapshot(snapshotPath)) nodeD := ts.AddNode("nodeE") nodeD.Initialize(true, append(nodeOptions, diff --git a/pkg/tests/upgrade_signaling_test.go b/pkg/tests/upgrade_signaling_test.go index 0085da16f..9f07e86c1 100644 --- a/pkg/tests/upgrade_signaling_test.go +++ b/pkg/tests/upgrade_signaling_test.go @@ -173,7 +173,7 @@ func Test_Upgrade_Signaling(t *testing.T) { }, ts.Nodes()...) // check that rollback is correct - account, exists, err := ts.Node("nodeA").Protocol.MainEngineInstance().Ledger.Account(ts.Node("nodeA").Validator.AccountID, 7) + account, exists, err := ts.Node("nodeA").Protocol.MainEngine.Get().Ledger.Account(ts.Node("nodeA").Validator.AccountID, 7) require.NoError(t, err) require.True(t, exists) require.Equal(t, model.VersionAndHash{Version: 4, Hash: hash2}, account.LatestSupportedProtocolVersionAndHash) @@ -221,7 +221,7 @@ func Test_Upgrade_Signaling(t *testing.T) { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngineInstance().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.MainEngine.Get().WriteSnapshot(snapshotPath)) { nodeG := ts.AddNode("nodeG") @@ -283,7 +283,7 @@ func Test_Upgrade_Signaling(t *testing.T) { // Create snapshot and start new nodeH from it. { snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeE2").Protocol.MainEngineInstance().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeE2").Protocol.MainEngine.Get().WriteSnapshot(snapshotPath)) nodeG := ts.AddNode("nodeH") nodeG.Initialize(true, diff --git a/pkg/testsuite/accounts.go b/pkg/testsuite/accounts.go index 2dfb77781..5265cb569 100644 --- a/pkg/testsuite/accounts.go +++ b/pkg/testsuite/accounts.go @@ -13,12 +13,12 @@ import ( func (t *TestSuite) AssertAccountData(accountData *accounts.AccountData, nodes ...*mock.Node) { t.Eventually(func() error { for _, node := range nodes { - actualAccountData, exists, err := node.Protocol.MainEngineInstance().Ledger.Account(accountData.ID, node.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Slot()) + actualAccountData, exists, err := node.Protocol.MainEngine.Get().Ledger.Account(accountData.ID, node.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot()) if err != nil { return ierrors.Wrap(err, "AssertAccountData: failed to load account data") } if !exists { - return ierrors.Errorf("AssertAccountData: %s: account %s does not exist with latest committed slot %d", node.Name, accountData.ID, node.Protocol.MainEngineInstance().SyncManager.LatestCommitment().Slot()) + return ierrors.Errorf("AssertAccountData: %s: account %s does not exist with latest committed slot %d", node.Name, accountData.ID, node.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot()) } if accountData.ID != actualAccountData.ID { @@ -74,7 +74,7 @@ func (t *TestSuite) AssertAccountDiff(accountID iotago.AccountID, index iotago.S t.Eventually(func() error { for _, node := range nodes { - accountsDiffStorage, err := node.Protocol.MainEngineInstance().Storage.AccountDiffs(index) + accountsDiffStorage, err := node.Protocol.MainEngine.Get().Storage.AccountDiffs(index) if err != nil { return ierrors.Wrapf(err, "AssertAccountDiff: %s: failed to load accounts diff for slot %d", node.Name, index) } diff --git a/pkg/testsuite/attestations.go b/pkg/testsuite/attestations.go index a9d258a48..d4b72a9c7 100644 --- a/pkg/testsuite/attestations.go +++ b/pkg/testsuite/attestations.go @@ -23,7 +23,7 @@ func (t *TestSuite) AssertAttestationsForSlot(slot iotago.SlotIndex, blocks []*b for _, node := range nodes { t.Eventually(func() error { - attestationTree, err := node.Protocol.MainEngineInstance().Attestations.GetMap(slot) + attestationTree, err := node.Protocol.MainEngine.Get().Attestations.GetMap(slot) if err != nil { return ierrors.Wrapf(err, "AssertAttestationsForSlot: %s: error loading attestation tree for slot %d", node.Name, slot) } diff --git a/pkg/testsuite/blocks.go b/pkg/testsuite/blocks.go index 2d5c3d817..c41bcd639 100644 --- a/pkg/testsuite/blocks.go +++ b/pkg/testsuite/blocks.go @@ -16,7 +16,7 @@ func (t *TestSuite) AssertBlock(block *blocks.Block, node *mock.Node) *model.Blo var loadedBlock *model.Block t.Eventually(func() error { var exists bool - loadedBlock, exists = node.Protocol.MainEngineInstance().Block(block.ID()) + loadedBlock, exists = node.Protocol.MainEngine.Get().Block(block.ID()) if !exists { return ierrors.Errorf("AssertBlock: %s: block %s does not exist", node.Name, block.ID()) } @@ -47,7 +47,7 @@ func (t *TestSuite) AssertBlocksExist(blocks []*blocks.Block, expectedExist bool t.AssertBlock(block, node) } else { t.Eventually(func() error { - if lo.Return2(node.Protocol.MainEngineInstance().Block(block.ID())) { + if lo.Return2(node.Protocol.MainEngine.Get().Block(block.ID())) { return ierrors.Errorf("AssertBlocksExist: %s: block %s exists but should not", node.Name, block) } @@ -64,7 +64,7 @@ func (t *TestSuite) assertBlocksInCacheWithFunc(expectedBlocks []*blocks.Block, for _, node := range nodes { for _, block := range expectedBlocks { t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngineInstance().BlockFromCache(block.ID()) + blockFromCache, exists := node.Protocol.MainEngine.Get().BlockFromCache(block.ID()) if !exists { return ierrors.Errorf("assertBlocksInCacheWithFunc[%s]: %s: block %s does not exist", propertyName, node.Name, block.ID()) } @@ -121,7 +121,7 @@ func (t *TestSuite) AssertBlocksInCacheConflicts(blockConflicts map[*blocks.Bloc for _, node := range nodes { for block, conflictAliases := range blockConflicts { t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngineInstance().BlockFromCache(block.ID()) + blockFromCache, exists := node.Protocol.MainEngine.Get().BlockFromCache(block.ID()) if !exists { return ierrors.Errorf("AssertBlocksInCacheConflicts: %s: block %s does not exist", node.Name, block.ID()) } diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index 3d1d2fe3c..b2e42b3cb 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -16,7 +16,7 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { } latestChainCommitment := chain.LatestCommitment.Get() - latestCommitment := node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment() + latestCommitment := node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment() if latestCommitment.ID() != latestChainCommitment.ID() { return ierrors.Errorf("AssertChainManagerIsSolid: %s: latest commitment is not equal, expected %s, got %s", node.Name, latestCommitment.ID(), latestChainCommitment.ID()) diff --git a/pkg/testsuite/conflicts.go b/pkg/testsuite/conflicts.go index 7c7047da0..f191b0017 100644 --- a/pkg/testsuite/conflicts.go +++ b/pkg/testsuite/conflicts.go @@ -13,7 +13,7 @@ func (t *TestSuite) AssertConflictsInCacheAcceptanceState(expectedConflictAliase for _, node := range nodes { for _, conflictAlias := range expectedConflictAliases { t.Eventually(func() error { - acceptanceState := node.Protocol.MainEngineInstance().Ledger.ConflictDAG().AcceptanceState(ds.NewSet(t.TransactionFramework.TransactionID(conflictAlias))) + acceptanceState := node.Protocol.MainEngine.Get().Ledger.ConflictDAG().AcceptanceState(ds.NewSet(t.TransactionFramework.TransactionID(conflictAlias))) if acceptanceState != expectedState { return ierrors.Errorf("assertTransactionsInCacheWithFunc: %s: conflict %s is %s, but expected %s", node.Name, conflictAlias, acceptanceState, expectedState) diff --git a/pkg/testsuite/eviction.go b/pkg/testsuite/eviction.go index 07ad2418a..98b757d50 100644 --- a/pkg/testsuite/eviction.go +++ b/pkg/testsuite/eviction.go @@ -20,7 +20,7 @@ func (t *TestSuite) AssertActiveRootBlocks(expectedBlocks []*blocks.Block, nodes for _, node := range nodes { t.Eventually(func() error { - activeRootBlocks := node.Protocol.MainEngineInstance().EvictionState.ActiveRootBlocks() + activeRootBlocks := node.Protocol.MainEngine.Get().EvictionState.ActiveRootBlocks() if !cmp.Equal(expectedRootBlocks, activeRootBlocks) { return ierrors.Errorf("AssertActiveRootBlocks: %s: expected %v, got %v", node.Name, expectedRootBlocks, activeRootBlocks) @@ -36,8 +36,8 @@ func (t *TestSuite) AssertEvictedSlot(expectedIndex iotago.SlotIndex, nodes ...* for _, node := range nodes { t.Eventually(func() error { - if expectedIndex != lo.Return1(node.Protocol.MainEngineInstance().EvictionState.LastEvictedSlot()) { - return ierrors.Errorf("AssertEvictedSlot: %s: expected %d, got %d", node.Name, expectedIndex, lo.Return1(node.Protocol.MainEngineInstance().EvictionState.LastEvictedSlot())) + if expectedIndex != lo.Return1(node.Protocol.MainEngine.Get().EvictionState.LastEvictedSlot()) { + return ierrors.Errorf("AssertEvictedSlot: %s: expected %d, got %d", node.Name, expectedIndex, lo.Return1(node.Protocol.MainEngine.Get().EvictionState.LastEvictedSlot())) } return nil diff --git a/pkg/testsuite/mock/blockissuer.go b/pkg/testsuite/mock/blockissuer.go index 4e284eb22..45301538c 100644 --- a/pkg/testsuite/mock/blockissuer.go +++ b/pkg/testsuite/mock/blockissuer.go @@ -214,7 +214,7 @@ func (i *BlockIssuer) CreateBasicBlock(ctx context.Context, alias string, node * if err != nil { rmcSlot = 0 } - rmc, err := node.Protocol.MainEngineInstance().Ledger.RMCManager().RMC(rmcSlot) + rmc, err := node.Protocol.MainEngine.Get().Ledger.RMCManager().RMC(rmcSlot) require.NoError(i.Testing, err) // only set the burned Mana as the last step before signing, so workscore calculation is correct. @@ -336,8 +336,8 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco } if iotaBlock.SlotCommitmentID == iotago.EmptyCommitmentID { - iotaBlock.SlotCommitmentID = node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment().MustID() - iotaBlock.LatestFinalizedSlot = node.Protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot() + iotaBlock.SlotCommitmentID = node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID() + iotaBlock.LatestFinalizedSlot = node.Protocol.MainEngine.Get().Storage.Settings().LatestFinalizedSlot() resign = true } @@ -387,7 +387,7 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco if err != nil { rmcSlot = 0 } - rmc, err := node.Protocol.MainEngineInstance().Ledger.RMCManager().RMC(rmcSlot) + rmc, err := node.Protocol.MainEngine.Get().Ledger.RMCManager().RMC(rmcSlot) if err != nil { return iotago.EmptyBlockID, ierrors.Wrapf(err, "error loading commitment of slot %d from storage to get RMC", rmcSlot) } @@ -426,7 +426,7 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco return iotago.EmptyBlockID, ierrors.Wrap(err, "error serializing block to model block") } - if !i.optsRateSetterEnabled || node.Protocol.MainEngineInstance().Scheduler.IsBlockIssuerReady(modelBlock.ProtocolBlock().IssuerID) { + if !i.optsRateSetterEnabled || node.Protocol.MainEngine.Get().Scheduler.IsBlockIssuerReady(modelBlock.ProtocolBlock().IssuerID) { i.events.BlockConstructed.Trigger(modelBlock) if err = i.IssueBlockAndAwaitEvent(ctx, modelBlock, node, node.Protocol.Events.Engine.BlockDAG.BlockAttached); err != nil { @@ -452,7 +452,7 @@ func (i *BlockIssuer) setDefaultBlockParams(blockParams *BlockHeaderParams, node } if blockParams.LatestFinalizedSlot == nil { - latestFinalizedSlot := node.Protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot() + latestFinalizedSlot := node.Protocol.MainEngine.Get().Storage.Settings().LatestFinalizedSlot() blockParams.LatestFinalizedSlot = &latestFinalizedSlot } @@ -471,7 +471,7 @@ func (i *BlockIssuer) setDefaultBlockParams(blockParams *BlockHeaderParams, node func (i *BlockIssuer) getCommitment(blockSlot iotago.SlotIndex, node *Node) (*iotago.Commitment, error) { protoParams := node.Protocol.CurrentAPI().ProtocolParameters() - commitment := node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment() + commitment := node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment() if blockSlot > commitment.Slot+protoParams.MaxCommittableAge() { return nil, ierrors.Errorf("can't issue block: block slot %d is too far in the future, latest commitment is %d", blockSlot, commitment.Slot) @@ -483,7 +483,7 @@ func (i *BlockIssuer) getCommitment(blockSlot iotago.SlotIndex, node *Node) (*io } commitmentSlot := commitment.Slot - protoParams.MinCommittableAge() - loadedCommitment, err := node.Protocol.MainEngineInstance().Storage.Commitments().Load(commitmentSlot) + loadedCommitment, err := node.Protocol.MainEngine.Get().Storage.Commitments().Load(commitmentSlot) if err != nil { return nil, ierrors.Wrapf(err, "error loading valid commitment of slot %d according to minCommittableAge from storage", commitmentSlot) } @@ -505,7 +505,7 @@ func (i *BlockIssuer) getReferences(ctx context.Context, p iotago.Payload, node func (i *BlockIssuer) validateReferences(issuingTime time.Time, slotCommitmentIndex iotago.SlotIndex, references model.ParentReferences, node *Node) error { for _, parent := range lo.Flatten(lo.Map(lo.Values(references), func(ds iotago.BlockIDs) []iotago.BlockID { return ds })) { - b, exists := node.Protocol.MainEngineInstance().BlockFromCache(parent) + b, exists := node.Protocol.MainEngine.Get().BlockFromCache(parent) if !exists { return ierrors.Errorf("cannot issue block if the parents are not known: %s", parent) } @@ -547,7 +547,7 @@ func (i *BlockIssuer) getReferencesWithRetry(ctx context.Context, _ iotago.Paylo defer timeutil.CleanupTicker(interval) for { - references = node.Protocol.MainEngineInstance().TipSelection.SelectTips(parentsCount) + references = node.Protocol.MainEngine.Get().TipSelection.SelectTips(parentsCount) if len(references[iotago.StrongParentType]) > 0 { return references, nil } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 6b2ea0877..e4b347238 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -178,7 +178,7 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { } func (n *Node) attachEngineLogs(failOnBlockFiltered bool, instance *engine.Engine) { - engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.MainEngineInstance() != instance, "Candidate", "Main"), instance.Name()[:8]) + engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.MainEngine.Get() != instance, "Candidate", "Main"), instance.Name()[:8]) events := instance.Events events.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { diff --git a/pkg/testsuite/storage_accountdiffs.go b/pkg/testsuite/storage_accountdiffs.go index 2174d4638..4a3a2faaf 100644 --- a/pkg/testsuite/storage_accountdiffs.go +++ b/pkg/testsuite/storage_accountdiffs.go @@ -15,7 +15,7 @@ func (t *TestSuite) AssertStorageAccountDiffs(slot iotago.SlotIndex, accountDiff for _, node := range nodes { for accountID, diffChange := range accountDiffs { t.Eventually(func() error { - store, err := node.Protocol.MainEngineInstance().Storage.AccountDiffs(slot) + store, err := node.Protocol.MainEngine.Get().Storage.AccountDiffs(slot) if err != nil { return ierrors.Wrapf(err, "AssertStorageAccountDiffs: %s: failed to load accounts diff for slot %d", node.Name, slot) } diff --git a/pkg/testsuite/storage_blocks.go b/pkg/testsuite/storage_blocks.go index 8bdec0019..d1d7f63db 100644 --- a/pkg/testsuite/storage_blocks.go +++ b/pkg/testsuite/storage_blocks.go @@ -10,7 +10,7 @@ import ( func (t *TestSuite) AssertStorageBlock(block *model.Block, node *mock.Node) { t.Eventually(func() error { - storage, err := node.Protocol.MainEngineInstance().Storage.Blocks(block.ID().Slot()) + storage, err := node.Protocol.MainEngine.Get().Storage.Blocks(block.ID().Slot()) if err != nil { return ierrors.Errorf("AssertStorageBlock: %s: storage for %s is nil", node.Name, block.ID().Slot()) } @@ -37,7 +37,7 @@ func (t *TestSuite) AssertStorageBlockExist(block *model.Block, expectedExist bo t.AssertStorageBlock(block, node) } else { t.Eventually(func() error { - storage, err := node.Protocol.MainEngineInstance().Storage.Blocks(block.ID().Slot()) + storage, err := node.Protocol.MainEngine.Get().Storage.Blocks(block.ID().Slot()) if err != nil { //nolint:nilerr // expected behavior return nil diff --git a/pkg/testsuite/storage_commitments.go b/pkg/testsuite/storage_commitments.go index c71f8f006..61e6a8550 100644 --- a/pkg/testsuite/storage_commitments.go +++ b/pkg/testsuite/storage_commitments.go @@ -15,7 +15,7 @@ func (t *TestSuite) AssertStorageCommitments(commitments []*iotago.Commitment, n for _, node := range nodes { for _, commitment := range commitments { t.Eventually(func() error { - storedCommitment, err := node.Protocol.MainEngineInstance().Storage.Commitments().Load(commitment.Slot) + storedCommitment, err := node.Protocol.MainEngine.Get().Storage.Commitments().Load(commitment.Slot) if err != nil { return ierrors.Wrapf(err, "AssertStorageCommitments: %s: error loading commitment: %s", node.Name, commitment.MustID()) } @@ -37,7 +37,7 @@ func (t *TestSuite) AssertEqualStoredCommitmentAtIndex(index iotago.SlotIndex, n var commitment *model.Commitment var commitmentNode *mock.Node for _, node := range nodes { - storedCommitment, err := node.Protocol.MainEngineInstance().Storage.Commitments().Load(index) + storedCommitment, err := node.Protocol.MainEngine.Get().Storage.Commitments().Load(index) if err != nil { return ierrors.Wrapf(err, "AssertEqualStoredCommitmentAtIndex: %s: error loading commitment for slot: %d", node.Name, index) } diff --git a/pkg/testsuite/storage_prunable.go b/pkg/testsuite/storage_prunable.go index 8d7598bf6..4fe4db6ca 100644 --- a/pkg/testsuite/storage_prunable.go +++ b/pkg/testsuite/storage_prunable.go @@ -26,7 +26,7 @@ func (t *TestSuite) AssertPrunedUntil(expectedStorage *types.Tuple[int, bool], for _, node := range nodes { t.Eventually(func() error { - if err := t.assertPrunedUntil(node.Protocol.MainEngineInstance().Storage, expectedStorage, expectedDecidedUpgrades, expectedPoolStats, expectedCommittee, expectedRewards); err != nil { + if err := t.assertPrunedUntil(node.Protocol.MainEngine.Get().Storage, expectedStorage, expectedDecidedUpgrades, expectedPoolStats, expectedCommittee, expectedRewards); err != nil { return ierrors.Wrapf(err, "AssertPrunedSlot: %s", node.Name) } diff --git a/pkg/testsuite/storage_rootblocks.go b/pkg/testsuite/storage_rootblocks.go index 8cb868bfd..3deea5499 100644 --- a/pkg/testsuite/storage_rootblocks.go +++ b/pkg/testsuite/storage_rootblocks.go @@ -12,7 +12,7 @@ func (t *TestSuite) AssertStorageRootBlocks(blocks []*blocks.Block, nodes ...*mo for _, node := range nodes { for _, block := range blocks { t.Eventually(func() error { - storage, err := node.Protocol.MainEngineInstance().Storage.RootBlocks(block.ID().Slot()) + storage, err := node.Protocol.MainEngine.Get().Storage.RootBlocks(block.ID().Slot()) if err != nil { return ierrors.Errorf("AssertStorageRootBlocks: %s: error loading root blocks for %s: %v", node.Name, block.ID().Slot(), err) } diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 870734ef0..e1a1dbe6d 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -11,8 +11,8 @@ func (t *TestSuite) AssertSnapshotImported(imported bool, nodes ...*mock.Node) { for _, node := range nodes { t.Eventually(func() error { - if imported != node.Protocol.MainEngineInstance().Storage.Settings().IsSnapshotImported() { - return ierrors.Errorf("AssertSnapshotImported: %s: expected %v, got %v", node.Name, imported, node.Protocol.MainEngineInstance().Storage.Settings().IsSnapshotImported()) + if imported != node.Protocol.MainEngine.Get().Storage.Settings().IsSnapshotImported() { + return ierrors.Errorf("AssertSnapshotImported: %s: expected %v, got %v", node.Name, imported, node.Protocol.MainEngine.Get().Storage.Settings().IsSnapshotImported()) } return nil @@ -39,8 +39,8 @@ func (t *TestSuite) AssertLatestCommitment(commitment *iotago.Commitment, nodes for _, node := range nodes { t.Eventually(func() error { - if !commitment.Equals(node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment()) { - return ierrors.Errorf("AssertLatestCommitment: %s: expected %s, got %s", node.Name, commitment, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment()) + if !commitment.Equals(node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment()) { + return ierrors.Errorf("AssertLatestCommitment: %s: expected %s, got %s", node.Name, commitment, node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment()) } return nil @@ -53,11 +53,11 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes for _, node := range nodes { t.Eventually(func() error { - if node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().ID().Slot() < slot { + if node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().ID().Slot() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment with at least %v not found in settings.LatestCommitment()", node.Name, slot) } - cm, err := node.Protocol.MainEngineInstance().Storage.Commitments().Load(slot) + cm, err := node.Protocol.MainEngine.Get().Storage.Commitments().Load(slot) if err != nil { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: expected %v, got error %v", node.Name, slot, err) } @@ -81,8 +81,8 @@ func (t *TestSuite) AssertLatestCommitmentSlotIndex(slot iotago.SlotIndex, nodes for _, node := range nodes { t.Eventually(func() error { - if slot != node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Slot() { - return ierrors.Errorf("AssertLatestCommitmentSlotIndex: %s: expected %v, got %v", node.Name, slot, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Slot()) + if slot != node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot() { + return ierrors.Errorf("AssertLatestCommitmentSlotIndex: %s: expected %v, got %v", node.Name, slot, node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot()) } return nil @@ -95,8 +95,8 @@ func (t *TestSuite) AssertLatestCommitmentCumulativeWeight(cw uint64, nodes ...* for _, node := range nodes { t.Eventually(func() error { - if cw != node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().CumulativeWeight() { - return ierrors.Errorf("AssertLatestCommitmentCumulativeWeight: %s: expected %v, got %v", node.Name, cw, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().CumulativeWeight()) + if cw != node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().CumulativeWeight() { + return ierrors.Errorf("AssertLatestCommitmentCumulativeWeight: %s: expected %v, got %v", node.Name, cw, node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().CumulativeWeight()) } return nil @@ -109,8 +109,8 @@ func (t *TestSuite) AssertLatestFinalizedSlot(slot iotago.SlotIndex, nodes ...*m for _, node := range nodes { t.Eventually(func() error { - if slot != node.Protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot() { - return ierrors.Errorf("AssertLatestFinalizedSlot: %s: expected %d, got %d from settings", node.Name, slot, node.Protocol.MainEngineInstance().Storage.Settings().LatestFinalizedSlot()) + if slot != node.Protocol.MainEngine.Get().Storage.Settings().LatestFinalizedSlot() { + return ierrors.Errorf("AssertLatestFinalizedSlot: %s: expected %d, got %d from settings", node.Name, slot, node.Protocol.MainEngine.Get().Storage.Settings().LatestFinalizedSlot()) } return nil diff --git a/pkg/testsuite/sybilprotection.go b/pkg/testsuite/sybilprotection.go index edbfe0feb..123ec2e3d 100644 --- a/pkg/testsuite/sybilprotection.go +++ b/pkg/testsuite/sybilprotection.go @@ -14,7 +14,7 @@ func (t *TestSuite) AssertSybilProtectionCommittee(slot iotago.SlotIndex, expect for _, node := range nodes { t.Eventually(func() error { - accounts := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().Committee(slot).Accounts().IDs() + accounts := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(slot).Accounts().IDs() if !assert.ElementsMatch(t.fakeTesting, expectedAccounts, accounts) { return ierrors.Errorf("AssertSybilProtectionCommittee: %s: expected %s, got %s", node.Name, expectedAccounts, accounts) } @@ -33,7 +33,7 @@ func (t *TestSuite) AssertSybilProtectionOnlineCommittee(expectedSeats []account for _, node := range nodes { t.Eventually(func() error { - seats := node.Protocol.MainEngineInstance().SybilProtection.SeatManager().OnlineCommittee().ToSlice() + seats := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().OnlineCommittee().ToSlice() if !assert.ElementsMatch(t.fakeTesting, expectedSeats, seats) { return ierrors.Errorf("AssertSybilProtectionOnlineCommittee: %s: expected %v, got %v", node.Name, expectedSeats, seats) } diff --git a/pkg/testsuite/testsuite_issue_blocks.go b/pkg/testsuite/testsuite_issue_blocks.go index 08c727d5a..6e8c730c9 100644 --- a/pkg/testsuite/testsuite_issue_blocks.go +++ b/pkg/testsuite/testsuite_issue_blocks.go @@ -283,7 +283,7 @@ func (t *TestSuite) CommitUntilSlot(slot iotago.SlotIndex, parent *blocks.Block) // then issue one more block to accept the last in the chain which will trigger commitment of the second last in the chain activeValidators := t.Validators() - latestCommittedSlot := activeValidators[0].Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Slot() + latestCommittedSlot := activeValidators[0].Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot() if latestCommittedSlot >= slot { return parent } @@ -295,12 +295,12 @@ func (t *TestSuite) CommitUntilSlot(slot iotago.SlotIndex, parent *blocks.Block) for _, node := range activeValidators { require.True(t.Testing, node.IsValidator(), "node: %s: is not a validator node", node.Name) blockAlias := fmt.Sprintf("chain-%s-%d-%s", parent.ID().Alias(), chainIndex, node.Name) - tip = t.IssueValidationBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) + tip = t.IssueValidationBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) } // acceptance of nextBlockSlot for _, node := range activeValidators { blockAlias := fmt.Sprintf("chain-%s-%d-%s", parent.ID().Alias(), chainIndex+1, node.Name) - tip = t.IssueValidationBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngineInstance().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) + tip = t.IssueValidationBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) } if nextBlockSlot == slot+t.optsMinCommittableAge { break diff --git a/pkg/testsuite/tips.go b/pkg/testsuite/tips.go index 9abd91a96..c9f315d1c 100644 --- a/pkg/testsuite/tips.go +++ b/pkg/testsuite/tips.go @@ -17,7 +17,7 @@ func (t *TestSuite) AssertStrongTips(expectedBlocks []*blocks.Block, nodes ...*m for _, node := range nodes { t.Eventually(func() error { - storedTipsBlocks := node.Protocol.MainEngineInstance().TipManager.StrongTips() + storedTipsBlocks := node.Protocol.MainEngine.Get().TipManager.StrongTips() storedTipsBlockIDs := lo.Map(storedTipsBlocks, tipmanager.TipMetadata.ID) if !assert.ElementsMatch(t.fakeTesting, expectedBlockIDs, storedTipsBlockIDs) { diff --git a/pkg/testsuite/transactions.go b/pkg/testsuite/transactions.go index 65cedd452..2d03eb315 100644 --- a/pkg/testsuite/transactions.go +++ b/pkg/testsuite/transactions.go @@ -19,7 +19,7 @@ func (t *TestSuite) AssertTransaction(transaction *iotago.Transaction, node *moc t.Eventually(func() error { var exists bool - loadedTransactionMetadata, exists = node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID) + loadedTransactionMetadata, exists = node.Protocol.MainEngine.Get().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("AssertTransaction: %s: transaction %s does not exist", node.Name, transactionID) } @@ -61,7 +61,7 @@ func (t *TestSuite) AssertTransactionsExist(transactions []*iotago.Transaction, t.AssertTransaction(transaction, node) } else { t.Eventually(func() error { - if lo.Return2(node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID)) { + if lo.Return2(node.Protocol.MainEngine.Get().Ledger.TransactionMetadata(transactionID)) { return ierrors.Errorf("AssertTransactionsExist: %s: transaction %s exists but should not", node.Name, transactionID) } @@ -84,7 +84,7 @@ func (t *TestSuite) assertTransactionsInCacheWithFunc(expectedTransactions []*io require.NoError(t.Testing, err) t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID) + blockFromCache, exists := node.Protocol.MainEngine.Get().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("assertTransactionsInCacheWithFunc: %s: transaction %s does not exist", node.Name, transactionID) } @@ -136,7 +136,7 @@ func (t *TestSuite) AssertTransactionInCacheConflicts(transactionConflicts map[* require.NoError(t.Testing, err) t.Eventually(func() error { - transactionFromCache, exists := node.Protocol.MainEngineInstance().Ledger.TransactionMetadata(transactionID) + transactionFromCache, exists := node.Protocol.MainEngine.Get().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("AssertTransactionInCacheConflicts: %s: block %s does not exist", node.Name, transactionID) } diff --git a/pkg/testsuite/transactions_framework.go b/pkg/testsuite/transactions_framework.go index 920912741..3835d7462 100644 --- a/pkg/testsuite/transactions_framework.go +++ b/pkg/testsuite/transactions_framework.go @@ -27,7 +27,7 @@ type TransactionFramework struct { func NewTransactionFramework(protocol *protocol.Protocol, genesisSeed []byte, accounts ...snapshotcreator.AccountDetails) *TransactionFramework { // The genesis output is on index 0 of the genesis TX - genesisOutput, err := protocol.MainEngineInstance().Ledger.Output(iotago.OutputIDFromTransactionIDAndIndex(snapshotcreator.GenesisTransactionID, 0)) + genesisOutput, err := protocol.MainEngine.Get().Ledger.Output(iotago.OutputIDFromTransactionIDAndIndex(snapshotcreator.GenesisTransactionID, 0)) if err != nil { panic(err) } @@ -45,7 +45,7 @@ func NewTransactionFramework(protocol *protocol.Protocol, genesisSeed []byte, ac // Genesis TX outputID := iotago.OutputIDFromTransactionIDAndIndex(snapshotcreator.GenesisTransactionID, uint16(idx+1)) - if tf.states[fmt.Sprintf("Genesis:%d", idx+1)], err = protocol.MainEngineInstance().Ledger.Output(outputID); err != nil { + if tf.states[fmt.Sprintf("Genesis:%d", idx+1)], err = protocol.MainEngine.Get().Ledger.Output(outputID); err != nil { panic(err) } } diff --git a/pkg/testsuite/upgrades.go b/pkg/testsuite/upgrades.go index cb79bfa36..c7ddc67ab 100644 --- a/pkg/testsuite/upgrades.go +++ b/pkg/testsuite/upgrades.go @@ -14,7 +14,7 @@ func (t *TestSuite) AssertEpochVersions(epochVersions map[iotago.Version]iotago. t.Eventually(func() error { for version, expectedEpoch := range epochVersions { - epochForVersion, exists := node.Protocol.MainEngineInstance().Storage.Settings().APIProvider().EpochForVersion(version) + epochForVersion, exists := node.Protocol.MainEngine.Get().Storage.Settings().APIProvider().EpochForVersion(version) if !exists { return ierrors.Errorf("AssertEpochVersions: %s: version %d not found", node.Name, version) } @@ -36,7 +36,7 @@ func (t *TestSuite) AssertVersionAndProtocolParameters(versionsAndProtocolParame t.Eventually(func() error { for version, expectedProtocolParameters := range versionsAndProtocolParameters { - protocolParameters := node.Protocol.MainEngineInstance().Storage.Settings().APIProvider().ProtocolParameters(version) + protocolParameters := node.Protocol.MainEngine.Get().Storage.Settings().APIProvider().ProtocolParameters(version) if expectedProtocolParameters == nil { if protocolParameters != nil { @@ -71,7 +71,7 @@ func (t *TestSuite) AssertVersionAndProtocolParametersHashes(versionsAndProtocol t.Eventually(func() error { for version, expectedProtocolParametersHash := range versionsAndProtocolParametersHashes { - protocolParametersHash := node.Protocol.MainEngineInstance().Storage.Settings().APIProvider().ProtocolParametersHash(version) + protocolParametersHash := node.Protocol.MainEngine.Get().Storage.Settings().APIProvider().ProtocolParametersHash(version) if expectedProtocolParametersHash == iotago.EmptyIdentifier { if protocolParametersHash != iotago.EmptyIdentifier { From 1ed9de386ce9f1a33ae193c272a72dd9bdb308ae Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 10 Oct 2023 16:20:15 +0200 Subject: [PATCH 196/356] Feat: added shutdown logic to engine manager --- pkg/protocol/engine_manager.go | 68 ++++++++++++++++++++-------------- pkg/protocol/protocol.go | 2 +- 2 files changed, 42 insertions(+), 28 deletions(-) diff --git a/pkg/protocol/engine_manager.go b/pkg/protocol/engine_manager.go index dfcb726b4..76927e52e 100644 --- a/pkg/protocol/engine_manager.go +++ b/pkg/protocol/engine_manager.go @@ -10,6 +10,7 @@ import ( "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/runtime/ioutils" + "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts/accountsledger" @@ -26,37 +27,38 @@ type EngineManager struct { protocol *Protocol worker *workerpool.WorkerPool directory *utils.Directory + + *module.ReactiveModule } func NewEngineManager(protocol *Protocol) *EngineManager { e := &EngineManager{ - MainEngine: reactive.NewVariable[*engine.Engine](), - protocol: protocol, - worker: protocol.Workers.CreatePool("EngineManager", 1), - directory: utils.NewDirectory(protocol.Options.BaseDirectory), + MainEngine: reactive.NewVariable[*engine.Engine](), + ReactiveModule: protocol.NewReactiveSubModule("Engines"), + protocol: protocol, + worker: protocol.Workers.CreatePool("Engines", 1), + directory: utils.NewDirectory(protocol.Options.BaseDirectory), } - protocol.MainChain.OnUpdateWithContext(func(_, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { - unsubscribeOnUpdate(func() (unsubscribe func()) { - return e.MainEngine.InheritFrom(mainChain.SpawnedEngine) - }) - }) + protocol.Constructed.OnTrigger(func() { + unsubscribe := lo.Batch( + e.syncMainEngineFromMainChain(), + e.syncMainEngineInfoFile(), + e.injectEngineInstances(), + ) - protocol.MainChain.OnUpdate(func(_, mainChain *Chain) { - e.MainEngine.InheritFrom(mainChain.SpawnedEngine) - }) + e.Shutdown.OnTrigger(func() { + unsubscribe() - e.MainEngine.OnUpdate(func(_, mainEngine *engine.Engine) { - err := ioutils.WriteJSONToFile(e.infoFilePath(), &engineInfo{ - Name: filepath.Base(mainEngine.Storage.Directory()), - }, 0o644) + e.worker.Shutdown(true).ShutdownComplete.Wait() - if err != nil { - panic(ierrors.Wrap(err, "unable to write engine info file")) - } + e.Stopped.Trigger() + }) + + e.Initialized.Trigger() }) - protocol.Constructed.OnTrigger(e.injectEngineInstances) + e.Constructed.Trigger() return e } @@ -169,10 +171,6 @@ func (e *EngineManager) CleanupCandidates() error { return nil } -func (e *EngineManager) shutdown() { - e.worker.Shutdown(true) -} - func (e *EngineManager) infoFilePath() string { return e.directory.Path(engineInfoFile) } @@ -195,8 +193,24 @@ func (e *EngineManager) loadEngineInstanceWithStorage(engineAlias string, storag return engine.New(e.protocol.Workers.CreateGroup(engineAlias), errorHandler, storage, e.protocol.Options.FilterProvider, e.protocol.Options.CommitmentFilterProvider, e.protocol.Options.BlockDAGProvider, e.protocol.Options.BookerProvider, e.protocol.Options.ClockProvider, e.protocol.Options.BlockGadgetProvider, e.protocol.Options.SlotGadgetProvider, e.protocol.Options.SybilProtectionProvider, e.protocol.Options.NotarizationProvider, e.protocol.Options.AttestationProvider, e.protocol.Options.LedgerProvider, e.protocol.Options.SchedulerProvider, e.protocol.Options.TipManagerProvider, e.protocol.Options.TipSelectionProvider, e.protocol.Options.RetainerProvider, e.protocol.Options.UpgradeOrchestratorProvider, e.protocol.Options.SyncManagerProvider, e.protocol.Options.EngineOptions...) } -func (e *EngineManager) injectEngineInstances() { - e.protocol.OnChainCreated(func(chain *Chain) { +func (e *EngineManager) syncMainEngineFromMainChain() (unsubscribe func()) { + return e.protocol.MainChain.OnUpdateWithContext(func(_, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + unsubscribeOnUpdate(func() func() { + return e.MainEngine.InheritFrom(mainChain.SpawnedEngine) + }) + }) +} + +func (e *EngineManager) syncMainEngineInfoFile() (unsubscribe func()) { + return e.MainEngine.OnUpdate(func(_, mainEngine *engine.Engine) { + if err := ioutils.WriteJSONToFile(e.infoFilePath(), &engineInfo{Name: filepath.Base(mainEngine.Storage.Directory())}, 0o644); err != nil { + e.LogError("unable to write engine info file", "err", err) + } + }) +} + +func (e *EngineManager) injectEngineInstances() (unsubscribe func()) { + return e.protocol.OnChainCreated(func(chain *Chain) { chain.VerifyState.OnUpdate(func(_, instantiate bool) { e.worker.Submit(func() { if !instantiate { @@ -212,7 +226,7 @@ func (e *EngineManager) injectEngineInstances() { return e.ForkAtSlot(chain.ForkingPoint.Get().Slot() - 1) }(); err != nil { - panic(ierrors.Wrap(err, "failed to create new engine instance")) + e.LogError("failed to create new engine instance", "err", err) } else { e.protocol.Network.OnShutdown(newEngine.Shutdown) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index fbd390e5e..56b38c3c5 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -73,7 +73,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.AttestationsProtocol.Shutdown() p.WarpSyncProtocol.Shutdown() p.Network.Shutdown() - p.EngineManager.shutdown() + p.EngineManager.Shutdown.Trigger() }) }) From fc79876f7ce251701a42477179c514db0600d361 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 17 Oct 2023 13:25:49 +0200 Subject: [PATCH 197/356] Feat: WIP WARPSYNC CHANGES --- go.mod | 28 ++++---- go.sum | 58 +++++++-------- pkg/protocol/chain.go | 96 +++++++++++++++++++------ pkg/protocol/chain_manager.go | 4 +- pkg/protocol/commitment.go | 43 +++++------ pkg/protocol/constants.go | 2 +- pkg/protocol/engine_manager.go | 6 +- pkg/protocol/network_clock.go | 52 ++++++++++++++ pkg/protocol/protocol.go | 4 +- pkg/protocol/protocol_blocks.go | 26 +++++-- pkg/protocol/protocol_warp_sync.go | 102 ++++++++++++++++++++++++++- pkg/tests/booker_test.go | 4 ++ pkg/tests/loss_of_acceptance_test.go | 12 +++- tools/evil-spammer/go.mod | 28 ++++---- tools/evil-spammer/go.sum | 58 +++++++-------- tools/gendoc/go.mod | 32 ++++----- tools/gendoc/go.sum | 58 +++++++-------- tools/genesis-snapshot/go.mod | 27 +++---- tools/genesis-snapshot/go.sum | 59 +++++++++------- 19 files changed, 467 insertions(+), 232 deletions(-) create mode 100644 pkg/protocol/network_clock.go diff --git a/go.mod b/go.mod index 4f43ca28f..57c7d4b83 100644 --- a/go.mod +++ b/go.mod @@ -11,19 +11,20 @@ require ( github.com/google/uuid v1.3.1 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/app v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/logger v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af + github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/app v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58 + github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/ds v0.0.0-20231016001604-40b19730d958 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58 + github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231005192108-08a985c2e217 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231005191759-16a3636128c4 github.com/iotaledger/iota.go/v4 v4.0.0-20231005184534-62e6761a7b7c @@ -89,7 +90,6 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231010133617-cdbd5387e2af // indirect github.com/ipfs/boxo v0.10.0 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect diff --git a/go.sum b/go.sum index 28881d84c..51937a8b9 100644 --- a/go.sum +++ b/go.sum @@ -275,34 +275,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af h1:oKWvq1C5VBaQsNNLX4H1uaUofisgVQcVzeegySJqeKg= -github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20231010133617-cdbd5387e2af h1:3LEssfuBlPFkb55yOZOjySUS2tNJVQp8e311JAe/b2M= -github.com/iotaledger/hive.go/app v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:q2H/9TE6hvg6TKZI0YoxtbCdrf8O1sYBVjNT2Y3yAIU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af h1:xfXaQ6QbDvk9eq7A2heOkdkJTPW2Fns18iMaFx06ssE= -github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af h1:1pCoWeZS5/FWWNKBlJCboJfEGK3WYCXtWp77S7qQrc8= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af h1:J30bA+JjEOZzW7bei55Tw7r8e0EZGgTsVzHBX83bY8Y= -github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af h1:yevMZ1A7Crafi6pLQz8tdVQJBB1XWUTc+Y78zcg1+Fs= -github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af h1:GFYIbcmurif5sWfzOjfFKpzVtUsf6gCP5QBspXHHjEo= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af h1:OY1jOCQIdN5bhvMUJU3exx9QRVhpBmGGCYHg7gpZ0xc= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af h1:Td8RUNAWcxU9N8pKiIemaaf16QSHld8BhiGPYyiFVWA= -github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/log v0.0.0-20231010133617-cdbd5387e2af h1:t5a+O3WDM7rK/jXDvBwwlKXK7JHCxP2jR9eh03RaIuo= -github.com/iotaledger/hive.go/log v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= -github.com/iotaledger/hive.go/logger v0.0.0-20231010133617-cdbd5387e2af h1:GX4aBNqZmdiRS3/wYOkLVOCQLmiBHBprSfntwSB8fys= -github.com/iotaledger/hive.go/logger v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af h1:0QOowMPuOTihsjmd+RJnv6rU2SZeKYb29R4yCCElk24= -github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af h1:KuZ18zU7XR3qcKvmhrfG1PqNoSfp8I8ITKGdb2ORAvo= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af h1:2/8In9gw03NW1hL4qyXuFYFoWZScHmyZtYUG0kHPmo4= -github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58 h1:0SBKBGWWv/cuj83+fw8QJ53rcXJPJ9HWFMjya09gs6M= +github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20231012193529-491497954a58 h1:7KXRCvaEfJsDFRKH2dVidNNYMiWXhoFPG4mycfRnCAc= +github.com/iotaledger/hive.go/app v0.0.0-20231012193529-491497954a58/go.mod h1:q2H/9TE6hvg6TKZI0YoxtbCdrf8O1sYBVjNT2Y3yAIU= +github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58 h1:2zP3rxP6XEFYrzol4VifIZ9uxAsFq75qrN4lF1LJ69s= +github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58 h1:N2+SbWaZ7S40dzYwxEip12hxAQZ42hwR1Xd2hlfMS4w= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58 h1:nGH70l+MBLbngzDQzRS+KHqKUzpvVBfi3fsoQUSwwfs= +github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20231012193529-491497954a58 h1:KI+2RXXUztSjECfIw8DV3YjWHycPesQvFMzZd9eyD50= +github.com/iotaledger/hive.go/ds v0.0.0-20231012193529-491497954a58/go.mod h1:qyM/8bkZybh/rw1PSRtzRIg7V1dSX8Qw4S+KeVI3CuQ= +github.com/iotaledger/hive.go/ds v0.0.0-20231016001604-40b19730d958 h1:ekxVXAyYLZkVC4wllFUp2lvF1Ig1LS+yqL5YRGC/xwQ= +github.com/iotaledger/hive.go/ds v0.0.0-20231016001604-40b19730d958/go.mod h1:qyM/8bkZybh/rw1PSRtzRIg7V1dSX8Qw4S+KeVI3CuQ= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58 h1:jM1qtgCxeZUlHzpsxBgzjAoXCpLaJg0awhXkYI71PHs= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58 h1:nmD6cMakgjhMC6zSvVkryH1sKq5Bg/RtEwMgxLV+jHM= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58 h1:I7O7e9WK520YRM+t6A2yEnTBrcI0kTHUTkF0MtA3T2A= +github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58 h1:eQMF3qod2SsU4pK5ciiqnUSgXUEuhw/NovbJyvfChGY= +github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58 h1:R3vPCxq/T3hdkALiXQRhiwM9GsokrEr52YdUM1cQzVc= +github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58 h1:5GKrBeR8NfD8y9Qijtgb6N8K56tyngt90sy9G5JdY/k= +github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58 h1:1U4Cb/nl5qwH31gnvkb89vYVMGzvgSMqBgZqQEPdQXA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58 h1:UTPdo6/TY6OZGTdTlJZ47YatzyRT10fjN1JxYDYHyC8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231005192108-08a985c2e217 h1:DdrsW+J04ne2j6bjU1yVu+4C4CjpjGFYDEVMtmg0zyA= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231005192108-08a985c2e217/go.mod h1:OWZGwG4q2Ypd/D6LJicgdPXtw9yYkhaZEvJFhkIm2Ck= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231005191759-16a3636128c4 h1:uI+sZeZnGzAkM34JDbZBfyRIXrkkd1L0w8qVJ5rGy3E= diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 5071524a8..8d376c405 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -1,6 +1,8 @@ package protocol import ( + "time" + "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/ds/reactive" @@ -22,8 +24,11 @@ type Chain struct { ClaimedWeight reactive.Variable[uint64] AttestedWeight reactive.Variable[uint64] VerifiedWeight reactive.Variable[uint64] + NetworkClockSlot reactive.Variable[iotago.SlotIndex] SyncThreshold reactive.Variable[iotago.SlotIndex] + WarpSync reactive.Variable[bool] WarpSyncThreshold reactive.Variable[iotago.SlotIndex] + OutOfSyncThreshold reactive.Variable[iotago.SlotIndex] VerifyAttestations reactive.Variable[bool] VerifyState reactive.Variable[bool] Engine reactive.Variable[*engine.Engine] @@ -37,7 +42,7 @@ type Chain struct { log.Logger } -func NewChain(logger log.Logger) *Chain { +func NewChain(protocol *Protocol) *Chain { c := &Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), ParentChain: reactive.NewVariable[*Chain](), @@ -46,6 +51,10 @@ func NewChain(logger log.Logger) *Chain { LatestAttestedCommitment: reactive.NewVariable[*Commitment](), LatestVerifiedCommitment: reactive.NewVariable[*Commitment](), AttestedWeight: reactive.NewVariable[uint64](), + WarpSync: reactive.NewVariable[bool]().Init(true), + NetworkClockSlot: reactive.NewVariable[iotago.SlotIndex](), + WarpSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), + OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), VerifyAttestations: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), @@ -64,13 +73,41 @@ func NewChain(logger log.Logger) *Chain { c.ClaimedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestCommitment) c.VerifiedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestVerifiedCommitment) - c.WarpSyncThreshold = reactive.NewDerivedVariable[iotago.SlotIndex](func(latestCommitment *Commitment) iotago.SlotIndex { - if latestCommitment == nil || latestCommitment.Slot() < WarpSyncOffset { - return 0 + c.Engine = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { + if spawnedEngine != nil { + return spawnedEngine + } + + return parentEngine + }, c.SpawnedEngine, c.parentEngine) + + protocol.NetworkClock.OnUpdate(func(_, now time.Time) { + if engineInstance := c.Engine.Get(); engineInstance != nil { + c.NetworkClockSlot.Set(engineInstance.LatestAPI().TimeProvider().SlotFromTime(now)) + } + }) + + c.NetworkClockSlot.OnUpdate(func(_, slot iotago.SlotIndex) { + engineInstance := c.Engine.Get() + if engineInstance == nil { + return } - return latestCommitment.Slot() - WarpSyncOffset - }, c.LatestCommitment) + warpSyncThresholdOffset := engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge() + outOfSyncThresholdOffset := 2 * warpSyncThresholdOffset + + if warpSyncThresholdOffset > slot { + c.WarpSyncThreshold.Set(0) + } else { + c.WarpSyncThreshold.Set(slot - warpSyncThresholdOffset) + } + + if outOfSyncThresholdOffset > slot { + c.OutOfSyncThreshold.Set(0) + } else { + c.OutOfSyncThreshold.Set(slot - outOfSyncThresholdOffset) + } + }) c.SyncThreshold = reactive.NewDerivedVariable2[iotago.SlotIndex](func(forkingPoint, latestVerifiedCommitment *Commitment) iotago.SlotIndex { if forkingPoint == nil { @@ -84,14 +121,6 @@ func NewChain(logger log.Logger) *Chain { return latestVerifiedCommitment.Slot() + SyncWindow + 1 }, c.ForkingPoint, c.LatestVerifiedCommitment) - c.Engine = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { - if spawnedEngine != nil { - return spawnedEngine - } - - return parentEngine - }, c.SpawnedEngine, c.parentEngine) - c.ParentChain.OnUpdate(func(prevParent, newParent *Chain) { if prevParent != nil { prevParent.ChildChains.Delete(c) @@ -115,7 +144,11 @@ func NewChain(logger log.Logger) *Chain { }) }) - c.Logger = logger.NewEntityLogger("Chain", c.IsEvicted, func(entityLogger log.Logger) { + c.Logger = protocol.NewEntityLogger("Chain", c.IsEvicted, func(entityLogger log.Logger) { + c.WarpSync.LogUpdates(entityLogger, log.LevelInfo, "WarpSync") + c.NetworkClockSlot.LogUpdates(entityLogger, log.LevelDebug, "NetworkClockSlot") + c.WarpSyncThreshold.LogUpdates(entityLogger, log.LevelDebug, "WarpSyncThreshold") + c.OutOfSyncThreshold.LogUpdates(entityLogger, log.LevelDebug, "OutOfSyncThreshold") c.ForkingPoint.LogUpdates(entityLogger, log.LevelTrace, "ForkingPoint", (*Commitment).LogName) c.ClaimedWeight.LogUpdates(entityLogger, log.LevelTrace, "ClaimedWeight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") @@ -126,6 +159,30 @@ func NewChain(logger log.Logger) *Chain { c.VerifyState.LogUpdates(entityLogger, log.LevelDebug, "VerifyState") }) + var unsubscribe func() + c.WarpSync.OnUpdate(func(_, warpSync bool) { + if unsubscribe != nil { + unsubscribe() + } + + go func() { + if warpSync { + unsubscribe = c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(latestVerifiedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex) bool { + latestVerifiedNil := latestVerifiedCommitment != nil + belowWarpSync := latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < warpSyncThreshold + + c.LogError("WarpSync", "latestVerifiedNil", latestVerifiedNil, "belowWarpSync", belowWarpSync) + + return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < warpSyncThreshold + }, c.LatestVerifiedCommitment, c.WarpSyncThreshold)) + } else { + unsubscribe = c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(latestVerifiedCommitment *Commitment, outOfSyncThreshold iotago.SlotIndex) bool { + return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < outOfSyncThreshold + }, c.LatestVerifiedCommitment, c.OutOfSyncThreshold)) + } + }() + }) + return c } @@ -156,13 +213,12 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { return false } - success = true for _, chain := range append([]*Chain{c}, c.ChildChains.ToSlice()...) { - if targetSlot := block.ID().Slot(); chain.VerifyState.Get() && chain.earliestUncommittedSlot() <= targetSlot { - if targetEngine := chain.SpawnedEngine.Get(); targetEngine != nil && targetSlot < c.SyncThreshold.Get() { + if chain.VerifyState.Get() { + if targetEngine := chain.SpawnedEngine.Get(); targetEngine != nil && !chain.WarpSync.Get() || targetEngine.BlockRequester.HasTicker(block.ID()) { targetEngine.ProcessBlockFromPeer(block, src) - } else { - success = false + + success = true } } } diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 88b53a475..4eef9391d 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -83,7 +83,7 @@ func (c *ChainManager) PublishCommitment(commitment *model.Commitment) (commitme return nil, false, ierrors.Wrapf(request.Err(), "failed to request commitment %s", commitment.ID()) } - publishedCommitmentMetadata := NewCommitment(commitment, c.protocol.Logger) + publishedCommitmentMetadata := NewCommitment(commitment, c.protocol) request.Resolve(publishedCommitmentMetadata).OnSuccess(func(resolvedMetadata *Commitment) { commitmentMetadata = resolvedMetadata }) @@ -123,7 +123,7 @@ func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe func (c *ChainManager) initMainChain() { c.protocol.LogDebug("initializing main chain") - mainChain := NewChain(c.protocol.Logger) + mainChain := NewChain(c.protocol) c.protocol.LogDebug("new chain created", "name", mainChain.LogName(), "forkingPoint", "") diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 6499dd4fd..1fc50488a 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -20,7 +20,6 @@ type Commitment struct { SpawnedChain reactive.Variable[*Chain] Chain reactive.Variable[*Chain] Engine reactive.Variable[*engine.Engine] - InSyncRange reactive.Variable[bool] RequestAttestations reactive.Variable[bool] RequestBlocks reactive.Variable[bool] RequestedBlocksReceived reactive.Variable[bool] @@ -33,16 +32,16 @@ type Commitment struct { IsRoot reactive.Event IsEvicted reactive.Event - protocolLogger log.Logger + protocol *Protocol isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] - isAboveLatestVerifiedCommitment reactive.Variable[bool] + isDirectlyAboveLatestVerifiedCommitment reactive.Variable[bool] isBelowSyncThreshold reactive.Event isBelowWarpSyncThreshold reactive.Event log.Logger } -func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment { +func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment { c := &Commitment{ Commitment: commitment, @@ -64,9 +63,9 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment IsRoot: reactive.NewEvent(), IsEvicted: reactive.NewEvent(), - protocolLogger: logger, + protocol: protocol, isDirectlyAboveLatestAttestedCommitment: reactive.NewVariable[bool](), - isAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), + isDirectlyAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), isBelowSyncThreshold: reactive.NewEvent(), isBelowWarpSyncThreshold: reactive.NewEvent(), } @@ -98,9 +97,9 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment return parentIsAttested && !isAttested }, parent.IsAttested, c.IsAttested)) - c.isAboveLatestVerifiedCommitment.InheritFrom(reactive.NewDerivedVariable3(func(parentIsAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { - return parentIsAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) - }, parent.isAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)) + c.isDirectlyAboveLatestVerifiedCommitment.InheritFrom(reactive.NewDerivedVariable2(func(parentIsVerified, isVerified bool) bool { + return parentIsVerified && !isVerified + }, parent.IsVerified, c.IsVerified)) c.triggerEventIfBelowThreshold( func(c *Commitment) reactive.Event { return c.isBelowSyncThreshold }, @@ -130,19 +129,15 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment c.Engine.InheritFrom(chain.Engine), - c.RequestBlocks.InheritFrom(reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, inSyncWindow, belowWarpSyncThreshold bool) bool { - return spawnedEngine != nil && inSyncWindow && belowWarpSyncThreshold - }, chain.SpawnedEngine, c.InSyncRange, c.isBelowWarpSyncThreshold)), + c.RequestBlocks.InheritFrom(reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncChain, isDirectlyAboveLatestVerifiedCommitment bool) bool { + return spawnedEngine != nil && warpSyncChain && isDirectlyAboveLatestVerifiedCommitment + }, chain.SpawnedEngine, chain.WarpSync, c.isDirectlyAboveLatestVerifiedCommitment)), requestAttestations.Unsubscribe, ) }) }) - c.InSyncRange = reactive.NewDerivedVariable2(func(aboveLatestVerifiedCommitment, belowSyncThreshold bool) bool { - return aboveLatestVerifiedCommitment && belowSyncThreshold - }, c.isAboveLatestVerifiedCommitment, c.isBelowSyncThreshold) - c.IsRoot.OnTrigger(func() { c.IsSolid.Set(true) c.IsAttested.Set(true) @@ -151,7 +146,9 @@ func NewCommitment(commitment *model.Commitment, logger log.Logger) *Commitment c.isBelowSyncThreshold.Set(true) }) - c.Logger = logger.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { + c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { + c.isDirectlyAboveLatestVerifiedCommitment.LogUpdates(entityLogger, log.LevelTrace, "isDirectlyAboveLatestVerifiedCommitment") + c.RequestBlocks.LogUpdates(entityLogger, log.LevelTrace, "RequestBlocks") c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") @@ -206,9 +203,9 @@ func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitm unsubscribeFromParent() } - spawnedChain = NewChain(c.protocolLogger) + spawnedChain = NewChain(c.protocol) - c.protocolLogger.LogDebug("new chain created", "name", spawnedChain.LogName(), "forkingPoint", c.LogName()) + c.protocol.LogDebug("new chain created", "name", spawnedChain.LogName(), "forkingPoint", c.LogName()) spawnedChain.ForkingPoint.Set(c) } @@ -264,11 +261,3 @@ func (c *Commitment) cumulativeWeight() uint64 { return c.CumulativeWeight() } - -func (c *Commitment) cumulativeAttestedWeight() uint64 { - if c == nil { - return 0 - } - - return c.CumulativeAttestedWeight.Get() -} diff --git a/pkg/protocol/constants.go b/pkg/protocol/constants.go index cfad15914..26ad3435e 100644 --- a/pkg/protocol/constants.go +++ b/pkg/protocol/constants.go @@ -5,7 +5,7 @@ const ( DatabaseVersion byte = 1 // SyncWindow defines the maximum amount of slots that a node requests on top of its latest verified commitment. - SyncWindow = 20 + SyncWindow = 1 // WarpSyncOffset defines how many slots a commitment needs to be behind the latest commitment to be requested by // the warp sync process. diff --git a/pkg/protocol/engine_manager.go b/pkg/protocol/engine_manager.go index 4d521be93..3c3fb9251 100644 --- a/pkg/protocol/engine_manager.go +++ b/pkg/protocol/engine_manager.go @@ -203,8 +203,10 @@ func (e *EngineManager) syncMainEngineFromMainChain() (unsubscribe func()) { func (e *EngineManager) syncMainEngineInfoFile() (unsubscribe func()) { return e.MainEngine.OnUpdate(func(_, mainEngine *engine.Engine) { - if err := ioutils.WriteJSONToFile(e.infoFilePath(), &engineInfo{Name: filepath.Base(mainEngine.Storage.Directory())}, 0o644); err != nil { - e.LogError("unable to write engine info file", "err", err) + if mainEngine != nil { + if err := ioutils.WriteJSONToFile(e.infoFilePath(), &engineInfo{Name: filepath.Base(mainEngine.Storage.Directory())}, 0o644); err != nil { + e.LogError("unable to write engine info file", "err", err) + } } }) } diff --git a/pkg/protocol/network_clock.go b/pkg/protocol/network_clock.go new file mode 100644 index 000000000..51e879f20 --- /dev/null +++ b/pkg/protocol/network_clock.go @@ -0,0 +1,52 @@ +package protocol + +import ( + "time" + + "github.com/libp2p/go-libp2p/core/peer" + + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/iota-core/pkg/model" +) + +type NetworkClock struct { + protocol *Protocol + + reactive.Variable[time.Time] +} + +func NewNetworkClock(protocol *Protocol) *NetworkClock { + n := &NetworkClock{ + protocol: protocol, + Variable: reactive.NewVariable[time.Time](func(currentValue time.Time, newValue time.Time) time.Time { + if newValue.Before(currentValue) || newValue.After(time.Now()) { + return currentValue + } else { + return newValue + } + }), + } + + protocol.Constructed.OnTrigger(func() { + unsubscribe := lo.Batch( + protocol.Network.OnBlockReceived(func(block *model.Block, src peer.ID) { + n.Set(block.ProtocolBlock().IssuingTime) + }), + + protocol.OnChainCreated(func(chain *Chain) { + unsubscribe := chain.LatestCommitment.OnUpdate(func(_, latestCommitment *Commitment) { + if engineInstance := chain.Engine.Get(); engineInstance != nil { + n.Set(engineInstance.LatestAPI().TimeProvider().SlotEndTime(latestCommitment.Slot())) + } + }) + + chain.IsEvicted.OnTrigger(unsubscribe) + }), + ) + + protocol.Shutdown.OnTrigger(unsubscribe) + }) + + return n +} diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 56b38c3c5..bb6dd21e0 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -22,6 +22,7 @@ type Protocol struct { Events *Events Workers *workerpool.Group Network *core.Protocol + NetworkClock *NetworkClock BlocksProtocol *BlocksProtocol CommitmentsProtocol *CommitmentsProtocol AttestationsProtocol *AttestationsProtocol @@ -44,6 +45,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E ReactiveModule: module.NewReactiveModule(logger), }, opts, func(p *Protocol) { p.Network = core.NewProtocol(networkEndpoint, workers.CreatePool("NetworkProtocol"), p) + p.NetworkClock = NewNetworkClock(p) p.BlocksProtocol = NewBlocksProtocol(p) p.CommitmentsProtocol = NewCommitmentsProtocol(p) p.AttestationsProtocol = NewAttestationsProtocol(p) @@ -83,7 +85,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E // IssueBlock issues a block to the node. func (p *Protocol) IssueBlock(block *model.Block) error { - p.BlocksProtocol.ProcessResponse(block, "self") + p.Network.Events.BlockReceived.Trigger(block, "self") return nil } diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 05019d6b0..90f11e5f5 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -33,11 +33,15 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { protocol.Constructed.OnTrigger(func() { protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.InSyncRange.OnUpdate(func(_, inSyncRange bool) { - if inSyncRange { - for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { - b.ProcessResponse(droppedBlock.A, droppedBlock.B) - } + commitment.isDirectlyAboveLatestVerifiedCommitment.OnUpdate(func(_, isDirectlyAboveLatestVerifiedCommitment bool) { + if !isDirectlyAboveLatestVerifiedCommitment { + return + } + + protocol.LogError("REPLAYING DROPPED BLOCKS", "slot", commitment.ID().Slot()) + + for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { + b.ProcessResponse(droppedBlock.A, droppedBlock.B) } }) }) @@ -93,7 +97,7 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { } commitment := commitmentRequest.Result() - if commitment == nil || !commitment.Chain.Get().DispatchBlock(block, from) { + if commitment == nil { if !b.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, from)) { b.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) } else { @@ -103,6 +107,16 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { return } + if !commitment.Chain.Get().DispatchBlock(block, from) { + if !b.droppedBlocksBuffer.Add(block.ProtocolBlock().SlotCommitmentID, types.NewTuple(block, from)) { + b.LogError("afailed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) + } else { + b.LogTrace("adropped block referencing unsolid commitment added to dropped blocks buffer", "commitmentID", block.ProtocolBlock().SlotCommitmentID, "blockID", block.ID()) + } + + return + } + b.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName()) }) } diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 47d9915f2..8c86befc4 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -1,6 +1,8 @@ package protocol import ( + "sync/atomic" + "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/ads" @@ -98,15 +100,111 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), commitment.RootsID()) { - w.LogError("failed to verify merkle proof", "commitment", commitment.LogName(), "blockIDs", blockIDs, "proof", proof, "fromPeer", from) + w.LogError("failed to verify blocks proof", "commitment", commitment.LogName(), "blockIDs", blockIDs, "proof", proof, "fromPeer", from) + + return false + } + + acceptedTransactionIDs := ads.NewSet[iotago.TransactionID](mapdb.NewMapDB(), iotago.TransactionID.Bytes, iotago.TransactionIDFromBytes) + for _, transactionID := range transactionIDs { + _ = acceptedTransactionIDs.Add(transactionID) // a mapdb can never return an error + } + + if !iotago.VerifyProof(mutationProof, iotago.Identifier(acceptedTransactionIDs.Root()), commitment.RootsID()) { + w.LogError("failed to verify mutations proof", "commitment", commitment.LogName(), "transactionIDs", transactionIDs, "proof", mutationProof, "fromPeer", from) return false } w.ticker.StopTicker(commitmentID) + // If the engine is "dirty" we need to restore the state of the engine to the state of the chain commitment. + // As we already decided to switch and sync to this chain we should make sure that processing the blocks from the commitment + // leads to the verified commitment. + if targetEngine.Notarization.AcceptedBlocksCount(commitmentID.Slot()) > 0 { + targetEngine.Notarization. + w.LogError("ENGINE IS DIRTY") + } + + // Once all blocks are booked we + // 1. Mark all transactions as accepted + // 2. Mark all blocks as accepted + // 3. Force commitment of the slot + totalBlocks := uint32(len(blockIDs)) + var bookedBlocks atomic.Uint32 + var notarizedBlocks atomic.Uint32 + + w.LogError("TOTAL BLOCKS IN RESPONSE", "totalBlocks", totalBlocks) + + forceCommitmentFunc := func() { + // 3. Force commitment of the slot + producedCommitment, err := targetEngine.Notarization.ForceCommit(commitmentID.Slot()) + if err != nil { + w.protocol.LogError("failed to force commitment", "commitmentID", commitmentID, "err", err) + + return + } + + // 4. Verify that the produced commitment is the same as the initially requested one + if producedCommitment.ID() != commitmentID { + w.protocol.LogError("commitment does not match", "expectedCommitmentID", commitmentID, "producedCommitmentID", producedCommitment.ID()) + + return + } + } + + if len(blockIDs) == 0 { + forceCommitmentFunc() + + return true + } + + blockBookedFunc := func(_, _ bool) { + if bookedBlocks.Add(1) != totalBlocks { + return + } + + // 1. Mark all transactions as accepted + for _, transactionID := range transactionIDs { + targetEngine.Ledger.ConflictDAG().SetAccepted(transactionID) + } + + // 2. Mark all blocks as accepted + for _, blockID := range blockIDs { + block, exists := targetEngine.BlockCache.Block(blockID) + if !exists { // this should never happen as we just booked these blocks in this slot. + continue + } + + targetEngine.BlockGadget.SetAccepted(block) + + block.Notarized().OnUpdate(func(_, _ bool) { + // Wait for all blocks to be notarized before forcing the commitment of the slot. + if notarizedBlocks.Add(1) != totalBlocks { + return + } + + forceCommitmentFunc() + }) + } + } + for _, blockID := range blockIDs { - targetEngine.BlockDAG.GetOrRequestBlock(blockID) + w.LogError("requesting block", "blockID", blockID) + + block, _ := targetEngine.BlockDAG.GetOrRequestBlock(blockID) + if block == nil { + w.protocol.LogError("failed to request block", "blockID", blockID) + + continue + } + + // We need to make sure that we add all blocks as root blocks because we don't know which blocks are root blocks without + // blocks from future slots. We're committing the current slot which then leads to the eviction of the blocks from the + // block cache and thus if not root blocks no block in the next slot can become solid. + targetEngine.EvictionState.AddRootBlock(block.ID(), block.SlotCommitmentID()) + + block.Booked().OnUpdate(blockBookedFunc) } w.LogDebug("received response", "commitment", commitment.LogName()) diff --git a/pkg/tests/booker_test.go b/pkg/tests/booker_test.go index 5e1acf4e3..67a4c9c10 100644 --- a/pkg/tests/booker_test.go +++ b/pkg/tests/booker_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/core/acceptance" "github.com/iotaledger/iota-core/pkg/protocol" @@ -237,6 +238,9 @@ func Test_SpendRejectedCommittedRace(t *testing.T) { ts.Run(true, map[string][]options.Option[protocol.Protocol]{}) + node1.Protocol.SetLogLevel(log.LevelTrace) + //node2.Protocol.SetLogLevel(log.LevelTrace) + ts.AssertSybilProtectionCommittee(0, []iotago.AccountID{ node1.Validator.AccountID, node2.Validator.AccountID, diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index adde4ac49..1c07138bb 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -7,6 +7,7 @@ import ( "github.com/stretchr/testify/require" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/protocol" "github.com/iotaledger/iota-core/pkg/testsuite" "github.com/iotaledger/iota-core/pkg/testsuite/mock" @@ -27,11 +28,15 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { ts.AddBasicBlockIssuer("default") node0 := ts.AddValidatorNode("node0") - ts.AddValidatorNode("node1") - ts.AddNode("node2") + node1 := ts.AddValidatorNode("node1") + node2 := ts.AddNode("node2") ts.Run(true, nil) + node0.Protocol.SetLogLevel(log.LevelError) + node1.Protocol.SetLogLevel(log.LevelError) + node2.Protocol.SetLogLevel(log.LevelTrace) + // Create snapshot to use later. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) require.NoError(t, ts.Node("node0").Protocol.MainEngine.Get().WriteSnapshot(snapshotPath)) @@ -41,6 +46,7 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { block0 := ts.IssueValidationBlock("block0", node0, mock.WithIssuingTime(ts.API.TimeProvider().SlotStartTime(50)), ) + fmt.Println(block0.SlotCommitmentID()) require.EqualValues(t, 48, ts.Block("block0").SlotCommitmentID().Slot()) // Reviving the chain should select one parent from the last committed slot. require.Len(t, block0.Parents(), 1) @@ -52,6 +58,8 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { { ts.IssueBlocksAtSlots("", []iotago.SlotIndex{51, 52}, 2, "block0", ts.Nodes("node0"), true, nil) + time.Sleep(5 * time.Second) + ts.AssertEqualStoredCommitmentAtIndex(50, ts.Nodes()...) ts.AssertLatestCommitmentSlotIndex(50, ts.Nodes()...) ts.AssertBlocksExist(ts.Blocks("block0"), true, ts.Nodes()...) diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index 5be1c7e9a..97c1fda15 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -8,13 +8,13 @@ replace github.com/iotaledger/iota-core/tools/genesis-snapshot => ../genesis-sna require ( github.com/AlecAivazis/survey/v2 v2.3.7 - github.com/iotaledger/hive.go/app v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/logger v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af + github.com/iotaledger/hive.go/app v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/ds v0.0.0-20231016001604-40b19730d958 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231005184534-62e6761a7b7c @@ -37,13 +37,13 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index 73abe0b08..b6fda360a 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -169,35 +169,35 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af h1:oKWvq1C5VBaQsNNLX4H1uaUofisgVQcVzeegySJqeKg= -github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20231010133617-cdbd5387e2af h1:3LEssfuBlPFkb55yOZOjySUS2tNJVQp8e311JAe/b2M= -github.com/iotaledger/hive.go/app v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:q2H/9TE6hvg6TKZI0YoxtbCdrf8O1sYBVjNT2Y3yAIU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af h1:xfXaQ6QbDvk9eq7A2heOkdkJTPW2Fns18iMaFx06ssE= -github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af h1:1pCoWeZS5/FWWNKBlJCboJfEGK3WYCXtWp77S7qQrc8= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af h1:J30bA+JjEOZzW7bei55Tw7r8e0EZGgTsVzHBX83bY8Y= -github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af h1:yevMZ1A7Crafi6pLQz8tdVQJBB1XWUTc+Y78zcg1+Fs= -github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af h1:GFYIbcmurif5sWfzOjfFKpzVtUsf6gCP5QBspXHHjEo= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af h1:OY1jOCQIdN5bhvMUJU3exx9QRVhpBmGGCYHg7gpZ0xc= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af h1:Td8RUNAWcxU9N8pKiIemaaf16QSHld8BhiGPYyiFVWA= -github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/log v0.0.0-20231009161204-3b7699bf3ba2 h1:rrhdEp/FxX4I/NPNLuRD4nkddBoXHPD3XzK2eGh79NQ= -github.com/iotaledger/hive.go/log v0.0.0-20231009161204-3b7699bf3ba2/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= -github.com/iotaledger/hive.go/log v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= -github.com/iotaledger/hive.go/logger v0.0.0-20231010133617-cdbd5387e2af h1:GX4aBNqZmdiRS3/wYOkLVOCQLmiBHBprSfntwSB8fys= -github.com/iotaledger/hive.go/logger v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af h1:0QOowMPuOTihsjmd+RJnv6rU2SZeKYb29R4yCCElk24= -github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af h1:KuZ18zU7XR3qcKvmhrfG1PqNoSfp8I8ITKGdb2ORAvo= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af h1:2/8In9gw03NW1hL4qyXuFYFoWZScHmyZtYUG0kHPmo4= -github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58 h1:0SBKBGWWv/cuj83+fw8QJ53rcXJPJ9HWFMjya09gs6M= +github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20231012193529-491497954a58 h1:7KXRCvaEfJsDFRKH2dVidNNYMiWXhoFPG4mycfRnCAc= +github.com/iotaledger/hive.go/app v0.0.0-20231012193529-491497954a58/go.mod h1:q2H/9TE6hvg6TKZI0YoxtbCdrf8O1sYBVjNT2Y3yAIU= +github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58 h1:2zP3rxP6XEFYrzol4VifIZ9uxAsFq75qrN4lF1LJ69s= +github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58 h1:N2+SbWaZ7S40dzYwxEip12hxAQZ42hwR1Xd2hlfMS4w= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58 h1:nGH70l+MBLbngzDQzRS+KHqKUzpvVBfi3fsoQUSwwfs= +github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20231012193529-491497954a58 h1:KI+2RXXUztSjECfIw8DV3YjWHycPesQvFMzZd9eyD50= +github.com/iotaledger/hive.go/ds v0.0.0-20231012193529-491497954a58/go.mod h1:qyM/8bkZybh/rw1PSRtzRIg7V1dSX8Qw4S+KeVI3CuQ= +github.com/iotaledger/hive.go/ds v0.0.0-20231016001604-40b19730d958/go.mod h1:qyM/8bkZybh/rw1PSRtzRIg7V1dSX8Qw4S+KeVI3CuQ= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58 h1:jM1qtgCxeZUlHzpsxBgzjAoXCpLaJg0awhXkYI71PHs= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58 h1:nmD6cMakgjhMC6zSvVkryH1sKq5Bg/RtEwMgxLV+jHM= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58 h1:I7O7e9WK520YRM+t6A2yEnTBrcI0kTHUTkF0MtA3T2A= +github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58 h1:eQMF3qod2SsU4pK5ciiqnUSgXUEuhw/NovbJyvfChGY= +github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58 h1:R3vPCxq/T3hdkALiXQRhiwM9GsokrEr52YdUM1cQzVc= +github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58 h1:5GKrBeR8NfD8y9Qijtgb6N8K56tyngt90sy9G5JdY/k= +github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58 h1:1U4Cb/nl5qwH31gnvkb89vYVMGzvgSMqBgZqQEPdQXA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58 h1:UTPdo6/TY6OZGTdTlJZ47YatzyRT10fjN1JxYDYHyC8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231005184534-62e6761a7b7c h1:3gWmDG+XNtTcT4FxcID6hijCUVs3kRGhAfhdv3FiWJs= github.com/iotaledger/iota.go/v4 v4.0.0-20231005184534-62e6761a7b7c/go.mod h1:l5yEhEf90+V0sv8kgWINTsM/O6W75bgEDHxWrIlC4AY= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index bc1f631e0..e7a4c2cf5 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231010133617-cdbd5387e2af + github.com/iotaledger/hive.go/app v0.0.0-20231012193529-491497954a58 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -18,7 +18,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect @@ -58,19 +57,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231016001604-40b19730d958 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231005192108-08a985c2e217 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231005191759-16a3636128c4 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231005184534-62e6761a7b7c // indirect @@ -135,7 +134,6 @@ require ( github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pokt-network/smt v0.6.1 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/prometheus/client_golang v1.16.0 // indirect @@ -151,7 +149,6 @@ require ( github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.8.4 // indirect github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect @@ -181,6 +178,5 @@ require ( google.golang.org/grpc v1.58.2 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 7cea77ea0..28f4cbb92 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -279,37 +279,37 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af h1:oKWvq1C5VBaQsNNLX4H1uaUofisgVQcVzeegySJqeKg= -github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/app v0.0.0-20231010133617-cdbd5387e2af h1:3LEssfuBlPFkb55yOZOjySUS2tNJVQp8e311JAe/b2M= -github.com/iotaledger/hive.go/app v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:q2H/9TE6hvg6TKZI0YoxtbCdrf8O1sYBVjNT2Y3yAIU= +github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58 h1:0SBKBGWWv/cuj83+fw8QJ53rcXJPJ9HWFMjya09gs6M= +github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/app v0.0.0-20231012193529-491497954a58 h1:7KXRCvaEfJsDFRKH2dVidNNYMiWXhoFPG4mycfRnCAc= +github.com/iotaledger/hive.go/app v0.0.0-20231012193529-491497954a58/go.mod h1:q2H/9TE6hvg6TKZI0YoxtbCdrf8O1sYBVjNT2Y3yAIU= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af h1:xfXaQ6QbDvk9eq7A2heOkdkJTPW2Fns18iMaFx06ssE= -github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af h1:1pCoWeZS5/FWWNKBlJCboJfEGK3WYCXtWp77S7qQrc8= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af h1:J30bA+JjEOZzW7bei55Tw7r8e0EZGgTsVzHBX83bY8Y= -github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af h1:yevMZ1A7Crafi6pLQz8tdVQJBB1XWUTc+Y78zcg1+Fs= -github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af h1:GFYIbcmurif5sWfzOjfFKpzVtUsf6gCP5QBspXHHjEo= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af h1:OY1jOCQIdN5bhvMUJU3exx9QRVhpBmGGCYHg7gpZ0xc= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af h1:Td8RUNAWcxU9N8pKiIemaaf16QSHld8BhiGPYyiFVWA= -github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/log v0.0.0-20231009161204-3b7699bf3ba2 h1:rrhdEp/FxX4I/NPNLuRD4nkddBoXHPD3XzK2eGh79NQ= -github.com/iotaledger/hive.go/log v0.0.0-20231009161204-3b7699bf3ba2/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= -github.com/iotaledger/hive.go/log v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= -github.com/iotaledger/hive.go/logger v0.0.0-20231010133617-cdbd5387e2af h1:GX4aBNqZmdiRS3/wYOkLVOCQLmiBHBprSfntwSB8fys= -github.com/iotaledger/hive.go/logger v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= -github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af h1:0QOowMPuOTihsjmd+RJnv6rU2SZeKYb29R4yCCElk24= -github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af h1:KuZ18zU7XR3qcKvmhrfG1PqNoSfp8I8ITKGdb2ORAvo= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af h1:2/8In9gw03NW1hL4qyXuFYFoWZScHmyZtYUG0kHPmo4= -github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58 h1:2zP3rxP6XEFYrzol4VifIZ9uxAsFq75qrN4lF1LJ69s= +github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58 h1:N2+SbWaZ7S40dzYwxEip12hxAQZ42hwR1Xd2hlfMS4w= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58 h1:nGH70l+MBLbngzDQzRS+KHqKUzpvVBfi3fsoQUSwwfs= +github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20231012193529-491497954a58 h1:KI+2RXXUztSjECfIw8DV3YjWHycPesQvFMzZd9eyD50= +github.com/iotaledger/hive.go/ds v0.0.0-20231012193529-491497954a58/go.mod h1:qyM/8bkZybh/rw1PSRtzRIg7V1dSX8Qw4S+KeVI3CuQ= +github.com/iotaledger/hive.go/ds v0.0.0-20231016001604-40b19730d958/go.mod h1:qyM/8bkZybh/rw1PSRtzRIg7V1dSX8Qw4S+KeVI3CuQ= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58 h1:jM1qtgCxeZUlHzpsxBgzjAoXCpLaJg0awhXkYI71PHs= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58 h1:nmD6cMakgjhMC6zSvVkryH1sKq5Bg/RtEwMgxLV+jHM= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58 h1:I7O7e9WK520YRM+t6A2yEnTBrcI0kTHUTkF0MtA3T2A= +github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58 h1:eQMF3qod2SsU4pK5ciiqnUSgXUEuhw/NovbJyvfChGY= +github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58 h1:R3vPCxq/T3hdkALiXQRhiwM9GsokrEr52YdUM1cQzVc= +github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58 h1:5GKrBeR8NfD8y9Qijtgb6N8K56tyngt90sy9G5JdY/k= +github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58 h1:1U4Cb/nl5qwH31gnvkb89vYVMGzvgSMqBgZqQEPdQXA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58 h1:UTPdo6/TY6OZGTdTlJZ47YatzyRT10fjN1JxYDYHyC8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231005192108-08a985c2e217 h1:DdrsW+J04ne2j6bjU1yVu+4C4CjpjGFYDEVMtmg0zyA= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231005192108-08a985c2e217/go.mod h1:OWZGwG4q2Ypd/D6LJicgdPXtw9yYkhaZEvJFhkIm2Ck= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231005191759-16a3636128c4 h1:uI+sZeZnGzAkM34JDbZBfyRIXrkkd1L0w8qVJ5rGy3E= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 272244040..59d2669fc 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af - github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af + github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58 + github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231005184534-62e6761a7b7c github.com/mr-tron/base58 v1.2.0 @@ -27,14 +27,15 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231016001604-40b19730d958 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect @@ -60,6 +61,8 @@ require ( github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98 // indirect github.com/zyedidia/generic v1.2.1 // indirect go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 // indirect golang.org/x/sys v0.13.0 // indirect google.golang.org/protobuf v1.31.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 92d3d71dd..ddae8208b 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,31 +28,33 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af h1:oKWvq1C5VBaQsNNLX4H1uaUofisgVQcVzeegySJqeKg= -github.com/iotaledger/hive.go/ads v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= -github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af h1:xfXaQ6QbDvk9eq7A2heOkdkJTPW2Fns18iMaFx06ssE= -github.com/iotaledger/hive.go/constraints v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af h1:1pCoWeZS5/FWWNKBlJCboJfEGK3WYCXtWp77S7qQrc8= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231010133617-cdbd5387e2af/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= -github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af h1:J30bA+JjEOZzW7bei55Tw7r8e0EZGgTsVzHBX83bY8Y= -github.com/iotaledger/hive.go/crypto v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= -github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af h1:yevMZ1A7Crafi6pLQz8tdVQJBB1XWUTc+Y78zcg1+Fs= -github.com/iotaledger/hive.go/ds v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:ZrqsjIJS2QCgGp7Ki+l4hWJQgzfBObUCemb5Upwlx18= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af h1:GFYIbcmurif5sWfzOjfFKpzVtUsf6gCP5QBspXHHjEo= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af h1:OY1jOCQIdN5bhvMUJU3exx9QRVhpBmGGCYHg7gpZ0xc= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= -github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af h1:Td8RUNAWcxU9N8pKiIemaaf16QSHld8BhiGPYyiFVWA= -github.com/iotaledger/hive.go/lo v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= -github.com/iotaledger/hive.go/log v0.0.0-20231009161204-3b7699bf3ba2 h1:rrhdEp/FxX4I/NPNLuRD4nkddBoXHPD3XzK2eGh79NQ= -github.com/iotaledger/hive.go/log v0.0.0-20231009161204-3b7699bf3ba2/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= -github.com/iotaledger/hive.go/log v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= -github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af h1:0QOowMPuOTihsjmd+RJnv6rU2SZeKYb29R4yCCElk24= -github.com/iotaledger/hive.go/runtime v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af h1:KuZ18zU7XR3qcKvmhrfG1PqNoSfp8I8ITKGdb2ORAvo= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231010133617-cdbd5387e2af/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= -github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af h1:2/8In9gw03NW1hL4qyXuFYFoWZScHmyZtYUG0kHPmo4= -github.com/iotaledger/hive.go/stringify v0.0.0-20231010133617-cdbd5387e2af/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58 h1:0SBKBGWWv/cuj83+fw8QJ53rcXJPJ9HWFMjya09gs6M= +github.com/iotaledger/hive.go/ads v0.0.0-20231012193529-491497954a58/go.mod h1:IAWZ/5It5P8B41mWyJXJVcG0vuikVRaTFKQnr2D2q+c= +github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58 h1:2zP3rxP6XEFYrzol4VifIZ9uxAsFq75qrN4lF1LJ69s= +github.com/iotaledger/hive.go/constraints v0.0.0-20231012193529-491497954a58/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58 h1:N2+SbWaZ7S40dzYwxEip12hxAQZ42hwR1Xd2hlfMS4w= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231012193529-491497954a58/go.mod h1:jn3TNmiNRIiQm/rS4VD+7wFHI2+UXABHvCA3PbQxBqI= +github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58 h1:nGH70l+MBLbngzDQzRS+KHqKUzpvVBfi3fsoQUSwwfs= +github.com/iotaledger/hive.go/crypto v0.0.0-20231012193529-491497954a58/go.mod h1:jP68na941d9uq7RtnA8aQ/FtIGRGz/51cU4uXrInQFU= +github.com/iotaledger/hive.go/ds v0.0.0-20231012193529-491497954a58 h1:KI+2RXXUztSjECfIw8DV3YjWHycPesQvFMzZd9eyD50= +github.com/iotaledger/hive.go/ds v0.0.0-20231012193529-491497954a58/go.mod h1:qyM/8bkZybh/rw1PSRtzRIg7V1dSX8Qw4S+KeVI3CuQ= +github.com/iotaledger/hive.go/ds v0.0.0-20231016001604-40b19730d958/go.mod h1:qyM/8bkZybh/rw1PSRtzRIg7V1dSX8Qw4S+KeVI3CuQ= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58 h1:jM1qtgCxeZUlHzpsxBgzjAoXCpLaJg0awhXkYI71PHs= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231012193529-491497954a58/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58 h1:nmD6cMakgjhMC6zSvVkryH1sKq5Bg/RtEwMgxLV+jHM= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231012193529-491497954a58/go.mod h1:DeP4JF4N995LteD0+/o7NsW1bO5IXURIJ27A69Ca5+Y= +github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58 h1:I7O7e9WK520YRM+t6A2yEnTBrcI0kTHUTkF0MtA3T2A= +github.com/iotaledger/hive.go/lo v0.0.0-20231012193529-491497954a58/go.mod h1:4oKCdMEhHMLCudBz79kuvJmgSY/DhfVePNIyJhew/80= +github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58 h1:eQMF3qod2SsU4pK5ciiqnUSgXUEuhw/NovbJyvfChGY= +github.com/iotaledger/hive.go/log v0.0.0-20231012193529-491497954a58/go.mod h1:UF7PzlWdZ2H0Hkxrt4AgJmNVeMXUJzw4RwbHpib1DB0= +github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58 h1:R3vPCxq/T3hdkALiXQRhiwM9GsokrEr52YdUM1cQzVc= +github.com/iotaledger/hive.go/logger v0.0.0-20231012193529-491497954a58/go.mod h1:sxqWRdZ1OOxwkxVczuGcW034Mpt2vFh5ebJHO++ZYeI= +github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58 h1:5GKrBeR8NfD8y9Qijtgb6N8K56tyngt90sy9G5JdY/k= +github.com/iotaledger/hive.go/runtime v0.0.0-20231012193529-491497954a58/go.mod h1:dJeQBt3UjsoRSm2yKiw80vDDgPBtIkun7N16ETmVhl4= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58 h1:1U4Cb/nl5qwH31gnvkb89vYVMGzvgSMqBgZqQEPdQXA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231012193529-491497954a58/go.mod h1:IJgaaxbgKCsNat18jlJJEAxCY2oVYR3F30B+M4vJ89I= +github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58 h1:UTPdo6/TY6OZGTdTlJZ47YatzyRT10fjN1JxYDYHyC8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231012193529-491497954a58/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231005184534-62e6761a7b7c h1:3gWmDG+XNtTcT4FxcID6hijCUVs3kRGhAfhdv3FiWJs= github.com/iotaledger/iota.go/v4 v4.0.0-20231005184534-62e6761a7b7c/go.mod h1:l5yEhEf90+V0sv8kgWINTsM/O6W75bgEDHxWrIlC4AY= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= @@ -112,6 +114,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -123,6 +126,12 @@ github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XD github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20230817173708-d852ddb80c63 h1:m64FZMko/V45gv0bNmrNYoDEq8U5YUhetc9cBWKS1TQ= From 496cc8101ffe9fcf6a41f5323b0594b2d35e5bd9 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 21 Oct 2023 00:23:44 +0200 Subject: [PATCH 198/356] Feat: added debug output --- pkg/protocol/engine/engine.go | 1 + pkg/protocol/protocol.go | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index e160ea5da..c4ddae00b 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -242,6 +242,7 @@ func (e *Engine) Shutdown() { e.Scheduler.Shutdown() e.Retainer.Shutdown() e.Workers.Shutdown() + e.Storage.Shutdown() e.TriggerStopped() } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index bb6dd21e0..cd52b3020 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -2,6 +2,7 @@ package protocol import ( "context" + "fmt" "sync" "github.com/libp2p/go-libp2p/core/peer" @@ -92,15 +93,19 @@ func (p *Protocol) IssueBlock(block *model.Block) error { // Run starts the protocol. func (p *Protocol) Run(ctx context.Context) error { + fmt.Println("STARTING UP") + p.waitEngineInitialized() p.Initialized.Trigger() <-ctx.Done() + fmt.Println("SHUTTING DOWN") p.Shutdown.Trigger() p.Workers.Shutdown() p.Stopped.Trigger() + fmt.Println("SHUTTING DOWN DONE") return ctx.Err() } From 1a994fa9cd844eef58ca1c700ae36441da08d17a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 30 Oct 2023 01:20:59 +0100 Subject: [PATCH 199/356] Fix some bugs when integrating cached reset branch (#474) * Fixed everything - it finally works :P Continuing cleanup in other branch! --- go.mod | 28 ++-- go.sum | 56 +++---- pkg/protocol/chain.go | 147 ++++++++++++------ pkg/protocol/chain_manager.go | 11 +- pkg/protocol/commitment.go | 103 ++++++------ pkg/protocol/commitment_verifier.go | 2 +- .../blockdag/inmemoryblockdag/blockdag.go | 2 +- .../engine/booker/inmemorybooker/booker.go | 2 +- pkg/protocol/engine/clock/blocktime/clock.go | 4 +- .../accountsfilter/commitmentfilter.go | 2 +- .../scheduler/drr/scheduler.go | 4 +- .../scheduler/passthrough/scheduler.go | 2 +- .../totalweightslotgadget/gadget.go | 4 +- pkg/protocol/engine/engine.go | 106 ++++++++----- .../engine/filter/blockfilter/filter.go | 2 +- pkg/protocol/engine/ledger/ledger/ledger.go | 2 +- .../notarization/slotnotarization/manager.go | 22 ++- pkg/protocol/engine/tipmanager/v1/provider.go | 4 +- .../engine/tipselection/v1/provider.go | 4 +- pkg/protocol/engine_manager.go | 22 ++- pkg/protocol/network_clock.go | 4 +- pkg/protocol/protocol.go | 7 +- pkg/protocol/protocol_attestations.go | 2 +- pkg/protocol/protocol_blocks.go | 18 +-- pkg/protocol/protocol_commitments.go | 2 +- pkg/protocol/protocol_warp_sync.go | 31 +++- .../snapshotcreator/snapshotcreator.go | 8 +- .../sybilprotection/seatmanager/poa/poa.go | 2 +- .../performance/testsuite_test.go | 6 +- .../sybilprotectionv1/sybilprotection.go | 4 +- pkg/retainer/retainer/retainer.go | 2 +- pkg/storage/permanent/settings.go | 70 ++++++--- pkg/storage/prunable/bucket_manager.go | 18 ++- pkg/storage/prunable/epochstore/epoch_kv.go | 50 +++++- pkg/storage/prunable/epochstore/store.go | 67 ++++++-- pkg/storage/prunable/prunable.go | 86 +++++----- pkg/storage/prunable/prunable_epoch.go | 1 - pkg/storage/storage_prunable.go | 68 ++++++-- pkg/tests/protocol_engine_switching_test.go | 16 +- pkg/testsuite/mock/blockissuer.go | 4 +- pkg/testsuite/mock/node.go | 2 - tools/evil-spammer/go.mod | 28 ++-- tools/evil-spammer/go.sum | 56 +++---- tools/gendoc/go.mod | 32 ++-- tools/gendoc/go.sum | 56 +++---- tools/genesis-snapshot/go.mod | 27 ++-- tools/genesis-snapshot/go.sum | 57 ++++--- 47 files changed, 759 insertions(+), 494 deletions(-) diff --git a/go.mod b/go.mod index cfcd26bfe..87ac97ae1 100644 --- a/go.mod +++ b/go.mod @@ -10,19 +10,20 @@ require ( github.com/google/uuid v1.3.1 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/app v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b - github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/logger v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b - github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b + github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231020151337-569450d5bf7d github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd @@ -88,7 +89,6 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38 // indirect github.com/ipfs/boxo v0.10.0 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect diff --git a/go.sum b/go.sum index 39dbfb496..fdc3b1650 100644 --- a/go.sum +++ b/go.sum @@ -277,34 +277,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b h1:D68khiAFb9DwTvjZc2nc4R0E6wUdKyYCUXkmdaMzuoQ= -github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231020115340-13da292c580b h1:mX3NXaTMLEwZnEs4IlxEvXY0YZo8qbb8M1xM39FS6qY= -github.com/iotaledger/hive.go/app v0.0.0-20231020115340-13da292c580b/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= -github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b h1:HF4e0wz0JMIT4m3saqdQ//T9nWHV9d5sLMtEwNDuykM= -github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b h1:ZERXxhQBUBV1AqTE6cUI4vTxSx4JrnsMuLZFgj32xLM= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b h1:ZUUqRRO6XnQmVcXlXyx07vqySn28+bln6jp9KagYCjY= -github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b h1:8b2sH+2Vf0y5BDYTMwKa09iQr3JF9JrzTI64DkXb+9U= -github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b h1:JJPnr231djUTgTnE4oGz847WE9VA7Py6E6fgZwT5TQo= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b h1:LusmtjpfG/q8lc15Fp9W3kABbN3tArKx/zw2ibdY1DU= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b h1:UvFWI8wQJS/XQOeWHpPsaFVeS2nxJ7nIGFr+IFjrnVw= -github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38 h1:6HIBNKOWLXY5Gk1s+q93D6IsTcqwANigfMO3ePtV3HQ= -github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231020115340-13da292c580b h1:EhVgAU/f2J3VYZwP60dRdyfAeDU3c/gBzX9blKtQGKA= -github.com/iotaledger/hive.go/logger v0.0.0-20231020115340-13da292c580b/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b h1:O68POYIqBLnoHN+HIszc58QwAI2qocYq0WKGfVrXmMg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b h1:zaXZn9yV/95SRDkgCZQeBbSbmcJTKSZbCB7oBd71Qwg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b h1:MDZhTZTVDiydXcW5j4TA7HixVCyAdToIMPhHfJee7cE= -github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 h1:EOfxTuAiBmED1VHuVh7/UIeB27cCRe13gdSzyioNMBw= +github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 h1:xAER9M9Uoz2EOWT43E9wmXRe+RmAk8OBSUoboH4Su8M= +github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 h1:drmpgLlJy7kZ09Dt1qKSnbILU+27Qu2jp4VdPDNwbFk= +github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 h1:BC5GkIHyXdoJGdw6Tu5ds2kjw9grFLtwQiuMaKfdLU8= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 h1:r8TkdQJB7/bJd8cF8z5GQ+rX/7JpbPdPoN7wMoV1OCM= +github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 h1:ytzZZPtclAzLfjxv26frbinCGx3Z6ouUENbx5U7lFGg= +github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 h1:QMxd32Y/veVhTDPCiOFgetjUbG7sr9MryF29/rSPkMA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 h1:/xPwStUckZ2V0XPoY496cXU+c5elpHyvYoT6JAmuvRY= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 h1:AvNLzONVMspwx7nD/NyYUgb5Hi7/zgzIOegr1uRD/M8= +github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 h1:e1uJAlXE3zeXpa+c4uFOG+/AMFbUlLt2mcrSK5NMxVs= +github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 h1:7wjs4t1snBDJ8LOTl+tZhr2ORywSOTgJMppxiIAMA0A= +github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 h1:1QMJ39qXIx/IZVzus3+97IV7Pa++e+d340TvbMjhiBU= +github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 h1:hZli4E9kJUAEQ7gzZR1XbPcpgqvqMPYq8YBPMbrBuos= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 h1:OlDhgvJ48bZxcvTeebJ1b96xtNnJAddejd2Q4rlH1mU= +github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af h1:3+heabXNGjv3Sx1sg0qG+QdqeEWIpf7jM3T5cPiVmSA= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af/go.mod h1:3BZ5r/MhswUZwXHDzMZacOhm6DWpUdGjefNRNshfwiM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231020151337-569450d5bf7d h1:PeJNFBkR28hdQCxUyC/cbOlDjFm3D1U7O5bxi+qsOvQ= diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 8d376c405..7f9edc09f 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -9,6 +9,7 @@ import ( "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" @@ -50,12 +51,15 @@ func NewChain(protocol *Protocol) *Chain { LatestCommitment: reactive.NewVariable[*Commitment](), LatestAttestedCommitment: reactive.NewVariable[*Commitment](), LatestVerifiedCommitment: reactive.NewVariable[*Commitment](), + ClaimedWeight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](), + VerifiedWeight: reactive.NewVariable[uint64](), WarpSync: reactive.NewVariable[bool]().Init(true), NetworkClockSlot: reactive.NewVariable[iotago.SlotIndex](), WarpSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), VerifyAttestations: reactive.NewVariable[bool](), + Engine: reactive.NewVariable[*engine.Engine](), IsEvicted: reactive.NewEvent(), commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), @@ -64,22 +68,11 @@ func NewChain(protocol *Protocol) *Chain { SpawnedEngine: reactive.NewVariable[*engine.Engine](), } - c.LatestAttestedCommitment.OnUpdateWithContext(func(_, latestAttestedCommitment *Commitment, withinContext func(subscriptionFactory func() (unsubscribe func()))) { - withinContext(func() (unsubscribe func()) { - return latestAttestedCommitment.CumulativeAttestedWeight.OnUpdate(func(_, newValue uint64) { c.AttestedWeight.Set(newValue) }) - }) - }) - - c.ClaimedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestCommitment) - c.VerifiedWeight = reactive.NewDerivedVariable((*Commitment).cumulativeWeight, c.LatestVerifiedCommitment) - - c.Engine = reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { - if spawnedEngine != nil { - return spawnedEngine - } - - return parentEngine - }, c.SpawnedEngine, c.parentEngine) + c.initClaimedWeight() + c.initAttestedWeight() + c.initVerifiedWeight() + c.initEngine() + c.initWarpSync() protocol.NetworkClock.OnUpdate(func(_, now time.Time) { if engineInstance := c.Engine.Get(); engineInstance != nil { @@ -145,10 +138,12 @@ func NewChain(protocol *Protocol) *Chain { }) c.Logger = protocol.NewEntityLogger("Chain", c.IsEvicted, func(entityLogger log.Logger) { - c.WarpSync.LogUpdates(entityLogger, log.LevelInfo, "WarpSync") - c.NetworkClockSlot.LogUpdates(entityLogger, log.LevelDebug, "NetworkClockSlot") - c.WarpSyncThreshold.LogUpdates(entityLogger, log.LevelDebug, "WarpSyncThreshold") - c.OutOfSyncThreshold.LogUpdates(entityLogger, log.LevelDebug, "OutOfSyncThreshold") + entityLogger.LogDebug("created") + + c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") + c.NetworkClockSlot.LogUpdates(entityLogger, log.LevelTrace, "NetworkClockSlot") + c.WarpSyncThreshold.LogUpdates(entityLogger, log.LevelTrace, "WarpSyncThreshold") + c.OutOfSyncThreshold.LogUpdates(entityLogger, log.LevelTrace, "OutOfSyncThreshold") c.ForkingPoint.LogUpdates(entityLogger, log.LevelTrace, "ForkingPoint", (*Commitment).LogName) c.ClaimedWeight.LogUpdates(entityLogger, log.LevelTrace, "ClaimedWeight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") @@ -157,33 +152,95 @@ func NewChain(protocol *Protocol) *Chain { c.LatestVerifiedCommitment.LogUpdates(entityLogger, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName) c.VerifyAttestations.LogUpdates(entityLogger, log.LevelTrace, "VerifyAttestations") c.VerifyState.LogUpdates(entityLogger, log.LevelDebug, "VerifyState") + c.SpawnedEngine.LogUpdates(entityLogger, log.LevelDebug, "SpawnedEngine", (*engine.Engine).LogName) }) - var unsubscribe func() - c.WarpSync.OnUpdate(func(_, warpSync bool) { - if unsubscribe != nil { - unsubscribe() - } + return c +} - go func() { - if warpSync { - unsubscribe = c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(latestVerifiedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex) bool { - latestVerifiedNil := latestVerifiedCommitment != nil - belowWarpSync := latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < warpSyncThreshold +func (c *Chain) initClaimedWeight() { + c.ClaimedWeight.InheritFrom(reactive.NewDerivedVariable(func(c *Commitment) uint64 { + if c == nil { + return 0 + } - c.LogError("WarpSync", "latestVerifiedNil", latestVerifiedNil, "belowWarpSync", belowWarpSync) + return c.CumulativeWeight() + }, c.LatestCommitment)) +} - return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < warpSyncThreshold - }, c.LatestVerifiedCommitment, c.WarpSyncThreshold)) - } else { - unsubscribe = c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(latestVerifiedCommitment *Commitment, outOfSyncThreshold iotago.SlotIndex) bool { - return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < outOfSyncThreshold - }, c.LatestVerifiedCommitment, c.OutOfSyncThreshold)) +func (c *Chain) initAttestedWeight() { + c.LatestAttestedCommitment.OnUpdateWithContext(func(_, latestAttestedCommitment *Commitment, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + if latestAttestedCommitment != nil { + setupInheritance := func() func() { + return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) } - }() + + unsubscribeOnUpdate(setupInheritance) + } }) +} - return c +func (c *Chain) initVerifiedWeight() { + c.VerifiedWeight.InheritFrom(reactive.NewDerivedVariable(func(c *Commitment) uint64 { + if c == nil { + return 0 + } + + return c.CumulativeWeight() + }, c.LatestVerifiedCommitment)) +} + +func (c *Chain) initWarpSync() { + enableWarpSyncIfNecessary := func() (unsubscribe func()) { + return c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(latestVerifiedCommitment *Commitment, outOfSyncThreshold iotago.SlotIndex) bool { + return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < outOfSyncThreshold + }, c.LatestVerifiedCommitment, c.OutOfSyncThreshold)) + } + + disableWarpSyncIfNecessary := func() (unsubscribe func()) { + return c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(latestVerifiedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex) bool { + return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < warpSyncThreshold + }, c.LatestVerifiedCommitment, c.WarpSyncThreshold)) + } + + warpSyncTogglePool := workerpool.New("WarpSync toggle", workerpool.WithWorkerCount(1)).Start() + c.IsEvicted.OnTrigger(func() { warpSyncTogglePool.Shutdown() }) + + var unsubscribe func() + + c.WarpSync.OnUpdate(func(_, warpSync bool) { + if !c.IsEvicted.Get() { + warpSyncTogglePool.Submit(func() { + if unsubscribe != nil { + unsubscribe() + } + + if warpSync { + unsubscribe = disableWarpSyncIfNecessary() + } else { + unsubscribe = enableWarpSyncIfNecessary() + } + }) + } + }) +} + +func (c *Chain) initEngine() { + c.ParentChain.OnUpdateWithContext(func(_, parentChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + unsubscribeOnUpdate(func() func() { + if parentChain == nil { + return c.Engine.InheritFrom(c.SpawnedEngine) + } + + return c.Engine.InheritFrom(reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { + if spawnedEngine != nil { + return spawnedEngine + } + + return parentEngine + }, c.SpawnedEngine, parentChain.Engine)) + }) + }, true) } func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { @@ -215,7 +272,7 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { for _, chain := range append([]*Chain{c}, c.ChildChains.ToSlice()...) { if chain.VerifyState.Get() { - if targetEngine := chain.SpawnedEngine.Get(); targetEngine != nil && !chain.WarpSync.Get() || targetEngine.BlockRequester.HasTicker(block.ID()) { + if targetEngine := chain.Engine.Get(); targetEngine != nil && !chain.WarpSync.Get() || targetEngine.BlockRequester.HasTicker(block.ID()) { targetEngine.ProcessBlockFromPeer(block, src) success = true @@ -226,16 +283,6 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { return success } -func (c *Chain) earliestUncommittedSlot() iotago.SlotIndex { - if latestVerifiedCommitment := c.LatestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { - return latestVerifiedCommitment.Slot() + 1 - } else if forkingPoint := c.ForkingPoint.Get(); forkingPoint != nil { - return forkingPoint.Slot() - } else { - return 0 - } -} - func (c *Chain) InSyncRange(slot iotago.SlotIndex) bool { if latestVerifiedCommitment := c.LatestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { return slot > latestVerifiedCommitment.Slot() && slot < c.SyncThreshold.Get() diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 4eef9391d..5569620f7 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -89,7 +89,7 @@ func (c *ChainManager) PublishCommitment(commitment *model.Commitment) (commitme }) if published = commitmentMetadata == publishedCommitmentMetadata; published { - c.protocol.LogDebug("new commitment created", "name", commitmentMetadata.LogName(), "id", commitment.ID()) + commitmentMetadata.LogDebug("created", "id", commitment.ID()) } return commitmentMetadata, commitmentMetadata == publishedCommitmentMetadata, nil @@ -125,7 +125,7 @@ func (c *ChainManager) initMainChain() { mainChain := NewChain(c.protocol) - c.protocol.LogDebug("new chain created", "name", mainChain.LogName(), "forkingPoint", "") + //c.protocol.LogDebug("new chain created", "name", mainChain.LogName(), "forkingPoint", "") mainChain.VerifyState.Set(true) mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) @@ -262,11 +262,12 @@ func (c *ChainManager) publishEngineCommitments(chain *Chain) { return engine.LatestCommitment.OnUpdate(func(_, latestCommitment *model.Commitment) { for latestPublishedSlot < latestCommitment.Slot() { - if commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedSlot + 1); err != nil { + commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedSlot + 1) + if err != nil { panic(err) // this should never happen, but we panic to get a stack trace if it does - } else { - publishCommitment(commitmentToPublish) } + + publishCommitment(commitmentToPublish) } }) }) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 1fc50488a..b7e6a66ba 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -14,23 +14,25 @@ import ( type Commitment struct { *model.Commitment - Parent reactive.Variable[*Commitment] - Children reactive.Set[*Commitment] - MainChild reactive.Variable[*Commitment] - SpawnedChain reactive.Variable[*Chain] - Chain reactive.Variable[*Chain] - Engine reactive.Variable[*engine.Engine] - RequestAttestations reactive.Variable[bool] - RequestBlocks reactive.Variable[bool] - RequestedBlocksReceived reactive.Variable[bool] - Weight reactive.Variable[uint64] - AttestedWeight reactive.Variable[uint64] - CumulativeAttestedWeight reactive.Variable[uint64] - IsSolid reactive.Event - IsAttested reactive.Event - IsVerified reactive.Event - IsRoot reactive.Event - IsEvicted reactive.Event + Parent reactive.Variable[*Commitment] + Children reactive.Set[*Commitment] + MainChild reactive.Variable[*Commitment] + SpawnedChain reactive.Variable[*Chain] + Chain reactive.Variable[*Chain] + Engine reactive.Variable[*engine.Engine] + RequestAttestations reactive.Variable[bool] + RequestBlocks reactive.Variable[bool] + RequestedBlocksReceived reactive.Variable[bool] + Weight reactive.Variable[uint64] + AttestedWeight reactive.Variable[uint64] + CumulativeAttestedWeight reactive.Variable[uint64] + IsSolid reactive.Event + IsAttested reactive.Event + IsVerified reactive.Event + IsRoot reactive.Event + IsEvicted reactive.Event + IsAboveLatestVerifiedCommitment reactive.Variable[bool] + ReplayBlocks reactive.Variable[bool] protocol *Protocol isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] @@ -45,23 +47,25 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c := &Commitment{ Commitment: commitment, - Parent: reactive.NewVariable[*Commitment](), - MainChild: reactive.NewVariable[*Commitment](), - Children: reactive.NewSet[*Commitment](), - SpawnedChain: reactive.NewVariable[*Chain](), - Chain: reactive.NewVariable[*Chain](), - Engine: reactive.NewVariable[*engine.Engine](), - RequestAttestations: reactive.NewVariable[bool](), - RequestBlocks: reactive.NewVariable[bool](), - RequestedBlocksReceived: reactive.NewVariable[bool](), - Weight: reactive.NewVariable[uint64](), - AttestedWeight: reactive.NewVariable[uint64](func(currentValue uint64, newValue uint64) uint64 { return max(currentValue, newValue) }), - CumulativeAttestedWeight: reactive.NewVariable[uint64](), - IsSolid: reactive.NewEvent(), - IsAttested: reactive.NewEvent(), - IsVerified: reactive.NewEvent(), - IsRoot: reactive.NewEvent(), - IsEvicted: reactive.NewEvent(), + Parent: reactive.NewVariable[*Commitment](), + MainChild: reactive.NewVariable[*Commitment](), + Children: reactive.NewSet[*Commitment](), + SpawnedChain: reactive.NewVariable[*Chain](), + Chain: reactive.NewVariable[*Chain](), + Engine: reactive.NewVariable[*engine.Engine](), + RequestAttestations: reactive.NewVariable[bool](), + RequestBlocks: reactive.NewVariable[bool](), + RequestedBlocksReceived: reactive.NewVariable[bool](), + Weight: reactive.NewVariable[uint64](), + AttestedWeight: reactive.NewVariable[uint64](func(currentValue uint64, newValue uint64) uint64 { return max(currentValue, newValue) }), + CumulativeAttestedWeight: reactive.NewVariable[uint64](), + IsSolid: reactive.NewEvent(), + IsAttested: reactive.NewEvent(), + IsVerified: reactive.NewEvent(), + IsRoot: reactive.NewEvent(), + IsEvicted: reactive.NewEvent(), + IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), + ReplayBlocks: reactive.NewVariable[bool](), protocol: protocol, isDirectlyAboveLatestAttestedCommitment: reactive.NewVariable[bool](), @@ -70,6 +74,26 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment isBelowWarpSyncThreshold: reactive.NewEvent(), } + c.Parent.OnUpdateWithContext(func(_, parent *Commitment, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + if parent != nil { + unsubscribeOnUpdate(func() func() { + return c.IsAboveLatestVerifiedCommitment.InheritFrom(reactive.NewDerivedVariable2(func(parentAboveLatestVerifiedCommitment, directlyAboveLatestVerifiedCommitment bool) bool { + return parentAboveLatestVerifiedCommitment || directlyAboveLatestVerifiedCommitment + }, parent.IsAboveLatestVerifiedCommitment, c.isDirectlyAboveLatestVerifiedCommitment)) + }) + } + }) + + c.Chain.OnUpdateWithContext(func(_, chain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + if chain != nil { + unsubscribeOnUpdate(func() func() { + return c.ReplayBlocks.InheritFrom(reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { + return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment + }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment)) + }) + } + }) + c.Parent.OnUpdateOnce(func(_, parent *Commitment) { parent.registerChild(c) @@ -204,9 +228,6 @@ func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitm } spawnedChain = NewChain(c.protocol) - - c.protocol.LogDebug("new chain created", "name", spawnedChain.LogName(), "forkingPoint", c.LogName()) - spawnedChain.ForkingPoint.Set(c) } @@ -253,11 +274,3 @@ func (c *Commitment) triggerEventIfBelowThreshold(event func(*Commitment) reacti }) }) } - -func (c *Commitment) cumulativeWeight() uint64 { - if c == nil { - return 0 - } - - return c.CumulativeWeight() -} diff --git a/pkg/protocol/commitment_verifier.go b/pkg/protocol/commitment_verifier.go index 2fa667638..8e49f4c42 100644 --- a/pkg/protocol/commitment_verifier.go +++ b/pkg/protocol/commitment_verifier.go @@ -37,7 +37,7 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *Commitment, attestatio } } - if !iotago.VerifyProof(merkleProof, iotago.Identifier(tree.Root()), commitment.RootsID()) { + if !iotago.VerifyProof(merkleProof, tree.Root(), commitment.RootsID()) { return nil, 0, ierrors.Errorf("invalid merkle proof for attestations for commitment %s", commitment.ID()) } diff --git a/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go b/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go index f155b2c9b..713b20c8c 100644 --- a/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go +++ b/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go @@ -43,7 +43,7 @@ func NewProvider(opts ...options.Option[BlockDAG]) module.Provider[*engine.Engin return module.Provide(func(e *engine.Engine) blockdag.BlockDAG { b := New(e.Workers.CreateGroup("BlockDAG"), int(e.Storage.Settings().APIProvider().CommittedAPI().ProtocolParameters().MaxCommittableAge())*2, e.EvictionState, e.BlockCache, e.ErrorHandler("blockdag"), opts...) - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { wp := b.workers.CreatePool("BlockDAG.Attach", workerpool.WithWorkerCount(2)) e.Events.Filter.BlockPreAllowed.Hook(func(block *model.Block) { diff --git a/pkg/protocol/engine/booker/inmemorybooker/booker.go b/pkg/protocol/engine/booker/inmemorybooker/booker.go index 51f53c52d..90dd32e1e 100644 --- a/pkg/protocol/engine/booker/inmemorybooker/booker.go +++ b/pkg/protocol/engine/booker/inmemorybooker/booker.go @@ -38,7 +38,7 @@ type Booker struct { func NewProvider(opts ...options.Option[Booker]) module.Provider[*engine.Engine, booker.Booker] { return module.Provide(func(e *engine.Engine) booker.Booker { b := New(e, e.BlockCache, e.ErrorHandler("booker"), opts...) - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { b.ledger = e.Ledger b.ledger.HookConstructed(func() { b.conflictDAG = b.ledger.ConflictDAG() diff --git a/pkg/protocol/engine/clock/blocktime/clock.go b/pkg/protocol/engine/clock/blocktime/clock.go index 3c2279d01..506387df0 100644 --- a/pkg/protocol/engine/clock/blocktime/clock.go +++ b/pkg/protocol/engine/clock/blocktime/clock.go @@ -40,7 +40,7 @@ func NewProvider(opts ...options.Option[Clock]) module.Provider[*engine.Engine, confirmedTime: NewRelativeTime(), workerPool: e.Workers.CreatePool("Clock", workerpool.WithWorkerCount(1), workerpool.WithCancelPendingTasksOnShutdown(true), workerpool.WithPanicOnSubmitAfterShutdown(true)), }, opts, func(c *Clock) { - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { latestCommitmentIndex := e.Storage.Settings().LatestCommitment().Slot() c.acceptedTime.Set(e.APIForSlot(latestCommitmentIndex).TimeProvider().SlotEndTime(latestCommitmentIndex)) @@ -72,7 +72,7 @@ func NewProvider(opts ...options.Option[Clock]) module.Provider[*engine.Engine, )) }) - e.HookStopped(c.TriggerStopped) + e.Stopped.OnTrigger(c.TriggerStopped) }, (*Clock).TriggerConstructed) }) } diff --git a/pkg/protocol/engine/commitmentfilter/accountsfilter/commitmentfilter.go b/pkg/protocol/engine/commitmentfilter/accountsfilter/commitmentfilter.go index 076caf807..f54b7a027 100644 --- a/pkg/protocol/engine/commitmentfilter/accountsfilter/commitmentfilter.go +++ b/pkg/protocol/engine/commitmentfilter/accountsfilter/commitmentfilter.go @@ -32,7 +32,7 @@ type CommitmentFilter struct { func NewProvider(opts ...options.Option[CommitmentFilter]) module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] { return module.Provide(func(e *engine.Engine) commitmentfilter.CommitmentFilter { c := New(e, opts...) - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { c.commitmentFunc = e.Storage.Commitments().Load c.accountRetrieveFunc = e.Ledger.Account diff --git a/pkg/protocol/engine/congestioncontrol/scheduler/drr/scheduler.go b/pkg/protocol/engine/congestioncontrol/scheduler/drr/scheduler.go index cbb249c57..d50622d61 100644 --- a/pkg/protocol/engine/congestioncontrol/scheduler/drr/scheduler.go +++ b/pkg/protocol/engine/congestioncontrol/scheduler/drr/scheduler.go @@ -55,7 +55,7 @@ func NewProvider(opts ...options.Option[Scheduler]) module.Provider[*engine.Engi s.errorHandler = e.ErrorHandler("scheduler") s.basicBuffer = NewBufferQueue() - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { s.latestCommittedSlot = func() iotago.SlotIndex { return e.Storage.Settings().LatestCommitment().Slot() } @@ -112,7 +112,7 @@ func NewProvider(opts ...options.Option[Scheduler]) module.Provider[*engine.Engi s.removeIssuer(accountID, ierrors.New("account destroyed")) }) - e.HookInitialized(s.Start) + e.Initialized.OnTrigger(s.Start) }) return s diff --git a/pkg/protocol/engine/congestioncontrol/scheduler/passthrough/scheduler.go b/pkg/protocol/engine/congestioncontrol/scheduler/passthrough/scheduler.go index 1f46884b3..99f9872e4 100644 --- a/pkg/protocol/engine/congestioncontrol/scheduler/passthrough/scheduler.go +++ b/pkg/protocol/engine/congestioncontrol/scheduler/passthrough/scheduler.go @@ -17,7 +17,7 @@ type Scheduler struct { func NewProvider() module.Provider[*engine.Engine, scheduler.Scheduler] { return module.Provide(func(e *engine.Engine) scheduler.Scheduler { s := New() - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { e.Events.Scheduler.LinkTo(s.events) s.TriggerConstructed() e.Events.Booker.BlockBooked.Hook(func(block *blocks.Block) { diff --git a/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go b/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go index 75553f733..e6a518023 100644 --- a/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go +++ b/pkg/protocol/engine/consensus/slotgadget/totalweightslotgadget/gadget.go @@ -51,7 +51,7 @@ func NewProvider(opts ...options.Option[Gadget]) module.Provider[*engine.Engine, e.Events.SlotGadget.LinkTo(g.events) g.workers = e.Workers.CreateGroup("SlotGadget") - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { g.seatManager = e.SybilProtection.SeatManager() g.TriggerConstructed() @@ -64,7 +64,7 @@ func NewProvider(opts ...options.Option[Gadget]) module.Provider[*engine.Engine, } } - e.HookInitialized(func() { + e.Initialized.OnTrigger(func() { // Can't use setter here as it has a side effect. func() { g.mutex.Lock() diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index a3ea1b44c..a67aa469f 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -13,6 +13,7 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" @@ -83,12 +84,12 @@ type Engine struct { optsSnapshotDepth int optsBlockRequester []options.Option[eventticker.EventTicker[iotago.SlotIndex, iotago.BlockID]] - module.Module + *module.ReactiveModule } func New( + logger log.Logger, workers *workerpool.Group, - errorHandler func(error), storageInstance *storage.Storage, filterProvider module.Provider[*Engine, filter.Filter], commitmentFilterProvider module.Provider[*Engine, commitmentfilter.CommitmentFilter], @@ -121,11 +122,16 @@ func New( RootCommitment: reactive.NewVariable[*model.Commitment](), LatestCommitment: reactive.NewVariable[*model.Commitment](), Workers: workers, - errorHandler: errorHandler, optsSnapshotPath: "snapshot.bin", optsSnapshotDepth: 5, }, opts, func(e *Engine) { + e.ReactiveModule = e.initReactiveModule(logger) + + e.errorHandler = func(err error) { + e.LogTrace("engine error", "err", err) + } + // Import the settings from the snapshot file if needed. if importSnapshot = !e.Storage.Settings().IsSnapshotImported() && e.optsSnapshotPath != ""; importSnapshot { file, fileErr = os.Open(e.optsSnapshotPath) @@ -169,16 +175,16 @@ func New( (*Engine).setupBlockRequester, (*Engine).setupPruning, (*Engine).acceptanceHandler, - (*Engine).TriggerConstructed, func(e *Engine) { + e.Constructed.Trigger() + // Make sure that we have the protocol parameters for the latest supported iota.go protocol version of the software. // If not the user needs to update the protocol parameters file. // This can only happen after a user updated the node version and the new protocol version is not yet active. if _, err := e.APIForVersion(iotago.LatestProtocolVersion()); err != nil { panic(ierrors.Wrap(err, "no protocol parameters for latest protocol version found")) } - }, - func(e *Engine) { + // Import the rest of the snapshot if needed. if importSnapshot { if err := e.ImportContents(file); err != nil { @@ -215,8 +221,11 @@ func New( panic(ierrors.Wrap(err, "failed to restore upgrade orchestrator from disk")) } } + + e.Reset() + + e.Initialized.Trigger() }, - (*Engine).TriggerInitialized, ) } @@ -227,7 +236,7 @@ func (e *Engine) ProcessBlockFromPeer(block *model.Block, source peer.ID) { // Reset resets the component to a clean state as if it was created at the last commitment. func (e *Engine) Reset() { - e.Workers.WaitChildren() + e.LogDebug("resetting", "target-slot", e.Storage.Settings().LatestCommitment().Slot()) e.BlockRequester.Clear() e.Storage.Reset() @@ -255,34 +264,6 @@ func (e *Engine) Reset() { e.Clock.Reset(latestCommittedTime) } -func (e *Engine) Shutdown() { - if !e.WasShutdown() { - e.TriggerShutdown() - - e.BlockRequester.Shutdown() - e.Attestations.Shutdown() - e.SyncManager.Shutdown() - e.Notarization.Shutdown() - e.Booker.Shutdown() - e.Ledger.Shutdown() - e.BlockDAG.Shutdown() - e.BlockGadget.Shutdown() - e.SlotGadget.Shutdown() - e.Clock.Shutdown() - e.SybilProtection.Shutdown() - e.UpgradeOrchestrator.Shutdown() - e.TipManager.Shutdown() - e.Filter.Shutdown() - e.CommitmentFilter.Shutdown() - e.Scheduler.Shutdown() - e.Retainer.Shutdown() - e.Workers.Shutdown() - e.Storage.Shutdown() - - e.TriggerStopped() - } -} - func (e *Engine) BlockFromCache(id iotago.BlockID) (*blocks.Block, bool) { return e.BlockCache.Block(id) } @@ -554,14 +535,14 @@ func (e *Engine) initRootCommitment() { }) } - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { unsubscribe := e.Events.SlotGadget.SlotFinalized.Hook(updateRootCommitment).Unhook - e.HookInitialized(func() { + e.Initialized.OnTrigger(func() { updateRootCommitment(e.Storage.Settings().LatestFinalizedSlot()) }) - e.HookShutdown(unsubscribe) + e.Shutdown.OnTrigger(unsubscribe) }) } @@ -572,17 +553,58 @@ func (e *Engine) initLatestCommitment() { }) } - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { unsubscribe := e.Events.Notarization.LatestCommitmentUpdated.Hook(updateLatestCommitment).Unhook - e.HookInitialized(func() { + e.Initialized.OnTrigger(func() { updateLatestCommitment(e.Storage.Settings().LatestCommitment()) }) - e.HookShutdown(unsubscribe) + e.Shutdown.OnTrigger(unsubscribe) }) } +func (e *Engine) initReactiveModule(logger log.Logger) (reactiveModule *module.ReactiveModule) { + stopLogging := reactive.NewEvent() + + reactiveModule = module.NewReactiveModule(logger.NewEntityLogger("Engine", stopLogging, func(l log.Logger) { + e.RootCommitment.LogUpdates(l, log.LevelTrace, "RootCommitment") + e.LatestCommitment.LogUpdates(l, log.LevelTrace, "LatestCommitment") + })) + + reactiveModule.Shutdown.OnTrigger(func() { + reactiveModule.LogDebug("shutting down") + + stopLogging.Trigger() + + e.BlockRequester.Shutdown() + e.Attestations.Shutdown() + e.SyncManager.Shutdown() + e.Notarization.Shutdown() + e.Booker.Shutdown() + e.Ledger.Shutdown() + e.BlockDAG.Shutdown() + e.BlockGadget.Shutdown() + e.SlotGadget.Shutdown() + e.Clock.Shutdown() + e.SybilProtection.Shutdown() + e.UpgradeOrchestrator.Shutdown() + e.TipManager.Shutdown() + e.Filter.Shutdown() + e.CommitmentFilter.Shutdown() + e.Scheduler.Shutdown() + e.Retainer.Shutdown() + e.Workers.Shutdown() + e.Storage.Shutdown() + + reactiveModule.LogDebug("stopped") + + e.Stopped.Trigger() + }) + + return reactiveModule +} + // endregion /////////////////////////////////////////////////////////////////////////////////////////////////////////// // region Options ////////////////////////////////////////////////////////////////////////////////////////////////////// diff --git a/pkg/protocol/engine/filter/blockfilter/filter.go b/pkg/protocol/engine/filter/blockfilter/filter.go index 17adf9669..351f92105 100644 --- a/pkg/protocol/engine/filter/blockfilter/filter.go +++ b/pkg/protocol/engine/filter/blockfilter/filter.go @@ -39,7 +39,7 @@ func NewProvider(opts ...options.Option[Filter]) module.Provider[*engine.Engine, f := New(e, opts...) f.TriggerConstructed() - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { e.Events.Filter.LinkTo(f.events) e.SybilProtection.HookInitialized(func() { f.committeeFunc = e.SybilProtection.SeatManager().Committee diff --git a/pkg/protocol/engine/ledger/ledger/ledger.go b/pkg/protocol/engine/ledger/ledger/ledger.go index a29a624ba..584ec3f42 100644 --- a/pkg/protocol/engine/ledger/ledger/ledger.go +++ b/pkg/protocol/engine/ledger/ledger/ledger.go @@ -61,7 +61,7 @@ func NewProvider() module.Provider[*engine.Engine, ledger.Ledger] { e.ErrorHandler("ledger"), ) - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { e.Events.Ledger.LinkTo(l.events) l.conflictDAG = conflictdagv1.New[iotago.TransactionID, mempool.StateID, ledger.BlockVoteRank](l.sybilProtection.SeatManager().OnlineCommittee().Size) e.Events.ConflictDAG.LinkTo(l.conflictDAG.Events()) diff --git a/pkg/protocol/engine/notarization/slotnotarization/manager.go b/pkg/protocol/engine/notarization/slotnotarization/manager.go index ee36ae9c4..29993ce3e 100644 --- a/pkg/protocol/engine/notarization/slotnotarization/manager.go +++ b/pkg/protocol/engine/notarization/slotnotarization/manager.go @@ -4,6 +4,7 @@ import ( "time" "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/syncutils" @@ -42,16 +43,21 @@ type Manager struct { commitmentMutex syncutils.Mutex + log.Logger + module.Module } func NewProvider() module.Provider[*engine.Engine, notarization.Notarization] { return module.Provide(func(e *engine.Engine) notarization.Notarization { - m := NewManager(e.Workers.CreateGroup("NotarizationManager"), e.ErrorHandler("notarization")) + logger, shutdownLogger := e.NewChildLogger("NotarizationManager") + + m := NewManager(logger, e.Workers.CreateGroup("NotarizationManager"), e.ErrorHandler("notarization")) + m.HookShutdown(shutdownLogger) m.apiProvider = e - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { m.storage = e.Storage m.acceptedTimeFunc = e.Clock.Accepted().Time @@ -78,12 +84,15 @@ func NewProvider() module.Provider[*engine.Engine, notarization.Notarization] { m.TriggerConstructed() }) + e.Shutdown.OnTrigger(m.Shutdown) + return m }) } -func NewManager(workers *workerpool.Group, errorHandler func(error)) *Manager { +func NewManager(logger log.Logger, workers *workerpool.Group, errorHandler func(error)) *Manager { return &Manager{ + Logger: logger, events: notarization.NewEvents(), workers: workers, errorHandler: errorHandler, @@ -91,12 +100,15 @@ func NewManager(workers *workerpool.Group, errorHandler func(error)) *Manager { } func (m *Manager) Shutdown() { - m.TriggerStopped() + m.TriggerShutdown() + // Alternative 2 if m.acceptedBlockProcessedDetach != nil { m.acceptedBlockProcessedDetach() } m.workers.Shutdown() + + m.TriggerStopped() } // tryCommitUntil tries to create slot commitments until the new provided acceptance time. @@ -236,6 +248,8 @@ func (m *Manager) createCommitment(slot iotago.SlotIndex) (*model.Commitment, er rmc, ) + m.LogTrace("Committing", "commitment", newCommitment, "roots ", roots) + newModelCommitment, err := model.CommitmentFromCommitment(newCommitment, apiForSlot, serix.WithValidation()) if err != nil { return nil, ierrors.Wrapf(err, "failed to create model commitment for commitment %s", newCommitment.MustID()) diff --git a/pkg/protocol/engine/tipmanager/v1/provider.go b/pkg/protocol/engine/tipmanager/v1/provider.go index f44ac9d0f..eb859133d 100644 --- a/pkg/protocol/engine/tipmanager/v1/provider.go +++ b/pkg/protocol/engine/tipmanager/v1/provider.go @@ -14,7 +14,7 @@ func NewProvider() module.Provider[*engine.Engine, tipmanager.TipManager] { return module.Provide(func(e *engine.Engine) tipmanager.TipManager { t := New(e.BlockCache.Block) - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { tipWorker := e.Workers.CreatePool("AddTip", workerpool.WithWorkerCount(2)) e.Events.Scheduler.BlockScheduled.Hook(lo.Void(t.AddBlock), event.WithWorkerPool(tipWorker)) e.Events.Scheduler.BlockSkipped.Hook(lo.Void(t.AddBlock), event.WithWorkerPool(tipWorker)) @@ -25,7 +25,7 @@ func NewProvider() module.Provider[*engine.Engine, tipmanager.TipManager] { t.TriggerInitialized() }) - e.HookShutdown(func() { + e.Shutdown.OnTrigger(func() { t.TriggerShutdown() t.TriggerStopped() }) diff --git a/pkg/protocol/engine/tipselection/v1/provider.go b/pkg/protocol/engine/tipselection/v1/provider.go index ad9bb1d1b..d320e4500 100644 --- a/pkg/protocol/engine/tipselection/v1/provider.go +++ b/pkg/protocol/engine/tipselection/v1/provider.go @@ -17,7 +17,7 @@ func NewProvider(opts ...options.Option[TipSelection]) module.Provider[*engine.E return module.Provide(func(e *engine.Engine) tipselection.TipSelection { t := New(opts...) - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { // wait for submodules to be constructed (so all of their properties are available) module.OnAllConstructed(func() { t.Construct(e.TipManager, e.Ledger.ConflictDAG(), e.Ledger.MemPool().TransactionMetadata, e.EvictionState.LatestRootBlocks, DynamicLivenessThreshold(e.SybilProtection.SeatManager().OnlineCommittee().Size)) @@ -28,7 +28,7 @@ func NewProvider(opts ...options.Option[TipSelection]) module.Provider[*engine.E }, e.TipManager, e.Ledger, e.SybilProtection) }) - e.HookShutdown(t.Shutdown) + e.Shutdown.OnTrigger(t.Shutdown) return t }) diff --git a/pkg/protocol/engine_manager.go b/pkg/protocol/engine_manager.go index 3c3fb9251..2ca1d8349 100644 --- a/pkg/protocol/engine_manager.go +++ b/pkg/protocol/engine_manager.go @@ -107,7 +107,7 @@ func (e *EngineManager) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error // remove commitments that after forking point. latestCommitment := newStorage.Settings().LatestCommitment() - if err := newStorage.Commitments().Rollback(slot, latestCommitment.Slot()); err != nil { + if err = newStorage.Commitments().Rollback(slot, latestCommitment.Slot()); err != nil { return nil, ierrors.Wrap(err, "failed to rollback commitments") } // create temporary components and rollback their permanent state, which will be reflected on disk. @@ -118,14 +118,14 @@ func (e *EngineManager) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error accountsManager := accountsledger.New(newStorage.Settings().APIProvider(), blockCache.Block, newStorage.AccountDiffs, newStorage.Accounts()) accountsManager.SetLatestCommittedSlot(latestCommitment.Slot()) - if err := accountsManager.Rollback(slot); err != nil { + if err = accountsManager.Rollback(slot); err != nil { return nil, ierrors.Wrap(err, "failed to rollback accounts manager") } - if err := evictionState.Rollback(newStorage.Settings().LatestFinalizedSlot(), slot); err != nil { + if err = evictionState.Rollback(newStorage.Settings().LatestFinalizedSlot(), slot); err != nil { return nil, ierrors.Wrap(err, "failed to rollback eviction state") } - if err := newStorage.Ledger().Rollback(slot); err != nil { + if err = newStorage.Ledger().Rollback(slot); err != nil { return nil, err } @@ -134,18 +134,18 @@ func (e *EngineManager) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error return nil, ierrors.Wrapf(err, "error while retrieving commitment for target index %d", slot) } - if err := newStorage.Settings().Rollback(targetCommitment); err != nil { + if err = newStorage.Settings().Rollback(targetCommitment); err != nil { return nil, err } - if err := newStorage.RollbackPrunable(slot); err != nil { + if err = newStorage.Rollback(slot); err != nil { return nil, err } candidateEngine := e.loadEngineInstanceWithStorage(newEngineAlias, newStorage) // rollback attestations already on created engine instance, because this action modifies the in-memory storage. - if err := candidateEngine.Attestations.Rollback(slot); err != nil { + if err = candidateEngine.Attestations.Rollback(slot); err != nil { return nil, ierrors.Wrap(err, "error while rolling back attestations storage on candidate engine") } @@ -186,11 +186,7 @@ func (e *EngineManager) loadEngineInstanceFromSnapshot(engineAlias string, snaps } func (e *EngineManager) loadEngineInstanceWithStorage(engineAlias string, storage *storage.Storage) *engine.Engine { - errorHandler := func(err error) { - e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) - } - - return engine.New(e.protocol.Workers.CreateGroup(engineAlias), errorHandler, storage, e.protocol.Options.FilterProvider, e.protocol.Options.CommitmentFilterProvider, e.protocol.Options.BlockDAGProvider, e.protocol.Options.BookerProvider, e.protocol.Options.ClockProvider, e.protocol.Options.BlockGadgetProvider, e.protocol.Options.SlotGadgetProvider, e.protocol.Options.SybilProtectionProvider, e.protocol.Options.NotarizationProvider, e.protocol.Options.AttestationProvider, e.protocol.Options.LedgerProvider, e.protocol.Options.SchedulerProvider, e.protocol.Options.TipManagerProvider, e.protocol.Options.TipSelectionProvider, e.protocol.Options.RetainerProvider, e.protocol.Options.UpgradeOrchestratorProvider, e.protocol.Options.SyncManagerProvider, e.protocol.Options.EngineOptions...) + return engine.New(e.protocol.Logger, e.protocol.Workers.CreateGroup(engineAlias), storage, e.protocol.Options.FilterProvider, e.protocol.Options.CommitmentFilterProvider, e.protocol.Options.BlockDAGProvider, e.protocol.Options.BookerProvider, e.protocol.Options.ClockProvider, e.protocol.Options.BlockGadgetProvider, e.protocol.Options.SlotGadgetProvider, e.protocol.Options.SybilProtectionProvider, e.protocol.Options.NotarizationProvider, e.protocol.Options.AttestationProvider, e.protocol.Options.LedgerProvider, e.protocol.Options.SchedulerProvider, e.protocol.Options.TipManagerProvider, e.protocol.Options.TipSelectionProvider, e.protocol.Options.RetainerProvider, e.protocol.Options.UpgradeOrchestratorProvider, e.protocol.Options.SyncManagerProvider, e.protocol.Options.EngineOptions...) } func (e *EngineManager) syncMainEngineFromMainChain() (unsubscribe func()) { @@ -230,7 +226,7 @@ func (e *EngineManager) injectEngineInstances() (unsubscribe func()) { }(); err != nil { e.LogError("failed to create new engine instance", "err", err) } else { - e.protocol.Network.OnShutdown(newEngine.Shutdown) + e.protocol.Network.OnShutdown(func() { newEngine.Shutdown.Trigger() }) chain.SpawnedEngine.Set(newEngine) } diff --git a/pkg/protocol/network_clock.go b/pkg/protocol/network_clock.go index 51e879f20..33a80cb8a 100644 --- a/pkg/protocol/network_clock.go +++ b/pkg/protocol/network_clock.go @@ -22,9 +22,9 @@ func NewNetworkClock(protocol *Protocol) *NetworkClock { Variable: reactive.NewVariable[time.Time](func(currentValue time.Time, newValue time.Time) time.Time { if newValue.Before(currentValue) || newValue.After(time.Now()) { return currentValue - } else { - return newValue } + + return newValue }), } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index cd52b3020..e0f1546c8 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -2,7 +2,6 @@ package protocol import ( "context" - "fmt" "sync" "github.com/libp2p/go-libp2p/core/peer" @@ -93,19 +92,15 @@ func (p *Protocol) IssueBlock(block *model.Block) error { // Run starts the protocol. func (p *Protocol) Run(ctx context.Context) error { - fmt.Println("STARTING UP") - p.waitEngineInitialized() p.Initialized.Trigger() <-ctx.Done() - fmt.Println("SHUTTING DOWN") p.Shutdown.Trigger() p.Workers.Shutdown() p.Stopped.Trigger() - fmt.Println("SHUTTING DOWN DONE") return ctx.Err() } @@ -115,7 +110,7 @@ func (p *Protocol) waitEngineInitialized() { waitInitialized.Add(1) p.MainEngine.OnUpdateOnce(func(_, engine *engine.Engine) { - engine.HookInitialized(waitInitialized.Done) + engine.Initialized.OnTrigger(waitInitialized.Done) }) waitInitialized.Wait() } diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 6b34fc1c9..89ac81ee3 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -207,7 +207,7 @@ func (a *AttestationsProtocol) sendRequest(commitmentID iotago.CommitmentID) { if commitment, err := a.protocol.Commitment(commitmentID, false); err == nil { a.protocol.Network.RequestAttestations(commitmentID) - a.LogDebug("sent request", "commitment", commitment.LogName()) + a.LogDebug("request", "commitment", commitment.LogName()) } else { a.LogError("failed to load commitment", "commitmentID", commitmentID, "err", err) } diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 90f11e5f5..12a30335e 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -33,15 +33,13 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { protocol.Constructed.OnTrigger(func() { protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.isDirectlyAboveLatestVerifiedCommitment.OnUpdate(func(_, isDirectlyAboveLatestVerifiedCommitment bool) { - if !isDirectlyAboveLatestVerifiedCommitment { - return - } - - protocol.LogError("REPLAYING DROPPED BLOCKS", "slot", commitment.ID().Slot()) + commitment.ReplayBlocks.OnUpdate(func(_, replayBlocks bool) { + if replayBlocks { + b.LogDebug("replaying blocks", "commitmentID", commitment.ID()) - for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { - b.ProcessResponse(droppedBlock.A, droppedBlock.B) + for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { + b.ProcessResponse(droppedBlock.A, droppedBlock.B) + } } }) }) @@ -51,7 +49,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { chain.Engine.OnUpdate(func(_, engine *engine.Engine) { unsubscribe := engine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook - engine.HookShutdown(unsubscribe) + engine.Shutdown.OnTrigger(unsubscribe) }) }) }) @@ -75,7 +73,7 @@ func (b *BlocksProtocol) SendRequest(blockID iotago.BlockID) { b.workerPool.Submit(func() { b.protocol.Network.RequestBlock(blockID) - b.protocol.LogTrace("sent request", "blockID", blockID) + b.protocol.LogTrace("request", "blockID", blockID) }) } diff --git a/pkg/protocol/protocol_commitments.go b/pkg/protocol/protocol_commitments.go index 7c30fef72..160caeeb2 100644 --- a/pkg/protocol/protocol_commitments.go +++ b/pkg/protocol/protocol_commitments.go @@ -37,7 +37,7 @@ func (c *CommitmentsProtocol) SendRequest(commitmentID iotago.CommitmentID) { c.workerPool.Submit(func() { c.protocol.Network.RequestSlotCommitment(commitmentID) - c.LogDebug("sent request", "commitmentID", commitmentID) + c.LogDebug("request", "commitment", commitmentID) }) } diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 9c81c07db..a0a938317 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -28,7 +28,7 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { c := &WarpSyncProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("WarpSync")), protocol: protocol, - workerPool: protocol.Workers.CreatePool("WarpSync"), + workerPool: protocol.Workers.CreatePool("WarpSync", workerpool.WithWorkerCount(1)), ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), } @@ -54,7 +54,7 @@ func (w *WarpSyncProtocol) SendRequest(commitmentID iotago.CommitmentID) { if commitment, err := w.protocol.Commitment(commitmentID, false); err == nil { w.protocol.Network.SendWarpSyncRequest(commitmentID) - w.LogDebug("sent request", "commitment", commitment.LogName()) + w.LogDebug("request", "commitment", commitment.LogName()) } }) } @@ -80,6 +80,19 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } + chain := commitment.Chain.Get() + if chain == nil { + w.LogTrace("failed to get chain for response", "commitment", commitment.LogName(), "fromPeer", from) + + return + } + + if !chain.WarpSync.Get() { + w.LogTrace("response for chain without warp-sync", "chain", chain.LogName(), "fromPeer", from) + + return + } + targetEngine := commitment.Engine.Get() if targetEngine == nil { w.LogDebug("failed to get target engine for response", "commitment", commitment.LogName()) @@ -99,7 +112,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error } - if !iotago.VerifyProof(proof, iotago.Identifier(acceptedBlocks.Root()), commitment.RootsID()) { + if !iotago.VerifyProof(proof, acceptedBlocks.Root(), commitment.RootsID()) { w.LogError("failed to verify blocks proof", "commitment", commitment.LogName(), "blockIDs", blockIDs, "proof", proof, "fromPeer", from) return false @@ -110,7 +123,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo _ = acceptedTransactionIDs.Add(transactionID) // a mapdb can never return an error } - if !iotago.VerifyProof(mutationProof, iotago.Identifier(acceptedTransactionIDs.Root()), commitment.RootsID()) { + if !iotago.VerifyProof(mutationProof, acceptedTransactionIDs.Root(), commitment.RootsID()) { w.LogError("failed to verify mutations proof", "commitment", commitment.LogName(), "transactionIDs", transactionIDs, "proof", mutationProof, "fromPeer", from) return false @@ -118,6 +131,14 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo w.ticker.StopTicker(commitmentID) + targetEngine.Workers.WaitChildren() + + if !chain.WarpSync.Get() { + w.LogTrace("response for chain without warp-sync", "chain", chain.LogName(), "fromPeer", from) + + return false + } + targetEngine.Reset() // If the engine is "dirty" we need to restore the state of the engine to the state of the chain commitment. // As we already decided to switch and sync to this chain we should make sure that processing the blocks from the commitment @@ -134,8 +155,6 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo var bookedBlocks atomic.Uint32 var notarizedBlocks atomic.Uint32 - w.LogError("TOTAL BLOCKS IN RESPONSE", "totalBlocks", totalBlocks) - forceCommitmentFunc := func() { // 3. Force commitment of the slot producedCommitment, err := targetEngine.Notarization.ForceCommit(commitmentID.Slot()) diff --git a/pkg/protocol/snapshotcreator/snapshotcreator.go b/pkg/protocol/snapshotcreator/snapshotcreator.go index eae10d089..2976f803f 100644 --- a/pkg/protocol/snapshotcreator/snapshotcreator.go +++ b/pkg/protocol/snapshotcreator/snapshotcreator.go @@ -7,6 +7,7 @@ import ( "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/core/account" @@ -88,8 +89,9 @@ func CreateSnapshot(opts ...options.Option[Options]) error { } } - engineInstance := engine.New(workers.CreateGroup("Engine"), - errorHandler, + engineInstance := engine.New( + log.NewLogger("snapshot-creator"), + workers.CreateGroup("Engine"), s, blockfilter.NewProvider(), accountsfilter.NewProvider(), @@ -110,7 +112,7 @@ func CreateSnapshot(opts ...options.Option[Options]) error { trivialsyncmanager.NewProvider(), engine.WithSnapshotPath(""), // magic to disable loading snapshot ) - defer engineInstance.Shutdown() + defer engineInstance.Shutdown.Trigger() for blockID, commitmentID := range opt.RootBlocks { engineInstance.EvictionState.AddRootBlock(blockID, commitmentID) diff --git a/pkg/protocol/sybilprotection/seatmanager/poa/poa.go b/pkg/protocol/sybilprotection/seatmanager/poa/poa.go index 8d5de21dd..97633d0db 100644 --- a/pkg/protocol/sybilprotection/seatmanager/poa/poa.go +++ b/pkg/protocol/sybilprotection/seatmanager/poa/poa.go @@ -55,7 +55,7 @@ func NewProvider(opts ...options.Option[SeatManager]) module.Provider[*engine.En }, opts, func(s *SeatManager) { e.Events.SeatManager.LinkTo(s.events) - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { s.clock = e.Clock s.TriggerConstructed() diff --git a/pkg/protocol/sybilprotection/sybilprotectionv1/performance/testsuite_test.go b/pkg/protocol/sybilprotection/sybilprotectionv1/performance/testsuite_test.go index 9ce7a9f9a..08cbc3766 100644 --- a/pkg/protocol/sybilprotection/sybilprotectionv1/performance/testsuite_test.go +++ b/pkg/protocol/sybilprotection/sybilprotectionv1/performance/testsuite_test.go @@ -70,9 +70,9 @@ func (t *TestSuite) InitPerformanceTracker() { return p, nil } - rewardsStore := epochstore.NewEpochKVStore(kvstore.Realm{}, kvstore.Realm{}, mapdb.NewMapDB(), 0) - poolStatsStore := epochstore.NewStore(kvstore.Realm{}, kvstore.Realm{}, mapdb.NewMapDB(), 0, (*model.PoolsStats).Bytes, model.PoolsStatsFromBytes) - committeeStore := epochstore.NewStore(kvstore.Realm{}, kvstore.Realm{}, mapdb.NewMapDB(), 0, (*account.Accounts).Bytes, account.AccountsFromBytes) + rewardsStore := epochstore.NewEpochKVStore(kvstore.Realm{}, mapdb.NewMapDB(), 0) + poolStatsStore := epochstore.NewStore(kvstore.Realm{}, mapdb.NewMapDB(), 0, (*model.PoolsStats).Bytes, model.PoolsStatsFromBytes) + committeeStore := epochstore.NewStore(kvstore.Realm{}, mapdb.NewMapDB(), 0, (*account.Accounts).Bytes, account.AccountsFromBytes) t.Instance = NewTracker(rewardsStore.GetEpoch, poolStatsStore, committeeStore, performanceFactorFunc, t.latestCommittedEpoch, api.SingleVersionProvider(t.api), func(err error) {}) } diff --git a/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go b/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go index f07da1215..d8003a0aa 100644 --- a/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go +++ b/pkg/protocol/sybilprotection/sybilprotectionv1/sybilprotection.go @@ -56,7 +56,7 @@ func NewProvider(opts ...options.Option[SybilProtection]) module.Provider[*engin func(o *SybilProtection) { o.seatManager = o.optsSeatManagerProvider(e) - e.HookConstructed(func() { + e.Constructed.OnTrigger(func() { o.ledger = e.Ledger o.errHandler = e.ErrorHandler("SybilProtection") @@ -74,7 +74,7 @@ func NewProvider(opts ...options.Option[SybilProtection]) module.Provider[*engin // When the engine is triggered initialized, snapshot has been read or database has been initialized properly, // so the committee should be available in the performance manager. - e.HookInitialized(func() { + e.Initialized.OnTrigger(func() { // Make sure that the sybil protection knows about the committee of the current epoch // (according to the latest committed slot), and potentially the next selected // committee if we have one. diff --git a/pkg/retainer/retainer/retainer.go b/pkg/retainer/retainer/retainer.go index 4f244e092..8f32d6705 100644 --- a/pkg/retainer/retainer/retainer.go +++ b/pkg/retainer/retainer/retainer.go @@ -87,7 +87,7 @@ func NewProvider() module.Provider[*engine.Engine, retainer.Retainer] { r.RetainBlockFailure(b.ID(), apimodels.BlockFailureDroppedDueToCongestion) }) - e.HookInitialized(func() { + e.Initialized.OnTrigger(func() { e.Ledger.MemPool().OnSignedTransactionAttached(func(signedTransactionMetadata mempool.SignedTransactionMetadata) { attachment := signedTransactionMetadata.Attachments()[0] diff --git a/pkg/storage/permanent/settings.go b/pkg/storage/permanent/settings.go index d1ad5fe82..60f175b2c 100644 --- a/pkg/storage/permanent/settings.go +++ b/pkg/storage/permanent/settings.go @@ -22,6 +22,7 @@ const ( snapshotImportedKey = iota latestCommitmentKey latestFinalizedSlotKey + latestStoredSlotKey protocolVersionEpochMappingKey futureProtocolParametersKey protocolParametersKey @@ -34,6 +35,7 @@ type Settings struct { storeSnapshotImported *kvstore.TypedValue[bool] storeLatestCommitment *kvstore.TypedValue[*model.Commitment] storeLatestFinalizedSlot *kvstore.TypedValue[iotago.SlotIndex] + storeLatestProcessedSlot *kvstore.TypedValue[iotago.SlotIndex] storeLatestIssuedValidationBlock *kvstore.TypedValue[*model.Block] storeProtocolVersionEpochMapping *kvstore.TypedStore[iotago.Version, iotago.EpochIndex] storeFutureProtocolParameters *kvstore.TypedStore[iotago.Version, *types.Tuple[iotago.EpochIndex, iotago.Identifier]] @@ -83,6 +85,12 @@ func NewSettings(store kvstore.KVStore, opts ...options.Option[api.EpochBasedPro iotago.SlotIndex.Bytes, iotago.SlotIndexFromBytes, ), + storeLatestProcessedSlot: kvstore.NewTypedValue( + store, + []byte{latestStoredSlotKey}, + iotago.SlotIndex.Bytes, + iotago.SlotIndexFromBytes, + ), storeLatestIssuedValidationBlock: kvstore.NewTypedValue( store, []byte{latestIssuedValidationBlock}, @@ -285,7 +293,7 @@ func (s *Settings) LatestFinalizedSlot() iotago.SlotIndex { s.mutex.RLock() defer s.mutex.RUnlock() - return s.latestFinalizedSlot() + return read(s.storeLatestFinalizedSlot) } func (s *Settings) SetLatestFinalizedSlot(slot iotago.SlotIndex) (err error) { @@ -295,23 +303,42 @@ func (s *Settings) SetLatestFinalizedSlot(slot iotago.SlotIndex) (err error) { return s.storeLatestFinalizedSlot.Set(slot) } -func (s *Settings) latestFinalizedSlot() iotago.SlotIndex { - latestFinalizedSlot, err := s.storeLatestFinalizedSlot.Get() - if err != nil { - if ierrors.Is(err, kvstore.ErrKeyNotFound) { - return 0 +func (s *Settings) LatestStoredSlot() iotago.SlotIndex { + s.mutex.RLock() + defer s.mutex.RUnlock() + + return read(s.storeLatestProcessedSlot) +} + +func (s *Settings) SetLatestStoredSlot(slot iotago.SlotIndex) (err error) { + s.mutex.Lock() + defer s.mutex.Unlock() + + return s.storeLatestProcessedSlot.Set(slot) +} + +func (s *Settings) AdvanceLatestStoredSlot(slot iotago.SlotIndex) (err error) { + s.mutex.Lock() + defer s.mutex.Unlock() + + if _, err = s.storeLatestProcessedSlot.Compute(func(latestStoredSlot iotago.SlotIndex, _ bool) (newValue iotago.SlotIndex, err error) { + if latestStoredSlot >= slot { + return latestStoredSlot, errLatestStoredSlotUnchanged } - panic(err) + + return slot, nil + }); err != nil && !ierrors.Is(err, errLatestStoredSlotUnchanged) { + return ierrors.Wrap(err, "failed to advance latest stored slot") } - return latestFinalizedSlot + return nil } func (s *Settings) LatestIssuedValidationBlock() *model.Block { s.mutex.RLock() defer s.mutex.RUnlock() - return s.latestIssuedValidationBlock() + return read(s.storeLatestIssuedValidationBlock) } func (s *Settings) SetLatestIssuedValidationBlock(block *model.Block) (err error) { @@ -321,18 +348,6 @@ func (s *Settings) SetLatestIssuedValidationBlock(block *model.Block) (err error return s.storeLatestIssuedValidationBlock.Set(block) } -func (s *Settings) latestIssuedValidationBlock() *model.Block { - block, err := s.storeLatestIssuedValidationBlock.Get() - if err != nil { - if ierrors.Is(err, kvstore.ErrKeyNotFound) { - return nil - } - panic(err) - } - - return block -} - func (s *Settings) Export(writer io.WriteSeeker, targetCommitment *iotago.Commitment) error { var commitmentBytes []byte var err error @@ -579,7 +594,7 @@ func (s *Settings) String() string { builder := stringify.NewStructBuilder("Settings") builder.AddField(stringify.NewStructField("IsSnapshotImported", lo.PanicOnErr(s.storeSnapshotImported.Has()))) builder.AddField(stringify.NewStructField("LatestCommitment", s.latestCommitment())) - builder.AddField(stringify.NewStructField("LatestFinalizedSlot", s.latestFinalizedSlot())) + builder.AddField(stringify.NewStructField("LatestFinalizedSlot", read(s.storeLatestFinalizedSlot))) if err := s.storeProtocolParameters.Iterate(kvstore.EmptyPrefix, func(version iotago.Version, protocolParams iotago.ProtocolParameters) bool { builder.AddField(stringify.NewStructField(fmt.Sprintf("ProtocolParameters(%d)", version), protocolParams)) @@ -590,3 +605,14 @@ func (s *Settings) String() string { return builder.String() } + +func read[T any](typedValue *kvstore.TypedValue[T]) (value T) { + value, err := typedValue.Get() + if err != nil && !ierrors.Is(err, kvstore.ErrKeyNotFound) { + panic(err) + } + + return value +} + +var errLatestStoredSlotUnchanged = ierrors.New("latest stored slot did not change") diff --git a/pkg/storage/prunable/bucket_manager.go b/pkg/storage/prunable/bucket_manager.go index 980d9d6b6..907fd054a 100644 --- a/pkg/storage/prunable/bucket_manager.go +++ b/pkg/storage/prunable/bucket_manager.go @@ -236,18 +236,22 @@ func (b *BucketManager) DeleteBucket(epoch iotago.EpochIndex) (deleted bool) { return true } -// RollbackBucket removes data in the bucket in slots [targetSlotIndex+1; epochEndSlot]. -func (b *BucketManager) RollbackBucket(epoch iotago.EpochIndex, targetSlot, epochEndSlot iotago.SlotIndex) error { - oldBucketKvStore := b.getDBInstance(epoch).KVStore() - for clearSlot := targetSlot + 1; clearSlot <= epochEndSlot; clearSlot++ { - // delete slot prefix from forkedPrunable storage that will be eventually copied into the new engine - if err := oldBucketKvStore.DeletePrefix(clearSlot.MustBytes()); err != nil { - return ierrors.Wrapf(err, "error while clearing slot %d in bucket for epoch %d", clearSlot, epoch) +// PruneSlots prunes the data of all slots in the range [from, to] in the given epoch. +func (b *BucketManager) PruneSlots(epoch iotago.EpochIndex, pruningRange [2]iotago.SlotIndex) error { + epochStore := b.getDBInstance(epoch).KVStore() + + for slot := pruningRange[0]; slot <= pruningRange[1]; slot++ { + if err := epochStore.DeletePrefix(slot.MustBytes()); err != nil { + return ierrors.Wrapf(err, "error while clearing slot %d in bucket for epoch %d", slot, epoch) } } + // shutting down the storage does not prevent this storage from being used again and only forces a flush. + b.Shutdown() + return nil } + func (b *BucketManager) Flush() error { b.openDBsMutex.RLock() defer b.openDBsMutex.RUnlock() diff --git a/pkg/storage/prunable/epochstore/epoch_kv.go b/pkg/storage/prunable/epochstore/epoch_kv.go index 3fd580eb7..1a1dff4d5 100644 --- a/pkg/storage/prunable/epochstore/epoch_kv.go +++ b/pkg/storage/prunable/epochstore/epoch_kv.go @@ -14,16 +14,17 @@ type EpochKVStore struct { kv kvstore.KVStore pruningDelay iotago.EpochIndex - lastPrunedEpoch *model.PruningIndex + lastAccessedEpoch *kvstore.TypedValue[iotago.EpochIndex] + lastPrunedEpoch *model.PruningIndex } -func NewEpochKVStore(storeRealm, pruningRealm kvstore.Realm, kv kvstore.KVStore, pruningDelay iotago.EpochIndex) *EpochKVStore { - +func NewEpochKVStore(storeRealm kvstore.Realm, kv kvstore.KVStore, pruningDelay iotago.EpochIndex) *EpochKVStore { return &EpochKVStore{ - realm: storeRealm, - kv: lo.PanicOnErr(kv.WithExtendedRealm(storeRealm)), - pruningDelay: pruningDelay, - lastPrunedEpoch: model.NewPruningIndex(lo.PanicOnErr(kv.WithExtendedRealm(pruningRealm)), storeRealm), + realm: storeRealm, + kv: lo.PanicOnErr(kv.WithExtendedRealm(append(storeRealm, entriesKey))), + pruningDelay: pruningDelay, + lastAccessedEpoch: kvstore.NewTypedValue(kv, append(storeRealm, lastAccessedEpochKey), iotago.EpochIndex.Bytes, iotago.EpochIndexFromBytes), + lastPrunedEpoch: model.NewPruningIndex(lo.PanicOnErr(kv.WithExtendedRealm(storeRealm)), kvstore.Realm{lastPrunedEpochKey}), } } @@ -37,11 +38,31 @@ func (e *EpochKVStore) RestoreLastPrunedEpoch() error { return e.lastPrunedEpoch.RestoreFromDisk() } +func (e *EpochKVStore) LastAccessedEpoch() (lastAccessedEpoch iotago.EpochIndex, err error) { + if lastAccessedEpoch, err = e.lastAccessedEpoch.Get(); err != nil { + if !ierrors.Is(err, kvstore.ErrKeyNotFound) { + err = ierrors.Wrap(err, "failed to get last accessed epoch") + } else { + err = nil + } + } + + return lastAccessedEpoch, err +} + func (e *EpochKVStore) LastPrunedEpoch() (iotago.EpochIndex, bool) { return e.lastPrunedEpoch.Index() } func (e *EpochKVStore) GetEpoch(epoch iotago.EpochIndex) (kvstore.KVStore, error) { + _, _ = e.lastAccessedEpoch.Compute(func(lastAccessedEpoch iotago.EpochIndex, exists bool) (newValue iotago.EpochIndex, err error) { + if lastAccessedEpoch >= epoch { + return lastAccessedEpoch, kvstore.ErrTypedValueNotChanged + } + + return epoch, nil + }) + if e.isTooOld(epoch) { return nil, ierrors.Wrapf(database.ErrEpochPruned, "epoch %d is too old", epoch) } @@ -81,3 +102,18 @@ func (e *EpochKVStore) Prune(epoch iotago.EpochIndex, defaultPruningDelay iotago return nil } + +func (e *EpochKVStore) RollbackEpochs(epoch iotago.EpochIndex) (lastPrunedEpoch iotago.EpochIndex, err error) { + lastAccessedEpoch, err := e.LastAccessedEpoch() + if err != nil { + return lastAccessedEpoch, ierrors.Wrap(err, "failed to get last accessed epoch") + } + + for epochToPrune := epoch; epochToPrune <= lastAccessedEpoch; epochToPrune++ { + if err = e.DeleteEpoch(epochToPrune); err != nil { + return epochToPrune, ierrors.Wrapf(err, "error while deleting epoch %d", epochToPrune) + } + } + + return lastAccessedEpoch, nil +} diff --git a/pkg/storage/prunable/epochstore/store.go b/pkg/storage/prunable/epochstore/store.go index f93d71832..fa6be918e 100644 --- a/pkg/storage/prunable/epochstore/store.go +++ b/pkg/storage/prunable/epochstore/store.go @@ -9,33 +9,47 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) +const ( + entriesKey byte = iota + lastAccessedEpochKey + lastPrunedEpochKey +) + type Store[V any] struct { realm kvstore.Realm kv *kvstore.TypedStore[iotago.EpochIndex, V] pruningDelay iotago.EpochIndex - lastPrunedEpoch *model.PruningIndex + lastAccessedEpoch *kvstore.TypedValue[iotago.EpochIndex] + lastPrunedEpoch *model.PruningIndex } -func NewStore[V any](storeRealm, pruningRealm kvstore.Realm, kv kvstore.KVStore, pruningDelay iotago.EpochIndex, vToBytes kvstore.ObjectToBytes[V], bytesToV kvstore.BytesToObject[V]) *Store[V] { +func NewStore[V any](storeRealm kvstore.Realm, kv kvstore.KVStore, pruningDelay iotago.EpochIndex, vToBytes kvstore.ObjectToBytes[V], bytesToV kvstore.BytesToObject[V]) *Store[V] { return &Store[V]{ - realm: storeRealm, - kv: kvstore.NewTypedStore(lo.PanicOnErr(kv.WithExtendedRealm(storeRealm)), iotago.EpochIndex.Bytes, iotago.EpochIndexFromBytes, vToBytes, bytesToV), - pruningDelay: pruningDelay, - lastPrunedEpoch: model.NewPruningIndex(lo.PanicOnErr(kv.WithExtendedRealm(pruningRealm)), storeRealm), + realm: storeRealm, + kv: kvstore.NewTypedStore(lo.PanicOnErr(kv.WithExtendedRealm(append(storeRealm, entriesKey))), iotago.EpochIndex.Bytes, iotago.EpochIndexFromBytes, vToBytes, bytesToV), + pruningDelay: pruningDelay, + lastAccessedEpoch: kvstore.NewTypedValue(kv, append(storeRealm, lastAccessedEpochKey), iotago.EpochIndex.Bytes, iotago.EpochIndexFromBytes), + lastPrunedEpoch: model.NewPruningIndex(lo.PanicOnErr(kv.WithExtendedRealm(storeRealm)), kvstore.Realm{lastPrunedEpochKey}), } } -func (s *Store[V]) isTooOld(epoch iotago.EpochIndex) bool { - prunedEpoch, hasPruned := s.lastPrunedEpoch.Index() - - return hasPruned && epoch <= prunedEpoch -} - func (s *Store[V]) RestoreLastPrunedEpoch() error { return s.lastPrunedEpoch.RestoreFromDisk() } +func (s *Store[V]) LastAccessedEpoch() (lastAccessedEpoch iotago.EpochIndex, err error) { + if lastAccessedEpoch, err = s.lastAccessedEpoch.Get(); err != nil { + if !ierrors.Is(err, kvstore.ErrKeyNotFound) { + err = ierrors.Wrap(err, "failed to get last accessed epoch") + } else { + err = nil + } + } + + return lastAccessedEpoch, err +} + func (s *Store[V]) LastPrunedEpoch() (iotago.EpochIndex, bool) { return s.lastPrunedEpoch.Index() } @@ -61,6 +75,14 @@ func (s *Store[V]) Load(epoch iotago.EpochIndex) (V, error) { } func (s *Store[V]) Store(epoch iotago.EpochIndex, value V) error { + _, _ = s.lastAccessedEpoch.Compute(func(lastAccessedEpoch iotago.EpochIndex, exists bool) (newValue iotago.EpochIndex, err error) { + if lastAccessedEpoch >= epoch { + return lastAccessedEpoch, kvstore.ErrTypedValueNotChanged + } + + return epoch, nil + }) + if s.isTooOld(epoch) { return ierrors.Wrapf(database.ErrEpochPruned, "epoch %d is too old", epoch) } @@ -133,3 +155,24 @@ func (s *Store[V]) Prune(epoch iotago.EpochIndex, defaultPruningDelay iotago.Epo return nil } + +func (s *Store[V]) RollbackEpochs(epoch iotago.EpochIndex) (lastPrunedEpoch iotago.EpochIndex, err error) { + lastAccessedEpoch, err := s.LastAccessedEpoch() + if err != nil { + return lastAccessedEpoch, ierrors.Wrap(err, "failed to get last accessed epoch") + } + + for epochToPrune := epoch; epochToPrune <= lastAccessedEpoch; epochToPrune++ { + if err = s.DeleteEpoch(epochToPrune); err != nil { + return epochToPrune, ierrors.Wrapf(err, "error while deleting epoch %d", epochToPrune) + } + } + + return lastAccessedEpoch, nil +} + +func (s *Store[V]) isTooOld(epoch iotago.EpochIndex) bool { + prunedEpoch, hasPruned := s.lastPrunedEpoch.Index() + + return hasPruned && epoch <= prunedEpoch +} diff --git a/pkg/storage/prunable/prunable.go b/pkg/storage/prunable/prunable.go index 1fc392877..edb3ccfb1 100644 --- a/pkg/storage/prunable/prunable.go +++ b/pkg/storage/prunable/prunable.go @@ -41,10 +41,10 @@ func New(dbConfig database.Config, apiProvider iotago.APIProvider, errorHandler semiPermanentDBConfig: semiPermanentDBConfig, semiPermanentDB: semiPermanentDB, - decidedUpgradeSignals: epochstore.NewStore(kvstore.Realm{epochPrefixDecidedUpgradeSignals}, kvstore.Realm{lastPrunedEpochKey}, semiPermanentDB.KVStore(), pruningDelayDecidedUpgradeSignals, model.VersionAndHash.Bytes, model.VersionAndHashFromBytes), - poolRewards: epochstore.NewEpochKVStore(kvstore.Realm{epochPrefixPoolRewards}, kvstore.Realm{lastPrunedEpochKey}, semiPermanentDB.KVStore(), pruningDelayPoolRewards), - poolStats: epochstore.NewStore(kvstore.Realm{epochPrefixPoolStats}, kvstore.Realm{lastPrunedEpochKey}, semiPermanentDB.KVStore(), pruningDelayPoolStats, (*model.PoolsStats).Bytes, model.PoolsStatsFromBytes), - committee: epochstore.NewStore(kvstore.Realm{epochPrefixCommittee}, kvstore.Realm{lastPrunedEpochKey}, semiPermanentDB.KVStore(), pruningDelayCommittee, (*account.Accounts).Bytes, account.AccountsFromBytes), + decidedUpgradeSignals: epochstore.NewStore(kvstore.Realm{epochPrefixDecidedUpgradeSignals}, semiPermanentDB.KVStore(), pruningDelayDecidedUpgradeSignals, model.VersionAndHash.Bytes, model.VersionAndHashFromBytes), + poolRewards: epochstore.NewEpochKVStore(kvstore.Realm{epochPrefixPoolRewards}, semiPermanentDB.KVStore(), pruningDelayPoolRewards), + poolStats: epochstore.NewStore(kvstore.Realm{epochPrefixPoolStats}, semiPermanentDB.KVStore(), pruningDelayPoolStats, (*model.PoolsStats).Bytes, model.PoolsStatsFromBytes), + committee: epochstore.NewStore(kvstore.Realm{epochPrefixCommittee}, semiPermanentDB.KVStore(), pruningDelayCommittee, (*account.Accounts).Bytes, account.AccountsFromBytes), } } @@ -142,54 +142,60 @@ func (p *Prunable) Flush() { } } -func (p *Prunable) Rollback(targetSlot iotago.SlotIndex) error { - timeProvider := p.apiProvider.APIForSlot(targetSlot).TimeProvider() - targetSlotEpoch := timeProvider.EpochFromSlot(targetSlot) - lastCommittedEpoch := targetSlotEpoch - // if the target index is the last slot of the epoch, the epoch was committed - if timeProvider.EpochEnd(targetSlotEpoch) != targetSlot { - lastCommittedEpoch-- +func (p *Prunable) Rollback(targetEpoch iotago.EpochIndex, pruningRange [2]iotago.SlotIndex) error { + if err := p.prunableSlotStore.PruneSlots(targetEpoch, pruningRange); err != nil { + return ierrors.Wrapf(err, "failed to prune slots in range [%d, %d] from target epoch %d", pruningRange[0], pruningRange[1], targetEpoch) } - if err := p.prunableSlotStore.RollbackBucket(targetSlotEpoch, targetSlot, timeProvider.EpochEnd(targetSlotEpoch)); err != nil { - return ierrors.Wrapf(err, "error while rolling back slots in a bucket for epoch %d", targetSlotEpoch) + lastPrunedCommitteeEpoch, err := p.rollbackCommitteeEpochs(targetEpoch+1, pruningRange[0]-1) + if err != nil { + return ierrors.Wrapf(err, "failed to rollback committee epochs to target epoch %d", targetEpoch) } - // Shut down the prunableSlotStore in order to flush and get consistent state on disk after reopening. - p.prunableSlotStore.Shutdown() + lastPrunedPoolStatsEpoch, err := p.poolStats.RollbackEpochs(targetEpoch) + if err != nil { + return ierrors.Wrapf(err, "failed to rollback pool stats epochs to target epoch %d", targetEpoch) + } - // Removed entries that belong to the old fork and cannot be re-used. - for epoch := lastCommittedEpoch + 1; ; epoch++ { - if epoch > targetSlotEpoch { - shouldRollback, err := p.shouldRollbackCommittee(epoch, targetSlot) - if err != nil { - return ierrors.Wrapf(err, "error while checking if committee for epoch %d should be rolled back", epoch) - } + lastPrunedDecidedUpgradeSignalsEpoch, err := p.decidedUpgradeSignals.RollbackEpochs(targetEpoch) + if err != nil { + return ierrors.Wrapf(err, "failed to rollback decided upgrade signals epochs to target epoch %d", targetEpoch) + } - if shouldRollback { - if err := p.committee.DeleteEpoch(epoch); err != nil { - return ierrors.Wrapf(err, "error while deleting committee for epoch %d", epoch) - } - } + lastPrunedPoolRewardsEpoch, err := p.poolRewards.RollbackEpochs(targetEpoch) + if err != nil { + return ierrors.Wrapf(err, "failed to rollback pool rewards epochs to target epoch %d", targetEpoch) + } - if deleted := p.prunableSlotStore.DeleteBucket(epoch); !deleted { - break - } - } + for epochToPrune := targetEpoch + 1; epochToPrune <= max( + lastPrunedCommitteeEpoch, + lastPrunedPoolStatsEpoch, + lastPrunedDecidedUpgradeSignalsEpoch, + lastPrunedPoolRewardsEpoch, + ); epochToPrune++ { + p.prunableSlotStore.DeleteBucket(epochToPrune) + } - if err := p.poolRewards.DeleteEpoch(epoch); err != nil { - return ierrors.Wrapf(err, "error while deleting pool rewards for epoch %d", epoch) - } - if err := p.poolStats.DeleteEpoch(epoch); err != nil { - return ierrors.Wrapf(err, "error while deleting pool stats for epoch %d", epoch) - } + return nil +} + +func (p *Prunable) rollbackCommitteeEpochs(epoch iotago.EpochIndex, targetSlot iotago.SlotIndex) (lastPrunedEpoch iotago.EpochIndex, err error) { + lastAccessedEpoch, err := p.committee.LastAccessedEpoch() + if err != nil { + return lastAccessedEpoch, ierrors.Wrap(err, "failed to get last accessed committee epoch") + } - if err := p.decidedUpgradeSignals.DeleteEpoch(epoch); err != nil { - return ierrors.Wrapf(err, "error while deleting decided upgrade signals for epoch %d", epoch) + for epochToPrune := epoch; epochToPrune <= lastAccessedEpoch; epochToPrune++ { + if shouldRollback, rollbackErr := p.shouldRollbackCommittee(epochToPrune, targetSlot); rollbackErr != nil { + return epochToPrune, ierrors.Wrapf(rollbackErr, "error while checking if committee for epoch %d should be rolled back", epochToPrune) + } else if shouldRollback { + if err = p.committee.DeleteEpoch(epochToPrune); err != nil { + return epochToPrune, ierrors.Wrapf(err, "error while deleting committee for epoch %d", epochToPrune) + } } } - return nil + return lastAccessedEpoch, nil } // Remove committee for the next epoch only if forking point is before point of no return and committee is reused. diff --git a/pkg/storage/prunable/prunable_epoch.go b/pkg/storage/prunable/prunable_epoch.go index f09d3d075..0c2186dd0 100644 --- a/pkg/storage/prunable/prunable_epoch.go +++ b/pkg/storage/prunable/prunable_epoch.go @@ -13,7 +13,6 @@ const ( epochPrefixPoolRewards epochPrefixPoolStats epochPrefixCommittee - lastPrunedEpochKey ) const ( diff --git a/pkg/storage/storage_prunable.go b/pkg/storage/storage_prunable.go index 6ee3c4ead..51307cff1 100644 --- a/pkg/storage/storage_prunable.go +++ b/pkg/storage/storage_prunable.go @@ -40,50 +40,72 @@ func (s *Storage) Blocks(slot iotago.SlotIndex) (*slotstore.Blocks, error) { // Reset resets the component to a clean state as if it was created at the last commitment. func (s *Storage) Reset() { - s.lastAccessedBlocks.Compute(func(lastAccessedBlocks iotago.SlotIndex) iotago.SlotIndex { - latestCommittedSlot := s.Settings().LatestCommitment().Slot() - - for slot := latestCommittedSlot + 1; slot <= lastAccessedBlocks; slot++ { - if blocksForSlot, err := s.prunable.Blocks(slot); err != nil { - s.errorHandler(ierrors.Wrapf(err, "failed to clear blocks at slot %d", slot)) - } else if err = blocksForSlot.Clear(); err != nil { - s.errorHandler(ierrors.Wrapf(err, "failed to clear blocks at slot %d", slot)) - } - } - - return latestCommittedSlot - }) + if err := s.Rollback(s.Settings().LatestCommitment().Slot()); err != nil { + s.errorHandler(ierrors.Wrap(err, "failed to reset prunable storage")) + } } func (s *Storage) RootBlocks(slot iotago.SlotIndex) (*slotstore.Store[iotago.BlockID, iotago.CommitmentID], error) { + if err := s.permanent.Settings().AdvanceLatestStoredSlot(slot); err != nil { + return nil, ierrors.Wrap(err, "failed to advance latest stored slot when accessing root blocks") + } + return s.prunable.RootBlocks(slot) } func (s *Storage) Mutations(slot iotago.SlotIndex) (kvstore.KVStore, error) { + if err := s.permanent.Settings().AdvanceLatestStoredSlot(slot); err != nil { + return nil, ierrors.Wrap(err, "failed to advance latest stored slot when accessing mutations") + } + return s.prunable.Mutations(slot) } func (s *Storage) Attestations(slot iotago.SlotIndex) (kvstore.KVStore, error) { + if err := s.permanent.Settings().AdvanceLatestStoredSlot(slot); err != nil { + return nil, ierrors.Wrap(err, "failed to advance latest stored slot when accessing attestations") + } + return s.prunable.Attestations(slot) } func (s *Storage) AccountDiffs(slot iotago.SlotIndex) (*slotstore.AccountDiffs, error) { + if err := s.permanent.Settings().AdvanceLatestStoredSlot(slot); err != nil { + return nil, ierrors.Wrap(err, "failed to advance latest stored slot when accessing account diffs") + } + return s.prunable.AccountDiffs(slot) } func (s *Storage) ValidatorPerformances(slot iotago.SlotIndex) (*slotstore.Store[iotago.AccountID, *model.ValidatorPerformance], error) { + if err := s.permanent.Settings().AdvanceLatestStoredSlot(slot); err != nil { + return nil, ierrors.Wrap(err, "failed to advance latest stored slot when accessing validator performances") + } + return s.prunable.ValidatorPerformances(slot) } func (s *Storage) UpgradeSignals(slot iotago.SlotIndex) (*slotstore.Store[account.SeatIndex, *model.SignaledBlock], error) { + if err := s.permanent.Settings().AdvanceLatestStoredSlot(slot); err != nil { + return nil, ierrors.Wrap(err, "failed to advance latest stored slot when accessing upgrade signals") + } + return s.prunable.UpgradeSignals(slot) } func (s *Storage) Roots(slot iotago.SlotIndex) (*slotstore.Store[iotago.CommitmentID, *iotago.Roots], error) { + if err := s.permanent.Settings().AdvanceLatestStoredSlot(slot); err != nil { + return nil, ierrors.Wrap(err, "failed to advance latest stored slot when accessing roots") + } + return s.prunable.Roots(slot) } func (s *Storage) Retainer(slot iotago.SlotIndex) (*slotstore.Retainer, error) { + if err := s.permanent.Settings().AdvanceLatestStoredSlot(slot); err != nil { + return nil, ierrors.Wrap(err, "failed to advance latest stored slot when accessing retainer") + } + return s.prunable.Retainer(slot) } @@ -100,6 +122,22 @@ func (s *Storage) RestoreFromDisk() { s.lastPrunedEpoch.MarkEvicted(lastPrunedEpoch) } -func (s *Storage) RollbackPrunable(targetIndex iotago.SlotIndex) error { - return s.prunable.Rollback(targetIndex) +func (s *Storage) Rollback(targetSlot iotago.SlotIndex) error { + if err := s.prunable.Rollback(s.pruningRange(targetSlot)); err != nil { + return ierrors.Wrapf(err, "failed to rollback prunable storage to slot %d", targetSlot) + } + + return nil +} + +func (s *Storage) pruningRange(targetSlot iotago.SlotIndex) (targetEpoch iotago.EpochIndex, pruneRange [2]iotago.SlotIndex) { + epochOfSlot := func(slot iotago.SlotIndex) iotago.EpochIndex { + return s.Settings().APIProvider().APIForSlot(slot).TimeProvider().EpochFromSlot(slot) + } + + if targetEpoch, pruneRange = epochOfSlot(targetSlot), [2]iotago.SlotIndex{targetSlot + 1, s.Settings().LatestStoredSlot()}; epochOfSlot(pruneRange[0]) > targetEpoch { + pruneRange[1] = s.Settings().APIProvider().APIForEpoch(targetEpoch).TimeProvider().EpochEnd(targetEpoch) + } + + return targetEpoch, pruneRange } diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index fc974328a..70adb8d63 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -108,15 +108,15 @@ func TestProtocol_EngineSwitching(t *testing.T) { ts.Run(false, nodeOptions) - node0.Protocol.SetLogLevel(log.LevelInfo) - node1.Protocol.SetLogLevel(log.LevelInfo) - node2.Protocol.SetLogLevel(log.LevelInfo) - node3.Protocol.SetLogLevel(log.LevelInfo) - node4.Protocol.SetLogLevel(log.LevelInfo) - node5.Protocol.SetLogLevel(log.LevelInfo) + node0.Protocol.SetLogLevel(log.LevelError) + node1.Protocol.SetLogLevel(log.LevelError) + node2.Protocol.SetLogLevel(log.LevelError) + node3.Protocol.SetLogLevel(log.LevelError) + node4.Protocol.SetLogLevel(log.LevelError) + node5.Protocol.SetLogLevel(log.LevelError) node6.Protocol.SetLogLevel(log.LevelDebug) - node7.Protocol.SetLogLevel(log.LevelDebug) - node8.Protocol.SetLogLevel(log.LevelDebug) + node7.Protocol.SetLogLevel(log.LevelError) + node8.Protocol.SetLogLevel(log.LevelError) expectedCommittee := []iotago.AccountID{ node0.Validator.AccountID, diff --git a/pkg/testsuite/mock/blockissuer.go b/pkg/testsuite/mock/blockissuer.go index 9e7c673da..64c896fab 100644 --- a/pkg/testsuite/mock/blockissuer.go +++ b/pkg/testsuite/mock/blockissuer.go @@ -188,7 +188,7 @@ func (i *BlockIssuer) IssueValidationBlock(ctx context.Context, alias string, no validationBlock, _ := block.ValidationBlock() - fmt.Printf("Issued ValidationBlock: %s - slot %d - commitment %s %d - latest finalized slot %d - version: %d - highestSupportedVersion: %d, hash: %s\n", block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot, block.ProtocolBlock().ProtocolVersion, validationBlock.HighestSupportedVersion, validationBlock.ProtocolParametersHash) + node.Protocol.MainEngine.Get().LogTrace("issued validation block", "block", validationBlock, "blockID", block.ID(), "slot", block.ID().Slot(), "commitment", block.SlotCommitmentID(), "latestFinalizedSlot", block.ProtocolBlock().LatestFinalizedSlot, "version", block.ProtocolBlock().ProtocolVersion, "highestSupportedVersion", validationBlock.HighestSupportedVersion, "hash", validationBlock.ProtocolParametersHash) return block } @@ -283,7 +283,7 @@ func (i *BlockIssuer) IssueBasicBlock(ctx context.Context, alias string, node *N require.NoErrorf(i.Testing, i.IssueBlock(block.ModelBlock(), node), "%s > failed to issue block with alias %s", i.Name, alias) - fmt.Printf("%s > Issued block: %s - slot %d - commitment %s %d - latest finalized slot %d\n", i.Name, block.ID(), block.ID().Slot(), block.SlotCommitmentID(), block.SlotCommitmentID().Slot(), block.ProtocolBlock().LatestFinalizedSlot) + node.Protocol.LogTrace("issued block", "block", block, "blockID", block.ID(), "slot", block.ID().Slot(), "commitment", block.SlotCommitmentID(), "latestFinalizedSlot", block.ProtocolBlock().LatestFinalizedSlot, "version", block.ProtocolBlock().ProtocolVersion) return block } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index d17588062..8ab489984 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -149,8 +149,6 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto func (n *Node) hookEvents() { n.Protocol.HeaviestAttestedChain.OnUpdate(func(prevHeaviestAttestedChain, heaviestAttestedChain *protocol.Chain) { - fmt.Println(n.Name, " > HeaviestAttestedChain.OnUpdate", heaviestAttestedChain) - if prevHeaviestAttestedChain != nil { n.forkDetectedCount.Add(1) diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index c959ca7a6..22a5cf5ac 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -10,13 +10,13 @@ require ( github.com/AlecAivazis/survey/v2 v2.3.7 github.com/ethereum/go-ethereum v1.13.4 github.com/google/martian v2.1.0+incompatible - github.com/iotaledger/hive.go/app v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b - github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/logger v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b + github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd @@ -38,13 +38,13 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index 4fa058b2b..f43719e7a 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -173,34 +173,34 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b h1:D68khiAFb9DwTvjZc2nc4R0E6wUdKyYCUXkmdaMzuoQ= -github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231020115340-13da292c580b h1:mX3NXaTMLEwZnEs4IlxEvXY0YZo8qbb8M1xM39FS6qY= -github.com/iotaledger/hive.go/app v0.0.0-20231020115340-13da292c580b/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= -github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b h1:HF4e0wz0JMIT4m3saqdQ//T9nWHV9d5sLMtEwNDuykM= -github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b h1:ZERXxhQBUBV1AqTE6cUI4vTxSx4JrnsMuLZFgj32xLM= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b h1:ZUUqRRO6XnQmVcXlXyx07vqySn28+bln6jp9KagYCjY= -github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b h1:8b2sH+2Vf0y5BDYTMwKa09iQr3JF9JrzTI64DkXb+9U= -github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b h1:JJPnr231djUTgTnE4oGz847WE9VA7Py6E6fgZwT5TQo= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b h1:LusmtjpfG/q8lc15Fp9W3kABbN3tArKx/zw2ibdY1DU= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b h1:UvFWI8wQJS/XQOeWHpPsaFVeS2nxJ7nIGFr+IFjrnVw= -github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38 h1:6HIBNKOWLXY5Gk1s+q93D6IsTcqwANigfMO3ePtV3HQ= -github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231020115340-13da292c580b h1:EhVgAU/f2J3VYZwP60dRdyfAeDU3c/gBzX9blKtQGKA= -github.com/iotaledger/hive.go/logger v0.0.0-20231020115340-13da292c580b/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b h1:O68POYIqBLnoHN+HIszc58QwAI2qocYq0WKGfVrXmMg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b h1:zaXZn9yV/95SRDkgCZQeBbSbmcJTKSZbCB7oBd71Qwg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b h1:MDZhTZTVDiydXcW5j4TA7HixVCyAdToIMPhHfJee7cE= -github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 h1:EOfxTuAiBmED1VHuVh7/UIeB27cCRe13gdSzyioNMBw= +github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 h1:xAER9M9Uoz2EOWT43E9wmXRe+RmAk8OBSUoboH4Su8M= +github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 h1:drmpgLlJy7kZ09Dt1qKSnbILU+27Qu2jp4VdPDNwbFk= +github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 h1:BC5GkIHyXdoJGdw6Tu5ds2kjw9grFLtwQiuMaKfdLU8= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 h1:r8TkdQJB7/bJd8cF8z5GQ+rX/7JpbPdPoN7wMoV1OCM= +github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 h1:ytzZZPtclAzLfjxv26frbinCGx3Z6ouUENbx5U7lFGg= +github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 h1:QMxd32Y/veVhTDPCiOFgetjUbG7sr9MryF29/rSPkMA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 h1:/xPwStUckZ2V0XPoY496cXU+c5elpHyvYoT6JAmuvRY= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 h1:AvNLzONVMspwx7nD/NyYUgb5Hi7/zgzIOegr1uRD/M8= +github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 h1:e1uJAlXE3zeXpa+c4uFOG+/AMFbUlLt2mcrSK5NMxVs= +github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 h1:7wjs4t1snBDJ8LOTl+tZhr2ORywSOTgJMppxiIAMA0A= +github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 h1:1QMJ39qXIx/IZVzus3+97IV7Pa++e+d340TvbMjhiBU= +github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 h1:hZli4E9kJUAEQ7gzZR1XbPcpgqvqMPYq8YBPMbrBuos= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 h1:OlDhgvJ48bZxcvTeebJ1b96xtNnJAddejd2Q4rlH1mU= +github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd h1:FKiEzy3gOyWDGXs6mTMS9qFHGXSxH97N5w+08ljbEtU= github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd/go.mod h1:XFwcDfAF0hv6wB/trCsyDmQyPLjEZ60yTrllJ2bprN8= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 6e52b1d6a..b7a50cb8d 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231020115340-13da292c580b + github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -18,7 +18,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect @@ -58,19 +57,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231020151337-569450d5bf7d // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd // indirect @@ -135,7 +134,6 @@ require ( github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pokt-network/smt v0.6.1 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/prometheus/client_golang v1.17.0 // indirect @@ -151,7 +149,6 @@ require ( github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.8.4 // indirect github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect @@ -181,6 +178,5 @@ require ( google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 6d3b7c621..adddbda7f 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -279,36 +279,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b h1:D68khiAFb9DwTvjZc2nc4R0E6wUdKyYCUXkmdaMzuoQ= -github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231020115340-13da292c580b h1:mX3NXaTMLEwZnEs4IlxEvXY0YZo8qbb8M1xM39FS6qY= -github.com/iotaledger/hive.go/app v0.0.0-20231020115340-13da292c580b/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 h1:EOfxTuAiBmED1VHuVh7/UIeB27cCRe13gdSzyioNMBw= +github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 h1:xAER9M9Uoz2EOWT43E9wmXRe+RmAk8OBSUoboH4Su8M= +github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b h1:HF4e0wz0JMIT4m3saqdQ//T9nWHV9d5sLMtEwNDuykM= -github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b h1:ZERXxhQBUBV1AqTE6cUI4vTxSx4JrnsMuLZFgj32xLM= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b h1:ZUUqRRO6XnQmVcXlXyx07vqySn28+bln6jp9KagYCjY= -github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b h1:8b2sH+2Vf0y5BDYTMwKa09iQr3JF9JrzTI64DkXb+9U= -github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b h1:JJPnr231djUTgTnE4oGz847WE9VA7Py6E6fgZwT5TQo= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b h1:LusmtjpfG/q8lc15Fp9W3kABbN3tArKx/zw2ibdY1DU= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b h1:UvFWI8wQJS/XQOeWHpPsaFVeS2nxJ7nIGFr+IFjrnVw= -github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38 h1:6HIBNKOWLXY5Gk1s+q93D6IsTcqwANigfMO3ePtV3HQ= -github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231020115340-13da292c580b h1:EhVgAU/f2J3VYZwP60dRdyfAeDU3c/gBzX9blKtQGKA= -github.com/iotaledger/hive.go/logger v0.0.0-20231020115340-13da292c580b/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b h1:O68POYIqBLnoHN+HIszc58QwAI2qocYq0WKGfVrXmMg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b h1:zaXZn9yV/95SRDkgCZQeBbSbmcJTKSZbCB7oBd71Qwg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b h1:MDZhTZTVDiydXcW5j4TA7HixVCyAdToIMPhHfJee7cE= -github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 h1:drmpgLlJy7kZ09Dt1qKSnbILU+27Qu2jp4VdPDNwbFk= +github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 h1:BC5GkIHyXdoJGdw6Tu5ds2kjw9grFLtwQiuMaKfdLU8= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 h1:r8TkdQJB7/bJd8cF8z5GQ+rX/7JpbPdPoN7wMoV1OCM= +github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 h1:ytzZZPtclAzLfjxv26frbinCGx3Z6ouUENbx5U7lFGg= +github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 h1:QMxd32Y/veVhTDPCiOFgetjUbG7sr9MryF29/rSPkMA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 h1:/xPwStUckZ2V0XPoY496cXU+c5elpHyvYoT6JAmuvRY= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 h1:AvNLzONVMspwx7nD/NyYUgb5Hi7/zgzIOegr1uRD/M8= +github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 h1:e1uJAlXE3zeXpa+c4uFOG+/AMFbUlLt2mcrSK5NMxVs= +github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 h1:7wjs4t1snBDJ8LOTl+tZhr2ORywSOTgJMppxiIAMA0A= +github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 h1:1QMJ39qXIx/IZVzus3+97IV7Pa++e+d340TvbMjhiBU= +github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 h1:hZli4E9kJUAEQ7gzZR1XbPcpgqvqMPYq8YBPMbrBuos= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 h1:OlDhgvJ48bZxcvTeebJ1b96xtNnJAddejd2Q4rlH1mU= +github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af h1:3+heabXNGjv3Sx1sg0qG+QdqeEWIpf7jM3T5cPiVmSA= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af/go.mod h1:3BZ5r/MhswUZwXHDzMZacOhm6DWpUdGjefNRNshfwiM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231020151337-569450d5bf7d h1:PeJNFBkR28hdQCxUyC/cbOlDjFm3D1U7O5bxi+qsOvQ= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 0fc07ce2a..31ec44009 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b - github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b + github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd github.com/mr-tron/base58 v1.2.0 @@ -26,14 +26,15 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect @@ -59,6 +60,8 @@ require ( github.com/wollac/iota-crypto-demo v0.0.0-20221117162917-b10619eccb98 // indirect github.com/zyedidia/generic v1.2.1 // indirect go.uber.org/atomic v1.11.0 // indirect + go.uber.org/multierr v1.11.0 // indirect + go.uber.org/zap v1.26.0 // indirect golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect golang.org/x/sync v0.4.0 // indirect golang.org/x/sys v0.13.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 6c4a41287..b41c4bdae 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,30 +28,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b h1:D68khiAFb9DwTvjZc2nc4R0E6wUdKyYCUXkmdaMzuoQ= -github.com/iotaledger/hive.go/ads v0.0.0-20231020115340-13da292c580b/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b h1:HF4e0wz0JMIT4m3saqdQ//T9nWHV9d5sLMtEwNDuykM= -github.com/iotaledger/hive.go/constraints v0.0.0-20231020115340-13da292c580b/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b h1:ZERXxhQBUBV1AqTE6cUI4vTxSx4JrnsMuLZFgj32xLM= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231020115340-13da292c580b/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b h1:ZUUqRRO6XnQmVcXlXyx07vqySn28+bln6jp9KagYCjY= -github.com/iotaledger/hive.go/crypto v0.0.0-20231020115340-13da292c580b/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b h1:8b2sH+2Vf0y5BDYTMwKa09iQr3JF9JrzTI64DkXb+9U= -github.com/iotaledger/hive.go/ds v0.0.0-20231020115340-13da292c580b/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b h1:JJPnr231djUTgTnE4oGz847WE9VA7Py6E6fgZwT5TQo= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231020115340-13da292c580b/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b h1:LusmtjpfG/q8lc15Fp9W3kABbN3tArKx/zw2ibdY1DU= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231020115340-13da292c580b/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b h1:UvFWI8wQJS/XQOeWHpPsaFVeS2nxJ7nIGFr+IFjrnVw= -github.com/iotaledger/hive.go/lo v0.0.0-20231020115340-13da292c580b/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38 h1:6HIBNKOWLXY5Gk1s+q93D6IsTcqwANigfMO3ePtV3HQ= -github.com/iotaledger/hive.go/log v0.0.0-20231019113503-7986872a7a38/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b h1:O68POYIqBLnoHN+HIszc58QwAI2qocYq0WKGfVrXmMg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231020115340-13da292c580b/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b h1:zaXZn9yV/95SRDkgCZQeBbSbmcJTKSZbCB7oBd71Qwg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231020115340-13da292c580b/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b h1:MDZhTZTVDiydXcW5j4TA7HixVCyAdToIMPhHfJee7cE= -github.com/iotaledger/hive.go/stringify v0.0.0-20231020115340-13da292c580b/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 h1:EOfxTuAiBmED1VHuVh7/UIeB27cCRe13gdSzyioNMBw= +github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 h1:drmpgLlJy7kZ09Dt1qKSnbILU+27Qu2jp4VdPDNwbFk= +github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 h1:BC5GkIHyXdoJGdw6Tu5ds2kjw9grFLtwQiuMaKfdLU8= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 h1:r8TkdQJB7/bJd8cF8z5GQ+rX/7JpbPdPoN7wMoV1OCM= +github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 h1:ytzZZPtclAzLfjxv26frbinCGx3Z6ouUENbx5U7lFGg= +github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 h1:QMxd32Y/veVhTDPCiOFgetjUbG7sr9MryF29/rSPkMA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 h1:/xPwStUckZ2V0XPoY496cXU+c5elpHyvYoT6JAmuvRY= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 h1:AvNLzONVMspwx7nD/NyYUgb5Hi7/zgzIOegr1uRD/M8= +github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 h1:e1uJAlXE3zeXpa+c4uFOG+/AMFbUlLt2mcrSK5NMxVs= +github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 h1:7wjs4t1snBDJ8LOTl+tZhr2ORywSOTgJMppxiIAMA0A= +github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 h1:1QMJ39qXIx/IZVzus3+97IV7Pa++e+d340TvbMjhiBU= +github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 h1:hZli4E9kJUAEQ7gzZR1XbPcpgqvqMPYq8YBPMbrBuos= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 h1:OlDhgvJ48bZxcvTeebJ1b96xtNnJAddejd2Q4rlH1mU= +github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd h1:FKiEzy3gOyWDGXs6mTMS9qFHGXSxH97N5w+08ljbEtU= github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd/go.mod h1:XFwcDfAF0hv6wB/trCsyDmQyPLjEZ60yTrllJ2bprN8= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= @@ -113,6 +115,7 @@ github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= @@ -124,6 +127,12 @@ github.com/zyedidia/generic v1.2.1 h1:Zv5KS/N2m0XZZiuLS82qheRG4X1o5gsWreGb0hR7XD github.com/zyedidia/generic v1.2.1/go.mod h1:ly2RBz4mnz1yeuVbQA/VFwGjK3mnHGRj1JuoG336Bis= go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= +go.uber.org/goleak v1.2.0 h1:xqgm/S+aQvhWFTtR0XK3Jvg7z8kGV8P4X14IzwN3Eqk= +go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= +go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/zap v1.26.0 h1:sI7k6L95XOKS281NhVKOFCUNIvv9e0w4BF8N3u+tCRo= +go.uber.org/zap v1.26.0/go.mod h1:dtElttAiwGvoJ/vj4IwHBS/gXsEu/pZ50mUIRWuG0so= golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= From 77cb8cc9e89f139b1379a23a3a513b7d7ad2adfd Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 30 Oct 2023 10:47:12 +0100 Subject: [PATCH 200/356] Refactor: cleaned more code --- pkg/protocol/chain.go | 62 +++++++++++--------------------------- pkg/protocol/commitment.go | 41 ------------------------- 2 files changed, 17 insertions(+), 86 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 7f9edc09f..db2362e4f 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -26,7 +26,6 @@ type Chain struct { AttestedWeight reactive.Variable[uint64] VerifiedWeight reactive.Variable[uint64] NetworkClockSlot reactive.Variable[iotago.SlotIndex] - SyncThreshold reactive.Variable[iotago.SlotIndex] WarpSync reactive.Variable[bool] WarpSyncThreshold reactive.Variable[iotago.SlotIndex] OutOfSyncThreshold reactive.Variable[iotago.SlotIndex] @@ -37,7 +36,6 @@ type Chain struct { IsEvicted reactive.Event commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] - parentEngine reactive.Variable[*engine.Engine] SpawnedEngine reactive.Variable[*engine.Engine] log.Logger @@ -63,7 +61,6 @@ func NewChain(protocol *Protocol) *Chain { IsEvicted: reactive.NewEvent(), commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), - parentEngine: reactive.NewVariable[*engine.Engine](), VerifyState: reactive.NewVariable[bool](), SpawnedEngine: reactive.NewVariable[*engine.Engine](), } @@ -102,18 +99,6 @@ func NewChain(protocol *Protocol) *Chain { } }) - c.SyncThreshold = reactive.NewDerivedVariable2[iotago.SlotIndex](func(forkingPoint, latestVerifiedCommitment *Commitment) iotago.SlotIndex { - if forkingPoint == nil { - return SyncWindow + 1 - } - - if latestVerifiedCommitment == nil { - return forkingPoint.Slot() + SyncWindow + 1 - } - - return latestVerifiedCommitment.Slot() + SyncWindow + 1 - }, c.ForkingPoint, c.LatestVerifiedCommitment) - c.ParentChain.OnUpdate(func(prevParent, newParent *Chain) { if prevParent != nil { prevParent.ChildChains.Delete(c) @@ -128,31 +113,28 @@ func NewChain(protocol *Protocol) *Chain { forkingPointContext(func() func() { return forkingPoint.Parent.OnUpdate(func(_, parent *Commitment) { forkingPointContext(func() func() { - return lo.Batch( - c.ParentChain.InheritFrom(parent.Chain), - c.parentEngine.InheritFrom(parent.Engine), - ) + return c.ParentChain.InheritFrom(parent.Chain) }) }) }) }) - c.Logger = protocol.NewEntityLogger("Chain", c.IsEvicted, func(entityLogger log.Logger) { - entityLogger.LogDebug("created") - - c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") - c.NetworkClockSlot.LogUpdates(entityLogger, log.LevelTrace, "NetworkClockSlot") - c.WarpSyncThreshold.LogUpdates(entityLogger, log.LevelTrace, "WarpSyncThreshold") - c.OutOfSyncThreshold.LogUpdates(entityLogger, log.LevelTrace, "OutOfSyncThreshold") - c.ForkingPoint.LogUpdates(entityLogger, log.LevelTrace, "ForkingPoint", (*Commitment).LogName) - c.ClaimedWeight.LogUpdates(entityLogger, log.LevelTrace, "ClaimedWeight") - c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") - c.VerifiedWeight.LogUpdates(entityLogger, log.LevelTrace, "VerifiedWeight") - c.LatestCommitment.LogUpdates(entityLogger, log.LevelTrace, "LatestCommitment", (*Commitment).LogName) - c.LatestVerifiedCommitment.LogUpdates(entityLogger, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName) - c.VerifyAttestations.LogUpdates(entityLogger, log.LevelTrace, "VerifyAttestations") - c.VerifyState.LogUpdates(entityLogger, log.LevelDebug, "VerifyState") - c.SpawnedEngine.LogUpdates(entityLogger, log.LevelDebug, "SpawnedEngine", (*engine.Engine).LogName) + c.Logger = protocol.NewEntityLogger("Chain", c.IsEvicted, func(chainLogger log.Logger) { + chainLogger.LogDebug("created") + + c.WarpSync.LogUpdates(chainLogger, log.LevelTrace, "WarpSync") + c.NetworkClockSlot.LogUpdates(chainLogger, log.LevelTrace, "NetworkClockSlot") + c.WarpSyncThreshold.LogUpdates(chainLogger, log.LevelTrace, "WarpSyncThreshold") + c.OutOfSyncThreshold.LogUpdates(chainLogger, log.LevelTrace, "OutOfSyncThreshold") + c.ForkingPoint.LogUpdates(chainLogger, log.LevelTrace, "ForkingPoint", (*Commitment).LogName) + c.ClaimedWeight.LogUpdates(chainLogger, log.LevelTrace, "ClaimedWeight") + c.AttestedWeight.LogUpdates(chainLogger, log.LevelTrace, "AttestedWeight") + c.VerifiedWeight.LogUpdates(chainLogger, log.LevelTrace, "VerifiedWeight") + c.LatestCommitment.LogUpdates(chainLogger, log.LevelTrace, "LatestCommitment", (*Commitment).LogName) + c.LatestVerifiedCommitment.LogUpdates(chainLogger, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName) + c.VerifyAttestations.LogUpdates(chainLogger, log.LevelTrace, "VerifyAttestations") + c.VerifyState.LogUpdates(chainLogger, log.LevelDebug, "VerifyState") + c.SpawnedEngine.LogUpdates(chainLogger, log.LevelDebug, "SpawnedEngine", (*engine.Engine).LogName) }) return c @@ -283,16 +265,6 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { return success } -func (c *Chain) InSyncRange(slot iotago.SlotIndex) bool { - if latestVerifiedCommitment := c.LatestVerifiedCommitment.Get(); latestVerifiedCommitment != nil { - return slot > latestVerifiedCommitment.Slot() && slot < c.SyncThreshold.Get() - } - - forkingPoint := c.ForkingPoint.Get() - - return forkingPoint != nil && (slot > forkingPoint.Slot()-1 && slot < c.SyncThreshold.Get()) -} - func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { c.commitments.Set(commitment.Slot(), commitment) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index b7e6a66ba..0ccd19379 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -8,7 +8,6 @@ import ( "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" - iotago "github.com/iotaledger/iota.go/v4" ) type Commitment struct { @@ -37,8 +36,6 @@ type Commitment struct { protocol *Protocol isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] isDirectlyAboveLatestVerifiedCommitment reactive.Variable[bool] - isBelowSyncThreshold reactive.Event - isBelowWarpSyncThreshold reactive.Event log.Logger } @@ -70,8 +67,6 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment protocol: protocol, isDirectlyAboveLatestAttestedCommitment: reactive.NewVariable[bool](), isDirectlyAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - isBelowSyncThreshold: reactive.NewEvent(), - isBelowWarpSyncThreshold: reactive.NewEvent(), } c.Parent.OnUpdateWithContext(func(_, parent *Commitment, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { @@ -124,16 +119,6 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.isDirectlyAboveLatestVerifiedCommitment.InheritFrom(reactive.NewDerivedVariable2(func(parentIsVerified, isVerified bool) bool { return parentIsVerified && !isVerified }, parent.IsVerified, c.IsVerified)) - - c.triggerEventIfBelowThreshold( - func(c *Commitment) reactive.Event { return c.isBelowSyncThreshold }, - func(c *Chain) reactive.Variable[iotago.SlotIndex] { return c.SyncThreshold }, - ) - - c.triggerEventIfBelowThreshold( - func(c *Commitment) reactive.Event { return c.isBelowWarpSyncThreshold }, - func(c *Chain) reactive.Variable[iotago.SlotIndex] { return c.WarpSyncThreshold }, - ) }) c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { @@ -166,8 +151,6 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.IsSolid.Set(true) c.IsAttested.Set(true) c.IsVerified.Set(true) - c.isBelowWarpSyncThreshold.Set(true) - c.isBelowSyncThreshold.Set(true) }) c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { @@ -250,27 +233,3 @@ func (c *Commitment) promote(targetChain *Chain) { } } } - -func (c *Commitment) triggerEventIfBelowThreshold(event func(*Commitment) reactive.Event, chainThreshold func(*Chain) reactive.Variable[iotago.SlotIndex]) { - c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { - if chain == nil { - return - } - - // only monitor the threshold after the parent event was triggered (minimize listeners to same threshold) - withinContext(func() (unsubscribe func()) { - return event(c.Parent.Get()).OnTrigger(func() { - if chain == nil { - c.LogError("chain is nil IN HERE") - } - - // since events only trigger once, we unsubscribe from the threshold after the trigger condition is met - chainThreshold(chain).OnUpdateOnce(func(_, _ iotago.SlotIndex) { - event(c).Trigger() - }, func(_, slot iotago.SlotIndex) bool { - return c.Slot() < slot - }) - }) - }) - }) -} From 647d023facfacda19a34a7a25e8947e634a8b7fa Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 30 Oct 2023 20:45:15 +0100 Subject: [PATCH 201/356] Feat: started experimenting with definitions framework --- pkg/protocol/commitment.go | 204 ++++++++++++++++++++--------- pkg/protocol/protocol_blocks.go | 2 +- pkg/protocol/protocol_warp_sync.go | 4 +- 3 files changed, 148 insertions(+), 62 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 0ccd19379..b877c6407 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -11,8 +11,6 @@ import ( ) type Commitment struct { - *model.Commitment - Parent reactive.Variable[*Commitment] Children reactive.Set[*Commitment] MainChild reactive.Variable[*Commitment] @@ -20,7 +18,7 @@ type Commitment struct { Chain reactive.Variable[*Chain] Engine reactive.Variable[*engine.Engine] RequestAttestations reactive.Variable[bool] - RequestBlocks reactive.Variable[bool] + WarpSync reactive.Variable[bool] RequestedBlocksReceived reactive.Variable[bool] Weight reactive.Variable[uint64] AttestedWeight reactive.Variable[uint64] @@ -31,19 +29,18 @@ type Commitment struct { IsRoot reactive.Event IsEvicted reactive.Event IsAboveLatestVerifiedCommitment reactive.Variable[bool] - ReplayBlocks reactive.Variable[bool] + InSyncRange reactive.Variable[bool] protocol *Protocol isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] - isDirectlyAboveLatestVerifiedCommitment reactive.Variable[bool] + *model.Commitment log.Logger } func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment { c := &Commitment{ - Commitment: commitment, - + Commitment: commitment, Parent: reactive.NewVariable[*Commitment](), MainChild: reactive.NewVariable[*Commitment](), Children: reactive.NewSet[*Commitment](), @@ -51,7 +48,7 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment Chain: reactive.NewVariable[*Chain](), Engine: reactive.NewVariable[*engine.Engine](), RequestAttestations: reactive.NewVariable[bool](), - RequestBlocks: reactive.NewVariable[bool](), + WarpSync: reactive.NewVariable[bool](), RequestedBlocksReceived: reactive.NewVariable[bool](), Weight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](func(currentValue uint64, newValue uint64) uint64 { return max(currentValue, newValue) }), @@ -62,63 +59,38 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment IsRoot: reactive.NewEvent(), IsEvicted: reactive.NewEvent(), IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - ReplayBlocks: reactive.NewVariable[bool](), + InSyncRange: reactive.NewVariable[bool](), protocol: protocol, isDirectlyAboveLatestAttestedCommitment: reactive.NewVariable[bool](), - isDirectlyAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), } - c.Parent.OnUpdateWithContext(func(_, parent *Commitment, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { - if parent != nil { - unsubscribeOnUpdate(func() func() { - return c.IsAboveLatestVerifiedCommitment.InheritFrom(reactive.NewDerivedVariable2(func(parentAboveLatestVerifiedCommitment, directlyAboveLatestVerifiedCommitment bool) bool { - return parentAboveLatestVerifiedCommitment || directlyAboveLatestVerifiedCommitment - }, parent.IsAboveLatestVerifiedCommitment, c.isDirectlyAboveLatestVerifiedCommitment)) - }) - } - }) - - c.Chain.OnUpdateWithContext(func(_, chain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { - if chain != nil { - unsubscribeOnUpdate(func() func() { - return c.ReplayBlocks.InheritFrom(reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { - return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment - }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment)) - }) - } - }) - - c.Parent.OnUpdateOnce(func(_, parent *Commitment) { - parent.registerChild(c) - - c.Chain.InheritFrom(reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { - if spawnedChain != nil { - return spawnedChain - } + WithDependency(c.Parent, + DynamicValueWithDependency(c.chain, c.Chain), + DynamicValueWithDependency(c.isSolid, c.IsSolid), + DynamicValueWithDependency(c.cumulativeAttestedWeight, c.CumulativeAttestedWeight), + DynamicValueWithDependency(c.isAboveLatestVerifiedCommitment, c.IsAboveLatestVerifiedCommitment), + DefinitionWithStaticValue(c.weight, c.Weight), + ) - return parentChain - }, parent.Chain, c.SpawnedChain)) + WithDependency(c.Chain, + DynamicValueWithDependency(c.inSyncRange, c.InSyncRange), + ) - c.IsSolid.InheritFrom(parent.IsSolid) + WithDependencies2(c.Parent, c.Chain, + DynamicValueWith2Dependencies(c.warpSync, c.WarpSync), + ) - c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) + c.Parent.OnUpdateOnce(func(_, parent *Commitment) { + if parent == nil { + return + } - c.IsAttested.OnTrigger(func() { - parent.IsAttested.OnTrigger(func() { - c.CumulativeAttestedWeight.InheritFrom(reactive.NewDerivedVariable2(func(parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { - return parentCumulativeAttestedWeight + attestedWeight - }, parent.CumulativeAttestedWeight, c.AttestedWeight)) - }) - }) + parent.registerChild(c) c.isDirectlyAboveLatestAttestedCommitment.InheritFrom(reactive.NewDerivedVariable2(func(parentIsAttested, isAttested bool) bool { return parentIsAttested && !isAttested }, parent.IsAttested, c.IsAttested)) - - c.isDirectlyAboveLatestVerifiedCommitment.InheritFrom(reactive.NewDerivedVariable2(func(parentIsVerified, isVerified bool) bool { - return parentIsVerified && !isVerified - }, parent.IsVerified, c.IsVerified)) }) c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { @@ -138,24 +110,18 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.Engine.InheritFrom(chain.Engine), - c.RequestBlocks.InheritFrom(reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncChain, isDirectlyAboveLatestVerifiedCommitment bool) bool { - return spawnedEngine != nil && warpSyncChain && isDirectlyAboveLatestVerifiedCommitment - }, chain.SpawnedEngine, chain.WarpSync, c.isDirectlyAboveLatestVerifiedCommitment)), - requestAttestations.Unsubscribe, ) }) }) c.IsRoot.OnTrigger(func() { - c.IsSolid.Set(true) c.IsAttested.Set(true) c.IsVerified.Set(true) }) c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { - c.isDirectlyAboveLatestVerifiedCommitment.LogUpdates(entityLogger, log.LevelTrace, "isDirectlyAboveLatestVerifiedCommitment") - c.RequestBlocks.LogUpdates(entityLogger, log.LevelTrace, "RequestBlocks") + c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") @@ -164,6 +130,54 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment return c } +func (c *Commitment) isAboveLatestVerifiedCommitment(parent *Commitment) reactive.DerivedVariable[bool] { + return reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { + return parentAboveLatestVerifiedCommitment || (parentIsVerified && isVerified) + }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified) +} + +func (c *Commitment) inSyncRange(chain *Chain) reactive.DerivedVariable[bool] { + return reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { + return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment + }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment) +} + +func (c *Commitment) chain(parent *Commitment) reactive.DerivedVariable[*Chain] { + return reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { + if spawnedChain != nil { + return spawnedChain + } + + return parentChain + }, parent.Chain, c.SpawnedChain) +} + +func (c *Commitment) cumulativeAttestedWeight(parent *Commitment) reactive.DerivedVariable[uint64] { + return reactive.NewDerivedVariable3(func(isAttested bool, parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { + if !isAttested { + return 0 + } + + return parentCumulativeAttestedWeight + attestedWeight + }, c.IsAttested, parent.CumulativeAttestedWeight, c.AttestedWeight) +} + +func (c *Commitment) isSolid(parent *Commitment) reactive.DerivedVariable[bool] { + return reactive.NewDerivedVariable2(func(isRoot, parentIsSolid bool) bool { + return isRoot || parentIsSolid + }, c.IsRoot, parent.IsSolid) +} + +func (c *Commitment) warpSync(parent *Commitment, chain *Chain) reactive.DerivedVariable[bool] { + return reactive.NewDerivedVariable4(func(spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { + return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified + }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified) +} + +func (c *Commitment) weight(parent *Commitment) uint64 { + return c.CumulativeWeight() - parent.CumulativeWeight() +} + func (c *Commitment) registerChild(child *Commitment) { if c.Children.Add(child) { c.MainChild.Compute(func(currentMainChild *Commitment) *Commitment { @@ -233,3 +247,75 @@ func (c *Commitment) promote(targetChain *Chain) { } } } + +func WithDependency[S comparable](source reactive.Variable[S], dependencyReceiver ...func(S) func()) (unsubscribe func()) { + unsubscribeAll := make([]func(), 0) + + return source.OnUpdateWithContext(func(_, parent S, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { + if parent == *new(S) { + return + } + + unsubscribeOnParentUpdate(func() (unsubscribe func()) { + for _, dependency := range dependencyReceiver { + if unsubscribeDependency := dependency(parent); unsubscribeDependency != nil { + unsubscribeAll = append(unsubscribeAll, unsubscribeDependency) + } + } + + return lo.Batch(unsubscribeAll...) + }) + }) +} + +func WithDependencies2[S1, S2 comparable](source1 reactive.Variable[S1], source2 reactive.Variable[S2], dependencyReceiver ...func(S1, S2) func()) (unsubscribe func()) { + unsubscribeAll := make([]func(), 0) + + return source1.OnUpdateWithContext(func(_, source1 S1, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { + if source1 == *new(S1) { + return + } + + unsubscribeOnParentUpdate(func() (unsubscribe func()) { + return source2.OnUpdateWithContext(func(_, source2 S2, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { + if source2 == *new(S2) { + return + } + + unsubscribeOnParentUpdate(func() (unsubscribe func()) { + for _, dependency := range dependencyReceiver { + if unsubscribeDependency := dependency(source1, source2); unsubscribeDependency != nil { + unsubscribeAll = append(unsubscribeAll, unsubscribeDependency) + } + } + + return lo.Batch(unsubscribeAll...) + }) + }) + }) + }) +} + +func DynamicValueWithDependency[T, S comparable](definition func(S) reactive.DerivedVariable[T], target reactive.Variable[T]) func(parent S) func() { + return func(parent S) func() { + derivedVariable := definition(parent) + + return lo.Batch(target.InheritFrom(derivedVariable), derivedVariable.Unsubscribe) + } +} + +func DynamicValueWith2Dependencies[T, S1, S2 comparable](definition func(S1, S2) reactive.DerivedVariable[T], target reactive.Variable[T]) func(S1, S2) func() { + return func(source1 S1, source2 S2) func() { + derivedVariable := definition(source1, source2) + + return lo.Batch(target.InheritFrom(derivedVariable), derivedVariable.Unsubscribe) + } +} + +func DefinitionWithStaticValue[T, S comparable](definition func(S) T, target reactive.Variable[T]) func(parent S) func() { + return func(parent S) func() { + target.Set(definition(parent)) + + return nil + } +} diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 12a30335e..8bdab8c79 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -33,7 +33,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { protocol.Constructed.OnTrigger(func() { protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.ReplayBlocks.OnUpdate(func(_, replayBlocks bool) { + commitment.InSyncRange.OnUpdate(func(_, replayBlocks bool) { if replayBlocks { b.LogDebug("replaying blocks", "commitmentID", commitment.ID()) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index a0a938317..96b18b252 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -36,7 +36,7 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { protocol.Constructed.OnTrigger(func() { c.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.RequestBlocks.OnUpdate(func(_, warpSyncBlocks bool) { + commitment.WarpSync.OnUpdate(func(_, warpSyncBlocks bool) { if warpSyncBlocks { c.ticker.StartTicker(commitment.ID()) } else { @@ -101,7 +101,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } commitment.RequestedBlocksReceived.Compute(func(requestedBlocksReceived bool) bool { - if requestedBlocksReceived || !commitment.RequestBlocks.Get() { + if requestedBlocksReceived || !commitment.WarpSync.Get() { w.LogTrace("response for already synced commitment", "commitment", commitment.LogName(), "fromPeer", from) return requestedBlocksReceived From 0b3ba89d7cf97b46a3556b22784d045cd52bcfec Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 31 Oct 2023 13:19:55 +0100 Subject: [PATCH 202/356] Fix: fixed bug with erroneous transition rule --- pkg/protocol/commitment.go | 7 ++++++- pkg/testsuite/mock/blockissuer.go | 4 ++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index b877c6407..377137b6b 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -118,9 +118,14 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.IsRoot.OnTrigger(func() { c.IsAttested.Set(true) c.IsVerified.Set(true) + c.IsSolid.Set(true) }) c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { + c.IsSolid.LogUpdates(entityLogger, log.LevelTrace, "IsSolid") + c.Chain.LogUpdates(entityLogger, log.LevelTrace, "Chain", (*Chain).LogName) + c.IsVerified.LogUpdates(entityLogger, log.LevelTrace, "IsVerified") + c.InSyncRange.LogUpdates(entityLogger, log.LevelTrace, "InSyncRange") c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") @@ -132,7 +137,7 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment func (c *Commitment) isAboveLatestVerifiedCommitment(parent *Commitment) reactive.DerivedVariable[bool] { return reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { - return parentAboveLatestVerifiedCommitment || (parentIsVerified && isVerified) + return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified) } diff --git a/pkg/testsuite/mock/blockissuer.go b/pkg/testsuite/mock/blockissuer.go index 64c896fab..554fb6cd4 100644 --- a/pkg/testsuite/mock/blockissuer.go +++ b/pkg/testsuite/mock/blockissuer.go @@ -188,7 +188,7 @@ func (i *BlockIssuer) IssueValidationBlock(ctx context.Context, alias string, no validationBlock, _ := block.ValidationBlock() - node.Protocol.MainEngine.Get().LogTrace("issued validation block", "block", validationBlock, "blockID", block.ID(), "slot", block.ID().Slot(), "commitment", block.SlotCommitmentID(), "latestFinalizedSlot", block.ProtocolBlock().LatestFinalizedSlot, "version", block.ProtocolBlock().ProtocolVersion, "highestSupportedVersion", validationBlock.HighestSupportedVersion, "hash", validationBlock.ProtocolParametersHash) + node.Protocol.MainEngine.Get().LogTrace("issued validation block", "blockID", block.ID(), "slot", block.ID().Slot(), "commitment", block.SlotCommitmentID(), "latestFinalizedSlot", block.ProtocolBlock().LatestFinalizedSlot, "version", block.ProtocolBlock().ProtocolVersion, "highestSupportedVersion", validationBlock.HighestSupportedVersion, "hash", validationBlock.ProtocolParametersHash) return block } @@ -283,7 +283,7 @@ func (i *BlockIssuer) IssueBasicBlock(ctx context.Context, alias string, node *N require.NoErrorf(i.Testing, i.IssueBlock(block.ModelBlock(), node), "%s > failed to issue block with alias %s", i.Name, alias) - node.Protocol.LogTrace("issued block", "block", block, "blockID", block.ID(), "slot", block.ID().Slot(), "commitment", block.SlotCommitmentID(), "latestFinalizedSlot", block.ProtocolBlock().LatestFinalizedSlot, "version", block.ProtocolBlock().ProtocolVersion) + node.Protocol.LogTrace("issued block", "blockID", block.ID(), "slot", block.ID().Slot(), "commitment", block.SlotCommitmentID(), "latestFinalizedSlot", block.ProtocolBlock().LatestFinalizedSlot, "version", block.ProtocolBlock().ProtocolVersion) return block } From a98681a8e756af8950480c87a56776072e9ed9e5 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 31 Oct 2023 16:01:20 +0100 Subject: [PATCH 203/356] Feat: refactored code --- pkg/core/definitions/define.go | 82 +++++++++++++++ pkg/protocol/commitment.go | 179 +++++++++------------------------ 2 files changed, 131 insertions(+), 130 deletions(-) create mode 100644 pkg/core/definitions/define.go diff --git a/pkg/core/definitions/define.go b/pkg/core/definitions/define.go new file mode 100644 index 000000000..34fbd2a0d --- /dev/null +++ b/pkg/core/definitions/define.go @@ -0,0 +1,82 @@ +package definitions + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" +) + +func InjectDependencies1[S comparable](source reactive.Variable[S]) func(dependencyReceiver ...func(S) func()) (unsubscribe func()) { + return func(dependencyReceiver ...func(S) func()) (unsubscribe func()) { + return source.OnUpdateWithContext(func(_, parent S, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { + if parent == *new(S) { + return + } + + unsubscribeOnParentUpdate(func() (unsubscribe func()) { + unsubscribeAll := make([]func(), 0) + + for _, dependency := range dependencyReceiver { + if unsubscribeDependency := dependency(parent); unsubscribeDependency != nil { + unsubscribeAll = append(unsubscribeAll, unsubscribeDependency) + } + } + + return lo.Batch(unsubscribeAll...) + }) + }) + } +} + +func DynamicValue1[T, S comparable](target reactive.Variable[T], definition func(S) reactive.DerivedVariable[T]) func(parent S) func() { + return func(parent S) func() { + derivedVariable := definition(parent) + + return lo.Batch(target.InheritFrom(derivedVariable), derivedVariable.Unsubscribe) + } +} + +func With2Dependencies[S1, S2 comparable](source1 reactive.Variable[S1], source2 reactive.Variable[S2]) func(dependencyReceivers ...func(S1, S2) func()) (unsubscribe func()) { + return func(dependencyReceivers ...func(S1, S2) func()) func() { + return source1.OnUpdateWithContext(func(_, source1 S1, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { + if source1 == *new(S1) { + return + } + + unsubscribeOnParentUpdate(func() (unsubscribe func()) { + return source2.OnUpdateWithContext(func(_, source2 S2, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { + if source2 == *new(S2) { + return + } + + unsubscribeOnParentUpdate(func() (unsubscribe func()) { + unsubscribeAll := make([]func(), 0) + + for _, dependency := range dependencyReceivers { + if unsubscribeDependency := dependency(source1, source2); unsubscribeDependency != nil { + unsubscribeAll = append(unsubscribeAll, unsubscribeDependency) + } + } + + return lo.Batch(unsubscribeAll...) + }) + }) + }) + }) + } +} + +func DynamicValue2[T, S1, S2 comparable](target reactive.Variable[T], definition func(S1, S2) reactive.DerivedVariable[T]) func(S1, S2) func() { + return func(source1 S1, source2 S2) func() { + derivedVariable := definition(source1, source2) + + return lo.Batch(target.InheritFrom(derivedVariable), derivedVariable.Unsubscribe) + } +} + +func StaticValue1[T, S comparable](target reactive.Variable[T], definition func(S) T) func(parent S) func() { + return func(parent S) func() { + target.Set(definition(parent)) + + return nil + } +} diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 377137b6b..217b164fd 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -6,6 +6,7 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/iota-core/pkg/core/definitions" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" ) @@ -65,20 +66,58 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment isDirectlyAboveLatestAttestedCommitment: reactive.NewVariable[bool](), } - WithDependency(c.Parent, - DynamicValueWithDependency(c.chain, c.Chain), - DynamicValueWithDependency(c.isSolid, c.IsSolid), - DynamicValueWithDependency(c.cumulativeAttestedWeight, c.CumulativeAttestedWeight), - DynamicValueWithDependency(c.isAboveLatestVerifiedCommitment, c.IsAboveLatestVerifiedCommitment), - DefinitionWithStaticValue(c.weight, c.Weight), + definitions.InjectDependencies1(c.Parent)( + definitions.DynamicValue1[*Chain](c.Chain, func(parent *Commitment) reactive.DerivedVariable[*Chain] { + return reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { + if spawnedChain != nil { + return spawnedChain + } + + return parentChain + }, parent.Chain, c.SpawnedChain) + }), + + definitions.DynamicValue1[bool](c.IsSolid, func(parent *Commitment) reactive.DerivedVariable[bool] { + return reactive.NewDerivedVariable2(func(isRoot, parentIsSolid bool) bool { + return isRoot || parentIsSolid + }, c.IsRoot, parent.IsSolid) + }), + + definitions.DynamicValue1[uint64](c.CumulativeAttestedWeight, func(parent *Commitment) reactive.DerivedVariable[uint64] { + return reactive.NewDerivedVariable3(func(isAttested bool, parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { + if !isAttested { + return 0 + } + + return parentCumulativeAttestedWeight + attestedWeight + }, c.IsAttested, parent.CumulativeAttestedWeight, c.AttestedWeight) + }), + + definitions.DynamicValue1[bool](c.IsAboveLatestVerifiedCommitment, func(parent *Commitment) reactive.DerivedVariable[bool] { + return reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { + return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) + }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified) + }), + + definitions.StaticValue1[uint64](c.Weight, func(parent *Commitment) uint64 { + return c.CumulativeWeight() - parent.CumulativeWeight() + }), ) - WithDependency(c.Chain, - DynamicValueWithDependency(c.inSyncRange, c.InSyncRange), + definitions.InjectDependencies1(c.Chain)( + definitions.DynamicValue1(c.InSyncRange, func(chain *Chain) reactive.DerivedVariable[bool] { + return reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { + return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment + }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment) + }), ) - WithDependencies2(c.Parent, c.Chain, - DynamicValueWith2Dependencies(c.warpSync, c.WarpSync), + definitions.With2Dependencies(c.Parent, c.Chain)( + definitions.DynamicValue2(c.WarpSync, func(parent *Commitment, chain *Chain) reactive.DerivedVariable[bool] { + return reactive.NewDerivedVariable4(func(spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { + return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified + }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified) + }), ) c.Parent.OnUpdateOnce(func(_, parent *Commitment) { @@ -135,54 +174,6 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment return c } -func (c *Commitment) isAboveLatestVerifiedCommitment(parent *Commitment) reactive.DerivedVariable[bool] { - return reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { - return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) - }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified) -} - -func (c *Commitment) inSyncRange(chain *Chain) reactive.DerivedVariable[bool] { - return reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { - return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment - }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment) -} - -func (c *Commitment) chain(parent *Commitment) reactive.DerivedVariable[*Chain] { - return reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { - if spawnedChain != nil { - return spawnedChain - } - - return parentChain - }, parent.Chain, c.SpawnedChain) -} - -func (c *Commitment) cumulativeAttestedWeight(parent *Commitment) reactive.DerivedVariable[uint64] { - return reactive.NewDerivedVariable3(func(isAttested bool, parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { - if !isAttested { - return 0 - } - - return parentCumulativeAttestedWeight + attestedWeight - }, c.IsAttested, parent.CumulativeAttestedWeight, c.AttestedWeight) -} - -func (c *Commitment) isSolid(parent *Commitment) reactive.DerivedVariable[bool] { - return reactive.NewDerivedVariable2(func(isRoot, parentIsSolid bool) bool { - return isRoot || parentIsSolid - }, c.IsRoot, parent.IsSolid) -} - -func (c *Commitment) warpSync(parent *Commitment, chain *Chain) reactive.DerivedVariable[bool] { - return reactive.NewDerivedVariable4(func(spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { - return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified - }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified) -} - -func (c *Commitment) weight(parent *Commitment) uint64 { - return c.CumulativeWeight() - parent.CumulativeWeight() -} - func (c *Commitment) registerChild(child *Commitment) { if c.Children.Add(child) { c.MainChild.Compute(func(currentMainChild *Commitment) *Commitment { @@ -252,75 +243,3 @@ func (c *Commitment) promote(targetChain *Chain) { } } } - -func WithDependency[S comparable](source reactive.Variable[S], dependencyReceiver ...func(S) func()) (unsubscribe func()) { - unsubscribeAll := make([]func(), 0) - - return source.OnUpdateWithContext(func(_, parent S, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { - if parent == *new(S) { - return - } - - unsubscribeOnParentUpdate(func() (unsubscribe func()) { - for _, dependency := range dependencyReceiver { - if unsubscribeDependency := dependency(parent); unsubscribeDependency != nil { - unsubscribeAll = append(unsubscribeAll, unsubscribeDependency) - } - } - - return lo.Batch(unsubscribeAll...) - }) - }) -} - -func WithDependencies2[S1, S2 comparable](source1 reactive.Variable[S1], source2 reactive.Variable[S2], dependencyReceiver ...func(S1, S2) func()) (unsubscribe func()) { - unsubscribeAll := make([]func(), 0) - - return source1.OnUpdateWithContext(func(_, source1 S1, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { - if source1 == *new(S1) { - return - } - - unsubscribeOnParentUpdate(func() (unsubscribe func()) { - return source2.OnUpdateWithContext(func(_, source2 S2, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { - if source2 == *new(S2) { - return - } - - unsubscribeOnParentUpdate(func() (unsubscribe func()) { - for _, dependency := range dependencyReceiver { - if unsubscribeDependency := dependency(source1, source2); unsubscribeDependency != nil { - unsubscribeAll = append(unsubscribeAll, unsubscribeDependency) - } - } - - return lo.Batch(unsubscribeAll...) - }) - }) - }) - }) -} - -func DynamicValueWithDependency[T, S comparable](definition func(S) reactive.DerivedVariable[T], target reactive.Variable[T]) func(parent S) func() { - return func(parent S) func() { - derivedVariable := definition(parent) - - return lo.Batch(target.InheritFrom(derivedVariable), derivedVariable.Unsubscribe) - } -} - -func DynamicValueWith2Dependencies[T, S1, S2 comparable](definition func(S1, S2) reactive.DerivedVariable[T], target reactive.Variable[T]) func(S1, S2) func() { - return func(source1 S1, source2 S2) func() { - derivedVariable := definition(source1, source2) - - return lo.Batch(target.InheritFrom(derivedVariable), derivedVariable.Unsubscribe) - } -} - -func DefinitionWithStaticValue[T, S comparable](definition func(S) T, target reactive.Variable[T]) func(parent S) func() { - return func(parent S) func() { - target.Set(definition(parent)) - - return nil - } -} From 03605c0639ce563f96fcce9e765cb53fc99b7c03 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 31 Oct 2023 22:34:21 +0100 Subject: [PATCH 204/356] Feat: cleaned more code --- pkg/core/definitions/define.go | 2 +- pkg/protocol/commitment.go | 26 +++++++++----------------- 2 files changed, 10 insertions(+), 18 deletions(-) diff --git a/pkg/core/definitions/define.go b/pkg/core/definitions/define.go index 34fbd2a0d..5352f4f60 100644 --- a/pkg/core/definitions/define.go +++ b/pkg/core/definitions/define.go @@ -35,7 +35,7 @@ func DynamicValue1[T, S comparable](target reactive.Variable[T], definition func } } -func With2Dependencies[S1, S2 comparable](source1 reactive.Variable[S1], source2 reactive.Variable[S2]) func(dependencyReceivers ...func(S1, S2) func()) (unsubscribe func()) { +func InjectDependencies2[S1, S2 comparable](source1 reactive.Variable[S1], source2 reactive.Variable[S2]) func(dependencyReceivers ...func(S1, S2) func()) (unsubscribe func()) { return func(dependencyReceivers ...func(S1, S2) func()) func() { return source1.OnUpdateWithContext(func(_, source1 S1, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { if source1 == *new(S1) { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 217b164fd..0b1b2cae8 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -32,8 +32,7 @@ type Commitment struct { IsAboveLatestVerifiedCommitment reactive.Variable[bool] InSyncRange reactive.Variable[bool] - protocol *Protocol - isDirectlyAboveLatestAttestedCommitment reactive.Variable[bool] + protocol *Protocol *model.Commitment log.Logger @@ -62,8 +61,7 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), InSyncRange: reactive.NewVariable[bool](), - protocol: protocol, - isDirectlyAboveLatestAttestedCommitment: reactive.NewVariable[bool](), + protocol: protocol, } definitions.InjectDependencies1(c.Parent)( @@ -112,12 +110,18 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment }), ) - definitions.With2Dependencies(c.Parent, c.Chain)( + definitions.InjectDependencies2(c.Parent, c.Chain)( definitions.DynamicValue2(c.WarpSync, func(parent *Commitment, chain *Chain) reactive.DerivedVariable[bool] { return reactive.NewDerivedVariable4(func(spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified) }), + + definitions.DynamicValue2(c.RequestAttestations, func(parent *Commitment, chain *Chain) reactive.DerivedVariable[bool] { + return reactive.NewDerivedVariable3(func(verifyAttestations, parentIsAttested, isAttested bool) bool { + return verifyAttestations && parentIsAttested && !isAttested + }, chain.VerifyAttestations, parent.IsAttested, c.IsAttested) + }), ) c.Parent.OnUpdateOnce(func(_, parent *Commitment) { @@ -126,10 +130,6 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment } parent.registerChild(c) - - c.isDirectlyAboveLatestAttestedCommitment.InheritFrom(reactive.NewDerivedVariable2(func(parentIsAttested, isAttested bool) bool { - return parentIsAttested && !isAttested - }, parent.IsAttested, c.IsAttested)) }) c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { @@ -138,18 +138,10 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment } withinContext(func() (unsubscribe func()) { - requestAttestations := reactive.NewDerivedVariable2(func(verifyAttestations, isDirectlyAboveLatestAttestedCommitment bool) bool { - return verifyAttestations && isDirectlyAboveLatestAttestedCommitment - }, chain.VerifyAttestations, c.isDirectlyAboveLatestAttestedCommitment) - - c.RequestAttestations.InheritFrom(requestAttestations) - return lo.Batch( chain.registerCommitment(c), c.Engine.InheritFrom(chain.Engine), - - requestAttestations.Unsubscribe, ) }) }) From 070b9461e11e3f4ab5c4f05ca7535edc61f7576f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 1 Nov 2023 11:34:56 +0100 Subject: [PATCH 205/356] Refactor: wip wip wip --- pkg/core/{definitions => define}/define.go | 18 +++-- pkg/protocol/commitment.go | 86 ++++++++++------------ pkg/tests/accounts_test.go | 10 ++- 3 files changed, 58 insertions(+), 56 deletions(-) rename pkg/core/{definitions => define}/define.go (76%) diff --git a/pkg/core/definitions/define.go b/pkg/core/define/define.go similarity index 76% rename from pkg/core/definitions/define.go rename to pkg/core/define/define.go index 5352f4f60..6ecbfc07f 100644 --- a/pkg/core/definitions/define.go +++ b/pkg/core/define/define.go @@ -1,11 +1,11 @@ -package definitions +package define import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" ) -func InjectDependencies1[S comparable](source reactive.Variable[S]) func(dependencyReceiver ...func(S) func()) (unsubscribe func()) { +func With1Dependency[S comparable](source reactive.Variable[S]) func(dependencyReceiver ...func(S) func()) (unsubscribe func()) { return func(dependencyReceiver ...func(S) func()) (unsubscribe func()) { return source.OnUpdateWithContext(func(_, parent S, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { if parent == *new(S) { @@ -27,15 +27,21 @@ func InjectDependencies1[S comparable](source reactive.Variable[S]) func(depende } } -func DynamicValue1[T, S comparable](target reactive.Variable[T], definition func(S) reactive.DerivedVariable[T]) func(parent S) func() { - return func(parent S) func() { - derivedVariable := definition(parent) +func DynamicValue1[T, S comparable](target reactive.Variable[T], definition func(S) reactive.DerivedVariable[T]) func(dependency S) func() { + return func(dependency S) func() { + derivedVariable := definition(dependency) return lo.Batch(target.InheritFrom(derivedVariable), derivedVariable.Unsubscribe) } } -func InjectDependencies2[S1, S2 comparable](source1 reactive.Variable[S1], source2 reactive.Variable[S2]) func(dependencyReceivers ...func(S1, S2) func()) (unsubscribe func()) { +func InheritedValue[T, S comparable](target reactive.Variable[T], definition func(S) reactive.ReadableVariable[T]) func(dependency S) func() { + return func(dependency S) func() { + return target.InheritFrom(definition(dependency)) + } +} + +func With2Dependencies[S1, S2 comparable](source1 reactive.Variable[S1], source2 reactive.Variable[S2]) func(dependencyReceivers ...func(S1, S2) func()) (unsubscribe func()) { return func(dependencyReceivers ...func(S1, S2) func()) func() { return source1.OnUpdateWithContext(func(_, source1 S1, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { if source1 == *new(S1) { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 0b1b2cae8..624ec8b2a 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -4,9 +4,8 @@ import ( "fmt" "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/iota-core/pkg/core/definitions" + "github.com/iotaledger/iota-core/pkg/core/define" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" ) @@ -24,17 +23,18 @@ type Commitment struct { Weight reactive.Variable[uint64] AttestedWeight reactive.Variable[uint64] CumulativeAttestedWeight reactive.Variable[uint64] + IsRoot reactive.Event IsSolid reactive.Event IsAttested reactive.Event IsVerified reactive.Event - IsRoot reactive.Event - IsEvicted reactive.Event IsAboveLatestVerifiedCommitment reactive.Variable[bool] InSyncRange reactive.Variable[bool] + IsEvicted reactive.Event protocol *Protocol *model.Commitment + log.Logger } @@ -42,8 +42,8 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c := &Commitment{ Commitment: commitment, Parent: reactive.NewVariable[*Commitment](), - MainChild: reactive.NewVariable[*Commitment](), Children: reactive.NewSet[*Commitment](), + MainChild: reactive.NewVariable[*Commitment](), SpawnedChain: reactive.NewVariable[*Chain](), Chain: reactive.NewVariable[*Chain](), Engine: reactive.NewVariable[*engine.Engine](), @@ -64,8 +64,12 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment protocol: protocol, } - definitions.InjectDependencies1(c.Parent)( - definitions.DynamicValue1[*Chain](c.Chain, func(parent *Commitment) reactive.DerivedVariable[*Chain] { + c.IsSolid.InheritFrom(c.IsRoot) + c.IsAttested.InheritFrom(c.IsRoot) + c.IsVerified.InheritFrom(c.IsRoot) + + define.With1Dependency(c.Parent)( + define.DynamicValue1[*Chain](c.Chain, func(parent *Commitment) reactive.DerivedVariable[*Chain] { return reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { if spawnedChain != nil { return spawnedChain @@ -75,49 +79,53 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment }, parent.Chain, c.SpawnedChain) }), - definitions.DynamicValue1[bool](c.IsSolid, func(parent *Commitment) reactive.DerivedVariable[bool] { - return reactive.NewDerivedVariable2(func(isRoot, parentIsSolid bool) bool { - return isRoot || parentIsSolid - }, c.IsRoot, parent.IsSolid) + define.DynamicValue1[bool](c.IsSolid, func(parent *Commitment) reactive.DerivedVariable[bool] { + return reactive.NewDerivedVariable(func(parentIsSolid bool) bool { + return parentIsSolid + }, parent.IsSolid) }), - definitions.DynamicValue1[uint64](c.CumulativeAttestedWeight, func(parent *Commitment) reactive.DerivedVariable[uint64] { - return reactive.NewDerivedVariable3(func(isAttested bool, parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { - if !isAttested { - return 0 - } - + define.DynamicValue1[uint64](c.CumulativeAttestedWeight, func(parent *Commitment) reactive.DerivedVariable[uint64] { + return reactive.NewDerivedVariable2(func(parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { return parentCumulativeAttestedWeight + attestedWeight - }, c.IsAttested, parent.CumulativeAttestedWeight, c.AttestedWeight) + }, parent.CumulativeAttestedWeight, c.AttestedWeight) }), - definitions.DynamicValue1[bool](c.IsAboveLatestVerifiedCommitment, func(parent *Commitment) reactive.DerivedVariable[bool] { + define.DynamicValue1[bool](c.IsAboveLatestVerifiedCommitment, func(parent *Commitment) reactive.DerivedVariable[bool] { return reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified) }), - definitions.StaticValue1[uint64](c.Weight, func(parent *Commitment) uint64 { + define.StaticValue1[uint64](c.Weight, func(parent *Commitment) uint64 { return c.CumulativeWeight() - parent.CumulativeWeight() }), ) - definitions.InjectDependencies1(c.Chain)( - definitions.DynamicValue1(c.InSyncRange, func(chain *Chain) reactive.DerivedVariable[bool] { + define.With1Dependency(c.Chain)( + define.DynamicValue1(c.InSyncRange, func(chain *Chain) reactive.DerivedVariable[bool] { return reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment) }), + + define.InheritedValue(c.Engine, func(chain *Chain) reactive.ReadableVariable[*engine.Engine] { + return chain.Engine + }), + + func(chain *Chain) func() { + return chain.registerCommitment(c) + }, ) - definitions.InjectDependencies2(c.Parent, c.Chain)( - definitions.DynamicValue2(c.WarpSync, func(parent *Commitment, chain *Chain) reactive.DerivedVariable[bool] { + define.With2Dependencies(c.Parent, c.Chain)( + define.DynamicValue2(c.WarpSync, func(parent *Commitment, chain *Chain) reactive.DerivedVariable[bool] { return reactive.NewDerivedVariable4(func(spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified) }), - definitions.DynamicValue2(c.RequestAttestations, func(parent *Commitment, chain *Chain) reactive.DerivedVariable[bool] { + define.DynamicValue2(c.RequestAttestations, func(parent *Commitment, chain *Chain) reactive.DerivedVariable[bool] { return reactive.NewDerivedVariable3(func(verifyAttestations, parentIsAttested, isAttested bool) bool { return verifyAttestations && parentIsAttested && !isAttested }, chain.VerifyAttestations, parent.IsAttested, c.IsAttested) @@ -125,37 +133,17 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment ) c.Parent.OnUpdateOnce(func(_, parent *Commitment) { - if parent == nil { - return - } - - parent.registerChild(c) - }) - - c.Chain.OnUpdateWithContext(func(_, chain *Chain, withinContext func(subscriptionFactory func() (unsubscribe func()))) { - if chain == nil { - return + if parent != nil { + parent.registerChild(c) } - - withinContext(func() (unsubscribe func()) { - return lo.Batch( - chain.registerCommitment(c), - - c.Engine.InheritFrom(chain.Engine), - ) - }) - }) - - c.IsRoot.OnTrigger(func() { - c.IsAttested.Set(true) - c.IsVerified.Set(true) - c.IsSolid.Set(true) }) c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { + c.Parent.LogUpdates(entityLogger, log.LevelTrace, "Parent", (*Commitment).LogName) c.IsSolid.LogUpdates(entityLogger, log.LevelTrace, "IsSolid") c.Chain.LogUpdates(entityLogger, log.LevelTrace, "Chain", (*Chain).LogName) c.IsVerified.LogUpdates(entityLogger, log.LevelTrace, "IsVerified") + c.IsAttested.LogUpdates(entityLogger, log.LevelTrace, "IsAttested") c.InSyncRange.LogUpdates(entityLogger, log.LevelTrace, "InSyncRange") c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") diff --git a/pkg/tests/accounts_test.go b/pkg/tests/accounts_test.go index 5b07bf54e..0e8bff975 100644 --- a/pkg/tests/accounts_test.go +++ b/pkg/tests/accounts_test.go @@ -4,6 +4,7 @@ import ( "testing" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol" @@ -17,6 +18,8 @@ import ( // TODO: implement tests for staking and delegation transitions that cover edge cases - part of hardening phase. func Test_TransitionAccount(t *testing.T) { + //for { + // func() { oldGenesisOutputKey := utils.RandBlockIssuerKey() ts := testsuite.NewTestSuite(t, testsuite.WithAccounts(snapshotcreator.AccountDetails{ // Nil address will be replaced with the address generated from genesis seed. @@ -52,10 +55,13 @@ func Test_TransitionAccount(t *testing.T) { defer ts.Shutdown() node1 := ts.AddValidatorNode("node1") - _ = ts.AddNode("node2") + node2 := ts.AddNode("node2") + blockIssuer := ts.AddBasicBlockIssuer("default", iotago.MaxBlockIssuanceCredits/2) ts.Run(true, map[string][]options.Option[protocol.Protocol]{}) + node1.Protocol.SetLogLevel(log.LevelTrace) + node2.Protocol.SetLogLevel(log.LevelTrace) genesisAccount := ts.AccountOutput("Genesis:1") genesisAccountOutput := genesisAccount.Output().(*iotago.AccountOutput) @@ -392,6 +398,8 @@ func Test_TransitionAccount(t *testing.T) { }, ts.Nodes()...) ts.Wait(ts.Nodes()...) + // }() + //} } /* From 5d59b3f7a7beeb46a16fa8c6a8596a23a8a62e54 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 1 Nov 2023 11:52:11 +0100 Subject: [PATCH 206/356] Refactor: add more outputs to detect failure in CI --- pkg/protocol/commitment.go | 39 +++++++++++---------- pkg/tests/protocol_engine_switching_test.go | 16 ++++----- 2 files changed, 28 insertions(+), 27 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 624ec8b2a..2ef55767e 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -64,6 +64,19 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment protocol: protocol, } + c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { + c.Parent.LogUpdates(entityLogger, log.LevelTrace, "Parent", (*Commitment).LogName) + c.IsSolid.LogUpdates(entityLogger, log.LevelTrace, "IsSolid") + c.Chain.LogUpdates(entityLogger, log.LevelTrace, "Chain", (*Chain).LogName) + c.IsVerified.LogUpdates(entityLogger, log.LevelTrace, "IsVerified") + c.IsAttested.LogUpdates(entityLogger, log.LevelTrace, "IsAttested") + c.InSyncRange.LogUpdates(entityLogger, log.LevelTrace, "InSyncRange") + c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") + c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") + c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") + c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") + }) + c.IsSolid.InheritFrom(c.IsRoot) c.IsAttested.InheritFrom(c.IsRoot) c.IsVerified.InheritFrom(c.IsRoot) @@ -100,6 +113,13 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment define.StaticValue1[uint64](c.Weight, func(parent *Commitment) uint64 { return c.CumulativeWeight() - parent.CumulativeWeight() }), + + func(parent *Commitment) func() { + parent.registerChild(c) + + // TODO: MAKE UNRGISTER WORK + return nil + }, ) define.With1Dependency(c.Chain)( @@ -132,25 +152,6 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment }), ) - c.Parent.OnUpdateOnce(func(_, parent *Commitment) { - if parent != nil { - parent.registerChild(c) - } - }) - - c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { - c.Parent.LogUpdates(entityLogger, log.LevelTrace, "Parent", (*Commitment).LogName) - c.IsSolid.LogUpdates(entityLogger, log.LevelTrace, "IsSolid") - c.Chain.LogUpdates(entityLogger, log.LevelTrace, "Chain", (*Chain).LogName) - c.IsVerified.LogUpdates(entityLogger, log.LevelTrace, "IsVerified") - c.IsAttested.LogUpdates(entityLogger, log.LevelTrace, "IsAttested") - c.InSyncRange.LogUpdates(entityLogger, log.LevelTrace, "InSyncRange") - c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") - c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") - c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") - c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") - }) - return c } diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 70adb8d63..5bdeac30f 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -108,15 +108,15 @@ func TestProtocol_EngineSwitching(t *testing.T) { ts.Run(false, nodeOptions) - node0.Protocol.SetLogLevel(log.LevelError) - node1.Protocol.SetLogLevel(log.LevelError) - node2.Protocol.SetLogLevel(log.LevelError) - node3.Protocol.SetLogLevel(log.LevelError) - node4.Protocol.SetLogLevel(log.LevelError) - node5.Protocol.SetLogLevel(log.LevelError) + node0.Protocol.SetLogLevel(log.LevelDebug) + node1.Protocol.SetLogLevel(log.LevelDebug) + node2.Protocol.SetLogLevel(log.LevelDebug) + node3.Protocol.SetLogLevel(log.LevelDebug) + node4.Protocol.SetLogLevel(log.LevelDebug) + node5.Protocol.SetLogLevel(log.LevelDebug) node6.Protocol.SetLogLevel(log.LevelDebug) - node7.Protocol.SetLogLevel(log.LevelError) - node8.Protocol.SetLogLevel(log.LevelError) + node7.Protocol.SetLogLevel(log.LevelDebug) + node8.Protocol.SetLogLevel(log.LevelDebug) expectedCommittee := []iotago.AccountID{ node0.Validator.AccountID, From 62a9f147e854bf93a35b8153b0c4a24459eba475 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 1 Nov 2023 12:17:27 +0100 Subject: [PATCH 207/356] Feat: more logs --- pkg/protocol/protocol_blocks.go | 4 ++-- pkg/tests/protocol_engine_switching_test.go | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 8bdab8c79..aa737cfcd 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -73,7 +73,7 @@ func (b *BlocksProtocol) SendRequest(blockID iotago.BlockID) { b.workerPool.Submit(func() { b.protocol.Network.RequestBlock(blockID) - b.protocol.LogTrace("request", "blockID", blockID) + b.LogTrace("request", "blockID", blockID) }) } @@ -81,7 +81,7 @@ func (b *BlocksProtocol) SendResponse(block *model.Block) { b.workerPool.Submit(func() { b.protocol.Network.SendBlock(block) - b.protocol.LogTrace("sent block", "blockID", block.ID()) + b.LogTrace("sent", "blockID", block.ID()) }) } diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 5bdeac30f..d9538571a 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -108,15 +108,15 @@ func TestProtocol_EngineSwitching(t *testing.T) { ts.Run(false, nodeOptions) - node0.Protocol.SetLogLevel(log.LevelDebug) - node1.Protocol.SetLogLevel(log.LevelDebug) - node2.Protocol.SetLogLevel(log.LevelDebug) - node3.Protocol.SetLogLevel(log.LevelDebug) - node4.Protocol.SetLogLevel(log.LevelDebug) - node5.Protocol.SetLogLevel(log.LevelDebug) - node6.Protocol.SetLogLevel(log.LevelDebug) - node7.Protocol.SetLogLevel(log.LevelDebug) - node8.Protocol.SetLogLevel(log.LevelDebug) + node0.Protocol.SetLogLevel(log.LevelTrace) + node1.Protocol.SetLogLevel(log.LevelTrace) + node2.Protocol.SetLogLevel(log.LevelTrace) + node3.Protocol.SetLogLevel(log.LevelTrace) + node4.Protocol.SetLogLevel(log.LevelTrace) + node5.Protocol.SetLogLevel(log.LevelTrace) + node6.Protocol.SetLogLevel(log.LevelTrace) + node7.Protocol.SetLogLevel(log.LevelTrace) + node8.Protocol.SetLogLevel(log.LevelTrace) expectedCommittee := []iotago.AccountID{ node0.Validator.AccountID, From aac43893188e9f343df36477ecd3eeb41888d375 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 1 Nov 2023 12:34:36 +0100 Subject: [PATCH 208/356] Feat: add more logging --- pkg/testsuite/mock/node.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 8ab489984..3a8cfb416 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -150,6 +150,8 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto func (n *Node) hookEvents() { n.Protocol.HeaviestAttestedChain.OnUpdate(func(prevHeaviestAttestedChain, heaviestAttestedChain *protocol.Chain) { if prevHeaviestAttestedChain != nil { + n.Protocol.LogError("WHAT HeaviestAttestedChain", "from", prevHeaviestAttestedChain.LogName(), "to", heaviestAttestedChain.LogName()) + n.forkDetectedCount.Add(1) heaviestAttestedChain.SpawnedEngine.OnUpdate(func(prevEngine, newEngine *engine.Engine) { From 281d2f148670dd08c575c02cc5735ab5ddf90f13 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 2 Nov 2023 01:19:58 +0100 Subject: [PATCH 209/356] Fix: fixed some logic --- pkg/core/define/define.go | 3 ++- pkg/protocol/chain.go | 12 ++++++++++-- pkg/tests/loss_of_acceptance_test.go | 6 ++++-- 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/pkg/core/define/define.go b/pkg/core/define/define.go index 6ecbfc07f..8789db636 100644 --- a/pkg/core/define/define.go +++ b/pkg/core/define/define.go @@ -30,8 +30,9 @@ func With1Dependency[S comparable](source reactive.Variable[S]) func(dependencyR func DynamicValue1[T, S comparable](target reactive.Variable[T], definition func(S) reactive.DerivedVariable[T]) func(dependency S) func() { return func(dependency S) func() { derivedVariable := definition(dependency) + target.InheritFrom(derivedVariable) - return lo.Batch(target.InheritFrom(derivedVariable), derivedVariable.Unsubscribe) + return derivedVariable.Unsubscribe } } diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index db2362e4f..88fc8fda8 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -266,7 +266,15 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { } func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { - c.commitments.Set(commitment.Slot(), commitment) + if c.commitments.Compute(commitment.Slot(), func(currentCommitment *Commitment, exists bool) *Commitment { + if !exists { + return commitment + } + + return currentCommitment + }) != commitment { + return func() {} + } // maxCommitment returns the Commitment object with the higher slot. maxCommitment := func(other *Commitment) *Commitment { @@ -292,7 +300,7 @@ func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { c.commitments.Delete(commitment.Slot()) resetToParent := func(latestCommitment *Commitment) *Commitment { - if latestCommitment == nil || commitment.Slot() > latestCommitment.Slot() { + if latestCommitment == nil || commitment.Slot() < latestCommitment.Slot() { return latestCommitment } diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index 7ad7ce08f..ccc788eed 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -40,8 +40,8 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { ts.Run(true, nil) - node0.Protocol.SetLogLevel(log.LevelError) - node1.Protocol.SetLogLevel(log.LevelError) + node0.Protocol.SetLogLevel(log.LevelTrace) + node1.Protocol.SetLogLevel(log.LevelTrace) node2.Protocol.SetLogLevel(log.LevelTrace) // Create snapshot to use later. @@ -95,6 +95,8 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { { ts.IssueBlocksAtSlots("", []iotago.SlotIndex{58, 59}, 3, "57.2", ts.Nodes("node0", "node1", "node2"), true, nil) + time.Sleep(5 * time.Second) + ts.AssertEqualStoredCommitmentAtIndex(57, ts.Nodes()...) ts.AssertLatestCommitmentSlotIndex(57, ts.Nodes()...) ts.AssertBlocksInCacheAccepted(ts.BlocksWithPrefix("59.0"), true, ts.Nodes()...) From 69b9d883629464227a9526199c371dfa24d482c4 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 2 Nov 2023 04:57:13 +0100 Subject: [PATCH 210/356] Refactor: codegasm --- pkg/core/{define => rx}/define.go | 18 +++- pkg/protocol/commitment.go | 123 ++++++++++++-------------- pkg/protocol/protocol_attestations.go | 2 +- pkg/protocol/protocol_warp_sync.go | 4 +- 4 files changed, 75 insertions(+), 72 deletions(-) rename pkg/core/{define => rx}/define.go (83%) diff --git a/pkg/core/define/define.go b/pkg/core/rx/define.go similarity index 83% rename from pkg/core/define/define.go rename to pkg/core/rx/define.go index 8789db636..374dbc3fd 100644 --- a/pkg/core/define/define.go +++ b/pkg/core/rx/define.go @@ -1,10 +1,20 @@ -package define +package rx import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" ) +func WithNonEmptyValue[S comparable](source reactive.Variable[S], dependencyReceiver func(S) func()) (unsubscribe func()) { + return source.OnUpdateWithContext(func(_, parent S, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { + if parent != *new(S) { + unsubscribeOnParentUpdate(func() (unsubscribe func()) { + return dependencyReceiver(parent) + }) + } + }) +} + func With1Dependency[S comparable](source reactive.Variable[S]) func(dependencyReceiver ...func(S) func()) (unsubscribe func()) { return func(dependencyReceiver ...func(S) func()) (unsubscribe func()) { return source.OnUpdateWithContext(func(_, parent S, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { @@ -27,6 +37,12 @@ func With1Dependency[S comparable](source reactive.Variable[S]) func(dependencyR } } +func AssignValue[T comparable](target reactive.Variable[T], derivedVariable reactive.DerivedVariable[T]) func() { + target.InheritFrom(derivedVariable) + + return derivedVariable.Unsubscribe +} + func DynamicValue1[T, S comparable](target reactive.Variable[T], definition func(S) reactive.DerivedVariable[T]) func(dependency S) func() { return func(dependency S) func() { derivedVariable := definition(dependency) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 2ef55767e..0f5291ad2 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -4,8 +4,9 @@ import ( "fmt" "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/iota-core/pkg/core/define" + "github.com/iotaledger/iota-core/pkg/core/rx" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" ) @@ -16,7 +17,6 @@ type Commitment struct { MainChild reactive.Variable[*Commitment] SpawnedChain reactive.Variable[*Chain] Chain reactive.Variable[*Chain] - Engine reactive.Variable[*engine.Engine] RequestAttestations reactive.Variable[bool] WarpSync reactive.Variable[bool] RequestedBlocksReceived reactive.Variable[bool] @@ -46,7 +46,6 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment MainChild: reactive.NewVariable[*Commitment](), SpawnedChain: reactive.NewVariable[*Chain](), Chain: reactive.NewVariable[*Chain](), - Engine: reactive.NewVariable[*engine.Engine](), RequestAttestations: reactive.NewVariable[bool](), WarpSync: reactive.NewVariable[bool](), RequestedBlocksReceived: reactive.NewVariable[bool](), @@ -77,84 +76,72 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") }) - c.IsSolid.InheritFrom(c.IsRoot) - c.IsAttested.InheritFrom(c.IsRoot) - c.IsVerified.InheritFrom(c.IsRoot) + unsubscribe := lo.Batch( + c.IsSolid.InheritFrom(c.IsRoot), + c.IsAttested.InheritFrom(c.IsRoot), + c.IsVerified.InheritFrom(c.IsRoot), - define.With1Dependency(c.Parent)( - define.DynamicValue1[*Chain](c.Chain, func(parent *Commitment) reactive.DerivedVariable[*Chain] { - return reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { - if spawnedChain != nil { - return spawnedChain - } - - return parentChain - }, parent.Chain, c.SpawnedChain) - }), - - define.DynamicValue1[bool](c.IsSolid, func(parent *Commitment) reactive.DerivedVariable[bool] { - return reactive.NewDerivedVariable(func(parentIsSolid bool) bool { - return parentIsSolid - }, parent.IsSolid) - }), - - define.DynamicValue1[uint64](c.CumulativeAttestedWeight, func(parent *Commitment) reactive.DerivedVariable[uint64] { - return reactive.NewDerivedVariable2(func(parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { - return parentCumulativeAttestedWeight + attestedWeight - }, parent.CumulativeAttestedWeight, c.AttestedWeight) - }), - - define.DynamicValue1[bool](c.IsAboveLatestVerifiedCommitment, func(parent *Commitment) reactive.DerivedVariable[bool] { - return reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { - return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) - }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified) - }), - - define.StaticValue1[uint64](c.Weight, func(parent *Commitment) uint64 { - return c.CumulativeWeight() - parent.CumulativeWeight() - }), + rx.WithNonEmptyValue(c.Parent, func(parent *Commitment) func() { + c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) - func(parent *Commitment) func() { parent.registerChild(c) - // TODO: MAKE UNRGISTER WORK - return nil - }, - ) - - define.With1Dependency(c.Chain)( - define.DynamicValue1(c.InSyncRange, func(chain *Chain) reactive.DerivedVariable[bool] { - return reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { - return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment - }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment) - }), + return lo.Batch( + rx.AssignValue[*Chain](c.Chain, reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { + if spawnedChain != nil { + return spawnedChain + } - define.InheritedValue(c.Engine, func(chain *Chain) reactive.ReadableVariable[*engine.Engine] { - return chain.Engine + return parentChain + }, parent.Chain, c.SpawnedChain)), + + rx.AssignValue[bool](c.IsSolid, reactive.NewDerivedVariable(func(parentIsSolid bool) bool { + return parentIsSolid + }, parent.IsSolid)), + + rx.AssignValue[uint64](c.CumulativeAttestedWeight, reactive.NewDerivedVariable2(func(parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { + return parentCumulativeAttestedWeight + attestedWeight + }, parent.CumulativeAttestedWeight, c.AttestedWeight)), + + rx.AssignValue[bool](c.IsAboveLatestVerifiedCommitment, reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { + return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) + }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)), + + rx.WithNonEmptyValue(c.Chain, func(chain *Chain) func() { + return lo.Batch( + rx.AssignValue[bool](c.InSyncRange, reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { + return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment + }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment)), + + rx.AssignValue[bool](c.WarpSync, reactive.NewDerivedVariable4(func(spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { + return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified + }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified)), + + rx.AssignValue[bool](c.RequestAttestations, reactive.NewDerivedVariable3(func(verifyAttestations, parentIsAttested, isAttested bool) bool { + return verifyAttestations && parentIsAttested && !isAttested + }, chain.VerifyAttestations, parent.IsAttested, c.IsAttested)), + ) + }), + ) }), - func(chain *Chain) func() { - return chain.registerCommitment(c) - }, + rx.WithNonEmptyValue(c.Chain, func(chain *Chain) func() { return chain.registerCommitment(c) }), ) - define.With2Dependencies(c.Parent, c.Chain)( - define.DynamicValue2(c.WarpSync, func(parent *Commitment, chain *Chain) reactive.DerivedVariable[bool] { - return reactive.NewDerivedVariable4(func(spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { - return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified - }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified) - }), - - define.DynamicValue2(c.RequestAttestations, func(parent *Commitment, chain *Chain) reactive.DerivedVariable[bool] { - return reactive.NewDerivedVariable3(func(verifyAttestations, parentIsAttested, isAttested bool) bool { - return verifyAttestations && parentIsAttested && !isAttested - }, chain.VerifyAttestations, parent.IsAttested, c.IsAttested) - }), - ) + c.IsEvicted.OnTrigger(unsubscribe) return c } +func (c *Commitment) Engine() *engine.Engine { + chain := c.Chain.Get() + if chain == nil { + return nil + } + + return chain.Engine.Get() +} + func (c *Commitment) registerChild(child *Commitment) { if c.Children.Add(child) { c.MainChild.Compute(func(currentMainChild *Commitment) *Commitment { diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 89ac81ee3..7c52e908e 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -138,7 +138,7 @@ func (a *AttestationsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, return } - engineInstance := commitment.Engine.Get() + engineInstance := commitment.Engine() if engineInstance == nil { a.LogTrace("request for chain without engine", "chain", chain.LogName(), "fromPeer", from) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 96b18b252..879a6cebc 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -93,7 +93,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } - targetEngine := commitment.Engine.Get() + targetEngine := commitment.Engine() if targetEngine == nil { w.LogDebug("failed to get target engine for response", "commitment", commitment.LogName()) @@ -253,7 +253,7 @@ func (w *WarpSyncProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from return } - engineInstance := commitment.Engine.Get() + engineInstance := commitment.Engine() if engineInstance == nil { w.LogTrace("warp-sync request for chain without engine", "chain", chain.LogName(), "fromPeer", from) From a0bde5ccb6c542a0488b3e8bcf91cbe97e2c1d71 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 2 Nov 2023 05:26:36 +0100 Subject: [PATCH 211/356] Refactor: unembedded Engines --- components/dashboard/component.go | 6 +- components/dashboard/explorer_routes.go | 20 ++--- components/dashboard/tip.go | 2 +- components/dashboard/visualizer.go | 2 +- components/dashboard/ws.go | 2 +- components/dashboard_metrics/node.go | 6 +- components/debugapi/blocks.go | 2 +- components/debugapi/component.go | 2 +- components/debugapi/node.go | 4 +- components/debugapi/transactions.go | 2 +- components/inx/server_blocks.go | 4 +- components/inx/server_commitments.go | 2 +- components/inx/server_issuance.go | 4 +- components/inx/server_node.go | 6 +- components/inx/server_utxo.go | 18 ++--- components/metrics/metrics_accounts.go | 4 +- components/metrics/metrics_conflicts.go | 4 +- components/metrics/metrics_db.go | 4 +- components/metrics/metrics_info.go | 2 +- components/metrics/metrics_scheduler.go | 40 +++++----- components/metrics/metrics_slots.go | 14 ++-- components/metrics/metrics_tangle.go | 4 +- components/metricstracker/component.go | 2 +- components/restapi/core/accounts.go | 32 ++++---- components/restapi/core/blocks.go | 12 +-- components/restapi/core/commitment.go | 4 +- components/restapi/core/component.go | 2 +- components/restapi/core/node.go | 6 +- components/restapi/core/transaction.go | 4 +- components/restapi/core/utxo.go | 16 ++-- components/restapi/management/pruning.go | 10 +-- components/restapi/routes.go | 2 +- components/validator/component.go | 2 +- components/validator/issuer.go | 14 ++-- pkg/protocol/api_provider.go | 14 ++-- .../{engine_manager.go => engines.go} | 46 ++++++------ pkg/protocol/protocol.go | 8 +- pkg/protocol/protocol_blocks.go | 2 +- pkg/tests/accounts_test.go | 22 +++--- pkg/tests/booker_test.go | 8 +- pkg/tests/confirmation_state_test.go | 22 +++--- pkg/tests/loss_of_acceptance_test.go | 4 +- pkg/tests/protocol_engine_rollback_test.go | 74 +++++++++---------- pkg/tests/protocol_engine_switching_test.go | 20 ++--- pkg/tests/protocol_startup_test.go | 14 ++-- pkg/tests/upgrade_signaling_test.go | 6 +- pkg/testsuite/accounts.go | 6 +- pkg/testsuite/attestations.go | 2 +- pkg/testsuite/blocks.go | 8 +- pkg/testsuite/chainmanager.go | 2 +- pkg/testsuite/conflicts.go | 2 +- pkg/testsuite/eviction.go | 6 +- pkg/testsuite/mock/acceptance_loss.go | 8 +- pkg/testsuite/mock/blockissuer.go | 24 +++--- pkg/testsuite/mock/node.go | 2 +- pkg/testsuite/storage_accountdiffs.go | 2 +- pkg/testsuite/storage_blocks.go | 4 +- pkg/testsuite/storage_commitments.go | 8 +- pkg/testsuite/storage_prunable.go | 2 +- pkg/testsuite/storage_rootblocks.go | 2 +- pkg/testsuite/storage_settings.go | 24 +++--- pkg/testsuite/sybilprotection.go | 4 +- pkg/testsuite/testsuite_issue_blocks.go | 6 +- pkg/testsuite/tips.go | 2 +- pkg/testsuite/transactions.go | 8 +- pkg/testsuite/transactions_framework.go | 2 +- pkg/testsuite/upgrades.go | 6 +- 67 files changed, 315 insertions(+), 315 deletions(-) rename pkg/protocol/{engine_manager.go => engines.go} (81%) diff --git a/components/dashboard/component.go b/components/dashboard/component.go index 20617cc4b..6fb614105 100644 --- a/components/dashboard/component.go +++ b/components/dashboard/component.go @@ -150,12 +150,12 @@ func currentNodeStatus() *nodestatus { LastPauseGC: m.PauseNs[(m.NumGC+255)%256], } // get TangleTime - cl := deps.Protocol.MainEngine.Get().Clock - syncStatus := deps.Protocol.MainEngine.Get().SyncManager.SyncStatus() + cl := deps.Protocol.Engines.Main.Get().Clock + syncStatus := deps.Protocol.Engines.Main.Get().SyncManager.SyncStatus() status.TangleTime = tangleTime{ Synced: syncStatus.NodeSynced, - Bootstrapped: deps.Protocol.MainEngine.Get().SyncManager.IsBootstrapped(), + Bootstrapped: deps.Protocol.Engines.Main.Get().SyncManager.IsBootstrapped(), AcceptedBlockSlot: int64(syncStatus.LastAcceptedBlockSlot), ConfirmedBlockSlot: int64(syncStatus.LastConfirmedBlockSlot), CommittedSlot: int64(syncStatus.LatestCommitment.Slot()), diff --git a/components/dashboard/explorer_routes.go b/components/dashboard/explorer_routes.go index 29e76199d..692722f71 100644 --- a/components/dashboard/explorer_routes.go +++ b/components/dashboard/explorer_routes.go @@ -79,14 +79,14 @@ func setupExplorerRoutes(routeGroup *echo.Group) { } func findBlock(blockID iotago.BlockID) (explorerBlk *ExplorerBlock, err error) { - block, exists := deps.Protocol.MainEngine.Get().Block(blockID) + block, exists := deps.Protocol.Engines.Main.Get().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.ToHex()) } - cachedBlock, _ := deps.Protocol.MainEngine.Get().BlockCache.Block(blockID) + cachedBlock, _ := deps.Protocol.Engines.Main.Get().BlockCache.Block(blockID) - blockMetadata, err := deps.Protocol.MainEngine.Get().Retainer.BlockMetadata(blockID) + blockMetadata, err := deps.Protocol.Engines.Main.Get().Retainer.BlockMetadata(blockID) if err != nil { return nil, ierrors.Wrapf(err, "block metadata %s", blockID.ToHex()) } @@ -201,12 +201,12 @@ func getTransaction(c echo.Context) error { outputID := iotago.OutputID{} copy(outputID[:], txID[:]) - output, err := deps.Protocol.MainEngine.Get().Ledger.Output(outputID) + output, err := deps.Protocol.Engines.Main.Get().Ledger.Output(outputID) if err != nil { return err } - block, exists := deps.Protocol.MainEngine.Get().Block(output.BlockID()) + block, exists := deps.Protocol.Engines.Main.Get().Block(output.BlockID()) if !exists { return ierrors.Errorf("block not found: %s", output.BlockID().ToHex()) } @@ -228,12 +228,12 @@ func getTransactionMetadata(c echo.Context) error { // Get the first output of that transaction (using index 0) outputID := iotago.OutputID{} copy(outputID[:], txID[:]) - txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.MemPool().TransactionMetadata(txID) + txMetadata, exists := deps.Protocol.Engines.Main.Get().Ledger.MemPool().TransactionMetadata(txID) if !exists { return ierrors.Errorf("tx metadata not found: %s", txID.ToHex()) } - conflicts, _ := deps.Protocol.MainEngine.Get().Ledger.ConflictDAG().ConflictingConflicts(txID) + conflicts, _ := deps.Protocol.Engines.Main.Get().Ledger.ConflictDAG().ConflictingConflicts(txID) return httpserver.JSONResponse(c, http.StatusOK, NewTransactionMetadata(txMetadata, conflicts)) } @@ -244,7 +244,7 @@ func getOutput(c echo.Context) error { return err } - output, err := deps.Protocol.MainEngine.Get().Ledger.Output(outputID) + output, err := deps.Protocol.Engines.Main.Get().Ledger.Output(outputID) if err != nil { return err } @@ -258,12 +258,12 @@ func getSlotDetailsByID(c echo.Context) error { return err } - commitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(commitmentID.Slot()) + commitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(commitmentID.Slot()) if err != nil { return err } - diffs, err := deps.Protocol.MainEngine.Get().Ledger.SlotDiffs(commitmentID.Slot()) + diffs, err := deps.Protocol.Engines.Main.Get().Ledger.SlotDiffs(commitmentID.Slot()) if err != nil { return err } diff --git a/components/dashboard/tip.go b/components/dashboard/tip.go index 18073d4c2..78e124553 100644 --- a/components/dashboard/tip.go +++ b/components/dashboard/tip.go @@ -17,7 +17,7 @@ func setupTipsRoutes(routeGroup *echo.Group) { } func tips() *TipsResponse { - allTips := append(deps.Protocol.MainEngine.Get().TipManager.StrongTips(), deps.Protocol.MainEngine.Get().TipManager.WeakTips()...) + allTips := append(deps.Protocol.Engines.Main.Get().TipManager.StrongTips(), deps.Protocol.Engines.Main.Get().TipManager.WeakTips()...) t := make([]string, len(allTips)) for i, tip := range allTips { diff --git a/components/dashboard/visualizer.go b/components/dashboard/visualizer.go index a29b69e94..31eca650d 100644 --- a/components/dashboard/visualizer.go +++ b/components/dashboard/visualizer.go @@ -55,7 +55,7 @@ func sendVertex(blk *blocks.Block, confirmed bool) { IsTx: isTx, IsTxAccepted: func() bool { if isTx { - txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(signedTransaction.Transaction.ID())) + txMetadata, exists := deps.Protocol.Engines.Main.Get().Ledger.MemPool().TransactionMetadata(lo.PanicOnErr(signedTransaction.Transaction.ID())) if exists { return txMetadata.IsAccepted() } diff --git a/components/dashboard/ws.go b/components/dashboard/ws.go index 2d31869e3..e66e4d2d1 100644 --- a/components/dashboard/ws.go +++ b/components/dashboard/ws.go @@ -50,7 +50,7 @@ func runWebSocketStreams(component *app.Component) { broadcastWsBlock(&wsblk{MsgTypeNodeStatus, currentNodeStatus()}) broadcastWsBlock(&wsblk{MsgTypeNeighborMetric, neighborMetrics()}) broadcastWsBlock(&wsblk{MsgTypeTipsMetric, &tipsInfo{ - TotalTips: len(deps.Protocol.MainEngine.Get().TipManager.StrongTips()) + len(deps.Protocol.MainEngine.Get().TipManager.WeakTips()), + TotalTips: len(deps.Protocol.Engines.Main.Get().TipManager.StrongTips()) + len(deps.Protocol.Engines.Main.Get().TipManager.WeakTips()), }}) case *componentsmetric: broadcastWsBlock(&wsblk{MsgTypeComponentCounterMetric, x}) diff --git a/components/dashboard_metrics/node.go b/components/dashboard_metrics/node.go index 7a6d98658..d4d59776a 100644 --- a/components/dashboard_metrics/node.go +++ b/components/dashboard_metrics/node.go @@ -27,9 +27,9 @@ func nodeInfoExtended() *NodeInfoExtended { func databaseSizesMetrics() (*DatabaseSizesMetric, error) { return &DatabaseSizesMetric{ - Prunable: deps.Protocol.MainEngine.Get().Storage.PrunableDatabaseSize(), - Permanent: deps.Protocol.MainEngine.Get().Storage.PermanentDatabaseSize(), - Total: deps.Protocol.MainEngine.Get().Storage.Size(), + Prunable: deps.Protocol.Engines.Main.Get().Storage.PrunableDatabaseSize(), + Permanent: deps.Protocol.Engines.Main.Get().Storage.PermanentDatabaseSize(), + Total: deps.Protocol.Engines.Main.Get().Storage.Size(), Time: time.Now().Unix(), }, nil } diff --git a/components/debugapi/blocks.go b/components/debugapi/blocks.go index 9a91bb3f7..f9a9dfdd2 100644 --- a/components/debugapi/blocks.go +++ b/components/debugapi/blocks.go @@ -10,7 +10,7 @@ import ( ) func getSlotBlockIDs(index iotago.SlotIndex) (*BlockChangesResponse, error) { - blocksForSlot, err := deps.Protocol.MainEngine.Get().Storage.Blocks(index) + blocksForSlot, err := deps.Protocol.Engines.Main.Get().Storage.Blocks(index) if err != nil { return nil, ierrors.Wrapf(err, "failed to get block storage bucket for slot %d", index) } diff --git a/components/debugapi/component.go b/components/debugapi/component.go index 15fb357cc..bff2f7195 100644 --- a/components/debugapi/component.go +++ b/components/debugapi/component.go @@ -153,7 +153,7 @@ func configure() error { return err } - if block, exists := deps.Protocol.MainEngine.Get().BlockCache.Block(blockID); exists && block.ProtocolBlock() != nil { + if block, exists := deps.Protocol.Engines.Main.Get().BlockCache.Block(blockID); exists && block.ProtocolBlock() != nil { response := BlockMetadataResponseFromBlock(block) return httpserver.JSONResponse(c, http.StatusOK, response) diff --git a/components/debugapi/node.go b/components/debugapi/node.go index 36b13b763..313b52e61 100644 --- a/components/debugapi/node.go +++ b/components/debugapi/node.go @@ -8,8 +8,8 @@ import ( //nolint:unparam // we have no error case right now func validatorsSummary() (*ValidatorsSummaryResponse, error) { - seatManager := deps.Protocol.MainEngine.Get().SybilProtection.SeatManager() - latestSlotIndex := deps.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot() + seatManager := deps.Protocol.Engines.Main.Get().SybilProtection.SeatManager() + latestSlotIndex := deps.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Slot() latestCommittee := seatManager.Committee(latestSlotIndex) validatorSeats := []*Validator{} latestCommittee.Accounts().ForEach(func(id iotago.AccountID, pool *account.Pool) bool { diff --git a/components/debugapi/transactions.go b/components/debugapi/transactions.go index 5c4e72e09..6d215aacf 100644 --- a/components/debugapi/transactions.go +++ b/components/debugapi/transactions.go @@ -17,7 +17,7 @@ func init() { func storeTransactionsPerSlot(scd *notarization.SlotCommittedDetails) error { slot := scd.Commitment.Slot() - stateDiff, err := deps.Protocol.MainEngine.Get().Ledger.MemPool().StateDiff(slot) + stateDiff, err := deps.Protocol.Engines.Main.Get().Ledger.MemPool().StateDiff(slot) if err != nil { return ierrors.Wrapf(err, "failed to retrieve state diff for slot %d", slot) } diff --git a/components/inx/server_blocks.go b/components/inx/server_blocks.go index 362319e92..c82f6fe10 100644 --- a/components/inx/server_blocks.go +++ b/components/inx/server_blocks.go @@ -18,7 +18,7 @@ import ( func (s *Server) ReadBlock(_ context.Context, blockID *inx.BlockId) (*inx.RawBlock, error) { blkID := blockID.Unwrap() - block, exists := deps.Protocol.MainEngine.Get().Block(blkID) // block +1 + block, exists := deps.Protocol.Engines.Main.Get().Block(blkID) // block +1 if !exists { return nil, status.Errorf(codes.NotFound, "block %s not found", blkID.ToHex()) } @@ -148,7 +148,7 @@ func (s *Server) attachBlock(ctx context.Context, block *iotago.ProtocolBlock) ( } func getINXBlockMetadata(blockID iotago.BlockID) (*inx.BlockMetadata, error) { - blockMetadata, err := deps.Protocol.MainEngine.Get().Retainer.BlockMetadata(blockID) + blockMetadata, err := deps.Protocol.Engines.Main.Get().Retainer.BlockMetadata(blockID) if err != nil { return nil, ierrors.Errorf("failed to get BlockMetadata: %v", err) } diff --git a/components/inx/server_commitments.go b/components/inx/server_commitments.go index 9b8aa75f7..6c3030142 100644 --- a/components/inx/server_commitments.go +++ b/components/inx/server_commitments.go @@ -29,7 +29,7 @@ func (s *Server) ReadCommitment(_ context.Context, req *inx.CommitmentRequest) ( commitmentSlot = req.GetCommitmentId().Unwrap().Slot() } - commitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(commitmentSlot) + commitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(commitmentSlot) if err != nil { if ierrors.Is(err, kvstore.ErrKeyNotFound) { return nil, status.Errorf(codes.NotFound, "commitment slot %d not found", req.GetCommitmentSlot()) diff --git a/components/inx/server_issuance.go b/components/inx/server_issuance.go index 652c25a16..50d43f2ae 100644 --- a/components/inx/server_issuance.go +++ b/components/inx/server_issuance.go @@ -12,7 +12,7 @@ import ( ) func (s *Server) RequestTips(_ context.Context, req *inx.TipsRequest) (*inx.TipsResponse, error) { - references := deps.Protocol.MainEngine.Get().TipSelection.SelectTips(int(req.GetCount())) + references := deps.Protocol.Engines.Main.Get().TipSelection.SelectTips(int(req.GetCount())) return &inx.TipsResponse{ StrongTips: inx.NewBlockIds(references[iotago.StrongParentType]), @@ -30,7 +30,7 @@ func (s *Server) ValidatePayload(_ context.Context, payload *inx.RawPayload) (*i switch typedPayload := blockPayload.(type) { case *iotago.SignedTransaction: - memPool := deps.Protocol.MainEngine.Get().Ledger.MemPool() + memPool := deps.Protocol.Engines.Main.Get().Ledger.MemPool() inputReferences, inputsErr := memPool.VM().Inputs(typedPayload.Transaction) if inputsErr != nil { diff --git a/components/inx/server_node.go b/components/inx/server_node.go index 33a7feb5f..87f3361b7 100644 --- a/components/inx/server_node.go +++ b/components/inx/server_node.go @@ -16,7 +16,7 @@ func inxNodeStatus(status *syncmanager.SyncStatus) *inx.NodeStatus { // HasPruned is false when a node just started from a snapshot and keeps data of the LastPrunedEpoch, thus still need // to send finalized commitment. if !status.HasPruned || status.LatestFinalizedSlot > deps.Protocol.CommittedAPI().TimeProvider().EpochEnd(status.LastPrunedEpoch) { - finalizedCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(status.LatestFinalizedSlot) + finalizedCommitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(status.LatestFinalizedSlot) if err != nil { return nil } @@ -34,7 +34,7 @@ func inxNodeStatus(status *syncmanager.SyncStatus) *inx.NodeStatus { } func (s *Server) ReadNodeStatus(context.Context, *inx.NoParams) (*inx.NodeStatus, error) { - return inxNodeStatus(deps.Protocol.MainEngine.Get().SyncManager.SyncStatus()), nil + return inxNodeStatus(deps.Protocol.Engines.Main.Get().SyncManager.SyncStatus()), nil } func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_ListenToNodeStatusServer) error { @@ -95,7 +95,7 @@ func (s *Server) ListenToNodeStatus(req *inx.NodeStatusRequest, srv inx.INX_List func (s *Server) ReadNodeConfiguration(context.Context, *inx.NoParams) (*inx.NodeConfiguration, error) { protoParams := make([]*inx.RawProtocolParameters, 0) - provider := deps.Protocol.MainEngine.Get().Storage.Settings().APIProvider() + provider := deps.Protocol.Engines.Main.Get().Storage.Settings().APIProvider() for _, version := range provider.ProtocolEpochVersions() { protocolParams := provider.ProtocolParameters(version.Version) if protocolParams == nil { diff --git a/components/inx/server_utxo.go b/components/inx/server_utxo.go index 595879306..496a8f23e 100644 --- a/components/inx/server_utxo.go +++ b/components/inx/server_utxo.go @@ -17,7 +17,7 @@ import ( ) func NewLedgerOutput(o *utxoledger.Output) (*inx.LedgerOutput, error) { - latestCommitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment() l := &inx.LedgerOutput{ OutputId: inx.NewOutputId(o.OutputID()), @@ -30,7 +30,7 @@ func NewLedgerOutput(o *utxoledger.Output) (*inx.LedgerOutput, error) { includedSlot := o.SlotBooked() if includedSlot <= latestCommitment.Slot() { - includedCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(includedSlot) + includedCommitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(includedSlot) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with slot: %d", includedSlot) } @@ -52,10 +52,10 @@ func NewLedgerSpent(s *utxoledger.Spent) (*inx.LedgerSpent, error) { SlotSpent: uint32(s.SlotSpent()), } - latestCommitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment() spentSlot := s.SlotSpent() if spentSlot <= latestCommitment.Slot() { - spentCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(spentSlot) + spentCommitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(spentSlot) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with slot: %d", spentSlot) } @@ -118,7 +118,7 @@ func NewLedgerUpdateBatchOperationConsumed(spent *utxoledger.Spent) (*inx.Ledger } func (s *Server) ReadOutput(_ context.Context, id *inx.OutputId) (*inx.OutputResponse, error) { - engine := deps.Protocol.MainEngine.Get() + engine := deps.Protocol.Engines.Main.Get() latestCommitment := engine.Storage.Settings().LatestCommitment() @@ -157,7 +157,7 @@ func (s *Server) ReadOutput(_ context.Context, id *inx.OutputId) (*inx.OutputRes } func (s *Server) ReadUnspentOutputs(_ *inx.NoParams, srv inx.INX_ReadUnspentOutputsServer) error { - engine := deps.Protocol.MainEngine.Get() + engine := deps.Protocol.Engines.Main.Get() latestCommitment := engine.Storage.Settings().LatestCommitment() var innerErr error @@ -230,7 +230,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li sendStateDiffsRange := func(startSlot iotago.SlotIndex, endSlot iotago.SlotIndex) error { for currentSlot := startSlot; currentSlot <= endSlot; currentSlot++ { - stateDiff, err := deps.Protocol.MainEngine.Get().Ledger.SlotDiffs(currentSlot) + stateDiff, err := deps.Protocol.Engines.Main.Get().Ledger.SlotDiffs(currentSlot) if err != nil { return status.Errorf(codes.NotFound, "ledger update for slot %d not found", currentSlot) } @@ -252,7 +252,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li return 0, nil } - latestCommitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment() if startSlot > latestCommitment.Slot() { // no need to send previous state diffs @@ -260,7 +260,7 @@ func (s *Server) ListenToLedgerUpdates(req *inx.SlotRangeRequest, srv inx.INX_Li } // Stream all available milestone diffs first - prunedEpoch, hasPruned := deps.Protocol.MainEngine.Get().SyncManager.LastPrunedEpoch() + prunedEpoch, hasPruned := deps.Protocol.Engines.Main.Get().SyncManager.LastPrunedEpoch() if hasPruned && startSlot <= deps.Protocol.CommittedAPI().TimeProvider().EpochEnd(prunedEpoch) { return 0, status.Errorf(codes.InvalidArgument, "given startSlot %d is older than the current pruningSlot %d", startSlot, deps.Protocol.CommittedAPI().TimeProvider().EpochEnd(prunedEpoch)) } diff --git a/components/metrics/metrics_accounts.go b/components/metrics/metrics_accounts.go index 0f7bf1086..a761ca800 100644 --- a/components/metrics/metrics_accounts.go +++ b/components/metrics/metrics_accounts.go @@ -23,7 +23,7 @@ var AccountMetrics = collector.NewCollection(accountNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithInitFunc(func() { deps.Protocol.Events.Engine.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - accountData, exists, _ := deps.Protocol.MainEngine.Get().Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot()) + accountData, exists, _ := deps.Protocol.Engines.Main.Get().Ledger.Account(block.ProtocolBlock().IssuerID, deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment().Slot()) if exists { deps.Collector.Update(accountNamespace, credits, float64(accountData.Credits.Value), accountData.ID.String()) } @@ -34,7 +34,7 @@ var AccountMetrics = collector.NewCollection(accountNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Seats seen as active by the node."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngine.Get().SybilProtection.SeatManager().OnlineCommittee().Size()), nil + return float64(deps.Protocol.Engines.Main.Get().SybilProtection.SeatManager().OnlineCommittee().Size()), nil }), )), ) diff --git a/components/metrics/metrics_conflicts.go b/components/metrics/metrics_conflicts.go index 22baf4cd3..8b8bcda64 100644 --- a/components/metrics/metrics_conflicts.go +++ b/components/metrics/metrics_conflicts.go @@ -22,9 +22,9 @@ var ConflictMetrics = collector.NewCollection(conflictNamespace, collector.WithHelp("Time since transaction issuance to the conflict acceptance"), collector.WithInitFunc(func() { deps.Protocol.Events.Engine.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.MemPool().TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.Engines.Main.Get().Ledger.MemPool().TransactionMetadata(conflictID); exists { firstAttachmentID := txMetadata.EarliestIncludedAttachment() - if block, blockExists := deps.Protocol.MainEngine.Get().BlockFromCache(firstAttachmentID); blockExists { + if block, blockExists := deps.Protocol.Engines.Main.Get().BlockFromCache(firstAttachmentID); blockExists { timeSinceIssuance := time.Since(block.IssuingTime()).Milliseconds() timeIssuanceSeconds := float64(timeSinceIssuance) / 1000 deps.Collector.Update(conflictNamespace, resolutionTime, timeIssuanceSeconds) diff --git a/components/metrics/metrics_db.go b/components/metrics/metrics_db.go index 65260a2ad..2d2987868 100644 --- a/components/metrics/metrics_db.go +++ b/components/metrics/metrics_db.go @@ -17,14 +17,14 @@ var DBMetrics = collector.NewCollection(dbNamespace, collector.WithType(collector.Gauge), collector.WithHelp("DB size in bytes for permanent storage."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngine.Get().Storage.PermanentDatabaseSize()), nil + return float64(deps.Protocol.Engines.Main.Get().Storage.PermanentDatabaseSize()), nil }), )), collector.WithMetric(collector.NewMetric(sizeBytesPrunable, collector.WithType(collector.Gauge), collector.WithHelp("DB size in bytes for prunable storage."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - return float64(deps.Protocol.MainEngine.Get().Storage.PrunableDatabaseSize()), nil + return float64(deps.Protocol.Engines.Main.Get().Storage.PrunableDatabaseSize()), nil }), )), ) diff --git a/components/metrics/metrics_info.go b/components/metrics/metrics_info.go index 4d3457798..7bae443d5 100644 --- a/components/metrics/metrics_info.go +++ b/components/metrics/metrics_info.go @@ -36,7 +36,7 @@ var InfoMetrics = collector.NewCollection(infoNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Node sync status based on ATT."), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - if deps.Protocol.MainEngine.Get().SyncManager.IsNodeSynced() { + if deps.Protocol.Engines.Main.Get().SyncManager.IsNodeSynced() { return 1, nil } diff --git a/components/metrics/metrics_scheduler.go b/components/metrics/metrics_scheduler.go index 124071d68..5096ef433 100644 --- a/components/metrics/metrics_scheduler.go +++ b/components/metrics/metrics_scheduler.go @@ -38,22 +38,22 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithHelp("Current size of each node's queue (in work units)."), collector.WithInitFunc(func() { deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.Engines.Main.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.Engines.Main.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.Engines.Main.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeWork, float64(deps.Protocol.Engines.Main.Get().Scheduler.IssuerQueueWork(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -66,25 +66,25 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithInitFunc(func() { deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { if _, isBasic := block.BasicBlock(); isBasic { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.Engines.Main.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { if _, isBasic := block.BasicBlock(); isBasic { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.Engines.Main.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { if _, isBasic := block.BasicBlock(); isBasic { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.Engines.Main.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { if _, isBasic := block.BasicBlock(); isBasic { - deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, queueSizePerNodeCount, float64(deps.Protocol.Engines.Main.Get().Scheduler.IssuerQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -97,25 +97,25 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithInitFunc(func() { deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { if _, isValidation := block.ValidationBlock(); isValidation { - deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.Engines.Main.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { if _, isValidation := block.ValidationBlock(); isValidation { - deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.Engines.Main.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockDropped.Hook(func(block *blocks.Block, _ error) { if _, isValidation := block.ValidationBlock(); isValidation { - deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.Engines.Main.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { if _, isValidation := block.ValidationBlock(); isValidation { - deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.MainEngine.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) + deps.Collector.Update(schedulerNamespace, validatorQueueSizePerNodeCount, float64(deps.Protocol.Engines.Main.Get().Scheduler.ValidatorQueueBlockCount(block.ProtocolBlock().IssuerID)), block.ProtocolBlock().IssuerID.String()) } }, event.WithWorkerPool(Component.WorkerPool)) }), @@ -127,9 +127,9 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithHelp("Current amount of mana of each issuer in the queue."), collector.WithInitFunc(func() { deps.Protocol.Events.Engine.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - mana, err := deps.Protocol.MainEngine.Get().Ledger.ManaManager().GetManaOnAccount(block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Slot()) + mana, err := deps.Protocol.Engines.Main.Get().Ledger.ManaManager().GetManaOnAccount(block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Slot()) if err != nil { - deps.Protocol.MainEngine.Get().ErrorHandler("metrics")(ierrors.Wrapf(err, "failed to retrieve mana on account %s for slot %d", block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Slot())) + deps.Protocol.Engines.Main.Get().ErrorHandler("metrics")(ierrors.Wrapf(err, "failed to retrieve mana on account %s for slot %d", block.ProtocolBlock().IssuerID, block.SlotCommitmentID().Slot())) return } @@ -168,42 +168,42 @@ var SchedulerMetrics = collector.NewCollection(schedulerNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Maximum number of basic blocks that can be stored in the buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngine.Get().CommittedAPI().ProtocolParameters().CongestionControlParameters().MaxBufferSize), []string{} + return float64(deps.Protocol.Engines.Main.Get().CommittedAPI().ProtocolParameters().CongestionControlParameters().MaxBufferSize), []string{} }), )), collector.WithMetric(collector.NewMetric(basicBufferReadyBlockCount, collector.WithType(collector.Gauge), collector.WithHelp("Number of ready blocks in the scheduler buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngine.Get().Scheduler.ReadyBlocksCount()), []string{} + return float64(deps.Protocol.Engines.Main.Get().Scheduler.ReadyBlocksCount()), []string{} }), )), collector.WithMetric(collector.NewMetric(basicBufferTotalSize, collector.WithType(collector.Gauge), collector.WithHelp("Current number of basic blocks in the scheduler buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngine.Get().Scheduler.BasicBufferSize()), []string{} + return float64(deps.Protocol.Engines.Main.Get().Scheduler.BasicBufferSize()), []string{} }), )), collector.WithMetric(collector.NewMetric(rate, collector.WithType(collector.Gauge), collector.WithHelp("Current scheduling rate of basic blocks."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngine.Get().CommittedAPI().ProtocolParameters().CongestionControlParameters().SchedulerRate), []string{} + return float64(deps.Protocol.Engines.Main.Get().CommittedAPI().ProtocolParameters().CongestionControlParameters().SchedulerRate), []string{} }), )), collector.WithMetric(collector.NewMetric(validatorBufferTotalSize, collector.WithType(collector.Gauge), collector.WithHelp("Current number of validation blocks in the scheduling buffer."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngine.Get().Scheduler.ValidatorBufferSize()), []string{} + return float64(deps.Protocol.Engines.Main.Get().Scheduler.ValidatorBufferSize()), []string{} }), )), collector.WithMetric(collector.NewMetric(validatorQueueMaxSize, collector.WithType(collector.Gauge), collector.WithHelp("Maximum number of validation blocks that can be stored in each validator queue."), collector.WithCollectFunc(func() (float64, []string) { - return float64(deps.Protocol.MainEngine.Get().CommittedAPI().ProtocolParameters().CongestionControlParameters().MaxValidationBufferSize), []string{} + return float64(deps.Protocol.Engines.Main.Get().CommittedAPI().ProtocolParameters().CongestionControlParameters().MaxValidationBufferSize), []string{} }), )), ) diff --git a/components/metrics/metrics_slots.go b/components/metrics/metrics_slots.go index 03423acfb..021fc010f 100644 --- a/components/metrics/metrics_slots.go +++ b/components/metrics/metrics_slots.go @@ -69,10 +69,10 @@ var SlotMetrics = collector.NewCollection(slotNamespace, collector.WithPruningDelay(10*time.Minute), collector.WithHelp("Number of accepted attachments by the node per slot."), collector.WithInitFunc(func() { - deps.Protocol.MainEngine.Get().Ledger.OnTransactionAttached(func(transactionMetadata mempool.TransactionMetadata) { + deps.Protocol.Engines.Main.Get().Ledger.OnTransactionAttached(func(transactionMetadata mempool.TransactionMetadata) { transactionMetadata.OnAccepted(func() { for _, attachmentBlockID := range transactionMetadata.ValidAttachments() { - if block, exists := deps.Protocol.MainEngine.Get().BlockCache.Block(attachmentBlockID); exists && block.IsAccepted() { + if block, exists := deps.Protocol.Engines.Main.Get().BlockCache.Block(attachmentBlockID); exists && block.IsAccepted() { deps.Collector.Increment(slotNamespace, acceptedAttachments, strconv.Itoa(int(attachmentBlockID.Slot()))) } } @@ -94,7 +94,7 @@ var SlotMetrics = collector.NewCollection(slotNamespace, }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.Engines.Main.Get().Ledger.TransactionMetadata(conflictID); exists { for _, attachment := range txMetadata.ValidAttachments() { deps.Collector.Increment(slotNamespace, createdConflicts, strconv.Itoa(int(attachment.Slot()))) } @@ -116,9 +116,9 @@ var SlotMetrics = collector.NewCollection(slotNamespace, }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.Engines.Main.Get().Ledger.TransactionMetadata(conflictID); exists { for _, attachmentBlockID := range txMetadata.ValidAttachments() { - if attachment, exists := deps.Protocol.MainEngine.Get().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { + if attachment, exists := deps.Protocol.Engines.Main.Get().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { deps.Collector.Increment(slotNamespace, acceptedConflicts, strconv.Itoa(int(attachment.ID().Slot()))) } } @@ -140,9 +140,9 @@ var SlotMetrics = collector.NewCollection(slotNamespace, }, event.WithWorkerPool(Component.WorkerPool)) deps.Protocol.Events.Engine.ConflictDAG.ConflictRejected.Hook(func(conflictID iotago.TransactionID) { - if txMetadata, exists := deps.Protocol.MainEngine.Get().Ledger.TransactionMetadata(conflictID); exists { + if txMetadata, exists := deps.Protocol.Engines.Main.Get().Ledger.TransactionMetadata(conflictID); exists { for _, attachmentBlockID := range txMetadata.ValidAttachments() { - if attachment, exists := deps.Protocol.MainEngine.Get().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { + if attachment, exists := deps.Protocol.Engines.Main.Get().BlockCache.Block(attachmentBlockID); exists && attachment.IsAccepted() { deps.Collector.Increment(slotNamespace, rejectedConflicts, strconv.Itoa(int(attachment.ID().Slot()))) } } diff --git a/components/metrics/metrics_tangle.go b/components/metrics/metrics_tangle.go index a6bb7d3e6..82cca7b85 100644 --- a/components/metrics/metrics_tangle.go +++ b/components/metrics/metrics_tangle.go @@ -21,7 +21,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Number of strong tips in the tangle"), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - count := len(deps.Protocol.MainEngine.Get().TipManager.StrongTips()) + count := len(deps.Protocol.Engines.Main.Get().TipManager.StrongTips()) return float64(count), nil }), @@ -30,7 +30,7 @@ var TangleMetrics = collector.NewCollection(tangleNamespace, collector.WithType(collector.Gauge), collector.WithHelp("Number of weak tips in the tangle"), collector.WithCollectFunc(func() (metricValue float64, labelValues []string) { - count := len(deps.Protocol.MainEngine.Get().TipManager.WeakTips()) + count := len(deps.Protocol.Engines.Main.Get().TipManager.WeakTips()) return float64(count), nil }), diff --git a/components/metricstracker/component.go b/components/metricstracker/component.go index dd32ff1a3..9cde574c9 100644 --- a/components/metricstracker/component.go +++ b/components/metricstracker/component.go @@ -46,7 +46,7 @@ func provide(c *dig.Container) error { } if err := c.Provide(func(deps metricsTrackerDeps) *MetricsTracker { - m := New(deps.Protocol.MainEngine.Get().SyncManager.IsBootstrapped) + m := New(deps.Protocol.Engines.Main.Get().SyncManager.IsBootstrapped) return m }); err != nil { diff --git a/components/restapi/core/accounts.go b/components/restapi/core/accounts.go index e57c9a783..207e68f07 100644 --- a/components/restapi/core/accounts.go +++ b/components/restapi/core/accounts.go @@ -22,9 +22,9 @@ func congestionForAccountID(c echo.Context) (*apimodels.CongestionResponse, erro return nil, err } - commitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() + commitment := deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment() - acc, exists, err := deps.Protocol.MainEngine.Get().Ledger.Account(accountID, commitment.Slot()) + acc, exists, err := deps.Protocol.Engines.Main.Get().Ledger.Account(accountID, commitment.Slot()) if err != nil { return nil, ierrors.Wrapf(err, "failed to get account: %s form the Ledger", accountID.ToHex()) } @@ -34,7 +34,7 @@ func congestionForAccountID(c echo.Context) (*apimodels.CongestionResponse, erro return &apimodels.CongestionResponse{ Slot: commitment.Slot(), - Ready: deps.Protocol.MainEngine.Get().Scheduler.IsBlockIssuerReady(accountID), + Ready: deps.Protocol.Engines.Main.Get().Scheduler.IsBlockIssuerReady(accountID), ReferenceManaCost: commitment.ReferenceManaCost(), BlockIssuanceCredits: acc.Credits.Value, }, nil @@ -52,7 +52,7 @@ func validators(c echo.Context) (*apimodels.ValidatorsResponse, error) { pageSize = restapi.ParamsRestAPI.MaxPageSize } } - latestCommittedSlot := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot() + latestCommittedSlot := deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment().Slot() // no cursor provided will be the first request requestedSlot := latestCommittedSlot var cursorIndex uint32 @@ -71,13 +71,13 @@ func validators(c echo.Context) (*apimodels.ValidatorsResponse, error) { nextEpoch := deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 slotRange := uint32(requestedSlot) / restapi.ParamsRestAPI.RequestsMemoryCacheGranularity - registeredValidators, exists := deps.Protocol.MainEngine.Get().Retainer.RegisteredValidatorsCache(slotRange) + registeredValidators, exists := deps.Protocol.Engines.Main.Get().Retainer.RegisteredValidatorsCache(slotRange) if !exists { - registeredValidators, err = deps.Protocol.MainEngine.Get().SybilProtection.OrderedRegisteredCandidateValidatorsList(nextEpoch) + registeredValidators, err = deps.Protocol.Engines.Main.Get().SybilProtection.OrderedRegisteredCandidateValidatorsList(nextEpoch) if err != nil { return nil, ierrors.Wrapf(err, "failed to get ordered registered validators list for epoch %d", nextEpoch) } - deps.Protocol.MainEngine.Get().Retainer.RetainRegisteredValidatorsCache(slotRange, registeredValidators) + deps.Protocol.Engines.Main.Get().Retainer.RetainRegisteredValidatorsCache(slotRange, registeredValidators) } page := registeredValidators[cursorIndex:lo.Min(cursorIndex+pageSize, uint32(len(registeredValidators)))] @@ -100,9 +100,9 @@ func validatorByAccountID(c echo.Context) (*apimodels.ValidatorResponse, error) if err != nil { return nil, ierrors.Wrapf(err, "failed to parse the %s parameter", restapipkg.ParameterAccountID) } - latestCommittedSlot := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot() + latestCommittedSlot := deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment().Slot() - accountData, exists, err := deps.Protocol.MainEngine.Get().Ledger.Account(accountID, latestCommittedSlot) + accountData, exists, err := deps.Protocol.Engines.Main.Get().Ledger.Account(accountID, latestCommittedSlot) if err != nil { return nil, ierrors.Wrapf(err, "failed to get account: %s form the Ledger", accountID.ToHex()) } @@ -110,7 +110,7 @@ func validatorByAccountID(c echo.Context) (*apimodels.ValidatorResponse, error) return nil, ierrors.Errorf("account not found: %s for latest committedSlot %d", accountID.ToHex(), latestCommittedSlot) } nextEpoch := deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(latestCommittedSlot) + 1 - active := deps.Protocol.MainEngine.Get().SybilProtection.IsCandidateActive(accountID, nextEpoch) + active := deps.Protocol.Engines.Main.Get().SybilProtection.IsCandidateActive(accountID, nextEpoch) return &apimodels.ValidatorResponse{ AccountID: accountID, @@ -130,7 +130,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { return nil, ierrors.Wrapf(err, "failed to parse the %s parameter", restapipkg.ParameterOutputID) } - utxoOutput, err := deps.Protocol.MainEngine.Get().Ledger.Output(outputID) + utxoOutput, err := deps.Protocol.Engines.Main.Get().Ledger.Output(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output %s from ledger", outputID.ToHex()) } @@ -150,7 +150,7 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { stakingFeature := feature.(*iotago.StakingFeature) // check if the account is a validator - reward, actualStart, actualEnd, err = deps.Protocol.MainEngine.Get().SybilProtection.ValidatorReward( + reward, actualStart, actualEnd, err = deps.Protocol.Engines.Main.Get().SybilProtection.ValidatorReward( accountOutput.AccountID, stakingFeature.StakedAmount, stakingFeature.StartEpoch, @@ -160,13 +160,13 @@ func rewardsByOutputID(c echo.Context) (*apimodels.ManaRewardsResponse, error) { case iotago.OutputDelegation: //nolint:forcetypeassert delegationOutput := utxoOutput.Output().(*iotago.DelegationOutput) - latestCommittedSlot := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot() + latestCommittedSlot := deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment().Slot() stakingEnd := delegationOutput.EndEpoch // the output is in delayed calaiming state if endEpoch is set, otherwise we use latest possible epoch if delegationOutput.EndEpoch == 0 { - stakingEnd = deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot()) + stakingEnd = deps.Protocol.APIForSlot(latestCommittedSlot).TimeProvider().EpochFromSlot(deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment().Slot()) } - reward, actualStart, actualEnd, err = deps.Protocol.MainEngine.Get().SybilProtection.DelegatorReward( + reward, actualStart, actualEnd, err = deps.Protocol.Engines.Main.Get().SybilProtection.DelegatorReward( delegationOutput.ValidatorAddress.AccountID(), delegationOutput.DelegatedAmount, delegationOutput.StartEpoch, @@ -198,7 +198,7 @@ func selectedCommittee(c echo.Context) *apimodels.CommitteeResponse { slot = timeProvider.EpochEnd(epoch) } - seatedAccounts := deps.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(slot) + seatedAccounts := deps.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(slot) committee := make([]*apimodels.CommitteeMemberResponse, 0, seatedAccounts.Accounts().Size()) seatedAccounts.Accounts().ForEach(func(accountID iotago.AccountID, seat *account.Pool) bool { committee = append(committee, &apimodels.CommitteeMemberResponse{ diff --git a/components/restapi/core/blocks.go b/components/restapi/core/blocks.go index 0edd00cd1..96ce3d9c4 100644 --- a/components/restapi/core/blocks.go +++ b/components/restapi/core/blocks.go @@ -21,7 +21,7 @@ func blockByID(c echo.Context) (*model.Block, error) { return nil, ierrors.Wrapf(err, "failed to parse block ID: %s", c.Param(restapi.ParameterBlockID)) } - block, exists := deps.Protocol.MainEngine.Get().Block(blockID) + block, exists := deps.Protocol.Engines.Main.Get().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.ToHex()) } @@ -30,7 +30,7 @@ func blockByID(c echo.Context) (*model.Block, error) { } func blockMetadataByBlockID(blockID iotago.BlockID) (*apimodels.BlockMetadataResponse, error) { - blockMetadata, err := deps.Protocol.MainEngine.Get().Retainer.BlockMetadata(blockID) + blockMetadata, err := deps.Protocol.Engines.Main.Get().Retainer.BlockMetadata(blockID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get block metadata: %s", blockID.ToHex()) } @@ -48,15 +48,15 @@ func blockMetadataByID(c echo.Context) (*apimodels.BlockMetadataResponse, error) } func blockIssuanceBySlot(slotIndex iotago.SlotIndex) (*apimodels.IssuanceBlockHeaderResponse, error) { - references := deps.Protocol.MainEngine.Get().TipSelection.SelectTips(iotago.BlockMaxParents) + references := deps.Protocol.Engines.Main.Get().TipSelection.SelectTips(iotago.BlockMaxParents) var slotCommitment *model.Commitment var err error // by default we use latest commitment if slotIndex == 0 { - slotCommitment = deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() + slotCommitment = deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment() } else { - slotCommitment, err = deps.Protocol.MainEngine.Get().Storage.Commitments().Load(slotIndex) + slotCommitment, err = deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(slotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment for requested slot %d", slotIndex) } @@ -70,7 +70,7 @@ func blockIssuanceBySlot(slotIndex iotago.SlotIndex) (*apimodels.IssuanceBlockHe StrongParents: references[iotago.StrongParentType], WeakParents: references[iotago.WeakParentType], ShallowLikeParents: references[iotago.ShallowLikeParentType], - LatestFinalizedSlot: deps.Protocol.MainEngine.Get().SyncManager.LatestFinalizedSlot(), + LatestFinalizedSlot: deps.Protocol.Engines.Main.Get().SyncManager.LatestFinalizedSlot(), Commitment: slotCommitment.Commitment(), } diff --git a/components/restapi/core/commitment.go b/components/restapi/core/commitment.go index 53de1df08..712e0378a 100644 --- a/components/restapi/core/commitment.go +++ b/components/restapi/core/commitment.go @@ -20,7 +20,7 @@ func indexByCommitmentID(c echo.Context) (iotago.SlotIndex, error) { } func getCommitmentDetails(index iotago.SlotIndex) (*iotago.Commitment, error) { - commitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(index) + commitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(index) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment: %d", index) } @@ -29,7 +29,7 @@ func getCommitmentDetails(index iotago.SlotIndex) (*iotago.Commitment, error) { } func getUTXOChanges(index iotago.SlotIndex) (*apimodels.UTXOChangesResponse, error) { - diffs, err := deps.Protocol.MainEngine.Get().Ledger.SlotDiffs(index) + diffs, err := deps.Protocol.Engines.Main.Get().Ledger.SlotDiffs(index) if err != nil { return nil, ierrors.Wrapf(err, "failed to get slot diffs: %d", index) } diff --git a/components/restapi/core/component.go b/components/restapi/core/component.go index 0e1d09666..0574bf620 100644 --- a/components/restapi/core/component.go +++ b/components/restapi/core/component.go @@ -373,7 +373,7 @@ func AddFeature(feature string) { func checkNodeSynced() echo.MiddlewareFunc { return func(next echo.HandlerFunc) echo.HandlerFunc { return func(c echo.Context) error { - if !deps.Protocol.MainEngine.Get().SyncManager.IsNodeSynced() { + if !deps.Protocol.Engines.Main.Get().SyncManager.IsNodeSynced() { return ierrors.Wrap(echo.ErrServiceUnavailable, "node is not synced") } diff --git a/components/restapi/core/node.go b/components/restapi/core/node.go index 325aba0c3..955ad9cfc 100644 --- a/components/restapi/core/node.go +++ b/components/restapi/core/node.go @@ -6,7 +6,7 @@ import ( func protocolParameters() []*apimodels.InfoResProtocolParameters { protoParams := make([]*apimodels.InfoResProtocolParameters, 0) - provider := deps.Protocol.MainEngine.Get().Storage.Settings().APIProvider() + provider := deps.Protocol.Engines.Main.Get().Storage.Settings().APIProvider() for _, version := range provider.ProtocolEpochVersions() { protocolParams := provider.ProtocolParameters(version.Version) if protocolParams == nil { @@ -23,8 +23,8 @@ func protocolParameters() []*apimodels.InfoResProtocolParameters { } func info() *apimodels.InfoResponse { - clSnapshot := deps.Protocol.MainEngine.Get().Clock.Snapshot() - syncStatus := deps.Protocol.MainEngine.Get().SyncManager.SyncStatus() + clSnapshot := deps.Protocol.Engines.Main.Get().Clock.Snapshot() + syncStatus := deps.Protocol.Engines.Main.Get().SyncManager.SyncStatus() metrics := deps.MetricsTracker.NodeMetrics() return &apimodels.InfoResponse{ diff --git a/components/restapi/core/transaction.go b/components/restapi/core/transaction.go index 944b7bfec..9dc1ea160 100644 --- a/components/restapi/core/transaction.go +++ b/components/restapi/core/transaction.go @@ -24,7 +24,7 @@ func blockIDFromTransactionID(transactionID iotago.TransactionID) (iotago.BlockI // Get the first output of that transaction (using index 0) outputID := iotago.OutputIDFromTransactionIDAndIndex(transactionID, 0) - output, spent, err := deps.Protocol.MainEngine.Get().Ledger.OutputOrSpent(outputID) + output, spent, err := deps.Protocol.Engines.Main.Get().Ledger.OutputOrSpent(outputID) if err != nil { return iotago.EmptyBlockID, ierrors.Wrapf(err, "failed to get output: %s", outputID.ToHex()) } @@ -42,7 +42,7 @@ func blockByTransactionID(c echo.Context) (*model.Block, error) { return nil, ierrors.Wrapf(err, "failed to get block ID by transaction ID") } - block, exists := deps.Protocol.MainEngine.Get().Block(blockID) + block, exists := deps.Protocol.Engines.Main.Get().Block(blockID) if !exists { return nil, ierrors.Errorf("block not found: %s", blockID.String()) } diff --git a/components/restapi/core/utxo.go b/components/restapi/core/utxo.go index bc8c4d9b9..e5fec1eea 100644 --- a/components/restapi/core/utxo.go +++ b/components/restapi/core/utxo.go @@ -16,7 +16,7 @@ func getOutput(c echo.Context) (*apimodels.OutputResponse, error) { return nil, ierrors.Wrapf(err, "failed to parse output ID param: %s", c.Param(restapipkg.ParameterOutputID)) } - output, err := deps.Protocol.MainEngine.Get().Ledger.Output(outputID) + output, err := deps.Protocol.Engines.Main.Get().Ledger.Output(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output: %s from the Ledger", outputID.String()) } @@ -33,7 +33,7 @@ func getOutputMetadata(c echo.Context) (*apimodels.OutputMetadata, error) { return nil, ierrors.Wrapf(err, "failed to parse output ID param: %s", c.Param(restapipkg.ParameterOutputID)) } - output, spent, err := deps.Protocol.MainEngine.Get().Ledger.OutputOrSpent(outputID) + output, spent, err := deps.Protocol.Engines.Main.Get().Ledger.OutputOrSpent(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output: %s from the Ledger", outputID.String()) } @@ -51,7 +51,7 @@ func getOutputWithMetadata(c echo.Context) (*apimodels.OutputWithMetadataRespons return nil, ierrors.Wrapf(err, "failed to parse output ID param: %s", c.Param(restapipkg.ParameterOutputID)) } - output, spent, err := deps.Protocol.MainEngine.Get().Ledger.OutputOrSpent(outputID) + output, spent, err := deps.Protocol.Engines.Main.Get().Ledger.OutputOrSpent(outputID) if err != nil { return nil, ierrors.Wrapf(err, "failed to get output: %s from the Ledger", outputID.String()) } @@ -82,7 +82,7 @@ func getOutputWithMetadata(c echo.Context) (*apimodels.OutputWithMetadataRespons } func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMetadata, error) { - latestCommitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment() resp := &apimodels.OutputMetadata{ BlockID: output.BlockID(), @@ -94,7 +94,7 @@ func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMeta includedSlotIndex := output.SlotBooked() if includedSlotIndex <= latestCommitment.Slot() { - includedCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(includedSlotIndex) + includedCommitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(includedSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", includedSlotIndex) } @@ -105,7 +105,7 @@ func newOutputMetadataResponse(output *utxoledger.Output) (*apimodels.OutputMeta } func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadata, error) { - latestCommitment := deps.Protocol.MainEngine.Get().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment() resp := &apimodels.OutputMetadata{ BlockID: spent.BlockID(), @@ -118,7 +118,7 @@ func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadat includedSlotIndex := spent.Output().SlotBooked() if includedSlotIndex <= latestCommitment.Slot() { - includedCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(includedSlotIndex) + includedCommitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(includedSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", includedSlotIndex) } @@ -127,7 +127,7 @@ func newSpentMetadataResponse(spent *utxoledger.Spent) (*apimodels.OutputMetadat spentSlotIndex := spent.SlotSpent() if spentSlotIndex <= latestCommitment.Slot() { - spentCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(spentSlotIndex) + spentCommitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(spentSlotIndex) if err != nil { return nil, ierrors.Wrapf(err, "failed to load commitment with index: %d", spentSlotIndex) } diff --git a/components/restapi/management/pruning.go b/components/restapi/management/pruning.go index 6ab776de0..6d613ddec 100644 --- a/components/restapi/management/pruning.go +++ b/components/restapi/management/pruning.go @@ -10,7 +10,7 @@ import ( ) func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { - if deps.Protocol.MainEngine.Get().Storage.IsPruning() { + if deps.Protocol.Engines.Main.Get().Storage.IsPruning() { return nil, ierrors.Wrapf(echo.ErrServiceUnavailable, "node is already pruning") } @@ -30,14 +30,14 @@ func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { var err error if request.Index != 0 { - err = deps.Protocol.MainEngine.Get().Storage.PruneByEpochIndex(request.Index) + err = deps.Protocol.Engines.Main.Get().Storage.PruneByEpochIndex(request.Index) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } } if request.Depth != 0 { - _, _, err := deps.Protocol.MainEngine.Get().Storage.PruneByDepth(request.Depth) + _, _, err := deps.Protocol.Engines.Main.Get().Storage.PruneByDepth(request.Depth) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } @@ -49,13 +49,13 @@ func pruneDatabase(c echo.Context) (*apimodels.PruneDatabaseResponse, error) { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } - err = deps.Protocol.MainEngine.Get().Storage.PruneBySize(pruningTargetDatabaseSizeBytes) + err = deps.Protocol.Engines.Main.Get().Storage.PruneBySize(pruningTargetDatabaseSizeBytes) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "pruning database failed: %s", err) } } - targetIndex, hasPruned := deps.Protocol.MainEngine.Get().Storage.LastPrunedEpoch() + targetIndex, hasPruned := deps.Protocol.Engines.Main.Get().Storage.LastPrunedEpoch() if hasPruned { targetIndex++ } diff --git a/components/restapi/routes.go b/components/restapi/routes.go index d03cb7820..6250ed11b 100644 --- a/components/restapi/routes.go +++ b/components/restapi/routes.go @@ -21,7 +21,7 @@ type RoutesResponse struct { func setupRoutes() { deps.Echo.GET(nodeAPIHealthRoute, func(c echo.Context) error { - if deps.Protocol.MainEngine.Get().SyncManager.IsNodeSynced() { + if deps.Protocol.Engines.Main.Get().SyncManager.IsNodeSynced() { return c.NoContent(http.StatusOK) } diff --git a/components/validator/component.go b/components/validator/component.go index 23200dcd8..bed6442ca 100644 --- a/components/validator/component.go +++ b/components/validator/component.go @@ -68,7 +68,7 @@ func run() error { } func checkValidatorStatus(ctx context.Context) { - account, exists, err := deps.Protocol.MainEngine.Get().Ledger.Account(validatorAccount.ID(), deps.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot()) + account, exists, err := deps.Protocol.Engines.Main.Get().Ledger.Account(validatorAccount.ID(), deps.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Slot()) if err != nil { Component.LogErrorf("error when retrieving BlockIssuer account %s: %w", validatorAccount.ID(), err) diff --git a/components/validator/issuer.go b/components/validator/issuer.go index bb5210492..ff4456e0d 100644 --- a/components/validator/issuer.go +++ b/components/validator/issuer.go @@ -14,7 +14,7 @@ var ErrBlockTooRecent = ierrors.New("block is too recent compared to latest comm func issueValidatorBlock(ctx context.Context) { // Get the main engine instance in case it changes mid-execution. - engineInstance := deps.Protocol.MainEngine.Get() + engineInstance := deps.Protocol.Engines.Main.Get() blockIssuingTime := time.Now() nextBroadcast := blockIssuingTime.Add(ParamsValidator.CommitteeBroadcastInterval) @@ -97,12 +97,12 @@ func issueValidatorBlock(ctx context.Context) { } func reviveChain(issuingTime time.Time) (*iotago.Commitment, iotago.BlockID, error) { - lastCommittedSlot := deps.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot() + lastCommittedSlot := deps.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Slot() apiForSlot := deps.Protocol.APIForSlot(lastCommittedSlot) // Get a rootblock as recent as possible for the parent. parentBlockID := iotago.EmptyBlockID - for rootBlock := range deps.Protocol.MainEngine.Get().EvictionState.ActiveRootBlocks() { + for rootBlock := range deps.Protocol.Engines.Main.Get().EvictionState.ActiveRootBlocks() { if rootBlock.Slot() > parentBlockID.Slot() { parentBlockID = rootBlock } @@ -122,11 +122,11 @@ func reviveChain(issuingTime time.Time) (*iotago.Commitment, iotago.BlockID, err } commitUntilSlot := issuingSlot - apiForSlot.ProtocolParameters().MinCommittableAge() - if err := deps.Protocol.MainEngine.Get().Notarization.ForceCommitUntil(commitUntilSlot); err != nil { + if err := deps.Protocol.Engines.Main.Get().Notarization.ForceCommitUntil(commitUntilSlot); err != nil { return nil, iotago.EmptyBlockID, ierrors.Wrapf(err, "failed to force commit until slot %d", commitUntilSlot) } - commitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(commitUntilSlot) + commitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(commitUntilSlot) if err != nil { return nil, iotago.EmptyBlockID, ierrors.Wrapf(err, "failed to commit until slot %d to revive chain", commitUntilSlot) } @@ -136,7 +136,7 @@ func reviveChain(issuingTime time.Time) (*iotago.Commitment, iotago.BlockID, err func getAddressableCommitment(blockSlot iotago.SlotIndex) (*iotago.Commitment, error) { protoParams := deps.Protocol.CommittedAPI().ProtocolParameters() - commitment := deps.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment() + commitment := deps.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment() if blockSlot > commitment.Slot+protoParams.MaxCommittableAge() { return nil, ierrors.Wrapf(ErrBlockTooRecent, "can't issue block: block slot %d is too far in the future, latest commitment is %d", blockSlot, commitment.Slot) @@ -148,7 +148,7 @@ func getAddressableCommitment(blockSlot iotago.SlotIndex) (*iotago.Commitment, e } commitmentSlot := commitment.Slot - protoParams.MinCommittableAge() - loadedCommitment, err := deps.Protocol.MainEngine.Get().Storage.Commitments().Load(commitmentSlot) + loadedCommitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(commitmentSlot) if err != nil { return nil, ierrors.Wrapf(err, "error loading valid commitment of slot %d according to minCommittableAge from storage", commitmentSlot) } diff --git a/pkg/protocol/api_provider.go b/pkg/protocol/api_provider.go index 8b4bf1861..df8b7cb12 100644 --- a/pkg/protocol/api_provider.go +++ b/pkg/protocol/api_provider.go @@ -20,8 +20,8 @@ func NewAPIProvider(protocol *Protocol) *APIProvider { // APIForVersion returns the API for the given version. func (a *APIProvider) APIForVersion(version iotago.Version) (api iotago.API, err error) { - if mainEngineInstance := a.MainEngine.Get(); mainEngineInstance != nil { - return a.MainEngine.Get().APIForVersion(version) + if mainEngineInstance := a.Engines.Main.Get(); mainEngineInstance != nil { + return a.Engines.Main.Get().APIForVersion(version) } return nil, ierrors.New("no engine instance available") @@ -29,25 +29,25 @@ func (a *APIProvider) APIForVersion(version iotago.Version) (api iotago.API, err // APIForSlot returns the API for the given slot. func (a *APIProvider) APIForSlot(slot iotago.SlotIndex) iotago.API { - return a.MainEngine.Get().APIForSlot(slot) + return a.Engines.Main.Get().APIForSlot(slot) } // APIForEpoch returns the API for the given epoch. func (a *APIProvider) APIForEpoch(epoch iotago.EpochIndex) iotago.API { - return a.MainEngine.Get().APIForEpoch(epoch) + return a.Engines.Main.Get().APIForEpoch(epoch) } // APIForTime returns the API for the given time. func (a *APIProvider) APIForTime(t time.Time) iotago.API { - return a.MainEngine.Get().APIForTime(t) + return a.Engines.Main.Get().APIForTime(t) } // CommittedAPI returns the API for the committed state. func (a *APIProvider) CommittedAPI() iotago.API { - return a.MainEngine.Get().CommittedAPI() + return a.Engines.Main.Get().CommittedAPI() } // LatestAPI returns the latest API. func (a *APIProvider) LatestAPI() iotago.API { - return a.MainEngine.Get().LatestAPI() + return a.Engines.Main.Get().LatestAPI() } diff --git a/pkg/protocol/engine_manager.go b/pkg/protocol/engines.go similarity index 81% rename from pkg/protocol/engine_manager.go rename to pkg/protocol/engines.go index 2ca1d8349..bd775dc4c 100644 --- a/pkg/protocol/engine_manager.go +++ b/pkg/protocol/engines.go @@ -21,8 +21,8 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -type EngineManager struct { - MainEngine reactive.Variable[*engine.Engine] +type Engines struct { + Main reactive.Variable[*engine.Engine] protocol *Protocol worker *workerpool.WorkerPool @@ -31,9 +31,9 @@ type EngineManager struct { *module.ReactiveModule } -func NewEngineManager(protocol *Protocol) *EngineManager { - e := &EngineManager{ - MainEngine: reactive.NewVariable[*engine.Engine](), +func NewEngines(protocol *Protocol) *Engines { + e := &Engines{ + Main: reactive.NewVariable[*engine.Engine](), ReactiveModule: protocol.NewReactiveSubModule("Engines"), protocol: protocol, worker: protocol.Workers.CreatePool("Engines", workerpool.WithWorkerCount(1)), @@ -63,7 +63,7 @@ func NewEngineManager(protocol *Protocol) *EngineManager { return e } -func (e *EngineManager) LoadMainEngine(snapshotPath string) (*engine.Engine, error) { +func (e *Engines) LoadMainEngine(snapshotPath string) (*engine.Engine, error) { info := &engineInfo{} if err := ioutils.ReadJSONFromFile(e.infoFilePath(), info); err != nil && !ierrors.Is(err, os.ErrNotExist) { return nil, ierrors.Errorf("unable to read engine info file: %w", err) @@ -72,12 +72,12 @@ func (e *EngineManager) LoadMainEngine(snapshotPath string) (*engine.Engine, err // load previous engine as main engine if it exists. if len(info.Name) > 0 { if exists, isDirectory, err := ioutils.PathExists(e.directory.Path(info.Name)); err == nil && exists && isDirectory { - e.MainEngine.Set(e.loadEngineInstanceFromSnapshot(info.Name, snapshotPath)) + e.Main.Set(e.loadEngineInstanceFromSnapshot(info.Name, snapshotPath)) } } // load new engine if no previous engine exists. - e.MainEngine.Compute(func(mainEngine *engine.Engine) *engine.Engine { + e.Main.Compute(func(mainEngine *engine.Engine) *engine.Engine { if mainEngine != nil { return mainEngine } @@ -90,19 +90,19 @@ func (e *EngineManager) LoadMainEngine(snapshotPath string) (*engine.Engine, err return nil, err } - return e.MainEngine.Get(), nil + return e.Main.Get(), nil } -func (e *EngineManager) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error) { +func (e *Engines) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error) { newEngineAlias := lo.PanicOnErr(uuid.NewUUID()).String() errorHandler := func(err error) { e.protocol.LogError("engine error", "err", err, "name", newEngineAlias[0:8]) } // copy raw data on disk. - newStorage, err := storage.Clone(e.MainEngine.Get().Storage, e.directory.Path(newEngineAlias), DatabaseVersion, errorHandler, e.protocol.Options.StorageOptions...) + newStorage, err := storage.Clone(e.Main.Get().Storage, e.directory.Path(newEngineAlias), DatabaseVersion, errorHandler, e.protocol.Options.StorageOptions...) if err != nil { - return nil, ierrors.Wrapf(err, "failed to copy storage from active engine instance (%s) to new engine instance (%s)", e.MainEngine.Get().Storage.Directory(), e.directory.Path(newEngineAlias)) + return nil, ierrors.Wrapf(err, "failed to copy storage from active engine instance (%s) to new engine instance (%s)", e.Main.Get().Storage.Directory(), e.directory.Path(newEngineAlias)) } // remove commitments that after forking point. @@ -152,8 +152,8 @@ func (e *EngineManager) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error return candidateEngine, nil } -func (e *EngineManager) CleanupCandidates() error { - activeDir := filepath.Base(e.MainEngine.Get().Storage.Directory()) +func (e *Engines) CleanupCandidates() error { + activeDir := filepath.Base(e.Main.Get().Storage.Directory()) dirs, err := e.directory.SubDirs() if err != nil { @@ -171,11 +171,11 @@ func (e *EngineManager) CleanupCandidates() error { return nil } -func (e *EngineManager) infoFilePath() string { +func (e *Engines) infoFilePath() string { return e.directory.Path(engineInfoFile) } -func (e *EngineManager) loadEngineInstanceFromSnapshot(engineAlias string, snapshotPath string) *engine.Engine { +func (e *Engines) loadEngineInstanceFromSnapshot(engineAlias string, snapshotPath string) *engine.Engine { errorHandler := func(err error) { e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) } @@ -185,20 +185,20 @@ func (e *EngineManager) loadEngineInstanceFromSnapshot(engineAlias string, snaps return e.loadEngineInstanceWithStorage(engineAlias, storage.Create(e.directory.Path(engineAlias), DatabaseVersion, errorHandler, e.protocol.Options.StorageOptions...)) } -func (e *EngineManager) loadEngineInstanceWithStorage(engineAlias string, storage *storage.Storage) *engine.Engine { +func (e *Engines) loadEngineInstanceWithStorage(engineAlias string, storage *storage.Storage) *engine.Engine { return engine.New(e.protocol.Logger, e.protocol.Workers.CreateGroup(engineAlias), storage, e.protocol.Options.FilterProvider, e.protocol.Options.CommitmentFilterProvider, e.protocol.Options.BlockDAGProvider, e.protocol.Options.BookerProvider, e.protocol.Options.ClockProvider, e.protocol.Options.BlockGadgetProvider, e.protocol.Options.SlotGadgetProvider, e.protocol.Options.SybilProtectionProvider, e.protocol.Options.NotarizationProvider, e.protocol.Options.AttestationProvider, e.protocol.Options.LedgerProvider, e.protocol.Options.SchedulerProvider, e.protocol.Options.TipManagerProvider, e.protocol.Options.TipSelectionProvider, e.protocol.Options.RetainerProvider, e.protocol.Options.UpgradeOrchestratorProvider, e.protocol.Options.SyncManagerProvider, e.protocol.Options.EngineOptions...) } -func (e *EngineManager) syncMainEngineFromMainChain() (unsubscribe func()) { +func (e *Engines) syncMainEngineFromMainChain() (unsubscribe func()) { return e.protocol.MainChain.OnUpdateWithContext(func(_, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { unsubscribeOnUpdate(func() func() { - return e.MainEngine.InheritFrom(mainChain.SpawnedEngine) + return e.Main.InheritFrom(mainChain.SpawnedEngine) }) }) } -func (e *EngineManager) syncMainEngineInfoFile() (unsubscribe func()) { - return e.MainEngine.OnUpdate(func(_, mainEngine *engine.Engine) { +func (e *Engines) syncMainEngineInfoFile() (unsubscribe func()) { + return e.Main.OnUpdate(func(_, mainEngine *engine.Engine) { if mainEngine != nil { if err := ioutils.WriteJSONToFile(e.infoFilePath(), &engineInfo{Name: filepath.Base(mainEngine.Storage.Directory())}, 0o644); err != nil { e.LogError("unable to write engine info file", "err", err) @@ -207,7 +207,7 @@ func (e *EngineManager) syncMainEngineInfoFile() (unsubscribe func()) { }) } -func (e *EngineManager) injectEngineInstances() (unsubscribe func()) { +func (e *Engines) injectEngineInstances() (unsubscribe func()) { return e.protocol.OnChainCreated(func(chain *Chain) { chain.VerifyState.OnUpdate(func(_, instantiate bool) { e.worker.Submit(func() { @@ -218,7 +218,7 @@ func (e *EngineManager) injectEngineInstances() (unsubscribe func()) { } if newEngine, err := func() (*engine.Engine, error) { - if e.MainEngine.Get() == nil { + if e.Main.Get() == nil { return e.LoadMainEngine(e.protocol.Options.SnapshotPath) } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index e0f1546c8..818d99773 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -27,10 +27,10 @@ type Protocol struct { CommitmentsProtocol *CommitmentsProtocol AttestationsProtocol *AttestationsProtocol WarpSyncProtocol *WarpSyncProtocol + Engines *Engines Options *Options *ChainManager - *EngineManager *APIProvider *module.ReactiveModule @@ -51,7 +51,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.AttestationsProtocol = NewAttestationsProtocol(p) p.WarpSyncProtocol = NewWarpSyncProtocol(p) p.ChainManager = newChainManager(p) - p.EngineManager = NewEngineManager(p) + p.Engines = NewEngines(p) p.APIProvider = NewAPIProvider(p) p.Initialized.OnTrigger(func() { @@ -75,7 +75,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.AttestationsProtocol.Shutdown() p.WarpSyncProtocol.Shutdown() p.Network.Shutdown() - p.EngineManager.Shutdown.Trigger() + p.Engines.Shutdown.Trigger() }) }) @@ -109,7 +109,7 @@ func (p *Protocol) waitEngineInitialized() { var waitInitialized sync.WaitGroup waitInitialized.Add(1) - p.MainEngine.OnUpdateOnce(func(_, engine *engine.Engine) { + p.Engines.Main.OnUpdateOnce(func(_, engine *engine.Engine) { engine.Initialized.OnTrigger(waitInitialized.Done) }) waitInitialized.Wait() diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index aa737cfcd..c22372363 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -121,7 +121,7 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { func (b *BlocksProtocol) ProcessRequest(blockID iotago.BlockID, from peer.ID) { b.workerPool.Submit(func() { - block, exists := b.protocol.MainEngine.Get().Block(blockID) + block, exists := b.protocol.Engines.Main.Get().Block(blockID) if !exists { b.LogTrace("requested block not found", "blockID", blockID) diff --git a/pkg/tests/accounts_test.go b/pkg/tests/accounts_test.go index 0e8bff975..5fcc87483 100644 --- a/pkg/tests/accounts_test.go +++ b/pkg/tests/accounts_test.go @@ -78,7 +78,7 @@ func Test_TransitionAccount(t *testing.T) { newGenesisOutputKey := utils.RandBlockIssuerKey() newAccountBlockIssuerKey := utils.RandBlockIssuerKey() - latestCommitmentID := node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID() + latestCommitmentID := node1.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment().MustID() accountInput, accountOutputs, accountWallets := ts.TransactionFramework.TransitionAccount( "Genesis:1", @@ -137,7 +137,7 @@ func Test_TransitionAccount(t *testing.T) { // commit until the expiry slot of the transitioned genesis account plus one latestParent = ts.CommitUntilSlot(accountOutputs[0].FeatureSet().BlockIssuer().ExpirySlot+1, latestParent) // set the expiry slof of the transitioned genesis account to the latest committed + MaxCommittableAge - newAccountExpirySlot := node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot() + ts.API.ProtocolParameters().MaxCommittableAge() + newAccountExpirySlot := node1.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Slot() + ts.API.ProtocolParameters().MaxCommittableAge() inputForNewAccount, newAccountOutputs, newAccountWallets := ts.TransactionFramework.CreateAccountFromInput("TX1:1", testsuite.WithAccountConditions(iotago.AccountOutputUnlockConditions{ &iotago.StateControllerAddressUnlockCondition{Address: ts.TransactionFramework.DefaultAddress()}, @@ -157,7 +157,7 @@ func Test_TransitionAccount(t *testing.T) { AccountID: genesisAccountOutput.AccountID, }, &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForNewAccount), @@ -166,7 +166,7 @@ func Test_TransitionAccount(t *testing.T) { testsuite.WithSlotCreated(block2Slot), )) - block2 := ts.IssueBasicBlockAtSlotWithOptions("block2", block2Slot, node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx2, mock.WithStrongParents(latestParent.ID())) + block2 := ts.IssueBasicBlockAtSlotWithOptions("block2", block2Slot, node1.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx2, mock.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(block2Slot, block2) @@ -228,7 +228,7 @@ func Test_TransitionAccount(t *testing.T) { tx3 := lo.PanicOnErr(ts.TransactionFramework.CreateSignedTransactionWithOptions("TX3", newDelegationWallets, testsuite.WithContextInputs(iotago.TxEssenceContextInputs{ &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForNewDelegation), @@ -236,7 +236,7 @@ func Test_TransitionAccount(t *testing.T) { testsuite.WithSlotCreated(block3Slot), )) - block3 := ts.IssueBasicBlockAtSlotWithOptions("block3", block3Slot, node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx3, mock.WithStrongParents(latestParent.ID())) + block3 := ts.IssueBasicBlockAtSlotWithOptions("block3", block3Slot, node1.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx3, mock.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(block3Slot, block3) delegatedAmount := inputForNewDelegation[0].BaseTokenAmount() @@ -272,7 +272,7 @@ func Test_TransitionAccount(t *testing.T) { tx4 := lo.PanicOnErr(ts.TransactionFramework.CreateSignedTransactionWithOptions("TX4", delegationTransitionWallets, testsuite.WithContextInputs(iotago.TxEssenceContextInputs{ &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForDelegationTransition), @@ -282,7 +282,7 @@ func Test_TransitionAccount(t *testing.T) { block4Slot := latestParent.ID().Slot() - block4 := ts.IssueBasicBlockAtSlotWithOptions("block4", block4Slot, node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx4, mock.WithStrongParents(latestParent.ID())) + block4 := ts.IssueBasicBlockAtSlotWithOptions("block4", block4Slot, node1.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx4, mock.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(block4Slot, block4) @@ -326,7 +326,7 @@ func Test_TransitionAccount(t *testing.T) { slotIndexBlock5 := latestParent.ID().Index() - block5 := ts.IssueBasicBlockAtSlotWithOptions("block5", slotIndexBlock5, node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx5, mock.WithStrongParents(latestParent.ID())) + block5 := ts.IssueBasicBlockAtSlotWithOptions("block5", slotIndexBlock5, node1.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx5, mock.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(slotIndexBlock5, block5) @@ -358,7 +358,7 @@ func Test_TransitionAccount(t *testing.T) { AccountID: implicitAccountID, }, &iotago.CommitmentInput{ - CommitmentID: node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), + CommitmentID: node1.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment().MustID(), }, }), testsuite.WithInputs(inputForImplicitAccountTransition), @@ -368,7 +368,7 @@ func Test_TransitionAccount(t *testing.T) { slotIndexBlock6 := latestParent.ID().Index() - block6 := ts.IssueBasicBlockAtSlotWithOptions("block6", slotIndexBlock6, node1.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx6, mock.WithStrongParents(latestParent.ID())) + block6 := ts.IssueBasicBlockAtSlotWithOptions("block6", slotIndexBlock6, node1.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment(), blockIssuer, node1, tx6, mock.WithStrongParents(latestParent.ID())) latestParent = ts.CommitUntilSlot(slotIndexBlock6, block6) diff --git a/pkg/tests/booker_test.go b/pkg/tests/booker_test.go index 4c133139f..62b70f623 100644 --- a/pkg/tests/booker_test.go +++ b/pkg/tests/booker_test.go @@ -257,7 +257,7 @@ func Test_SpendRejectedCommittedRace(t *testing.T) { node2.Validator.AccountID, }, ts.Nodes()...) - genesisCommitment := lo.PanicOnErr(node1.Protocol.MainEngine.Get().Storage.Commitments().Load(0)).Commitment() + genesisCommitment := lo.PanicOnErr(node1.Protocol.Engines.Main.Get().Storage.Commitments().Load(0)).Commitment() // Create and issue double spends { @@ -362,7 +362,7 @@ func Test_SpendRejectedCommittedRace(t *testing.T) { ) } - commitment1 := lo.PanicOnErr(node2.Protocol.MainEngine.Get().Storage.Commitments().Load(1)).Commitment() + commitment1 := lo.PanicOnErr(node2.Protocol.Engines.Main.Get().Storage.Commitments().Load(1)).Commitment() // This should be booked on the rejected tx1 conflict tx4 := lo.PanicOnErr(ts.TransactionFramework.CreateSimpleTransaction("tx4", 1, "tx1:0")) @@ -520,7 +520,7 @@ func Test_SpendPendingCommittedRace(t *testing.T) { node2.Validator.AccountID, }, ts.Nodes()...) - genesisCommitment := lo.PanicOnErr(node1.Protocol.MainEngine.Get().Storage.Commitments().Load(0)).Commitment() + genesisCommitment := lo.PanicOnErr(node1.Protocol.Engines.Main.Get().Storage.Commitments().Load(0)).Commitment() // Create and issue double spends { @@ -601,7 +601,7 @@ func Test_SpendPendingCommittedRace(t *testing.T) { ) } - commitment1 := lo.PanicOnErr(node2.Protocol.MainEngine.Get().Storage.Commitments().Load(1)).Commitment() + commitment1 := lo.PanicOnErr(node2.Protocol.Engines.Main.Get().Storage.Commitments().Load(1)).Commitment() // Issue a block booked on a pending conflict on node2 { diff --git a/pkg/tests/confirmation_state_test.go b/pkg/tests/confirmation_state_test.go index 2099fbfb8..b97c4b549 100644 --- a/pkg/tests/confirmation_state_test.go +++ b/pkg/tests/confirmation_state_test.go @@ -108,7 +108,7 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithChainID(genesisCommitment.MustID()), testsuite.WithStorageCommitments([]*iotago.Commitment{genesisCommitment}), testsuite.WithSybilProtectionCommittee(0, expectedCommittee), - testsuite.WithSybilProtectionOnlineCommittee(lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID))), + testsuite.WithSybilProtectionOnlineCommittee(lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID))), testsuite.WithEvictedSlot(0), testsuite.WithActiveRootBlocks(ts.Blocks("Genesis")), testsuite.WithStorageRootBlocks(ts.Blocks("Genesis")), @@ -145,7 +145,7 @@ func TestConfirmationFlags(t *testing.T) { // Issue in the next slot so that slot 2 becomes committed. - slot1Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine.Get().Storage.Commitments().Load(1)).Commitment() + slot1Commitment := lo.PanicOnErr(nodeA.Protocol.Engines.Main.Get().Storage.Commitments().Load(1)).Commitment() slot2CommittableSlot := slot1CommittableSlot + 1 alias2A0 := fmt.Sprintf("A.%d.0", slot2CommittableSlot) alias2A1 := fmt.Sprintf("A.%d.1", slot2CommittableSlot) @@ -165,15 +165,15 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(2), testsuite.WithSybilProtectionCommittee(slot2CommittableSlot, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), + lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), + lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), ), testsuite.WithEvictedSlot(2), ) // Confirm aliasA0 by pre-confirming a block a 3rd validator in the next slot. - slot2Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine.Get().Storage.Commitments().Load(2)).Commitment() + slot2Commitment := lo.PanicOnErr(nodeA.Protocol.Engines.Main.Get().Storage.Commitments().Load(2)).Commitment() slot3CommittableSlot := slot2CommittableSlot + 1 alias3C0 := fmt.Sprintf("C.%d.0", slot3CommittableSlot) @@ -205,9 +205,9 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(2), testsuite.WithSybilProtectionCommittee(slot3CommittableSlot, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.Validator.AccountID)), + lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), + lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), + lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.Validator.AccountID)), ), testsuite.WithEvictedSlot(2), ) @@ -260,9 +260,9 @@ func TestConfirmationFlags(t *testing.T) { testsuite.WithEqualStoredCommitmentAtIndex(3), testsuite.WithSybilProtectionCommittee(slot4CommittableSlot, expectedCommittee), testsuite.WithSybilProtectionOnlineCommittee( - lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.Validator.AccountID)), + lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), + lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), + lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeC.Validator.AccountID)), ), testsuite.WithEvictedSlot(3), ) diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index ccc788eed..7a078023e 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -46,7 +46,7 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { // Create snapshot to use later. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("node0").Protocol.MainEngine.Get().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("node0").Protocol.Engines.Main.Get().WriteSnapshot(snapshotPath)) // Revive chain on node0. { @@ -147,7 +147,7 @@ func TestLossOfAcceptanceFromSnapshot(t *testing.T) { var node0restarted *mock.Node { snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("node0").Protocol.MainEngine.Get().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("node0").Protocol.Engines.Main.Get().WriteSnapshot(snapshotPath)) node0restarted = ts.AddNode("node0-restarted") node0restarted.Validator = node0.Validator diff --git a/pkg/tests/protocol_engine_rollback_test.go b/pkg/tests/protocol_engine_rollback_test.go index fc273918b..c7647fde4 100644 --- a/pkg/tests/protocol_engine_rollback_test.go +++ b/pkg/tests/protocol_engine_rollback_test.go @@ -98,14 +98,14 @@ func TestProtocol_EngineRollbackFinalization(t *testing.T) { node3.Validator.AccountID, } expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), } for _, node := range ts.Nodes() { - node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") } { @@ -171,7 +171,7 @@ func TestProtocol_EngineRollbackFinalization(t *testing.T) { ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) } - newEngine, err := node3.Protocol.EngineManager.ForkAtSlot(13) + newEngine, err := node3.Protocol.Engines.ForkAtSlot(13) require.NoError(t, err) // Assert state of the forked engine after rollback. @@ -194,7 +194,7 @@ func TestProtocol_EngineRollbackFinalization(t *testing.T) { for slot := 1; slot <= 13; slot++ { copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngine.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) + sourceCommitment, err := node1.Protocol.Engines.Main.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) } @@ -279,19 +279,19 @@ func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { node3.Validator.AccountID, } expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), } expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), } for _, node := range ts.Nodes() { - node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") } { @@ -343,7 +343,7 @@ func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { // Update online committee. for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) manualPOA.SetOnline("node0", "node1") manualPOA.SetOffline("node2", "node3") } @@ -364,7 +364,7 @@ func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) } - newEngine, err := node3.Protocol.EngineManager.ForkAtSlot(13) + newEngine, err := node3.Protocol.Engines.ForkAtSlot(13) require.NoError(t, err) // Assert state of the forked engine after rollback. @@ -387,7 +387,7 @@ func TestProtocol_EngineRollbackNoFinalization(t *testing.T) { for slot := 1; slot <= 13; slot++ { copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngine.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) + sourceCommitment, err := node1.Protocol.Engines.Main.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) } @@ -472,19 +472,19 @@ func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { node3.Validator.AccountID, } expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), } expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), } for _, node := range ts.Nodes() { - node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") } { @@ -536,7 +536,7 @@ func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { // Update online committee. for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) manualPOA.SetOnline("node0", "node1") manualPOA.SetOffline("node2", "node3") } @@ -557,7 +557,7 @@ func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) } - newEngine, err := node3.Protocol.EngineManager.ForkAtSlot(15) + newEngine, err := node3.Protocol.Engines.ForkAtSlot(15) require.NoError(t, err) // Assert state of the forked engine after rollback. @@ -580,7 +580,7 @@ func TestProtocol_EngineRollbackNoFinalizationLastSlot(t *testing.T) { for slot := 1; slot <= 15; slot++ { copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngine.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) + sourceCommitment, err := node1.Protocol.Engines.Main.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) } @@ -665,19 +665,19 @@ func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T node3.Validator.AccountID, } expectedOnlineCommitteeFull := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), } expectedOnlineCommitteeHalf := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), } for _, node := range ts.Nodes() { - node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") + node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3") } { @@ -729,7 +729,7 @@ func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T // Update online committee. for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) manualPOA.SetOnline("node0", "node1") manualPOA.SetOffline("node2", "node3") } @@ -750,7 +750,7 @@ func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) } - newEngine, err := node3.Protocol.EngineManager.ForkAtSlot(9) + newEngine, err := node3.Protocol.Engines.ForkAtSlot(9) require.NoError(t, err) // Assert state of the forked engine after rollback. @@ -773,7 +773,7 @@ func TestProtocol_EngineRollbackNoFinalizationBeforePointOfNoReturn(t *testing.T for slot := 1; slot <= 9; slot++ { copiedCommitment, err := newEngine.Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) - sourceCommitment, err := node1.Protocol.MainEngine.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) + sourceCommitment, err := node1.Protocol.Engines.Main.Get().Storage.Commitments().Load(iotago.SlotIndex(slot)) require.NoError(t, err) require.Equal(t, sourceCommitment.ID(), copiedCommitment.ID()) } diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index d9538571a..c811207d2 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -128,20 +128,20 @@ func TestProtocol_EngineSwitching(t *testing.T) { node7.Validator.AccountID, } expectedP1OnlineCommittee := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node4.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node0.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node1.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node2.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node3.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node4.Validator.AccountID)), } expectedP2OnlineCommittee := []account.SeatIndex{ - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node6.Validator.AccountID)), - lo.Return1(node0.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node7.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node6.Validator.AccountID)), + lo.Return1(node0.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(node7.Validator.AccountID)), } expectedOnlineCommittee := append(expectedP1OnlineCommittee, expectedP2OnlineCommittee...) for _, node := range ts.Nodes() { - node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") + node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().(*mock2.ManualPOA).SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") } // Verify that nodes have the expected states. @@ -207,7 +207,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { // Set online committee for each partition. for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) if node.Partition == "P1" { manualPOA.SetOnline("node0", "node1", "node2", "node3", "node4") manualPOA.SetOffline("node6", "node7") @@ -329,7 +329,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { } for _, node := range ts.Nodes() { - manualPOA := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) + manualPOA := node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().(*mock2.ManualPOA) manualPOA.SetOnline("node0", "node1", "node2", "node3", "node4", "node6", "node7") } // Merge the partitions diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index f54f55fe1..c6a6bbf66 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -58,7 +58,7 @@ func Test_BookInCommittedSlot(t *testing.T) { } expectedOnlineCommittee := []account.SeatIndex{ - lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), + lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), } // Verify that nodes have the expected states. @@ -113,7 +113,7 @@ func Test_BookInCommittedSlot(t *testing.T) { }) ts.AssertAttestationsForSlot(slot, ts.Blocks(aliases...), ts.Nodes()...) } - ts.IssueValidationBlockAtSlot("5*", 5, lo.PanicOnErr(nodeA.Protocol.MainEngine.Get().Storage.Commitments().Load(3)).Commitment(), ts.Node("nodeA"), ts.BlockIDsWithPrefix("4.3-")...) + ts.IssueValidationBlockAtSlot("5*", 5, lo.PanicOnErr(nodeA.Protocol.Engines.Main.Get().Storage.Commitments().Load(3)).Commitment(), ts.Node("nodeA"), ts.BlockIDsWithPrefix("4.3-")...) ts.AssertBlocksExist(ts.Blocks("5*"), false, ts.Nodes("nodeA")...) } @@ -168,8 +168,8 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { } expectedOnlineCommittee := []account.SeatIndex{ - lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), - lo.Return1(nodeA.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), + lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeA.Validator.AccountID)), + lo.Return1(nodeA.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(1).GetSeat(nodeB.Validator.AccountID)), } // Verify that nodes have the expected states. @@ -323,7 +323,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngine.Get().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.Engines.Main.Get().WriteSnapshot(snapshotPath)) nodeD := ts.AddNode("nodeD") nodeD.Initialize(true, append(nodeOptions, @@ -344,7 +344,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { ts.AssertStorageRootBlocks(expectedStorageRootBlocksFrom9, ts.Nodes("nodeD")...) } - slot7Commitment := lo.PanicOnErr(nodeA.Protocol.MainEngine.Get().Storage.Commitments().Load(7)) + slot7Commitment := lo.PanicOnErr(nodeA.Protocol.Engines.Main.Get().Storage.Commitments().Load(7)) ts.AssertNodeState(ts.Nodes("nodeC-restarted", "nodeD"), testsuite.WithSnapshotImported(true), @@ -473,7 +473,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngine.Get().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.Engines.Main.Get().WriteSnapshot(snapshotPath)) nodeD := ts.AddNode("nodeE") nodeD.Initialize(true, append(nodeOptions, diff --git a/pkg/tests/upgrade_signaling_test.go b/pkg/tests/upgrade_signaling_test.go index 044f4d8a0..b2e65976c 100644 --- a/pkg/tests/upgrade_signaling_test.go +++ b/pkg/tests/upgrade_signaling_test.go @@ -204,7 +204,7 @@ func Test_Upgrade_Signaling(t *testing.T) { }, ts.Nodes()...) // check that rollback is correct - account, exists, err := ts.Node("nodeA").Protocol.MainEngine.Get().Ledger.Account(ts.Node("nodeA").Validator.AccountID, 7) + account, exists, err := ts.Node("nodeA").Protocol.Engines.Main.Get().Ledger.Account(ts.Node("nodeA").Validator.AccountID, 7) require.NoError(t, err) require.True(t, exists) require.Equal(t, model.VersionAndHash{Version: 4, Hash: hash2}, account.LatestSupportedProtocolVersionAndHash) @@ -252,7 +252,7 @@ func Test_Upgrade_Signaling(t *testing.T) { // Create snapshot. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeA").Protocol.MainEngine.Get().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeA").Protocol.Engines.Main.Get().WriteSnapshot(snapshotPath)) { nodeG := ts.AddNode("nodeG") @@ -311,7 +311,7 @@ func Test_Upgrade_Signaling(t *testing.T) { // Create snapshot and start new nodeH from it. { snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) - require.NoError(t, ts.Node("nodeE2").Protocol.MainEngine.Get().WriteSnapshot(snapshotPath)) + require.NoError(t, ts.Node("nodeE2").Protocol.Engines.Main.Get().WriteSnapshot(snapshotPath)) nodeG := ts.AddNode("nodeH") nodeG.Initialize(true, diff --git a/pkg/testsuite/accounts.go b/pkg/testsuite/accounts.go index 55407e902..6dfdef91f 100644 --- a/pkg/testsuite/accounts.go +++ b/pkg/testsuite/accounts.go @@ -13,12 +13,12 @@ import ( func (t *TestSuite) AssertAccountData(accountData *accounts.AccountData, nodes ...*mock.Node) { t.Eventually(func() error { for _, node := range nodes { - actualAccountData, exists, err := node.Protocol.MainEngine.Get().Ledger.Account(accountData.ID, node.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot()) + actualAccountData, exists, err := node.Protocol.Engines.Main.Get().Ledger.Account(accountData.ID, node.Protocol.Engines.Main.Get().SyncManager.LatestCommitment().Slot()) if err != nil { return ierrors.Wrap(err, "AssertAccountData: failed to load account data") } if !exists { - return ierrors.Errorf("AssertAccountData: %s: account %s does not exist with latest committed slot %d", node.Name, accountData.ID, node.Protocol.MainEngine.Get().SyncManager.LatestCommitment().Slot()) + return ierrors.Errorf("AssertAccountData: %s: account %s does not exist with latest committed slot %d", node.Name, accountData.ID, node.Protocol.Engines.Main.Get().SyncManager.LatestCommitment().Slot()) } if accountData.ID != actualAccountData.ID { @@ -74,7 +74,7 @@ func (t *TestSuite) AssertAccountDiff(accountID iotago.AccountID, index iotago.S t.Eventually(func() error { for _, node := range nodes { - accountsDiffStorage, err := node.Protocol.MainEngine.Get().Storage.AccountDiffs(index) + accountsDiffStorage, err := node.Protocol.Engines.Main.Get().Storage.AccountDiffs(index) if err != nil { return ierrors.Wrapf(err, "AssertAccountDiff: %s: failed to load accounts diff for slot %d", node.Name, index) } diff --git a/pkg/testsuite/attestations.go b/pkg/testsuite/attestations.go index d4b72a9c7..54c87e6f8 100644 --- a/pkg/testsuite/attestations.go +++ b/pkg/testsuite/attestations.go @@ -23,7 +23,7 @@ func (t *TestSuite) AssertAttestationsForSlot(slot iotago.SlotIndex, blocks []*b for _, node := range nodes { t.Eventually(func() error { - attestationTree, err := node.Protocol.MainEngine.Get().Attestations.GetMap(slot) + attestationTree, err := node.Protocol.Engines.Main.Get().Attestations.GetMap(slot) if err != nil { return ierrors.Wrapf(err, "AssertAttestationsForSlot: %s: error loading attestation tree for slot %d", node.Name, slot) } diff --git a/pkg/testsuite/blocks.go b/pkg/testsuite/blocks.go index e00a499d1..3b77f6193 100644 --- a/pkg/testsuite/blocks.go +++ b/pkg/testsuite/blocks.go @@ -16,7 +16,7 @@ func (t *TestSuite) AssertBlock(block *blocks.Block, node *mock.Node) *model.Blo var loadedBlock *model.Block t.Eventually(func() error { var exists bool - loadedBlock, exists = node.Protocol.MainEngine.Get().Block(block.ID()) + loadedBlock, exists = node.Protocol.Engines.Main.Get().Block(block.ID()) if !exists { return ierrors.Errorf("AssertBlock: %s: block %s does not exist", node.Name, block.ID()) } @@ -47,7 +47,7 @@ func (t *TestSuite) AssertBlocksExist(blocks []*blocks.Block, expectedExist bool t.AssertBlock(block, node) } else { t.Eventually(func() error { - if lo.Return2(node.Protocol.MainEngine.Get().Block(block.ID())) { + if lo.Return2(node.Protocol.Engines.Main.Get().Block(block.ID())) { return ierrors.Errorf("AssertBlocksExist: %s: block %s exists but should not", node.Name, block) } @@ -64,7 +64,7 @@ func (t *TestSuite) assertBlocksInCacheWithFunc(expectedBlocks []*blocks.Block, for _, node := range nodes { for _, block := range expectedBlocks { t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngine.Get().BlockFromCache(block.ID()) + blockFromCache, exists := node.Protocol.Engines.Main.Get().BlockFromCache(block.ID()) if !exists { return ierrors.Errorf("assertBlocksInCacheWithFunc[%s]: %s: block %s does not exist", propertyName, node.Name, block.ID()) } @@ -121,7 +121,7 @@ func (t *TestSuite) AssertBlocksInCacheConflicts(blockConflicts map[*blocks.Bloc for _, node := range nodes { for block, conflictAliases := range blockConflicts { t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngine.Get().BlockFromCache(block.ID()) + blockFromCache, exists := node.Protocol.Engines.Main.Get().BlockFromCache(block.ID()) if !exists { return ierrors.Errorf("AssertBlocksInCacheConflicts: %s: block %s does not exist", node.Name, block.ID()) } diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index b2e42b3cb..6db00d9ed 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -16,7 +16,7 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { } latestChainCommitment := chain.LatestCommitment.Get() - latestCommitment := node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment() + latestCommitment := node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment() if latestCommitment.ID() != latestChainCommitment.ID() { return ierrors.Errorf("AssertChainManagerIsSolid: %s: latest commitment is not equal, expected %s, got %s", node.Name, latestCommitment.ID(), latestChainCommitment.ID()) diff --git a/pkg/testsuite/conflicts.go b/pkg/testsuite/conflicts.go index f191b0017..5a996cfc0 100644 --- a/pkg/testsuite/conflicts.go +++ b/pkg/testsuite/conflicts.go @@ -13,7 +13,7 @@ func (t *TestSuite) AssertConflictsInCacheAcceptanceState(expectedConflictAliase for _, node := range nodes { for _, conflictAlias := range expectedConflictAliases { t.Eventually(func() error { - acceptanceState := node.Protocol.MainEngine.Get().Ledger.ConflictDAG().AcceptanceState(ds.NewSet(t.TransactionFramework.TransactionID(conflictAlias))) + acceptanceState := node.Protocol.Engines.Main.Get().Ledger.ConflictDAG().AcceptanceState(ds.NewSet(t.TransactionFramework.TransactionID(conflictAlias))) if acceptanceState != expectedState { return ierrors.Errorf("assertTransactionsInCacheWithFunc: %s: conflict %s is %s, but expected %s", node.Name, conflictAlias, acceptanceState, expectedState) diff --git a/pkg/testsuite/eviction.go b/pkg/testsuite/eviction.go index 0893e5c76..8b9500a1b 100644 --- a/pkg/testsuite/eviction.go +++ b/pkg/testsuite/eviction.go @@ -20,7 +20,7 @@ func (t *TestSuite) AssertActiveRootBlocks(expectedBlocks []*blocks.Block, nodes for _, node := range nodes { t.Eventually(func() error { - activeRootBlocks := node.Protocol.MainEngine.Get().EvictionState.ActiveRootBlocks() + activeRootBlocks := node.Protocol.Engines.Main.Get().EvictionState.ActiveRootBlocks() if !assert.Equal(t.fakeTesting, expectedRootBlocks, activeRootBlocks) { return ierrors.Errorf("AssertActiveRootBlocks: %s: expected %v, got %v", node.Name, expectedRootBlocks, activeRootBlocks) @@ -36,8 +36,8 @@ func (t *TestSuite) AssertEvictedSlot(expectedIndex iotago.SlotIndex, nodes ...* for _, node := range nodes { t.Eventually(func() error { - if expectedIndex != lo.Return1(node.Protocol.MainEngine.Get().EvictionState.LastEvictedSlot()) { - return ierrors.Errorf("AssertEvictedSlot: %s: expected %d, got %d", node.Name, expectedIndex, lo.Return1(node.Protocol.MainEngine.Get().EvictionState.LastEvictedSlot())) + if expectedIndex != lo.Return1(node.Protocol.Engines.Main.Get().EvictionState.LastEvictedSlot()) { + return ierrors.Errorf("AssertEvictedSlot: %s: expected %d, got %d", node.Name, expectedIndex, lo.Return1(node.Protocol.Engines.Main.Get().EvictionState.LastEvictedSlot())) } return nil diff --git a/pkg/testsuite/mock/acceptance_loss.go b/pkg/testsuite/mock/acceptance_loss.go index c69ce1a46..e295819b5 100644 --- a/pkg/testsuite/mock/acceptance_loss.go +++ b/pkg/testsuite/mock/acceptance_loss.go @@ -8,12 +8,12 @@ import ( ) func (i *BlockIssuer) reviveChain(issuingTime time.Time, node *Node) (*iotago.Commitment, iotago.BlockID, error) { - lastCommittedSlot := node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot() + lastCommittedSlot := node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Slot() apiForSlot := node.Protocol.APIForSlot(lastCommittedSlot) // Get a rootblock as recent as possible for the parent. parentBlockID := iotago.EmptyBlockID - for rootBlock := range node.Protocol.MainEngine.Get().EvictionState.ActiveRootBlocks() { + for rootBlock := range node.Protocol.Engines.Main.Get().EvictionState.ActiveRootBlocks() { if rootBlock.Slot() > parentBlockID.Slot() { parentBlockID = rootBlock } @@ -33,11 +33,11 @@ func (i *BlockIssuer) reviveChain(issuingTime time.Time, node *Node) (*iotago.Co } commitUntilSlot := issuingSlot - apiForSlot.ProtocolParameters().MinCommittableAge() - if err := node.Protocol.MainEngine.Get().Notarization.ForceCommitUntil(commitUntilSlot); err != nil { + if err := node.Protocol.Engines.Main.Get().Notarization.ForceCommitUntil(commitUntilSlot); err != nil { return nil, iotago.EmptyBlockID, ierrors.Wrapf(err, "failed to force commit until slot %d", commitUntilSlot) } - commitment, err := node.Protocol.MainEngine.Get().Storage.Commitments().Load(commitUntilSlot) + commitment, err := node.Protocol.Engines.Main.Get().Storage.Commitments().Load(commitUntilSlot) if err != nil { return nil, iotago.EmptyBlockID, ierrors.Wrapf(err, "failed to commit until slot %d to revive chain", commitUntilSlot) } diff --git a/pkg/testsuite/mock/blockissuer.go b/pkg/testsuite/mock/blockissuer.go index 554fb6cd4..d2b82d11a 100644 --- a/pkg/testsuite/mock/blockissuer.go +++ b/pkg/testsuite/mock/blockissuer.go @@ -188,7 +188,7 @@ func (i *BlockIssuer) IssueValidationBlock(ctx context.Context, alias string, no validationBlock, _ := block.ValidationBlock() - node.Protocol.MainEngine.Get().LogTrace("issued validation block", "blockID", block.ID(), "slot", block.ID().Slot(), "commitment", block.SlotCommitmentID(), "latestFinalizedSlot", block.ProtocolBlock().LatestFinalizedSlot, "version", block.ProtocolBlock().ProtocolVersion, "highestSupportedVersion", validationBlock.HighestSupportedVersion, "hash", validationBlock.ProtocolParametersHash) + node.Protocol.Engines.Main.Get().LogTrace("issued validation block", "blockID", block.ID(), "slot", block.ID().Slot(), "commitment", block.SlotCommitmentID(), "latestFinalizedSlot", block.ProtocolBlock().LatestFinalizedSlot, "version", block.ProtocolBlock().ProtocolVersion, "highestSupportedVersion", validationBlock.HighestSupportedVersion, "hash", validationBlock.ProtocolParametersHash) return block } @@ -255,7 +255,7 @@ func (i *BlockIssuer) CreateBasicBlock(ctx context.Context, alias string, node * if err != nil { rmcSlot = 0 } - rmc, err := node.Protocol.MainEngine.Get().Ledger.RMCManager().RMC(rmcSlot) + rmc, err := node.Protocol.Engines.Main.Get().Ledger.RMCManager().RMC(rmcSlot) require.NoError(i.Testing, err) // only set the burned Mana as the last step before signing, so workscore calculation is correct. @@ -378,8 +378,8 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco } if iotaBlock.SlotCommitmentID == iotago.EmptyCommitmentID { - iotaBlock.SlotCommitmentID = node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment().MustID() - iotaBlock.LatestFinalizedSlot = node.Protocol.MainEngine.Get().Storage.Settings().LatestFinalizedSlot() + iotaBlock.SlotCommitmentID = node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment().MustID() + iotaBlock.LatestFinalizedSlot = node.Protocol.Engines.Main.Get().Storage.Settings().LatestFinalizedSlot() resign = true } @@ -429,7 +429,7 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco if err != nil { rmcSlot = 0 } - rmc, err := node.Protocol.MainEngine.Get().Ledger.RMCManager().RMC(rmcSlot) + rmc, err := node.Protocol.Engines.Main.Get().Ledger.RMCManager().RMC(rmcSlot) if err != nil { return iotago.EmptyBlockID, ierrors.Wrapf(err, "error loading commitment of slot %d from storage to get RMC", rmcSlot) } @@ -468,7 +468,7 @@ func (i *BlockIssuer) AttachBlock(ctx context.Context, iotaBlock *iotago.Protoco return iotago.EmptyBlockID, ierrors.Wrap(err, "error serializing block to model block") } - if !i.optsRateSetterEnabled || node.Protocol.MainEngine.Get().Scheduler.IsBlockIssuerReady(modelBlock.ProtocolBlock().IssuerID) { + if !i.optsRateSetterEnabled || node.Protocol.Engines.Main.Get().Scheduler.IsBlockIssuerReady(modelBlock.ProtocolBlock().IssuerID) { i.events.BlockConstructed.Trigger(modelBlock) if err = i.IssueBlockAndAwaitEvent(ctx, modelBlock, node, node.Protocol.Events.Engine.BlockDAG.BlockAttached); err != nil { @@ -495,7 +495,7 @@ func (i *BlockIssuer) setDefaultBlockParams(blockParams *BlockHeaderParams, node } if blockParams.LatestFinalizedSlot == nil { - latestFinalizedSlot := node.Protocol.MainEngine.Get().Storage.Settings().LatestFinalizedSlot() + latestFinalizedSlot := node.Protocol.Engines.Main.Get().Storage.Settings().LatestFinalizedSlot() blockParams.LatestFinalizedSlot = &latestFinalizedSlot } @@ -516,7 +516,7 @@ func (i *BlockIssuer) getAddressableCommitment(currentAPI iotago.API, blockIssui protoParams := currentAPI.ProtocolParameters() blockSlot := currentAPI.TimeProvider().SlotFromTime(blockIssuingTime) - commitment := node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment() + commitment := node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment() if blockSlot > commitment.Slot+protoParams.MaxCommittableAge() { return nil, ierrors.Wrapf(ErrBlockTooRecent, "can't issue block: block slot %d is too far in the future, latest commitment is %d", blockSlot, commitment.Slot) @@ -528,7 +528,7 @@ func (i *BlockIssuer) getAddressableCommitment(currentAPI iotago.API, blockIssui } commitmentSlot := commitment.Slot - protoParams.MinCommittableAge() - loadedCommitment, err := node.Protocol.MainEngine.Get().Storage.Commitments().Load(commitmentSlot) + loadedCommitment, err := node.Protocol.Engines.Main.Get().Storage.Commitments().Load(commitmentSlot) if err != nil { return nil, ierrors.Wrapf(err, "error loading valid commitment of slot %d according to minCommittableAge from storage", commitmentSlot) } @@ -550,7 +550,7 @@ func (i *BlockIssuer) getReferences(ctx context.Context, p iotago.Payload, node func (i *BlockIssuer) validateReferences(issuingTime time.Time, slotCommitmentIndex iotago.SlotIndex, references model.ParentReferences, node *Node) error { for _, parent := range lo.Flatten(lo.Map(lo.Values(references), func(ds iotago.BlockIDs) []iotago.BlockID { return ds })) { - b, exists := node.Protocol.MainEngine.Get().BlockFromCache(parent) + b, exists := node.Protocol.Engines.Main.Get().BlockFromCache(parent) if !exists { return ierrors.Errorf("cannot issue block if the parents are not known: %s", parent) } @@ -572,7 +572,7 @@ func (i *BlockIssuer) IssueBlock(block *model.Block, node *Node) error { } if _, isValidationBlock := block.ValidationBlock(); isValidationBlock { - _ = node.Protocol.MainEngine.Get().Storage.Settings().SetLatestIssuedValidationBlock(block) + _ = node.Protocol.Engines.Main.Get().Storage.Settings().SetLatestIssuedValidationBlock(block) } i.events.BlockIssued.Trigger(block) @@ -596,7 +596,7 @@ func (i *BlockIssuer) getReferencesWithRetry(ctx context.Context, _ iotago.Paylo defer timeutil.CleanupTicker(interval) for { - references = node.Protocol.MainEngine.Get().TipSelection.SelectTips(parentsCount) + references = node.Protocol.Engines.Main.Get().TipSelection.SelectTips(parentsCount) if len(references[iotago.StrongParentType]) > 0 { return references, nil } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 3a8cfb416..a4ad97d5e 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -395,7 +395,7 @@ func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engi } func (n *Node) attachEngineLogs(failOnBlockFiltered bool, instance *engine.Engine) { - engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.MainEngine.Get() != instance, "Candidate", "Main"), instance.Name()[:8]) + engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.Engines.Main.Get() != instance, "Candidate", "Main"), instance.Name()[:8]) n.attachEngineLogsWithName(failOnBlockFiltered, instance, engineName) } diff --git a/pkg/testsuite/storage_accountdiffs.go b/pkg/testsuite/storage_accountdiffs.go index 532d64b08..e3d9ec9b3 100644 --- a/pkg/testsuite/storage_accountdiffs.go +++ b/pkg/testsuite/storage_accountdiffs.go @@ -15,7 +15,7 @@ func (t *TestSuite) AssertStorageAccountDiffs(slot iotago.SlotIndex, accountDiff for _, node := range nodes { for accountID, diffChange := range accountDiffs { t.Eventually(func() error { - store, err := node.Protocol.MainEngine.Get().Storage.AccountDiffs(slot) + store, err := node.Protocol.Engines.Main.Get().Storage.AccountDiffs(slot) if err != nil { return ierrors.Wrapf(err, "AssertStorageAccountDiffs: %s: failed to load accounts diff for slot %d", node.Name, slot) } diff --git a/pkg/testsuite/storage_blocks.go b/pkg/testsuite/storage_blocks.go index 21b9bc9ac..09c1afe30 100644 --- a/pkg/testsuite/storage_blocks.go +++ b/pkg/testsuite/storage_blocks.go @@ -10,7 +10,7 @@ import ( func (t *TestSuite) AssertStorageBlock(block *model.Block, node *mock.Node) { t.Eventually(func() error { - storage, err := node.Protocol.MainEngine.Get().Storage.Blocks(block.ID().Slot()) + storage, err := node.Protocol.Engines.Main.Get().Storage.Blocks(block.ID().Slot()) if err != nil { return ierrors.Errorf("AssertStorageBlock: %s: storage for %s is nil", node.Name, block.ID().Slot()) } @@ -37,7 +37,7 @@ func (t *TestSuite) AssertStorageBlockExist(block *model.Block, expectedExist bo t.AssertStorageBlock(block, node) } else { t.Eventually(func() error { - storage, err := node.Protocol.MainEngine.Get().Storage.Blocks(block.ID().Slot()) + storage, err := node.Protocol.Engines.Main.Get().Storage.Blocks(block.ID().Slot()) if err != nil { //nolint:nilerr // expected behavior return nil diff --git a/pkg/testsuite/storage_commitments.go b/pkg/testsuite/storage_commitments.go index 888d1ebd8..d14f7e9a2 100644 --- a/pkg/testsuite/storage_commitments.go +++ b/pkg/testsuite/storage_commitments.go @@ -15,7 +15,7 @@ func (t *TestSuite) AssertStorageCommitments(commitments []*iotago.Commitment, n for _, node := range nodes { for _, commitment := range commitments { t.Eventually(func() error { - storedCommitment, err := node.Protocol.MainEngine.Get().Storage.Commitments().Load(commitment.Slot) + storedCommitment, err := node.Protocol.Engines.Main.Get().Storage.Commitments().Load(commitment.Slot) if err != nil { return ierrors.Wrapf(err, "AssertStorageCommitments: %s: error loading commitment: %s", node.Name, commitment.MustID()) } @@ -37,7 +37,7 @@ func (t *TestSuite) AssertEqualStoredCommitmentAtIndex(index iotago.SlotIndex, n var commitment *model.Commitment var commitmentNode *mock.Node for _, node := range nodes { - storedCommitment, err := node.Protocol.MainEngine.Get().Storage.Commitments().Load(index) + storedCommitment, err := node.Protocol.Engines.Main.Get().Storage.Commitments().Load(index) if err != nil { return ierrors.Wrapf(err, "AssertEqualStoredCommitmentAtIndex: %s: error loading commitment for slot: %d", node.Name, index) } @@ -63,12 +63,12 @@ func (t *TestSuite) AssertStorageCommitmentBlocks(slot iotago.SlotIndex, expecte t.Eventually(func() error { for _, node := range nodes { - storedCommitment, err := node.Protocol.MainEngine.Get().Storage.Commitments().Load(slot) + storedCommitment, err := node.Protocol.Engines.Main.Get().Storage.Commitments().Load(slot) if err != nil { return ierrors.Wrapf(err, "AssertStorageCommitmentBlocks: %s: error loading commitment for slot: %d", node.Name, slot) } - committedSlot, err := node.Protocol.MainEngine.Get().CommittedSlot(storedCommitment.ID()) + committedSlot, err := node.Protocol.Engines.Main.Get().CommittedSlot(storedCommitment.ID()) if err != nil { return ierrors.Wrapf(err, "AssertStorageCommitmentBlocks: %s: error getting committed slot for commitment: %s", node.Name, storedCommitment.ID()) } diff --git a/pkg/testsuite/storage_prunable.go b/pkg/testsuite/storage_prunable.go index 4fe4db6ca..f5fa36271 100644 --- a/pkg/testsuite/storage_prunable.go +++ b/pkg/testsuite/storage_prunable.go @@ -26,7 +26,7 @@ func (t *TestSuite) AssertPrunedUntil(expectedStorage *types.Tuple[int, bool], for _, node := range nodes { t.Eventually(func() error { - if err := t.assertPrunedUntil(node.Protocol.MainEngine.Get().Storage, expectedStorage, expectedDecidedUpgrades, expectedPoolStats, expectedCommittee, expectedRewards); err != nil { + if err := t.assertPrunedUntil(node.Protocol.Engines.Main.Get().Storage, expectedStorage, expectedDecidedUpgrades, expectedPoolStats, expectedCommittee, expectedRewards); err != nil { return ierrors.Wrapf(err, "AssertPrunedSlot: %s", node.Name) } diff --git a/pkg/testsuite/storage_rootblocks.go b/pkg/testsuite/storage_rootblocks.go index 3deea5499..119c140a6 100644 --- a/pkg/testsuite/storage_rootblocks.go +++ b/pkg/testsuite/storage_rootblocks.go @@ -12,7 +12,7 @@ func (t *TestSuite) AssertStorageRootBlocks(blocks []*blocks.Block, nodes ...*mo for _, node := range nodes { for _, block := range blocks { t.Eventually(func() error { - storage, err := node.Protocol.MainEngine.Get().Storage.RootBlocks(block.ID().Slot()) + storage, err := node.Protocol.Engines.Main.Get().Storage.RootBlocks(block.ID().Slot()) if err != nil { return ierrors.Errorf("AssertStorageRootBlocks: %s: error loading root blocks for %s: %v", node.Name, block.ID().Slot(), err) } diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 5cf1e7afb..f8667ead0 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -11,8 +11,8 @@ func (t *TestSuite) AssertSnapshotImported(imported bool, nodes ...*mock.Node) { for _, node := range nodes { t.Eventually(func() error { - if imported != node.Protocol.MainEngine.Get().Storage.Settings().IsSnapshotImported() { - return ierrors.Errorf("AssertSnapshotImported: %s: expected %v, got %v", node.Name, imported, node.Protocol.MainEngine.Get().Storage.Settings().IsSnapshotImported()) + if imported != node.Protocol.Engines.Main.Get().Storage.Settings().IsSnapshotImported() { + return ierrors.Errorf("AssertSnapshotImported: %s: expected %v, got %v", node.Name, imported, node.Protocol.Engines.Main.Get().Storage.Settings().IsSnapshotImported()) } return nil @@ -39,8 +39,8 @@ func (t *TestSuite) AssertLatestCommitment(commitment *iotago.Commitment, nodes for _, node := range nodes { t.Eventually(func() error { - if !commitment.Equals(node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment()) { - return ierrors.Errorf("AssertLatestCommitment: %s: expected %s, got %s", node.Name, commitment, node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment()) + if !commitment.Equals(node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment()) { + return ierrors.Errorf("AssertLatestCommitment: %s: expected %s, got %s", node.Name, commitment, node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment()) } return nil @@ -53,11 +53,11 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes for _, node := range nodes { t.Eventually(func() error { - if node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().ID().Slot() < slot { + if node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().ID().Slot() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment with at least %v not found in settings.LatestCommitment()", node.Name, slot) } - cm, err := node.Protocol.MainEngine.Get().Storage.Commitments().Load(slot) + cm, err := node.Protocol.Engines.Main.Get().Storage.Commitments().Load(slot) if err != nil { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: expected %v, got error %v", node.Name, slot, err) } @@ -81,8 +81,8 @@ func (t *TestSuite) AssertLatestCommitmentSlotIndex(slot iotago.SlotIndex, nodes for _, node := range nodes { t.Eventually(func() error { - if slot != node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot() { - return ierrors.Errorf("AssertLatestCommitmentSlotIndex: %s: expected %v, got %v", node.Name, slot, node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot()) + if slot != node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Slot() { + return ierrors.Errorf("AssertLatestCommitmentSlotIndex: %s: expected %v, got %v", node.Name, slot, node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Slot()) } return nil @@ -95,8 +95,8 @@ func (t *TestSuite) AssertLatestCommitmentCumulativeWeight(cw uint64, nodes ...* for _, node := range nodes { t.Eventually(func() error { - if cw != node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().CumulativeWeight() { - return ierrors.Errorf("AssertLatestCommitmentCumulativeWeight: %s: expected %v, got %v", node.Name, cw, node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().CumulativeWeight()) + if cw != node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().CumulativeWeight() { + return ierrors.Errorf("AssertLatestCommitmentCumulativeWeight: %s: expected %v, got %v", node.Name, cw, node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().CumulativeWeight()) } return nil @@ -109,8 +109,8 @@ func (t *TestSuite) AssertLatestFinalizedSlot(slot iotago.SlotIndex, nodes ...*m for _, node := range nodes { t.Eventually(func() error { - if slot != node.Protocol.MainEngine.Get().Storage.Settings().LatestFinalizedSlot() { - return ierrors.Errorf("AssertLatestFinalizedSlot: %s: expected %d, got %d from settings", node.Name, slot, node.Protocol.MainEngine.Get().Storage.Settings().LatestFinalizedSlot()) + if slot != node.Protocol.Engines.Main.Get().Storage.Settings().LatestFinalizedSlot() { + return ierrors.Errorf("AssertLatestFinalizedSlot: %s: expected %d, got %d from settings", node.Name, slot, node.Protocol.Engines.Main.Get().Storage.Settings().LatestFinalizedSlot()) } return nil diff --git a/pkg/testsuite/sybilprotection.go b/pkg/testsuite/sybilprotection.go index 123ec2e3d..65a28a7b8 100644 --- a/pkg/testsuite/sybilprotection.go +++ b/pkg/testsuite/sybilprotection.go @@ -14,7 +14,7 @@ func (t *TestSuite) AssertSybilProtectionCommittee(slot iotago.SlotIndex, expect for _, node := range nodes { t.Eventually(func() error { - accounts := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().Committee(slot).Accounts().IDs() + accounts := node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().Committee(slot).Accounts().IDs() if !assert.ElementsMatch(t.fakeTesting, expectedAccounts, accounts) { return ierrors.Errorf("AssertSybilProtectionCommittee: %s: expected %s, got %s", node.Name, expectedAccounts, accounts) } @@ -33,7 +33,7 @@ func (t *TestSuite) AssertSybilProtectionOnlineCommittee(expectedSeats []account for _, node := range nodes { t.Eventually(func() error { - seats := node.Protocol.MainEngine.Get().SybilProtection.SeatManager().OnlineCommittee().ToSlice() + seats := node.Protocol.Engines.Main.Get().SybilProtection.SeatManager().OnlineCommittee().ToSlice() if !assert.ElementsMatch(t.fakeTesting, expectedSeats, seats) { return ierrors.Errorf("AssertSybilProtectionOnlineCommittee: %s: expected %v, got %v", node.Name, expectedSeats, seats) } diff --git a/pkg/testsuite/testsuite_issue_blocks.go b/pkg/testsuite/testsuite_issue_blocks.go index bec70d4bf..73f578ea9 100644 --- a/pkg/testsuite/testsuite_issue_blocks.go +++ b/pkg/testsuite/testsuite_issue_blocks.go @@ -284,7 +284,7 @@ func (t *TestSuite) CommitUntilSlot(slot iotago.SlotIndex, parent *blocks.Block) // then issue one more block to accept the last in the chain which will trigger commitment of the second last in the chain activeValidators := t.Validators() - latestCommittedSlot := activeValidators[0].Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Slot() + latestCommittedSlot := activeValidators[0].Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Slot() if latestCommittedSlot >= slot { return parent } @@ -296,12 +296,12 @@ func (t *TestSuite) CommitUntilSlot(slot iotago.SlotIndex, parent *blocks.Block) for _, node := range activeValidators { require.True(t.Testing, node.IsValidator(), "node: %s: is not a validator node", node.Name) blockAlias := fmt.Sprintf("chain-%s-%d-%s", parent.ID().Alias(), chainIndex, node.Name) - tip = t.IssueValidationBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) + tip = t.IssueValidationBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) } // acceptance of nextBlockSlot for _, node := range activeValidators { blockAlias := fmt.Sprintf("chain-%s-%d-%s", parent.ID().Alias(), chainIndex+1, node.Name) - tip = t.IssueValidationBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.MainEngine.Get().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) + tip = t.IssueValidationBlockAtSlot(blockAlias, nextBlockSlot, node.Protocol.Engines.Main.Get().Storage.Settings().LatestCommitment().Commitment(), node, tip.ID()) } if nextBlockSlot == slot+t.API.ProtocolParameters().MinCommittableAge() { break diff --git a/pkg/testsuite/tips.go b/pkg/testsuite/tips.go index c9f315d1c..cc5b4f5ff 100644 --- a/pkg/testsuite/tips.go +++ b/pkg/testsuite/tips.go @@ -17,7 +17,7 @@ func (t *TestSuite) AssertStrongTips(expectedBlocks []*blocks.Block, nodes ...*m for _, node := range nodes { t.Eventually(func() error { - storedTipsBlocks := node.Protocol.MainEngine.Get().TipManager.StrongTips() + storedTipsBlocks := node.Protocol.Engines.Main.Get().TipManager.StrongTips() storedTipsBlockIDs := lo.Map(storedTipsBlocks, tipmanager.TipMetadata.ID) if !assert.ElementsMatch(t.fakeTesting, expectedBlockIDs, storedTipsBlockIDs) { diff --git a/pkg/testsuite/transactions.go b/pkg/testsuite/transactions.go index c4b3e0528..6a4502feb 100644 --- a/pkg/testsuite/transactions.go +++ b/pkg/testsuite/transactions.go @@ -19,7 +19,7 @@ func (t *TestSuite) AssertTransaction(transaction *iotago.Transaction, node *moc t.Eventually(func() error { var exists bool - loadedTransactionMetadata, exists = node.Protocol.MainEngine.Get().Ledger.TransactionMetadata(transactionID) + loadedTransactionMetadata, exists = node.Protocol.Engines.Main.Get().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("AssertTransaction: %s: transaction %s does not exist", node.Name, transactionID) } @@ -61,7 +61,7 @@ func (t *TestSuite) AssertTransactionsExist(transactions []*iotago.Transaction, t.AssertTransaction(transaction, node) } else { t.Eventually(func() error { - if lo.Return2(node.Protocol.MainEngine.Get().Ledger.TransactionMetadata(transactionID)) { + if lo.Return2(node.Protocol.Engines.Main.Get().Ledger.TransactionMetadata(transactionID)) { return ierrors.Errorf("AssertTransactionsExist: %s: transaction %s exists but should not", node.Name, transactionID) } @@ -84,7 +84,7 @@ func (t *TestSuite) assertTransactionsInCacheWithFunc(expectedTransactions []*io require.NoError(t.Testing, err) t.Eventually(func() error { - blockFromCache, exists := node.Protocol.MainEngine.Get().Ledger.TransactionMetadata(transactionID) + blockFromCache, exists := node.Protocol.Engines.Main.Get().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("assertTransactionsInCacheWithFunc: %s: transaction %s does not exist", node.Name, transactionID) } @@ -136,7 +136,7 @@ func (t *TestSuite) AssertTransactionInCacheConflicts(transactionConflicts map[* require.NoError(t.Testing, err) t.Eventually(func() error { - transactionFromCache, exists := node.Protocol.MainEngine.Get().Ledger.TransactionMetadata(transactionID) + transactionFromCache, exists := node.Protocol.Engines.Main.Get().Ledger.TransactionMetadata(transactionID) if !exists { return ierrors.Errorf("AssertTransactionInCacheConflicts: %s: block %s does not exist", node.Name, transactionID) } diff --git a/pkg/testsuite/transactions_framework.go b/pkg/testsuite/transactions_framework.go index 108aeb368..82c6c2a68 100644 --- a/pkg/testsuite/transactions_framework.go +++ b/pkg/testsuite/transactions_framework.go @@ -34,7 +34,7 @@ func NewTransactionFramework(protocol *protocol.Protocol, genesisSeed []byte) *T wallet: mock.NewHDWallet("genesis", genesisSeed, 0), } - if err := protocol.MainEngine.Get().Ledger.ForEachUnspentOutput(func(output *utxoledger.Output) bool { + if err := protocol.Engines.Main.Get().Ledger.ForEachUnspentOutput(func(output *utxoledger.Output) bool { tf.states[fmt.Sprintf("Genesis:%d", output.OutputID().Index())] = output return true }); err != nil { diff --git a/pkg/testsuite/upgrades.go b/pkg/testsuite/upgrades.go index c7ddc67ab..5ecfa1a33 100644 --- a/pkg/testsuite/upgrades.go +++ b/pkg/testsuite/upgrades.go @@ -14,7 +14,7 @@ func (t *TestSuite) AssertEpochVersions(epochVersions map[iotago.Version]iotago. t.Eventually(func() error { for version, expectedEpoch := range epochVersions { - epochForVersion, exists := node.Protocol.MainEngine.Get().Storage.Settings().APIProvider().EpochForVersion(version) + epochForVersion, exists := node.Protocol.Engines.Main.Get().Storage.Settings().APIProvider().EpochForVersion(version) if !exists { return ierrors.Errorf("AssertEpochVersions: %s: version %d not found", node.Name, version) } @@ -36,7 +36,7 @@ func (t *TestSuite) AssertVersionAndProtocolParameters(versionsAndProtocolParame t.Eventually(func() error { for version, expectedProtocolParameters := range versionsAndProtocolParameters { - protocolParameters := node.Protocol.MainEngine.Get().Storage.Settings().APIProvider().ProtocolParameters(version) + protocolParameters := node.Protocol.Engines.Main.Get().Storage.Settings().APIProvider().ProtocolParameters(version) if expectedProtocolParameters == nil { if protocolParameters != nil { @@ -71,7 +71,7 @@ func (t *TestSuite) AssertVersionAndProtocolParametersHashes(versionsAndProtocol t.Eventually(func() error { for version, expectedProtocolParametersHash := range versionsAndProtocolParametersHashes { - protocolParametersHash := node.Protocol.MainEngine.Get().Storage.Settings().APIProvider().ProtocolParametersHash(version) + protocolParametersHash := node.Protocol.Engines.Main.Get().Storage.Settings().APIProvider().ProtocolParametersHash(version) if expectedProtocolParametersHash == iotago.EmptyIdentifier { if protocolParametersHash != iotago.EmptyIdentifier { From 0c33362f93818e95ee269798be33892301c8102b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 2 Nov 2023 15:03:56 +0100 Subject: [PATCH 212/356] Refactor: played with hive.go framework structure --- go.mod | 28 ++++----- go.sum | 56 +++++++++--------- pkg/core/rx/define.go | 105 ---------------------------------- pkg/protocol/commitment.go | 60 ++++++++----------- tools/evil-spammer/go.mod | 28 ++++----- tools/evil-spammer/go.sum | 56 +++++++++--------- tools/gendoc/go.mod | 28 ++++----- tools/gendoc/go.sum | 56 +++++++++--------- tools/genesis-snapshot/go.mod | 26 ++++----- tools/genesis-snapshot/go.sum | 52 ++++++++--------- 10 files changed, 190 insertions(+), 305 deletions(-) delete mode 100644 pkg/core/rx/define.go diff --git a/go.mod b/go.mod index 87ac97ae1..75f1f3d74 100644 --- a/go.mod +++ b/go.mod @@ -10,20 +10,20 @@ require ( github.com/google/uuid v1.3.1 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231020151337-569450d5bf7d github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd diff --git a/go.sum b/go.sum index fdc3b1650..92dc401e9 100644 --- a/go.sum +++ b/go.sum @@ -277,34 +277,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 h1:EOfxTuAiBmED1VHuVh7/UIeB27cCRe13gdSzyioNMBw= -github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 h1:xAER9M9Uoz2EOWT43E9wmXRe+RmAk8OBSUoboH4Su8M= -github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= -github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 h1:drmpgLlJy7kZ09Dt1qKSnbILU+27Qu2jp4VdPDNwbFk= -github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 h1:BC5GkIHyXdoJGdw6Tu5ds2kjw9grFLtwQiuMaKfdLU8= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 h1:r8TkdQJB7/bJd8cF8z5GQ+rX/7JpbPdPoN7wMoV1OCM= -github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 h1:ytzZZPtclAzLfjxv26frbinCGx3Z6ouUENbx5U7lFGg= -github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 h1:QMxd32Y/veVhTDPCiOFgetjUbG7sr9MryF29/rSPkMA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 h1:/xPwStUckZ2V0XPoY496cXU+c5elpHyvYoT6JAmuvRY= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 h1:AvNLzONVMspwx7nD/NyYUgb5Hi7/zgzIOegr1uRD/M8= -github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 h1:e1uJAlXE3zeXpa+c4uFOG+/AMFbUlLt2mcrSK5NMxVs= -github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 h1:7wjs4t1snBDJ8LOTl+tZhr2ORywSOTgJMppxiIAMA0A= -github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 h1:1QMJ39qXIx/IZVzus3+97IV7Pa++e+d340TvbMjhiBU= -github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 h1:hZli4E9kJUAEQ7gzZR1XbPcpgqvqMPYq8YBPMbrBuos= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 h1:OlDhgvJ48bZxcvTeebJ1b96xtNnJAddejd2Q4rlH1mU= -github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a h1:ORysxrc6QCG/uX0eHPmrl00isL+K37Gi7CPXWkWvKpA= +github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a h1:sNID0417k8UPZAHZjzx9cfPdDLD1J3EV89nWwRXkKA4= +github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a h1:kB5JFbOsZj/pBIcqnIMEnwk9XRBXZC6bEo08M6kFPaY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a h1:shooidIGLQm8wt7hzcx2hWXuC3ce4XLjIqB920R1V4U= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a h1:B1/zDZJDnBgCh+hwxzHyjGrUM1MTLumHwKZei+5Aehg= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a h1:hAsljqcUaL2ywSnztVBoaNh0cJwqaqNfPfTrUSLT9xo= +github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a h1:c3XbjBDMiqo7jilZzZd+kmWrYvzufKmbHUOcOE3NpdI= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a h1:2RZenapa2UI/Vj4vLNIlUgFUN1jJICV2XsZiIo9jQT4= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a h1:cHjCgpSdnrOCc69YPyntVVO+dFmVQh9kDj+rVpoJNlE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a h1:PU+z5uVPUEVzmQf0JRLxJjnfMzdtz6mlnToECVzdVFQ= +github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a h1:8RigRlTTTBsT5Ik/Jz6VcLWgIzbx9HynzgnRq9/VhJE= +github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a h1:vYyd5E4j02kwbAhx+nivcc7DPpmI46S72GBGGGpalSs= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a h1:/xwSejpRNjjv20gX9kQZ1Pgy+m6kFHcUMt1u/f+kc1Y= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a h1:DNcRsEdvfnrfwh9Mb19lHfsz5Izf9BiMqJILYYW0SvU= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af h1:3+heabXNGjv3Sx1sg0qG+QdqeEWIpf7jM3T5cPiVmSA= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af/go.mod h1:3BZ5r/MhswUZwXHDzMZacOhm6DWpUdGjefNRNshfwiM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231020151337-569450d5bf7d h1:PeJNFBkR28hdQCxUyC/cbOlDjFm3D1U7O5bxi+qsOvQ= diff --git a/pkg/core/rx/define.go b/pkg/core/rx/define.go deleted file mode 100644 index 374dbc3fd..000000000 --- a/pkg/core/rx/define.go +++ /dev/null @@ -1,105 +0,0 @@ -package rx - -import ( - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/lo" -) - -func WithNonEmptyValue[S comparable](source reactive.Variable[S], dependencyReceiver func(S) func()) (unsubscribe func()) { - return source.OnUpdateWithContext(func(_, parent S, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { - if parent != *new(S) { - unsubscribeOnParentUpdate(func() (unsubscribe func()) { - return dependencyReceiver(parent) - }) - } - }) -} - -func With1Dependency[S comparable](source reactive.Variable[S]) func(dependencyReceiver ...func(S) func()) (unsubscribe func()) { - return func(dependencyReceiver ...func(S) func()) (unsubscribe func()) { - return source.OnUpdateWithContext(func(_, parent S, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { - if parent == *new(S) { - return - } - - unsubscribeOnParentUpdate(func() (unsubscribe func()) { - unsubscribeAll := make([]func(), 0) - - for _, dependency := range dependencyReceiver { - if unsubscribeDependency := dependency(parent); unsubscribeDependency != nil { - unsubscribeAll = append(unsubscribeAll, unsubscribeDependency) - } - } - - return lo.Batch(unsubscribeAll...) - }) - }) - } -} - -func AssignValue[T comparable](target reactive.Variable[T], derivedVariable reactive.DerivedVariable[T]) func() { - target.InheritFrom(derivedVariable) - - return derivedVariable.Unsubscribe -} - -func DynamicValue1[T, S comparable](target reactive.Variable[T], definition func(S) reactive.DerivedVariable[T]) func(dependency S) func() { - return func(dependency S) func() { - derivedVariable := definition(dependency) - target.InheritFrom(derivedVariable) - - return derivedVariable.Unsubscribe - } -} - -func InheritedValue[T, S comparable](target reactive.Variable[T], definition func(S) reactive.ReadableVariable[T]) func(dependency S) func() { - return func(dependency S) func() { - return target.InheritFrom(definition(dependency)) - } -} - -func With2Dependencies[S1, S2 comparable](source1 reactive.Variable[S1], source2 reactive.Variable[S2]) func(dependencyReceivers ...func(S1, S2) func()) (unsubscribe func()) { - return func(dependencyReceivers ...func(S1, S2) func()) func() { - return source1.OnUpdateWithContext(func(_, source1 S1, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { - if source1 == *new(S1) { - return - } - - unsubscribeOnParentUpdate(func() (unsubscribe func()) { - return source2.OnUpdateWithContext(func(_, source2 S2, unsubscribeOnParentUpdate func(subscriptionFactory func() (unsubscribe func()))) { - if source2 == *new(S2) { - return - } - - unsubscribeOnParentUpdate(func() (unsubscribe func()) { - unsubscribeAll := make([]func(), 0) - - for _, dependency := range dependencyReceivers { - if unsubscribeDependency := dependency(source1, source2); unsubscribeDependency != nil { - unsubscribeAll = append(unsubscribeAll, unsubscribeDependency) - } - } - - return lo.Batch(unsubscribeAll...) - }) - }) - }) - }) - } -} - -func DynamicValue2[T, S1, S2 comparable](target reactive.Variable[T], definition func(S1, S2) reactive.DerivedVariable[T]) func(S1, S2) func() { - return func(source1 S1, source2 S2) func() { - derivedVariable := definition(source1, source2) - - return lo.Batch(target.InheritFrom(derivedVariable), derivedVariable.Unsubscribe) - } -} - -func StaticValue1[T, S comparable](target reactive.Variable[T], definition func(S) T) func(parent S) func() { - return func(parent S) func() { - target.Set(definition(parent)) - - return nil - } -} diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 0f5291ad2..d182a7be6 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -6,7 +6,6 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/iota-core/pkg/core/rx" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" ) @@ -81,51 +80,47 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.IsAttested.InheritFrom(c.IsRoot), c.IsVerified.InheritFrom(c.IsRoot), - rx.WithNonEmptyValue(c.Parent, func(parent *Commitment) func() { + reactive.WithNonEmptyValue(func(parent *Commitment) func() { c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) - parent.registerChild(c) - return lo.Batch( - rx.AssignValue[*Chain](c.Chain, reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { - if spawnedChain != nil { - return spawnedChain - } + c.inheritChainFrom(parent), - return parentChain + c.Chain.DeriveValueFrom(reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { + return lo.Cond(spawnedChain != nil, spawnedChain, parentChain) }, parent.Chain, c.SpawnedChain)), - rx.AssignValue[bool](c.IsSolid, reactive.NewDerivedVariable(func(parentIsSolid bool) bool { + c.IsSolid.DeriveValueFrom(reactive.NewDerivedVariable(func(parentIsSolid bool) bool { return parentIsSolid }, parent.IsSolid)), - rx.AssignValue[uint64](c.CumulativeAttestedWeight, reactive.NewDerivedVariable2(func(parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { + c.CumulativeAttestedWeight.DeriveValueFrom(reactive.NewDerivedVariable2(func(parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { return parentCumulativeAttestedWeight + attestedWeight }, parent.CumulativeAttestedWeight, c.AttestedWeight)), - rx.AssignValue[bool](c.IsAboveLatestVerifiedCommitment, reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { + c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)), - rx.WithNonEmptyValue(c.Chain, func(chain *Chain) func() { + reactive.WithNonEmptyValue(func(chain *Chain) func() { return lo.Batch( - rx.AssignValue[bool](c.InSyncRange, reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { + c.InSyncRange.DeriveValueFrom(reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment)), - rx.AssignValue[bool](c.WarpSync, reactive.NewDerivedVariable4(func(spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { + c.WarpSync.DeriveValueFrom(reactive.NewDerivedVariable4(func(spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified)), - rx.AssignValue[bool](c.RequestAttestations, reactive.NewDerivedVariable3(func(verifyAttestations, parentIsAttested, isAttested bool) bool { + c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable3(func(verifyAttestations, parentIsAttested, isAttested bool) bool { return verifyAttestations && parentIsAttested && !isAttested }, chain.VerifyAttestations, parent.IsAttested, c.IsAttested)), ) - }), + }, c.Chain), ) - }), + }, c.Parent), - rx.WithNonEmptyValue(c.Chain, func(chain *Chain) func() { return chain.registerCommitment(c) }), + reactive.WithNonEmptyValue(func(chain *Chain) func() { return chain.registerCommitment(c) }, c.Chain), ) c.IsEvicted.OnTrigger(unsubscribe) @@ -134,28 +129,23 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment } func (c *Commitment) Engine() *engine.Engine { - chain := c.Chain.Get() - if chain == nil { - return nil + if chain := c.Chain.Get(); chain != nil { + return chain.Engine.Get() } - return chain.Engine.Get() + return nil } -func (c *Commitment) registerChild(child *Commitment) { - if c.Children.Add(child) { - c.MainChild.Compute(func(currentMainChild *Commitment) *Commitment { - if currentMainChild != nil { - return currentMainChild - } - - return child - }) +func (c *Commitment) inheritChainFrom(parent *Commitment) (unregister func()) { + if !parent.Children.Add(c) { + return func() {} + } - unsubscribeChild := c.MainChild.OnUpdate(child.inheritChain(c)) + parent.MainChild.Compute(func(mainChild *Commitment) *Commitment { + return lo.Cond(mainChild != nil, mainChild, c) + }) - c.IsEvicted.OnTrigger(unsubscribeChild) - } + return parent.MainChild.OnUpdate(c.inheritChain(parent)) } func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { diff --git a/tools/evil-spammer/go.mod b/tools/evil-spammer/go.mod index 22a5cf5ac..a117ec9c8 100644 --- a/tools/evil-spammer/go.mod +++ b/tools/evil-spammer/go.mod @@ -10,13 +10,13 @@ require ( github.com/AlecAivazis/survey/v2 v2.3.7 github.com/ethereum/go-ethereum v1.13.4 github.com/google/martian v2.1.0+incompatible - github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota-core/tools/genesis-snapshot v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd @@ -38,13 +38,13 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/kballard/go-shellquote v0.0.0-20180428030007-95032a82bc51 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect diff --git a/tools/evil-spammer/go.sum b/tools/evil-spammer/go.sum index f43719e7a..fc214a300 100644 --- a/tools/evil-spammer/go.sum +++ b/tools/evil-spammer/go.sum @@ -173,34 +173,34 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 h1:EOfxTuAiBmED1VHuVh7/UIeB27cCRe13gdSzyioNMBw= -github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 h1:xAER9M9Uoz2EOWT43E9wmXRe+RmAk8OBSUoboH4Su8M= -github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= -github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 h1:drmpgLlJy7kZ09Dt1qKSnbILU+27Qu2jp4VdPDNwbFk= -github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 h1:BC5GkIHyXdoJGdw6Tu5ds2kjw9grFLtwQiuMaKfdLU8= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 h1:r8TkdQJB7/bJd8cF8z5GQ+rX/7JpbPdPoN7wMoV1OCM= -github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 h1:ytzZZPtclAzLfjxv26frbinCGx3Z6ouUENbx5U7lFGg= -github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 h1:QMxd32Y/veVhTDPCiOFgetjUbG7sr9MryF29/rSPkMA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 h1:/xPwStUckZ2V0XPoY496cXU+c5elpHyvYoT6JAmuvRY= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 h1:AvNLzONVMspwx7nD/NyYUgb5Hi7/zgzIOegr1uRD/M8= -github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 h1:e1uJAlXE3zeXpa+c4uFOG+/AMFbUlLt2mcrSK5NMxVs= -github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 h1:7wjs4t1snBDJ8LOTl+tZhr2ORywSOTgJMppxiIAMA0A= -github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 h1:1QMJ39qXIx/IZVzus3+97IV7Pa++e+d340TvbMjhiBU= -github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 h1:hZli4E9kJUAEQ7gzZR1XbPcpgqvqMPYq8YBPMbrBuos= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 h1:OlDhgvJ48bZxcvTeebJ1b96xtNnJAddejd2Q4rlH1mU= -github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a h1:ORysxrc6QCG/uX0eHPmrl00isL+K37Gi7CPXWkWvKpA= +github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a h1:sNID0417k8UPZAHZjzx9cfPdDLD1J3EV89nWwRXkKA4= +github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a h1:kB5JFbOsZj/pBIcqnIMEnwk9XRBXZC6bEo08M6kFPaY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a h1:shooidIGLQm8wt7hzcx2hWXuC3ce4XLjIqB920R1V4U= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a h1:B1/zDZJDnBgCh+hwxzHyjGrUM1MTLumHwKZei+5Aehg= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a h1:hAsljqcUaL2ywSnztVBoaNh0cJwqaqNfPfTrUSLT9xo= +github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a h1:c3XbjBDMiqo7jilZzZd+kmWrYvzufKmbHUOcOE3NpdI= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a h1:2RZenapa2UI/Vj4vLNIlUgFUN1jJICV2XsZiIo9jQT4= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a h1:cHjCgpSdnrOCc69YPyntVVO+dFmVQh9kDj+rVpoJNlE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a h1:PU+z5uVPUEVzmQf0JRLxJjnfMzdtz6mlnToECVzdVFQ= +github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a h1:8RigRlTTTBsT5Ik/Jz6VcLWgIzbx9HynzgnRq9/VhJE= +github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a h1:vYyd5E4j02kwbAhx+nivcc7DPpmI46S72GBGGGpalSs= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a h1:/xwSejpRNjjv20gX9kQZ1Pgy+m6kFHcUMt1u/f+kc1Y= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a h1:DNcRsEdvfnrfwh9Mb19lHfsz5Izf9BiMqJILYYW0SvU= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd h1:FKiEzy3gOyWDGXs6mTMS9qFHGXSxH97N5w+08ljbEtU= github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd/go.mod h1:XFwcDfAF0hv6wB/trCsyDmQyPLjEZ60yTrllJ2bprN8= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index b7a50cb8d..782a1451c 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -57,19 +57,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231020151337-569450d5bf7d // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index adddbda7f..62a195919 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -279,36 +279,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 h1:EOfxTuAiBmED1VHuVh7/UIeB27cCRe13gdSzyioNMBw= -github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42 h1:xAER9M9Uoz2EOWT43E9wmXRe+RmAk8OBSUoboH4Su8M= -github.com/iotaledger/hive.go/app v0.0.0-20231027195901-620bd7470e42/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a h1:ORysxrc6QCG/uX0eHPmrl00isL+K37Gi7CPXWkWvKpA= +github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a h1:sNID0417k8UPZAHZjzx9cfPdDLD1J3EV89nWwRXkKA4= +github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 h1:drmpgLlJy7kZ09Dt1qKSnbILU+27Qu2jp4VdPDNwbFk= -github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 h1:BC5GkIHyXdoJGdw6Tu5ds2kjw9grFLtwQiuMaKfdLU8= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 h1:r8TkdQJB7/bJd8cF8z5GQ+rX/7JpbPdPoN7wMoV1OCM= -github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 h1:ytzZZPtclAzLfjxv26frbinCGx3Z6ouUENbx5U7lFGg= -github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 h1:QMxd32Y/veVhTDPCiOFgetjUbG7sr9MryF29/rSPkMA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 h1:/xPwStUckZ2V0XPoY496cXU+c5elpHyvYoT6JAmuvRY= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 h1:AvNLzONVMspwx7nD/NyYUgb5Hi7/zgzIOegr1uRD/M8= -github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 h1:e1uJAlXE3zeXpa+c4uFOG+/AMFbUlLt2mcrSK5NMxVs= -github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 h1:7wjs4t1snBDJ8LOTl+tZhr2ORywSOTgJMppxiIAMA0A= -github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 h1:1QMJ39qXIx/IZVzus3+97IV7Pa++e+d340TvbMjhiBU= -github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 h1:hZli4E9kJUAEQ7gzZR1XbPcpgqvqMPYq8YBPMbrBuos= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 h1:OlDhgvJ48bZxcvTeebJ1b96xtNnJAddejd2Q4rlH1mU= -github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a h1:kB5JFbOsZj/pBIcqnIMEnwk9XRBXZC6bEo08M6kFPaY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a h1:shooidIGLQm8wt7hzcx2hWXuC3ce4XLjIqB920R1V4U= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a h1:B1/zDZJDnBgCh+hwxzHyjGrUM1MTLumHwKZei+5Aehg= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a h1:hAsljqcUaL2ywSnztVBoaNh0cJwqaqNfPfTrUSLT9xo= +github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a h1:c3XbjBDMiqo7jilZzZd+kmWrYvzufKmbHUOcOE3NpdI= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a h1:2RZenapa2UI/Vj4vLNIlUgFUN1jJICV2XsZiIo9jQT4= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a h1:cHjCgpSdnrOCc69YPyntVVO+dFmVQh9kDj+rVpoJNlE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a h1:PU+z5uVPUEVzmQf0JRLxJjnfMzdtz6mlnToECVzdVFQ= +github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a h1:8RigRlTTTBsT5Ik/Jz6VcLWgIzbx9HynzgnRq9/VhJE= +github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a h1:vYyd5E4j02kwbAhx+nivcc7DPpmI46S72GBGGGpalSs= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a h1:/xwSejpRNjjv20gX9kQZ1Pgy+m6kFHcUMt1u/f+kc1Y= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a h1:DNcRsEdvfnrfwh9Mb19lHfsz5Izf9BiMqJILYYW0SvU= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af h1:3+heabXNGjv3Sx1sg0qG+QdqeEWIpf7jM3T5cPiVmSA= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231020152103-b6ea7ff7a4af/go.mod h1:3BZ5r/MhswUZwXHDzMZacOhm6DWpUdGjefNRNshfwiM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231020151337-569450d5bf7d h1:PeJNFBkR28hdQCxUyC/cbOlDjFm3D1U7O5bxi+qsOvQ= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 31ec44009..f16624ac1 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 - github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 + github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd github.com/mr-tron/base58 v1.2.0 @@ -26,15 +26,15 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index b41c4bdae..a0f58ae5f 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,32 +28,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42 h1:EOfxTuAiBmED1VHuVh7/UIeB27cCRe13gdSzyioNMBw= -github.com/iotaledger/hive.go/ads v0.0.0-20231027195901-620bd7470e42/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42 h1:drmpgLlJy7kZ09Dt1qKSnbILU+27Qu2jp4VdPDNwbFk= -github.com/iotaledger/hive.go/constraints v0.0.0-20231027195901-620bd7470e42/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42 h1:BC5GkIHyXdoJGdw6Tu5ds2kjw9grFLtwQiuMaKfdLU8= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231027195901-620bd7470e42/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42 h1:r8TkdQJB7/bJd8cF8z5GQ+rX/7JpbPdPoN7wMoV1OCM= -github.com/iotaledger/hive.go/crypto v0.0.0-20231027195901-620bd7470e42/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42 h1:ytzZZPtclAzLfjxv26frbinCGx3Z6ouUENbx5U7lFGg= -github.com/iotaledger/hive.go/ds v0.0.0-20231027195901-620bd7470e42/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42 h1:QMxd32Y/veVhTDPCiOFgetjUbG7sr9MryF29/rSPkMA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231027195901-620bd7470e42/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42 h1:/xPwStUckZ2V0XPoY496cXU+c5elpHyvYoT6JAmuvRY= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231027195901-620bd7470e42/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42 h1:AvNLzONVMspwx7nD/NyYUgb5Hi7/zgzIOegr1uRD/M8= -github.com/iotaledger/hive.go/lo v0.0.0-20231027195901-620bd7470e42/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42 h1:e1uJAlXE3zeXpa+c4uFOG+/AMFbUlLt2mcrSK5NMxVs= -github.com/iotaledger/hive.go/log v0.0.0-20231027195901-620bd7470e42/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42 h1:7wjs4t1snBDJ8LOTl+tZhr2ORywSOTgJMppxiIAMA0A= -github.com/iotaledger/hive.go/logger v0.0.0-20231027195901-620bd7470e42/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42 h1:1QMJ39qXIx/IZVzus3+97IV7Pa++e+d340TvbMjhiBU= -github.com/iotaledger/hive.go/runtime v0.0.0-20231027195901-620bd7470e42/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42 h1:hZli4E9kJUAEQ7gzZR1XbPcpgqvqMPYq8YBPMbrBuos= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231027195901-620bd7470e42/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42 h1:OlDhgvJ48bZxcvTeebJ1b96xtNnJAddejd2Q4rlH1mU= -github.com/iotaledger/hive.go/stringify v0.0.0-20231027195901-620bd7470e42/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a h1:ORysxrc6QCG/uX0eHPmrl00isL+K37Gi7CPXWkWvKpA= +github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a h1:kB5JFbOsZj/pBIcqnIMEnwk9XRBXZC6bEo08M6kFPaY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a h1:shooidIGLQm8wt7hzcx2hWXuC3ce4XLjIqB920R1V4U= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a h1:B1/zDZJDnBgCh+hwxzHyjGrUM1MTLumHwKZei+5Aehg= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a h1:hAsljqcUaL2ywSnztVBoaNh0cJwqaqNfPfTrUSLT9xo= +github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a h1:c3XbjBDMiqo7jilZzZd+kmWrYvzufKmbHUOcOE3NpdI= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a h1:2RZenapa2UI/Vj4vLNIlUgFUN1jJICV2XsZiIo9jQT4= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a h1:cHjCgpSdnrOCc69YPyntVVO+dFmVQh9kDj+rVpoJNlE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a h1:PU+z5uVPUEVzmQf0JRLxJjnfMzdtz6mlnToECVzdVFQ= +github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a h1:8RigRlTTTBsT5Ik/Jz6VcLWgIzbx9HynzgnRq9/VhJE= +github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a h1:vYyd5E4j02kwbAhx+nivcc7DPpmI46S72GBGGGpalSs= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a h1:/xwSejpRNjjv20gX9kQZ1Pgy+m6kFHcUMt1u/f+kc1Y= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a h1:DNcRsEdvfnrfwh9Mb19lHfsz5Izf9BiMqJILYYW0SvU= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd h1:FKiEzy3gOyWDGXs6mTMS9qFHGXSxH97N5w+08ljbEtU= github.com/iotaledger/iota.go/v4 v4.0.0-20231019174124-aa2290512bcd/go.mod h1:XFwcDfAF0hv6wB/trCsyDmQyPLjEZ60yTrllJ2bprN8= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= From e9b7a2b7a132ff55d2348d031939cc9ea8f3c2c6 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 2 Nov 2023 17:09:06 +0100 Subject: [PATCH 213/356] Fix: addressed linter warnings --- pkg/protocol/protocol.go | 4 ++-- pkg/storage/prunable/prunable.go | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 818d99773..ff4af9d52 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -80,6 +80,8 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E }) p.Constructed.Trigger() + + p.waitEngineInitialized() }) } @@ -92,8 +94,6 @@ func (p *Protocol) IssueBlock(block *model.Block) error { // Run starts the protocol. func (p *Protocol) Run(ctx context.Context) error { - p.waitEngineInitialized() - p.Initialized.Trigger() <-ctx.Done() diff --git a/pkg/storage/prunable/prunable.go b/pkg/storage/prunable/prunable.go index 88891ddd7..680c1f0e6 100644 --- a/pkg/storage/prunable/prunable.go +++ b/pkg/storage/prunable/prunable.go @@ -147,6 +147,10 @@ func (p *Prunable) Rollback(targetEpoch iotago.EpochIndex, pruningRange [2]iotag return ierrors.Wrapf(err, "failed to prune slots in range [%d, %d] from target epoch %d", pruningRange[0], pruningRange[1], targetEpoch) } + if err := p.rollbackCommitteesCandidates(targetEpoch, pruningRange[0]-1); err != nil { + return ierrors.Wrapf(err, "failed to rollback committee candidates to target epoch %d", targetEpoch) + } + lastPrunedCommitteeEpoch, err := p.rollbackCommitteeEpochs(targetEpoch+1, pruningRange[0]-1) if err != nil { return ierrors.Wrapf(err, "failed to rollback committee epochs to target epoch %d", targetEpoch) From 3c2ad4edf465421c032cfd2805f2a877a620fd82 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 2 Nov 2023 21:09:30 +0100 Subject: [PATCH 214/356] Refactor: cleaned up more code --- go.mod | 28 +++++++++--------- go.sum | 56 +++++++++++++++++------------------ pkg/protocol/commitment.go | 18 +++++------ tools/gendoc/go.mod | 28 +++++++++--------- tools/gendoc/go.sum | 56 +++++++++++++++++------------------ tools/genesis-snapshot/go.mod | 26 ++++++++-------- tools/genesis-snapshot/go.sum | 52 ++++++++++++++++---------------- 7 files changed, 132 insertions(+), 132 deletions(-) diff --git a/go.mod b/go.mod index 93103443f..55420e645 100644 --- a/go.mod +++ b/go.mod @@ -10,20 +10,20 @@ require ( github.com/google/uuid v1.4.0 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 + github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 + github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e diff --git a/go.sum b/go.sum index 8a89391f1..6fab60236 100644 --- a/go.sum +++ b/go.sum @@ -275,34 +275,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a h1:ORysxrc6QCG/uX0eHPmrl00isL+K37Gi7CPXWkWvKpA= -github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a h1:sNID0417k8UPZAHZjzx9cfPdDLD1J3EV89nWwRXkKA4= -github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a h1:kB5JFbOsZj/pBIcqnIMEnwk9XRBXZC6bEo08M6kFPaY= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a h1:shooidIGLQm8wt7hzcx2hWXuC3ce4XLjIqB920R1V4U= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a h1:B1/zDZJDnBgCh+hwxzHyjGrUM1MTLumHwKZei+5Aehg= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a h1:hAsljqcUaL2ywSnztVBoaNh0cJwqaqNfPfTrUSLT9xo= -github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a h1:c3XbjBDMiqo7jilZzZd+kmWrYvzufKmbHUOcOE3NpdI= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a h1:2RZenapa2UI/Vj4vLNIlUgFUN1jJICV2XsZiIo9jQT4= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a h1:cHjCgpSdnrOCc69YPyntVVO+dFmVQh9kDj+rVpoJNlE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a h1:PU+z5uVPUEVzmQf0JRLxJjnfMzdtz6mlnToECVzdVFQ= -github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a h1:8RigRlTTTBsT5Ik/Jz6VcLWgIzbx9HynzgnRq9/VhJE= -github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a h1:vYyd5E4j02kwbAhx+nivcc7DPpmI46S72GBGGGpalSs= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a h1:/xwSejpRNjjv20gX9kQZ1Pgy+m6kFHcUMt1u/f+kc1Y= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a h1:DNcRsEdvfnrfwh9Mb19lHfsz5Izf9BiMqJILYYW0SvU= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 h1:w9yXUcne7W7nWFa4w3z3Ab+CVm9XX6ootsKdj3h+Wy8= +github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459 h1:Y4WcHH5njIV27r2SBD1V1EClz3iU3NDUC2xoU9+2Prw= +github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 h1:sI8mLL2Xrh4s414Zl0yWCUUNCEUNSiKeK7TG7GfW4J8= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 h1:0w0NgTkXmMPYMPwbPydM8gZZGYMockp3sr9jYMR7iZc= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 h1:DuImYVscRKTXsYuVaGvfYpjmgWuHrLiji0LfYJ8wP7c= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 h1:UIj+JUgoD98oGej7two8mO9JqN6xOFb9HIT41Zi5yYQ= +github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 h1:BEXcxjhYUpUweQ4m7LRwVQT7VQjXh10fNyqZIaASSBk= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 h1:eC1RWb5+4ffPtXQPR+dLgN1rD/x3wQ8Da4zv6Wv/Zv0= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 h1:SwhmyXn+MTXjr0ufeJNdsYlwBsYUpTTE1A0UiBUEnEE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 h1:TZ0ja/3L2UZekbmH0frq0i4BiFElgFzJJs2HCaS2KfU= +github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 h1:EM4i81KcjyHQSOeRXgwtLTdHKdNcekZEfTrNkk2of+Q= +github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 h1:RUU+I1d8KMhSgfGleWUU998K0S6lpNTg/3U0OXTim/Y= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 h1:dpGC+bnOhuZl7v4xHKe3EOsZC81Zs1+Ql7NoGVPPADU= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 h1:X7eYICSvADXt2b38kV3fr/seEWpty/YxjpjruGmMyWw= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 h1:17JDzMKTMXKF3xys6gPURRddkZhg1LY+xwfhbr/sVqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5/go.mod h1:LsJvoBUVVnY7tkwwByCVtAwmp5bFXdyJNGU/+KVQJVM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac h1:c7R33+TQGMYP6pvLUQQaqpdDFl+GZbhAcfGMI0285fo= diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index d182a7be6..917291fec 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -80,20 +80,18 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.IsAttested.InheritFrom(c.IsRoot), c.IsVerified.InheritFrom(c.IsRoot), - reactive.WithNonEmptyValue(func(parent *Commitment) func() { + c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) return lo.Batch( c.inheritChainFrom(parent), + c.IsSolid.InheritFrom(parent.IsSolid), + c.Chain.DeriveValueFrom(reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { return lo.Cond(spawnedChain != nil, spawnedChain, parentChain) }, parent.Chain, c.SpawnedChain)), - c.IsSolid.DeriveValueFrom(reactive.NewDerivedVariable(func(parentIsSolid bool) bool { - return parentIsSolid - }, parent.IsSolid)), - c.CumulativeAttestedWeight.DeriveValueFrom(reactive.NewDerivedVariable2(func(parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { return parentCumulativeAttestedWeight + attestedWeight }, parent.CumulativeAttestedWeight, c.AttestedWeight)), @@ -102,7 +100,7 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)), - reactive.WithNonEmptyValue(func(chain *Chain) func() { + c.Chain.WithNonEmptyValue(func(chain *Chain) func() { return lo.Batch( c.InSyncRange.DeriveValueFrom(reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment @@ -116,11 +114,13 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment return verifyAttestations && parentIsAttested && !isAttested }, chain.VerifyAttestations, parent.IsAttested, c.IsAttested)), ) - }, c.Chain), + }), ) - }, c.Parent), + }), - reactive.WithNonEmptyValue(func(chain *Chain) func() { return chain.registerCommitment(c) }, c.Chain), + c.Chain.WithNonEmptyValue(func(chain *Chain) func() { + return chain.registerCommitment(c) + }), ) c.IsEvicted.OnTrigger(unsubscribe) diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index e2e9744da..23333ecf5 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -56,19 +56,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 5aac6db21..0e0df48a8 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -277,36 +277,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a h1:ORysxrc6QCG/uX0eHPmrl00isL+K37Gi7CPXWkWvKpA= -github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a h1:sNID0417k8UPZAHZjzx9cfPdDLD1J3EV89nWwRXkKA4= -github.com/iotaledger/hive.go/app v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 h1:w9yXUcne7W7nWFa4w3z3Ab+CVm9XX6ootsKdj3h+Wy8= +github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459 h1:Y4WcHH5njIV27r2SBD1V1EClz3iU3NDUC2xoU9+2Prw= +github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a h1:kB5JFbOsZj/pBIcqnIMEnwk9XRBXZC6bEo08M6kFPaY= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a h1:shooidIGLQm8wt7hzcx2hWXuC3ce4XLjIqB920R1V4U= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a h1:B1/zDZJDnBgCh+hwxzHyjGrUM1MTLumHwKZei+5Aehg= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a h1:hAsljqcUaL2ywSnztVBoaNh0cJwqaqNfPfTrUSLT9xo= -github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a h1:c3XbjBDMiqo7jilZzZd+kmWrYvzufKmbHUOcOE3NpdI= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a h1:2RZenapa2UI/Vj4vLNIlUgFUN1jJICV2XsZiIo9jQT4= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a h1:cHjCgpSdnrOCc69YPyntVVO+dFmVQh9kDj+rVpoJNlE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a h1:PU+z5uVPUEVzmQf0JRLxJjnfMzdtz6mlnToECVzdVFQ= -github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a h1:8RigRlTTTBsT5Ik/Jz6VcLWgIzbx9HynzgnRq9/VhJE= -github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a h1:vYyd5E4j02kwbAhx+nivcc7DPpmI46S72GBGGGpalSs= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a h1:/xwSejpRNjjv20gX9kQZ1Pgy+m6kFHcUMt1u/f+kc1Y= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a h1:DNcRsEdvfnrfwh9Mb19lHfsz5Izf9BiMqJILYYW0SvU= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 h1:sI8mLL2Xrh4s414Zl0yWCUUNCEUNSiKeK7TG7GfW4J8= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 h1:0w0NgTkXmMPYMPwbPydM8gZZGYMockp3sr9jYMR7iZc= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 h1:DuImYVscRKTXsYuVaGvfYpjmgWuHrLiji0LfYJ8wP7c= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 h1:UIj+JUgoD98oGej7two8mO9JqN6xOFb9HIT41Zi5yYQ= +github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 h1:BEXcxjhYUpUweQ4m7LRwVQT7VQjXh10fNyqZIaASSBk= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 h1:eC1RWb5+4ffPtXQPR+dLgN1rD/x3wQ8Da4zv6Wv/Zv0= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 h1:SwhmyXn+MTXjr0ufeJNdsYlwBsYUpTTE1A0UiBUEnEE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 h1:TZ0ja/3L2UZekbmH0frq0i4BiFElgFzJJs2HCaS2KfU= +github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 h1:EM4i81KcjyHQSOeRXgwtLTdHKdNcekZEfTrNkk2of+Q= +github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 h1:RUU+I1d8KMhSgfGleWUU998K0S6lpNTg/3U0OXTim/Y= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 h1:dpGC+bnOhuZl7v4xHKe3EOsZC81Zs1+Ql7NoGVPPADU= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 h1:X7eYICSvADXt2b38kV3fr/seEWpty/YxjpjruGmMyWw= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 h1:17JDzMKTMXKF3xys6gPURRddkZhg1LY+xwfhbr/sVqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5/go.mod h1:LsJvoBUVVnY7tkwwByCVtAwmp5bFXdyJNGU/+KVQJVM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac h1:c7R33+TQGMYP6pvLUQQaqpdDFl+GZbhAcfGMI0285fo= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 02b4a5532..432a499b4 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a - github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a + github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e github.com/mr-tron/base58 v1.2.0 @@ -26,15 +26,15 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 9426e4008..82f56be8e 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,32 +28,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a h1:ORysxrc6QCG/uX0eHPmrl00isL+K37Gi7CPXWkWvKpA= -github.com/iotaledger/hive.go/ads v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a h1:kB5JFbOsZj/pBIcqnIMEnwk9XRBXZC6bEo08M6kFPaY= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a h1:shooidIGLQm8wt7hzcx2hWXuC3ce4XLjIqB920R1V4U= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102135205-0f3d1e75042a/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a h1:B1/zDZJDnBgCh+hwxzHyjGrUM1MTLumHwKZei+5Aehg= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a h1:hAsljqcUaL2ywSnztVBoaNh0cJwqaqNfPfTrUSLT9xo= -github.com/iotaledger/hive.go/ds v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a h1:c3XbjBDMiqo7jilZzZd+kmWrYvzufKmbHUOcOE3NpdI= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a h1:2RZenapa2UI/Vj4vLNIlUgFUN1jJICV2XsZiIo9jQT4= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a h1:cHjCgpSdnrOCc69YPyntVVO+dFmVQh9kDj+rVpoJNlE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a h1:PU+z5uVPUEVzmQf0JRLxJjnfMzdtz6mlnToECVzdVFQ= -github.com/iotaledger/hive.go/log v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a h1:8RigRlTTTBsT5Ik/Jz6VcLWgIzbx9HynzgnRq9/VhJE= -github.com/iotaledger/hive.go/logger v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a h1:vYyd5E4j02kwbAhx+nivcc7DPpmI46S72GBGGGpalSs= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a h1:/xwSejpRNjjv20gX9kQZ1Pgy+m6kFHcUMt1u/f+kc1Y= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102135205-0f3d1e75042a/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a h1:DNcRsEdvfnrfwh9Mb19lHfsz5Izf9BiMqJILYYW0SvU= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102135205-0f3d1e75042a/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 h1:w9yXUcne7W7nWFa4w3z3Ab+CVm9XX6ootsKdj3h+Wy8= +github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 h1:sI8mLL2Xrh4s414Zl0yWCUUNCEUNSiKeK7TG7GfW4J8= +github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 h1:0w0NgTkXmMPYMPwbPydM8gZZGYMockp3sr9jYMR7iZc= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 h1:DuImYVscRKTXsYuVaGvfYpjmgWuHrLiji0LfYJ8wP7c= +github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 h1:UIj+JUgoD98oGej7two8mO9JqN6xOFb9HIT41Zi5yYQ= +github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 h1:BEXcxjhYUpUweQ4m7LRwVQT7VQjXh10fNyqZIaASSBk= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 h1:eC1RWb5+4ffPtXQPR+dLgN1rD/x3wQ8Da4zv6Wv/Zv0= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 h1:SwhmyXn+MTXjr0ufeJNdsYlwBsYUpTTE1A0UiBUEnEE= +github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 h1:TZ0ja/3L2UZekbmH0frq0i4BiFElgFzJJs2HCaS2KfU= +github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 h1:EM4i81KcjyHQSOeRXgwtLTdHKdNcekZEfTrNkk2of+Q= +github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 h1:RUU+I1d8KMhSgfGleWUU998K0S6lpNTg/3U0OXTim/Y= +github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 h1:dpGC+bnOhuZl7v4xHKe3EOsZC81Zs1+Ql7NoGVPPADU= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 h1:X7eYICSvADXt2b38kV3fr/seEWpty/YxjpjruGmMyWw= +github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e h1:ZYRC1MHn/ghsqtjIpYGTxLQrh5n5eUmC0/YWnJiTRhk= github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e/go.mod h1:jqbLYq4a/FwuiPBqFfkAwwxU8vs3+kReRq2/tyX5qRA= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= From 69f0b580eabb47f5a27acf0641532e49b09c34d0 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 3 Nov 2023 01:48:06 +0100 Subject: [PATCH 215/356] Feat: cleaned up chain inheritance --- pkg/protocol/commitment.go | 84 ++++++++++++-------------------------- 1 file changed, 27 insertions(+), 57 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 917291fec..5894c8805 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -51,30 +51,37 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment Weight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](func(currentValue uint64, newValue uint64) uint64 { return max(currentValue, newValue) }), CumulativeAttestedWeight: reactive.NewVariable[uint64](), + IsRoot: reactive.NewEvent(), IsSolid: reactive.NewEvent(), IsAttested: reactive.NewEvent(), IsVerified: reactive.NewEvent(), - IsRoot: reactive.NewEvent(), - IsEvicted: reactive.NewEvent(), IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), InSyncRange: reactive.NewVariable[bool](), + IsEvicted: reactive.NewEvent(), protocol: protocol, } c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { c.Parent.LogUpdates(entityLogger, log.LevelTrace, "Parent", (*Commitment).LogName) + // Children + c.MainChild.LogUpdates(entityLogger, log.LevelTrace, "MainChild", (*Commitment).LogName) + c.SpawnedChain.LogUpdates(entityLogger, log.LevelTrace, "SpawnedChain", (*Chain).LogName) + c.Chain.LogUpdates(entityLogger, log.LevelTrace, "Chain", (*Chain).LogName) + c.RequestAttestations.LogUpdates(entityLogger, log.LevelTrace, "RequestAttestations") + c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") c.IsSolid.LogUpdates(entityLogger, log.LevelTrace, "IsSolid") c.Chain.LogUpdates(entityLogger, log.LevelTrace, "Chain", (*Chain).LogName) c.IsVerified.LogUpdates(entityLogger, log.LevelTrace, "IsVerified") c.IsAttested.LogUpdates(entityLogger, log.LevelTrace, "IsAttested") c.InSyncRange.LogUpdates(entityLogger, log.LevelTrace, "InSyncRange") - c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") }) + var spawnedChain *Chain + unsubscribe := lo.Batch( c.IsSolid.InheritFrom(c.IsRoot), c.IsAttested.InheritFrom(c.IsRoot), @@ -83,11 +90,26 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) - return lo.Batch( - c.inheritChainFrom(parent), + // TODO: REMOVE ON UNSUBSCRIBE + parent.MainChild.Compute(func(mainChild *Commitment) *Commitment { + return lo.Cond(mainChild != nil, mainChild, c) + }) + return lo.Batch( c.IsSolid.InheritFrom(parent.IsSolid), + c.SpawnedChain.DeriveValueFrom(reactive.NewDerivedVariable(func(mainChild *Commitment) *Chain { + if mainChild == c && spawnedChain != nil { + spawnedChain.IsEvicted.Trigger() + spawnedChain = nil + } else if mainChild != c && spawnedChain == nil { + spawnedChain = NewChain(protocol) + spawnedChain.ForkingPoint.Set(c) + } + + return spawnedChain + }, parent.MainChild)), + c.Chain.DeriveValueFrom(reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { return lo.Cond(spawnedChain != nil, spawnedChain, parentChain) }, parent.Chain, c.SpawnedChain)), @@ -136,58 +158,6 @@ func (c *Commitment) Engine() *engine.Engine { return nil } -func (c *Commitment) inheritChainFrom(parent *Commitment) (unregister func()) { - if !parent.Children.Add(c) { - return func() {} - } - - parent.MainChild.Compute(func(mainChild *Commitment) *Commitment { - return lo.Cond(mainChild != nil, mainChild, c) - }) - - return parent.MainChild.OnUpdate(c.inheritChain(parent)) -} - -func (c *Commitment) inheritChain(parent *Commitment) func(*Commitment, *Commitment) { - var unsubscribeFromParent func() - - return func(_, mainChild *Commitment) { - c.SpawnedChain.Compute(func(spawnedChain *Chain) (newSpawnedChain *Chain) { - if c.IsRoot.WasTriggered() { - return spawnedChain - } - - switch mainChild { - case nil: - panic("main child may not be changed to nil") - - case c: - if spawnedChain != nil { - spawnedChain.IsEvicted.Trigger() - } - - unsubscribeFromParent = parent.Chain.OnUpdate(func(_, chain *Chain) { - c.Chain.Set(chain) - }) - - return nil - - default: - if spawnedChain == nil { - if unsubscribeFromParent != nil { - unsubscribeFromParent() - } - - spawnedChain = NewChain(c.protocol) - spawnedChain.ForkingPoint.Set(c) - } - - return spawnedChain - } - }) - } -} - func (c *Commitment) promote(targetChain *Chain) { if currentChain := c.Chain.Get(); currentChain != targetChain { if currentChain == nil { From 69745c2b5bba5a67add66aedab997e293367a4c8 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 3 Nov 2023 12:04:01 +0100 Subject: [PATCH 216/356] Feat: increased waiting time for test to pass --- pkg/tests/loss_of_acceptance_test.go | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index 347c9804b..b079fbb88 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -93,7 +93,8 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { { ts.IssueBlocksAtSlots("", []iotago.SlotIndex{58, 59}, 3, "57.2", ts.Nodes("node0", "node1", "node2"), true, nil) - time.Sleep(5 * time.Second) + // wait for node to warp-sync before checking (we warp-sync one by one which takes a few seconds) + time.Sleep(10 * time.Second) ts.AssertEqualStoredCommitmentAtIndex(57, ts.Nodes()...) ts.AssertLatestCommitmentSlotIndex(57, ts.Nodes()...) From 63834ce62501aa6ce45b212fd318a2e654f6067d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 3 Nov 2023 23:15:22 +0100 Subject: [PATCH 217/356] Fix: fixed chain inheritance --- go.mod | 28 +++++++++--------- go.sum | 56 +++++++++++++++++------------------ pkg/protocol/commitment.go | 31 +++++++++++-------- tools/gendoc/go.mod | 28 +++++++++--------- tools/gendoc/go.sum | 56 +++++++++++++++++------------------ tools/genesis-snapshot/go.mod | 26 ++++++++-------- tools/genesis-snapshot/go.sum | 52 ++++++++++++++++---------------- 7 files changed, 141 insertions(+), 136 deletions(-) diff --git a/go.mod b/go.mod index 55420e645..9823dac90 100644 --- a/go.mod +++ b/go.mod @@ -10,20 +10,20 @@ require ( github.com/google/uuid v1.4.0 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 - github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 - github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/ads v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/app v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/constraints v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/crypto v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/ds v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/kvstore v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/lo v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/log v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/logger v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/runtime v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/stringify v0.0.0-20231103125909-396c9c11e957 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e diff --git a/go.sum b/go.sum index 6fab60236..3e9d7b367 100644 --- a/go.sum +++ b/go.sum @@ -275,34 +275,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 h1:w9yXUcne7W7nWFa4w3z3Ab+CVm9XX6ootsKdj3h+Wy8= -github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459 h1:Y4WcHH5njIV27r2SBD1V1EClz3iU3NDUC2xoU9+2Prw= -github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 h1:sI8mLL2Xrh4s414Zl0yWCUUNCEUNSiKeK7TG7GfW4J8= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 h1:0w0NgTkXmMPYMPwbPydM8gZZGYMockp3sr9jYMR7iZc= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 h1:DuImYVscRKTXsYuVaGvfYpjmgWuHrLiji0LfYJ8wP7c= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 h1:UIj+JUgoD98oGej7two8mO9JqN6xOFb9HIT41Zi5yYQ= -github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 h1:BEXcxjhYUpUweQ4m7LRwVQT7VQjXh10fNyqZIaASSBk= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 h1:eC1RWb5+4ffPtXQPR+dLgN1rD/x3wQ8Da4zv6Wv/Zv0= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 h1:SwhmyXn+MTXjr0ufeJNdsYlwBsYUpTTE1A0UiBUEnEE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 h1:TZ0ja/3L2UZekbmH0frq0i4BiFElgFzJJs2HCaS2KfU= -github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 h1:EM4i81KcjyHQSOeRXgwtLTdHKdNcekZEfTrNkk2of+Q= -github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 h1:RUU+I1d8KMhSgfGleWUU998K0S6lpNTg/3U0OXTim/Y= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 h1:dpGC+bnOhuZl7v4xHKe3EOsZC81Zs1+Ql7NoGVPPADU= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 h1:X7eYICSvADXt2b38kV3fr/seEWpty/YxjpjruGmMyWw= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231103125909-396c9c11e957 h1:4yrF6ttUB5IM0Hdxluys5TpouWVtYnLzn6BpjDzLSM4= +github.com/iotaledger/hive.go/ads v0.0.0-20231103125909-396c9c11e957/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231103125909-396c9c11e957 h1:PvHcye1iniNCC9AYMvJV3Z+zvu1tP879Ah/b89pjwdc= +github.com/iotaledger/hive.go/app v0.0.0-20231103125909-396c9c11e957/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/constraints v0.0.0-20231103125909-396c9c11e957 h1:2y8kutTDekmLEPR6m6dRgexzgGRbKWezOTj1KHV0aKU= +github.com/iotaledger/hive.go/constraints v0.0.0-20231103125909-396c9c11e957/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231103125909-396c9c11e957 h1:IfV5IxPu9bUoM2mFWXsFTo6bxMp1pPAdPGbDi33l0hE= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231103125909-396c9c11e957/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231103125909-396c9c11e957 h1:dBnIaBUkDIl092dVZyXqJb/gIHZePj83HYD19z0DNkw= +github.com/iotaledger/hive.go/crypto v0.0.0-20231103125909-396c9c11e957/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231103125909-396c9c11e957 h1:P+6bEjZpckrXzWMbCzDdTwt/tDTmw4tMRK1yAQggvOc= +github.com/iotaledger/hive.go/ds v0.0.0-20231103125909-396c9c11e957/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231103125909-396c9c11e957 h1:2OSny07tcbndTp7G+6eqSLvX/C07GISVA/amcKgxSqE= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231103125909-396c9c11e957/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231103125909-396c9c11e957 h1:yrqquWBJn04BN7FtldAZOKXQZlMtspaKS1pfomluovU= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231103125909-396c9c11e957/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231103125909-396c9c11e957 h1:BgDJu5i1Sicm0nCxb0EfVO76qBDAjgHeSVmVDAkS3Kw= +github.com/iotaledger/hive.go/lo v0.0.0-20231103125909-396c9c11e957/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231103125909-396c9c11e957 h1:rysXKq3zKd0HoVGBhKEcb4gb3NpYJuffN1FooJaBvGI= +github.com/iotaledger/hive.go/log v0.0.0-20231103125909-396c9c11e957/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231103125909-396c9c11e957 h1:+wO2uYC2lVyGc/vHHz3re39+nA71OcBViJrdGaTi97o= +github.com/iotaledger/hive.go/logger v0.0.0-20231103125909-396c9c11e957/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231103125909-396c9c11e957 h1:xNEV9FTQ/pE8oumW71734e7hmSjSmENlBN/FMsSJZxM= +github.com/iotaledger/hive.go/runtime v0.0.0-20231103125909-396c9c11e957/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231103125909-396c9c11e957 h1:P7I9vVxA6Yy/TfqwWcOsY98yBDD7uJA0iC1pDMm7Zxg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231103125909-396c9c11e957/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231103125909-396c9c11e957 h1:ZnSl53FcOKNC34JAkBF0kIY1mGX/JdsEUdtM/jf2cC0= +github.com/iotaledger/hive.go/stringify v0.0.0-20231103125909-396c9c11e957/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 h1:17JDzMKTMXKF3xys6gPURRddkZhg1LY+xwfhbr/sVqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5/go.mod h1:LsJvoBUVVnY7tkwwByCVtAwmp5bFXdyJNGU/+KVQJVM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac h1:c7R33+TQGMYP6pvLUQQaqpdDFl+GZbhAcfGMI0285fo= diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 5894c8805..9ba5a3e97 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -71,7 +71,6 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.RequestAttestations.LogUpdates(entityLogger, log.LevelTrace, "RequestAttestations") c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") c.IsSolid.LogUpdates(entityLogger, log.LevelTrace, "IsSolid") - c.Chain.LogUpdates(entityLogger, log.LevelTrace, "Chain", (*Chain).LogName) c.IsVerified.LogUpdates(entityLogger, log.LevelTrace, "IsVerified") c.IsAttested.LogUpdates(entityLogger, log.LevelTrace, "IsAttested") c.InSyncRange.LogUpdates(entityLogger, log.LevelTrace, "InSyncRange") @@ -80,14 +79,14 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") }) - var spawnedChain *Chain - unsubscribe := lo.Batch( c.IsSolid.InheritFrom(c.IsRoot), c.IsAttested.InheritFrom(c.IsRoot), c.IsVerified.InheritFrom(c.IsRoot), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { + var spawnedChain *Chain + c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) // TODO: REMOVE ON UNSUBSCRIBE @@ -96,19 +95,23 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment }) return lo.Batch( - c.IsSolid.InheritFrom(parent.IsSolid), - - c.SpawnedChain.DeriveValueFrom(reactive.NewDerivedVariable(func(mainChild *Commitment) *Chain { - if mainChild == c && spawnedChain != nil { - spawnedChain.IsEvicted.Trigger() - spawnedChain = nil - } else if mainChild != c && spawnedChain == nil { - spawnedChain = NewChain(protocol) - spawnedChain.ForkingPoint.Set(c) + c.SpawnedChain.DeriveValueFrom(reactive.NewDerivedVariable2(func(isRoot bool, mainChild *Commitment) *Chain { + if !isRoot { // do not automatically adjust the chain of the root commitment + if mainChild != c { + if spawnedChain == nil { + spawnedChain = NewChain(protocol) + spawnedChain.ForkingPoint.Set(c) + } + } else { + if spawnedChain != nil { + spawnedChain.IsEvicted.Trigger() + spawnedChain = nil + } + } } return spawnedChain - }, parent.MainChild)), + }, c.IsRoot, parent.MainChild)), c.Chain.DeriveValueFrom(reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { return lo.Cond(spawnedChain != nil, spawnedChain, parentChain) @@ -122,6 +125,8 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)), + c.IsSolid.InheritFrom(parent.IsSolid), + c.Chain.WithNonEmptyValue(func(chain *Chain) func() { return lo.Batch( c.InSyncRange.DeriveValueFrom(reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 23333ecf5..0a71fe63c 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/app v0.0.0-20231103125909-396c9c11e957 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -56,19 +56,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231103125909-396c9c11e957 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 0e0df48a8..2581e67c9 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -277,36 +277,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 h1:w9yXUcne7W7nWFa4w3z3Ab+CVm9XX6ootsKdj3h+Wy8= -github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459 h1:Y4WcHH5njIV27r2SBD1V1EClz3iU3NDUC2xoU9+2Prw= -github.com/iotaledger/hive.go/app v0.0.0-20231102194729-39400aaba459/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/ads v0.0.0-20231103125909-396c9c11e957 h1:4yrF6ttUB5IM0Hdxluys5TpouWVtYnLzn6BpjDzLSM4= +github.com/iotaledger/hive.go/ads v0.0.0-20231103125909-396c9c11e957/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231103125909-396c9c11e957 h1:PvHcye1iniNCC9AYMvJV3Z+zvu1tP879Ah/b89pjwdc= +github.com/iotaledger/hive.go/app v0.0.0-20231103125909-396c9c11e957/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 h1:sI8mLL2Xrh4s414Zl0yWCUUNCEUNSiKeK7TG7GfW4J8= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 h1:0w0NgTkXmMPYMPwbPydM8gZZGYMockp3sr9jYMR7iZc= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 h1:DuImYVscRKTXsYuVaGvfYpjmgWuHrLiji0LfYJ8wP7c= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 h1:UIj+JUgoD98oGej7two8mO9JqN6xOFb9HIT41Zi5yYQ= -github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 h1:BEXcxjhYUpUweQ4m7LRwVQT7VQjXh10fNyqZIaASSBk= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 h1:eC1RWb5+4ffPtXQPR+dLgN1rD/x3wQ8Da4zv6Wv/Zv0= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 h1:SwhmyXn+MTXjr0ufeJNdsYlwBsYUpTTE1A0UiBUEnEE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 h1:TZ0ja/3L2UZekbmH0frq0i4BiFElgFzJJs2HCaS2KfU= -github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 h1:EM4i81KcjyHQSOeRXgwtLTdHKdNcekZEfTrNkk2of+Q= -github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 h1:RUU+I1d8KMhSgfGleWUU998K0S6lpNTg/3U0OXTim/Y= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 h1:dpGC+bnOhuZl7v4xHKe3EOsZC81Zs1+Ql7NoGVPPADU= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 h1:X7eYICSvADXt2b38kV3fr/seEWpty/YxjpjruGmMyWw= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231103125909-396c9c11e957 h1:2y8kutTDekmLEPR6m6dRgexzgGRbKWezOTj1KHV0aKU= +github.com/iotaledger/hive.go/constraints v0.0.0-20231103125909-396c9c11e957/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231103125909-396c9c11e957 h1:IfV5IxPu9bUoM2mFWXsFTo6bxMp1pPAdPGbDi33l0hE= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231103125909-396c9c11e957/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231103125909-396c9c11e957 h1:dBnIaBUkDIl092dVZyXqJb/gIHZePj83HYD19z0DNkw= +github.com/iotaledger/hive.go/crypto v0.0.0-20231103125909-396c9c11e957/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231103125909-396c9c11e957 h1:P+6bEjZpckrXzWMbCzDdTwt/tDTmw4tMRK1yAQggvOc= +github.com/iotaledger/hive.go/ds v0.0.0-20231103125909-396c9c11e957/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231103125909-396c9c11e957 h1:2OSny07tcbndTp7G+6eqSLvX/C07GISVA/amcKgxSqE= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231103125909-396c9c11e957/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231103125909-396c9c11e957 h1:yrqquWBJn04BN7FtldAZOKXQZlMtspaKS1pfomluovU= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231103125909-396c9c11e957/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231103125909-396c9c11e957 h1:BgDJu5i1Sicm0nCxb0EfVO76qBDAjgHeSVmVDAkS3Kw= +github.com/iotaledger/hive.go/lo v0.0.0-20231103125909-396c9c11e957/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231103125909-396c9c11e957 h1:rysXKq3zKd0HoVGBhKEcb4gb3NpYJuffN1FooJaBvGI= +github.com/iotaledger/hive.go/log v0.0.0-20231103125909-396c9c11e957/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231103125909-396c9c11e957 h1:+wO2uYC2lVyGc/vHHz3re39+nA71OcBViJrdGaTi97o= +github.com/iotaledger/hive.go/logger v0.0.0-20231103125909-396c9c11e957/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231103125909-396c9c11e957 h1:xNEV9FTQ/pE8oumW71734e7hmSjSmENlBN/FMsSJZxM= +github.com/iotaledger/hive.go/runtime v0.0.0-20231103125909-396c9c11e957/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231103125909-396c9c11e957 h1:P7I9vVxA6Yy/TfqwWcOsY98yBDD7uJA0iC1pDMm7Zxg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231103125909-396c9c11e957/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231103125909-396c9c11e957 h1:ZnSl53FcOKNC34JAkBF0kIY1mGX/JdsEUdtM/jf2cC0= +github.com/iotaledger/hive.go/stringify v0.0.0-20231103125909-396c9c11e957/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 h1:17JDzMKTMXKF3xys6gPURRddkZhg1LY+xwfhbr/sVqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5/go.mod h1:LsJvoBUVVnY7tkwwByCVtAwmp5bFXdyJNGU/+KVQJVM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac h1:c7R33+TQGMYP6pvLUQQaqpdDFl+GZbhAcfGMI0285fo= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 432a499b4..dce859c5d 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 - github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 + github.com/iotaledger/hive.go/crypto v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/lo v0.0.0-20231103125909-396c9c11e957 + github.com/iotaledger/hive.go/runtime v0.0.0-20231103125909-396c9c11e957 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e github.com/mr-tron/base58 v1.2.0 @@ -26,15 +26,15 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231103125909-396c9c11e957 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231103125909-396c9c11e957 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 82f56be8e..f46f06158 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,32 +28,32 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459 h1:w9yXUcne7W7nWFa4w3z3Ab+CVm9XX6ootsKdj3h+Wy8= -github.com/iotaledger/hive.go/ads v0.0.0-20231102194729-39400aaba459/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459 h1:sI8mLL2Xrh4s414Zl0yWCUUNCEUNSiKeK7TG7GfW4J8= -github.com/iotaledger/hive.go/constraints v0.0.0-20231102194729-39400aaba459/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459 h1:0w0NgTkXmMPYMPwbPydM8gZZGYMockp3sr9jYMR7iZc= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231102194729-39400aaba459/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459 h1:DuImYVscRKTXsYuVaGvfYpjmgWuHrLiji0LfYJ8wP7c= -github.com/iotaledger/hive.go/crypto v0.0.0-20231102194729-39400aaba459/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459 h1:UIj+JUgoD98oGej7two8mO9JqN6xOFb9HIT41Zi5yYQ= -github.com/iotaledger/hive.go/ds v0.0.0-20231102194729-39400aaba459/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459 h1:BEXcxjhYUpUweQ4m7LRwVQT7VQjXh10fNyqZIaASSBk= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231102194729-39400aaba459/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459 h1:eC1RWb5+4ffPtXQPR+dLgN1rD/x3wQ8Da4zv6Wv/Zv0= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231102194729-39400aaba459/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459 h1:SwhmyXn+MTXjr0ufeJNdsYlwBsYUpTTE1A0UiBUEnEE= -github.com/iotaledger/hive.go/lo v0.0.0-20231102194729-39400aaba459/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459 h1:TZ0ja/3L2UZekbmH0frq0i4BiFElgFzJJs2HCaS2KfU= -github.com/iotaledger/hive.go/log v0.0.0-20231102194729-39400aaba459/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459 h1:EM4i81KcjyHQSOeRXgwtLTdHKdNcekZEfTrNkk2of+Q= -github.com/iotaledger/hive.go/logger v0.0.0-20231102194729-39400aaba459/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459 h1:RUU+I1d8KMhSgfGleWUU998K0S6lpNTg/3U0OXTim/Y= -github.com/iotaledger/hive.go/runtime v0.0.0-20231102194729-39400aaba459/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459 h1:dpGC+bnOhuZl7v4xHKe3EOsZC81Zs1+Ql7NoGVPPADU= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231102194729-39400aaba459/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459 h1:X7eYICSvADXt2b38kV3fr/seEWpty/YxjpjruGmMyWw= -github.com/iotaledger/hive.go/stringify v0.0.0-20231102194729-39400aaba459/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231103125909-396c9c11e957 h1:4yrF6ttUB5IM0Hdxluys5TpouWVtYnLzn6BpjDzLSM4= +github.com/iotaledger/hive.go/ads v0.0.0-20231103125909-396c9c11e957/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231103125909-396c9c11e957 h1:2y8kutTDekmLEPR6m6dRgexzgGRbKWezOTj1KHV0aKU= +github.com/iotaledger/hive.go/constraints v0.0.0-20231103125909-396c9c11e957/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231103125909-396c9c11e957 h1:IfV5IxPu9bUoM2mFWXsFTo6bxMp1pPAdPGbDi33l0hE= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231103125909-396c9c11e957/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231103125909-396c9c11e957 h1:dBnIaBUkDIl092dVZyXqJb/gIHZePj83HYD19z0DNkw= +github.com/iotaledger/hive.go/crypto v0.0.0-20231103125909-396c9c11e957/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231103125909-396c9c11e957 h1:P+6bEjZpckrXzWMbCzDdTwt/tDTmw4tMRK1yAQggvOc= +github.com/iotaledger/hive.go/ds v0.0.0-20231103125909-396c9c11e957/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231103125909-396c9c11e957 h1:2OSny07tcbndTp7G+6eqSLvX/C07GISVA/amcKgxSqE= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231103125909-396c9c11e957/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231103125909-396c9c11e957 h1:yrqquWBJn04BN7FtldAZOKXQZlMtspaKS1pfomluovU= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231103125909-396c9c11e957/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231103125909-396c9c11e957 h1:BgDJu5i1Sicm0nCxb0EfVO76qBDAjgHeSVmVDAkS3Kw= +github.com/iotaledger/hive.go/lo v0.0.0-20231103125909-396c9c11e957/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231103125909-396c9c11e957 h1:rysXKq3zKd0HoVGBhKEcb4gb3NpYJuffN1FooJaBvGI= +github.com/iotaledger/hive.go/log v0.0.0-20231103125909-396c9c11e957/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231103125909-396c9c11e957 h1:+wO2uYC2lVyGc/vHHz3re39+nA71OcBViJrdGaTi97o= +github.com/iotaledger/hive.go/logger v0.0.0-20231103125909-396c9c11e957/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231103125909-396c9c11e957 h1:xNEV9FTQ/pE8oumW71734e7hmSjSmENlBN/FMsSJZxM= +github.com/iotaledger/hive.go/runtime v0.0.0-20231103125909-396c9c11e957/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231103125909-396c9c11e957 h1:P7I9vVxA6Yy/TfqwWcOsY98yBDD7uJA0iC1pDMm7Zxg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231103125909-396c9c11e957/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231103125909-396c9c11e957 h1:ZnSl53FcOKNC34JAkBF0kIY1mGX/JdsEUdtM/jf2cC0= +github.com/iotaledger/hive.go/stringify v0.0.0-20231103125909-396c9c11e957/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e h1:ZYRC1MHn/ghsqtjIpYGTxLQrh5n5eUmC0/YWnJiTRhk= github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e/go.mod h1:jqbLYq4a/FwuiPBqFfkAwwxU8vs3+kReRq2/tyX5qRA= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= From 5f233f0cd18c460ae5452dc80ce0b5d6c15800e9 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 4 Nov 2023 00:31:47 +0100 Subject: [PATCH 218/356] Feat: add logs to failing test --- pkg/tests/protocol_startup_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index e8ff3f841..ce901bfae 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -10,6 +10,7 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds/types" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/core/account" "github.com/iotaledger/iota-core/pkg/protocol" @@ -305,6 +306,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { ), ), ) + nodeC1.Protocol.SetLogLevel(log.LevelTrace) ts.Wait() // Everything that was accepted before shutting down should be available on disk. @@ -339,6 +341,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { storage.WithPruningDelay(1), ))..., ) + nodeD.Protocol.SetLogLevel(log.LevelTrace) ts.Wait() ts.AssertStorageRootBlocks(expectedStorageRootBlocksFrom9, ts.Nodes("nodeD")...) From a7a30a56c8551052fb5957dd225f0cfdb7e23bd2 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 5 Nov 2023 22:40:03 +0100 Subject: [PATCH 219/356] Feat: fixed chain inheritance --- pkg/protocol/commitment.go | 10 ++++++++-- pkg/tests/protocol_startup_test.go | 23 ++++++++++++++++++++--- pkg/testsuite/mock/node.go | 7 +++++-- pkg/testsuite/testsuite.go | 11 ++++++++--- pkg/testsuite/testsuite_options.go | 7 +++++++ 5 files changed, 48 insertions(+), 10 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 9ba5a3e97..0a7c9ce99 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -77,16 +77,22 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") + c.IsRoot.LogUpdates(entityLogger, log.LevelTrace, "IsRoot") }) + var spawnedChain *Chain + unsubscribe := lo.Batch( + // populate the local copy of the spawned chain variable with the first value we ever set + c.SpawnedChain.OnUpdateOnce(func(_, newSpawnedChain *Chain) { spawnedChain = newSpawnedChain }), + c.IsSolid.InheritFrom(c.IsRoot), + c.IsAttested.InheritFrom(c.IsRoot), + c.IsVerified.InheritFrom(c.IsRoot), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { - var spawnedChain *Chain - c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) // TODO: REMOVE ON UNSUBSCRIBE diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index ce901bfae..87b551822 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -10,7 +10,6 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds/types" "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/core/account" "github.com/iotaledger/iota-core/pkg/protocol" @@ -120,8 +119,26 @@ func Test_BookInCommittedSlot(t *testing.T) { } } +func TestLook(t *testing.T) { + for { + Test_StartNodeFromSnapshotAndDisk(t) + } +} + func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { + //logFile, err := os.OpenFile("/tmp/123.txt", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0700) + //if err != nil { + // panic(err) + //} + // + //defer func(logFile *os.File) { + // if err = logFile.Close(); err != nil { + // panic(err) + // } + //}(logFile) + ts := testsuite.NewTestSuite(t, + //testsuite.WithLogHandler(log.NewTextHandler(logFile)), testsuite.WithProtocolParametersOptions( iotago.WithTimeProviderOptions( testsuite.GenesisTimeWithOffsetBySlots(1000, testsuite.DefaultSlotDurationInSeconds), @@ -306,7 +323,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { ), ), ) - nodeC1.Protocol.SetLogLevel(log.LevelTrace) + //nodeC1.Protocol.SetLogLevel(log.LevelTrace) ts.Wait() // Everything that was accepted before shutting down should be available on disk. @@ -341,7 +358,7 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { storage.WithPruningDelay(1), ))..., ) - nodeD.Protocol.SetLogLevel(log.LevelTrace) + //nodeD.Protocol.SetLogLevel(log.LevelTrace) ts.Wait() ts.AssertStorageRootBlocks(expectedStorageRootBlocksFrom9, ts.Nodes("nodeD")...) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 241dd375c..6b09a996d 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -3,6 +3,7 @@ package mock import ( "context" "fmt" + "log/slog" "sync/atomic" "testing" "time" @@ -69,13 +70,14 @@ type Node struct { candidateEngineActivatedCount atomic.Uint32 mainEngineSwitchedCount atomic.Uint32 + logHandler slog.Handler enableEngineLogging bool mutex syncutils.RWMutex attachedBlocks []*blocks.Block } -func NewNode(t *testing.T, net *Network, partition string, name string, validator bool) *Node { +func NewNode(t *testing.T, net *Network, partition string, name string, validator bool, logHandler slog.Handler) *Node { seed := tpkg.RandEd25519Seed() keyManager := NewKeyManager(seed[:], 0) priv, pub := keyManager.KeyPair() @@ -107,6 +109,7 @@ func NewNode(t *testing.T, net *Network, partition string, name string, validato Endpoint: net.JoinWithEndpointID(peerID, partition), Workers: workerpool.NewGroup(name), + logHandler: logHandler, enableEngineLogging: false, attachedBlocks: make([]*blocks.Block, 0), @@ -119,7 +122,7 @@ func (n *Node) IsValidator() bool { func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[protocol.Protocol]) { n.Protocol = protocol.New( - log.NewLogger(n.Name), + log.NewLogger(n.Name, n.logHandler), n.Workers.CreateGroup("Protocol"), n.Endpoint, opts..., diff --git a/pkg/testsuite/testsuite.go b/pkg/testsuite/testsuite.go index 9b3a0d16e..ea81cb9d5 100644 --- a/pkg/testsuite/testsuite.go +++ b/pkg/testsuite/testsuite.go @@ -2,6 +2,8 @@ package testsuite import ( "fmt" + "log/slog" + "os" "strings" "sync/atomic" "testing" @@ -14,6 +16,7 @@ import ( "github.com/iotaledger/hive.go/ds/orderedmap" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/syncutils" "github.com/iotaledger/iota-core/pkg/protocol" @@ -47,6 +50,7 @@ type TestSuite struct { optsSnapshotOptions []options.Option[snapshotcreator.Options] optsWaitFor time.Duration optsTick time.Duration + optsLogHandler slog.Handler uniqueBlockTimeCounter atomic.Int64 automaticTransactionIssuingCounters shrinkingmap.ShrinkingMap[string, int] @@ -67,8 +71,9 @@ func NewTestSuite(testingT *testing.T, opts ...options.Option[TestSuite]) *TestS blocks: shrinkingmap.New[string, *blocks.Block](), automaticTransactionIssuingCounters: *shrinkingmap.New[string, int](), - optsWaitFor: durationFromEnvOrDefault(5*time.Second, "CI_UNIT_TESTS_WAIT_FOR"), - optsTick: durationFromEnvOrDefault(2*time.Millisecond, "CI_UNIT_TESTS_TICK"), + optsWaitFor: durationFromEnvOrDefault(5*time.Second, "CI_UNIT_TESTS_WAIT_FOR"), + optsTick: durationFromEnvOrDefault(2*time.Millisecond, "CI_UNIT_TESTS_TICK"), + optsLogHandler: log.NewTextHandler(os.Stdout), }, opts, func(t *TestSuite) { fmt.Println("Setup TestSuite -", testingT.Name(), " @ ", time.Now()) @@ -323,7 +328,7 @@ func (t *TestSuite) addNodeToPartition(name string, partition string, validator panic(fmt.Sprintf("cannot add validator node %s to partition %s: framework already running", name, partition)) } - node := mock.NewNode(t.Testing, t.network, partition, name, validator) + node := mock.NewNode(t.Testing, t.network, partition, name, validator, t.optsLogHandler) t.nodes.Set(name, node) amount := mock.MinValidatorAccountAmount diff --git a/pkg/testsuite/testsuite_options.go b/pkg/testsuite/testsuite_options.go index 6f467834e..4e305d9b2 100644 --- a/pkg/testsuite/testsuite_options.go +++ b/pkg/testsuite/testsuite_options.go @@ -1,6 +1,7 @@ package testsuite import ( + "log/slog" "os" "time" @@ -39,6 +40,12 @@ func WithProtocolParametersOptions(protocolParameterOptions ...options.Option[io } } +func WithLogHandler(logHandler slog.Handler) options.Option[TestSuite] { + return func(t *TestSuite) { + t.optsLogHandler = logHandler + } +} + func GenesisTimeWithOffsetBySlots(slots iotago.SlotIndex, slotDurationInSeconds uint8) int64 { return time.Now().Truncate(time.Duration(slotDurationInSeconds)*time.Second).Unix() - int64(slotDurationInSeconds)*int64(slots) } From 6f8210eae5730564b89b7ab1d4dfce40b06acd7c Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 5 Nov 2023 22:47:10 +0100 Subject: [PATCH 220/356] Refactor: removed comments + looping test --- pkg/tests/protocol_startup_test.go | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index 87b551822..cb8d1adf0 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -119,24 +119,7 @@ func Test_BookInCommittedSlot(t *testing.T) { } } -func TestLook(t *testing.T) { - for { - Test_StartNodeFromSnapshotAndDisk(t) - } -} - func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { - //logFile, err := os.OpenFile("/tmp/123.txt", os.O_WRONLY|os.O_CREATE|os.O_APPEND, 0700) - //if err != nil { - // panic(err) - //} - // - //defer func(logFile *os.File) { - // if err = logFile.Close(); err != nil { - // panic(err) - // } - //}(logFile) - ts := testsuite.NewTestSuite(t, //testsuite.WithLogHandler(log.NewTextHandler(logFile)), testsuite.WithProtocolParametersOptions( @@ -323,7 +306,6 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { ), ), ) - //nodeC1.Protocol.SetLogLevel(log.LevelTrace) ts.Wait() // Everything that was accepted before shutting down should be available on disk. @@ -358,7 +340,6 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { storage.WithPruningDelay(1), ))..., ) - //nodeD.Protocol.SetLogLevel(log.LevelTrace) ts.Wait() ts.AssertStorageRootBlocks(expectedStorageRootBlocksFrom9, ts.Nodes("nodeD")...) From dd70408f7e12aa45a73a70dd52000d7aab1ef5b7 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 6 Nov 2023 11:37:33 +0100 Subject: [PATCH 221/356] Refactor: adjust comments --- pkg/protocol/chain_manager.go | 4 ++-- pkg/protocol/commitment.go | 16 +++++++++------- 2 files changed, 11 insertions(+), 9 deletions(-) diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 5569620f7..fc841bdb1 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -241,7 +241,7 @@ func (c *ChainManager) publishEngineCommitments(chain *Chain) { latestPublishedSlot = commitment.Slot() if publishedCommitment.IsSolid.Get() { - publishedCommitment.promote(chain) + publishedCommitment.setChain(chain) } return publishedCommitment, published @@ -253,7 +253,7 @@ func (c *ChainManager) publishEngineCommitments(chain *Chain) { if forkingPoint := chain.ForkingPoint.Get(); forkingPoint == nil { rootCommitment, _ := publishCommitment(engine.RootCommitment.Get()) rootCommitment.IsRoot.Trigger() - rootCommitment.promote(chain) + rootCommitment.setChain(chain) chain.ForkingPoint.Set(rootCommitment) } else { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 0a7c9ce99..736c81ff4 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -80,10 +80,12 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.IsRoot.LogUpdates(entityLogger, log.LevelTrace, "IsRoot") }) + // spawnedChain contains a local copy of the spawned chain variable, so we can return the same instance when we fork var spawnedChain *Chain unsubscribe := lo.Batch( - // populate the local copy of the spawned chain variable with the first value we ever set + // populate first value of the spawned chain variable to our local variable, so we can access the latest value + // even if it was set from the outside (e.g. for the root commitment where we manually set the main chain). c.SpawnedChain.OnUpdateOnce(func(_, newSpawnedChain *Chain) { spawnedChain = newSpawnedChain }), c.IsSolid.InheritFrom(c.IsRoot), @@ -102,7 +104,7 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment return lo.Batch( c.SpawnedChain.DeriveValueFrom(reactive.NewDerivedVariable2(func(isRoot bool, mainChild *Commitment) *Chain { - if !isRoot { // do not automatically adjust the chain of the root commitment + if !isRoot { // do not adjust the chain of the root commitment if mainChild != c { if spawnedChain == nil { spawnedChain = NewChain(protocol) @@ -169,14 +171,14 @@ func (c *Commitment) Engine() *engine.Engine { return nil } -func (c *Commitment) promote(targetChain *Chain) { +func (c *Commitment) setChain(targetChain *Chain) { if currentChain := c.Chain.Get(); currentChain != targetChain { if currentChain == nil { - // since we only promote commitments that come from an engine, this can only happen if the commitment is the - // root commitment of the main chain that is the first commitment ever published (which means that we can just - // set the chain that we want it to have) - c.Chain.Set(targetChain) + // since we only call setChain for commitments coming from an engine (which by definition are solid), this + // can only happen if the commitment is the root commitment of the main chain that is the first commitment + // ever published (which means that we can just set the chain that we want it to have). c.SpawnedChain.Set(targetChain) + c.Chain.Set(targetChain) } else if parent := c.Parent.Get(); parent.Chain.Get() == targetChain { parent.MainChild.Set(c) } From c98bcdab9f142629109574916c65e2fca6653a69 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 6 Nov 2023 11:43:51 +0100 Subject: [PATCH 222/356] Refactor: remove go.work --- go.work.old | 24 ------------------------ 1 file changed, 24 deletions(-) delete mode 100644 go.work.old diff --git a/go.work.old b/go.work.old deleted file mode 100644 index f75ea98bd..000000000 --- a/go.work.old +++ /dev/null @@ -1,24 +0,0 @@ -go 1.21 -use ( - . - ../iota.go - ../hive.go/ads - ../hive.go/app - ../hive.go/apputils - ../hive.go/codegen - ../hive.go/constraints - ../hive.go/core - ../hive.go/crypto - ../hive.go/ds - ../hive.go/kvstore - ../hive.go/lo - ../hive.go/logger - ../hive.go/objectstorage - ../hive.go/runtime - ../hive.go/serializer - ../hive.go/stringify - ../hive.go/web - //../inx-app - //../inx/go - tools/genesis-snapshot -) \ No newline at end of file From 726331f34fc315757ec9d2ea83bf51d98636bfd0 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 7 Nov 2023 03:43:46 +0100 Subject: [PATCH 223/356] Refactor: removed timeout --- pkg/tests/loss_of_acceptance_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index f4309ccb1..fe2041252 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -59,8 +59,6 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { { ts.IssueBlocksAtSlots("", []iotago.SlotIndex{51, 52}, 2, "block0", ts.Nodes("node0"), true, nil) - time.Sleep(5 * time.Second) - ts.AssertEqualStoredCommitmentAtIndex(50, ts.Nodes()...) ts.AssertLatestCommitmentSlotIndex(50, ts.Nodes()...) ts.AssertBlocksExist(ts.Blocks("block0"), true, ts.Nodes()...) From 9e529a4623a625480ca692e52944f0fb3b46f343 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 7 Nov 2023 12:38:16 +0100 Subject: [PATCH 224/356] Feat: cleaned options --- go.mod | 2 +- pkg/protocol/options.go | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/go.mod b/go.mod index 0ecd3d59b..fd05fcbb7 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ require ( github.com/iotaledger/hive.go/ierrors v0.0.0-20231107022507-afd931daecdc github.com/iotaledger/hive.go/kvstore v0.0.0-20231107022507-afd931daecdc github.com/iotaledger/hive.go/lo v0.0.0-20231107022507-afd931daecdc + github.com/iotaledger/hive.go/log v0.0.0-20231107022507-afd931daecdc github.com/iotaledger/hive.go/logger v0.0.0-20231107022507-afd931daecdc github.com/iotaledger/hive.go/runtime v0.0.0-20231107022507-afd931daecdc github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231107022507-afd931daecdc @@ -89,7 +90,6 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231107022507-afd931daecdc // indirect github.com/ipfs/boxo v0.13.1 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect diff --git a/pkg/protocol/options.go b/pkg/protocol/options.go index 43b97f7ec..f0fcfb74b 100644 --- a/pkg/protocol/options.go +++ b/pkg/protocol/options.go @@ -1,7 +1,6 @@ package protocol import ( - "github.com/iotaledger/hive.go/logger" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/protocol/engine" @@ -44,7 +43,6 @@ import ( ) type Options struct { - Logger *logger.Logger BaseDirectory string SnapshotPath string ChainSwitchingThreshold iotago.SlotIndex From 3126a4133b90efcbc6c06caab12a7cacfd1fee38 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 7 Nov 2023 21:22:05 +0100 Subject: [PATCH 225/356] Feat: cleaned up code --- pkg/protocol/constants.go | 7 ------- 1 file changed, 7 deletions(-) diff --git a/pkg/protocol/constants.go b/pkg/protocol/constants.go index 26ad3435e..1c543d63f 100644 --- a/pkg/protocol/constants.go +++ b/pkg/protocol/constants.go @@ -3,11 +3,4 @@ package protocol const ( // DatabaseVersion defines the current version of the database. DatabaseVersion byte = 1 - - // SyncWindow defines the maximum amount of slots that a node requests on top of its latest verified commitment. - SyncWindow = 1 - - // WarpSyncOffset defines how many slots a commitment needs to be behind the latest commitment to be requested by - // the warp sync process. - WarpSyncOffset = 1 ) From 57a9e90086905caf9b659bb346a05064504e5868 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 8 Nov 2023 00:39:14 +0100 Subject: [PATCH 226/356] Feat: missing file --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index a8d306e68..444a3d4f1 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ require ( github.com/iotaledger/hive.go/ierrors v0.0.0-20231107225803-f89acd088c10 github.com/iotaledger/hive.go/kvstore v0.0.0-20231107225803-f89acd088c10 github.com/iotaledger/hive.go/lo v0.0.0-20231107225803-f89acd088c10 + github.com/iotaledger/hive.go/log v0.0.0-20231107225803-f89acd088c10 github.com/iotaledger/hive.go/logger v0.0.0-20231107225803-f89acd088c10 github.com/iotaledger/hive.go/runtime v0.0.0-20231107225803-f89acd088c10 github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231107225803-f89acd088c10 @@ -89,7 +90,6 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231107225803-f89acd088c10 // indirect github.com/ipfs/boxo v0.13.1 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect From 9b5feac3af8838bf00f92030e9f6e5f59c456f57 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 8 Nov 2023 00:56:40 +0100 Subject: [PATCH 227/356] Fix: fixed merge conflicts --- pkg/protocol/chain.go | 10 +++++----- pkg/protocol/commitment.go | 25 ++++++++----------------- 2 files changed, 13 insertions(+), 22 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 88fc8fda8..9608677dc 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -141,7 +141,7 @@ func NewChain(protocol *Protocol) *Chain { } func (c *Chain) initClaimedWeight() { - c.ClaimedWeight.InheritFrom(reactive.NewDerivedVariable(func(c *Commitment) uint64 { + c.ClaimedWeight.InheritFrom(reactive.NewDerivedVariable(func(_ uint64, c *Commitment) uint64 { if c == nil { return 0 } @@ -163,7 +163,7 @@ func (c *Chain) initAttestedWeight() { } func (c *Chain) initVerifiedWeight() { - c.VerifiedWeight.InheritFrom(reactive.NewDerivedVariable(func(c *Commitment) uint64 { + c.VerifiedWeight.InheritFrom(reactive.NewDerivedVariable(func(_ uint64, c *Commitment) uint64 { if c == nil { return 0 } @@ -174,13 +174,13 @@ func (c *Chain) initVerifiedWeight() { func (c *Chain) initWarpSync() { enableWarpSyncIfNecessary := func() (unsubscribe func()) { - return c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(latestVerifiedCommitment *Commitment, outOfSyncThreshold iotago.SlotIndex) bool { + return c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(_ bool, latestVerifiedCommitment *Commitment, outOfSyncThreshold iotago.SlotIndex) bool { return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < outOfSyncThreshold }, c.LatestVerifiedCommitment, c.OutOfSyncThreshold)) } disableWarpSyncIfNecessary := func() (unsubscribe func()) { - return c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(latestVerifiedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex) bool { + return c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(_ bool, latestVerifiedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex) bool { return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < warpSyncThreshold }, c.LatestVerifiedCommitment, c.WarpSyncThreshold)) } @@ -214,7 +214,7 @@ func (c *Chain) initEngine() { return c.Engine.InheritFrom(c.SpawnedEngine) } - return c.Engine.InheritFrom(reactive.NewDerivedVariable2(func(spawnedEngine, parentEngine *engine.Engine) *engine.Engine { + return c.Engine.InheritFrom(reactive.NewDerivedVariable2(func(_, spawnedEngine, parentEngine *engine.Engine) *engine.Engine { if spawnedEngine != nil { return spawnedEngine } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 736c81ff4..160021013 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -80,18 +80,9 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.IsRoot.LogUpdates(entityLogger, log.LevelTrace, "IsRoot") }) - // spawnedChain contains a local copy of the spawned chain variable, so we can return the same instance when we fork - var spawnedChain *Chain - unsubscribe := lo.Batch( - // populate first value of the spawned chain variable to our local variable, so we can access the latest value - // even if it was set from the outside (e.g. for the root commitment where we manually set the main chain). - c.SpawnedChain.OnUpdateOnce(func(_, newSpawnedChain *Chain) { spawnedChain = newSpawnedChain }), - c.IsSolid.InheritFrom(c.IsRoot), - c.IsAttested.InheritFrom(c.IsRoot), - c.IsVerified.InheritFrom(c.IsRoot), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { @@ -103,7 +94,7 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment }) return lo.Batch( - c.SpawnedChain.DeriveValueFrom(reactive.NewDerivedVariable2(func(isRoot bool, mainChild *Commitment) *Chain { + c.SpawnedChain.DeriveValueFrom(reactive.NewDerivedVariable2(func(spawnedChain *Chain, isRoot bool, mainChild *Commitment) *Chain { if !isRoot { // do not adjust the chain of the root commitment if mainChild != c { if spawnedChain == nil { @@ -119,17 +110,17 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment } return spawnedChain - }, c.IsRoot, parent.MainChild)), + }, c.IsRoot, parent.MainChild, c.SpawnedChain.Get())), - c.Chain.DeriveValueFrom(reactive.NewDerivedVariable2(func(parentChain, spawnedChain *Chain) *Chain { + c.Chain.DeriveValueFrom(reactive.NewDerivedVariable2(func(_, parentChain, spawnedChain *Chain) *Chain { return lo.Cond(spawnedChain != nil, spawnedChain, parentChain) }, parent.Chain, c.SpawnedChain)), - c.CumulativeAttestedWeight.DeriveValueFrom(reactive.NewDerivedVariable2(func(parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { + c.CumulativeAttestedWeight.DeriveValueFrom(reactive.NewDerivedVariable2(func(_, parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { return parentCumulativeAttestedWeight + attestedWeight }, parent.CumulativeAttestedWeight, c.AttestedWeight)), - c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { + c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_, parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)), @@ -137,15 +128,15 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.Chain.WithNonEmptyValue(func(chain *Chain) func() { return lo.Batch( - c.InSyncRange.DeriveValueFrom(reactive.NewDerivedVariable3(func(spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { + c.InSyncRange.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment)), - c.WarpSync.DeriveValueFrom(reactive.NewDerivedVariable4(func(spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { + c.WarpSync.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified)), - c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable3(func(verifyAttestations, parentIsAttested, isAttested bool) bool { + c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, verifyAttestations, parentIsAttested, isAttested bool) bool { return verifyAttestations && parentIsAttested && !isAttested }, chain.VerifyAttestations, parent.IsAttested, c.IsAttested)), ) From 8740c3291db386c1c23ed8ea051c369f53c6baaa Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 8 Nov 2023 11:16:00 +0100 Subject: [PATCH 228/356] Feat: reordered logs --- pkg/protocol/commitment.go | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 160021013..23cb18761 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -58,26 +58,26 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), InSyncRange: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), - - protocol: protocol, } c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { - c.Parent.LogUpdates(entityLogger, log.LevelTrace, "Parent", (*Commitment).LogName) - // Children + c.Parent.LogUpdates(c, log.LevelTrace, "Parent", (*Commitment).LogName) + // c.Children.LogUpdates(entityLogger, log.LevelTrace, "Children", (*Commitment).LogName) c.MainChild.LogUpdates(entityLogger, log.LevelTrace, "MainChild", (*Commitment).LogName) c.SpawnedChain.LogUpdates(entityLogger, log.LevelTrace, "SpawnedChain", (*Chain).LogName) c.Chain.LogUpdates(entityLogger, log.LevelTrace, "Chain", (*Chain).LogName) c.RequestAttestations.LogUpdates(entityLogger, log.LevelTrace, "RequestAttestations") c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") - c.IsSolid.LogUpdates(entityLogger, log.LevelTrace, "IsSolid") - c.IsVerified.LogUpdates(entityLogger, log.LevelTrace, "IsVerified") - c.IsAttested.LogUpdates(entityLogger, log.LevelTrace, "IsAttested") - c.InSyncRange.LogUpdates(entityLogger, log.LevelTrace, "InSyncRange") + c.RequestedBlocksReceived.LogUpdates(entityLogger, log.LevelTrace, "RequestedBlocksReceived") c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") c.IsRoot.LogUpdates(entityLogger, log.LevelTrace, "IsRoot") + c.IsSolid.LogUpdates(entityLogger, log.LevelTrace, "IsSolid") + c.IsAttested.LogUpdates(entityLogger, log.LevelTrace, "IsAttested") + c.IsVerified.LogUpdates(entityLogger, log.LevelTrace, "IsVerified") + c.InSyncRange.LogUpdates(entityLogger, log.LevelTrace, "InSyncRange") + c.IsEvicted.LogUpdates(entityLogger, log.LevelTrace, "IsEvicted") }) unsubscribe := lo.Batch( From f072485ef88264043fddf3bed73c60a9635d8702 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 8 Nov 2023 18:13:33 +0100 Subject: [PATCH 229/356] Feat: upgraded to hive --- go.mod | 28 ++++---- go.sum | 56 +++++++-------- pkg/protocol/commitment.go | 106 ++++++++++++++++++----------- pkg/protocol/protocol_blocks.go | 2 +- pkg/protocol/protocol_warp_sync.go | 4 +- tools/gendoc/go.mod | 32 ++++----- tools/gendoc/go.sum | 56 +++++++-------- tools/genesis-snapshot/go.mod | 24 +++---- tools/genesis-snapshot/go.sum | 48 ++++++------- 9 files changed, 188 insertions(+), 168 deletions(-) diff --git a/go.mod b/go.mod index 444a3d4f1..c7861e467 100644 --- a/go.mod +++ b/go.mod @@ -10,20 +10,20 @@ require ( github.com/google/uuid v1.4.0 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/app v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/constraints v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/crypto v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/ds v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/kvstore v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/lo v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/log v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/logger v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/runtime v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/stringify v0.0.0-20231107225803-f89acd088c10 + github.com/iotaledger/hive.go/ads v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b + github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b + github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e diff --git a/go.sum b/go.sum index 4b7298c9b..0b9aeff89 100644 --- a/go.sum +++ b/go.sum @@ -275,34 +275,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231107225803-f89acd088c10 h1:M24zuxsCGccvksoanDZEjc8K3tWFyw7aZ2sbQK740pE= -github.com/iotaledger/hive.go/ads v0.0.0-20231107225803-f89acd088c10/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231107225803-f89acd088c10 h1:wsUsKHP9meQsr1UPYASpN+QRa2NlWyhDbt0R310NccM= -github.com/iotaledger/hive.go/app v0.0.0-20231107225803-f89acd088c10/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= -github.com/iotaledger/hive.go/constraints v0.0.0-20231107225803-f89acd088c10 h1:CJ9nehCDKqFo3sJLMnybx0/AvmdXq6dau5qFr+pivUc= -github.com/iotaledger/hive.go/constraints v0.0.0-20231107225803-f89acd088c10/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231107225803-f89acd088c10 h1:FMassldB6buYv8nsfELSkKzR3mj326YNmLy4DNY+20o= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231107225803-f89acd088c10/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231107225803-f89acd088c10 h1:sGxsehUXmhWW5Vv9PBwuW1mlW2Npdb2yMonZgolVzHs= -github.com/iotaledger/hive.go/crypto v0.0.0-20231107225803-f89acd088c10/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231107225803-f89acd088c10 h1:NufkzT29n9OconEE6+8HMoCkW+MXiznGn+HxWrNPy1o= -github.com/iotaledger/hive.go/ds v0.0.0-20231107225803-f89acd088c10/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231107225803-f89acd088c10 h1:M43fs0ybJXyVGnN55xG2OrMmXqbpYGudnU8zIA7NNL4= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231107225803-f89acd088c10/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231107225803-f89acd088c10 h1:nGffY7n3mxUFtWrKgbvNx7jYu2lGkeu01hp+8aLaOk8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231107225803-f89acd088c10/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231107225803-f89acd088c10 h1:ME7iE4yKMYEvfkFvOPswAWsZaq7mLkKiGN88K1X1OBg= -github.com/iotaledger/hive.go/lo v0.0.0-20231107225803-f89acd088c10/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231107225803-f89acd088c10 h1:yhDHLCtdpLSiv/kDDLDkJZcJispd1OUAWIYF7RXFQi4= -github.com/iotaledger/hive.go/log v0.0.0-20231107225803-f89acd088c10/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231107225803-f89acd088c10 h1:ajaTrqlYEjVbkIu2RTN+GKrQnbbbjoAFea2wLgj2B+c= -github.com/iotaledger/hive.go/logger v0.0.0-20231107225803-f89acd088c10/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231107225803-f89acd088c10 h1:5tPaO+hxPTBp5J7Ap2oIqzHEXmYbrh5Rfh4y2l5KaQQ= -github.com/iotaledger/hive.go/runtime v0.0.0-20231107225803-f89acd088c10/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231107225803-f89acd088c10 h1:KahaknpEVnJCgyaawYzRVR0rcX2/iCXiUXHvSjlMqEA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231107225803-f89acd088c10/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231107225803-f89acd088c10 h1:1BQfYB6hxWGTjrv70SP3xxThxTV8t1AqEVQRRr5dTJI= -github.com/iotaledger/hive.go/stringify v0.0.0-20231107225803-f89acd088c10/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231108145121-e1914a65274b h1:QWGaBbcd6kdgUNvYTdsb1Jz7dW8z4KhYl8XTrVBcjMU= +github.com/iotaledger/hive.go/ads v0.0.0-20231108145121-e1914a65274b/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b h1:NMyLeKTws/cCnLRWeqRQfOlN0DnKTi/MOu15wNJKZCA= +github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b h1:TFmdanDRuGQsuiQ92+kCSrV9G8hFF281odflmZ+Cz+g= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b h1:W0M/VoJeqxD331urc4NOHlX5Sij/ZdrNwM/ZZkyV7h0= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b h1:IZBnVPVNG9PLKO975XGRN+YBMgMBxD/5lwv2dsttLFg= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b h1:87KrKSFG9gptutDPj9b/c0YsILu01EIodkuppfppjaE= +github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b h1:9ybKrUkZBUoAPohf4nvzklCZkM1KGQ1eY5zq25VwRLY= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b h1:l5pjwnk9HIjI2a5j4H0Q7pi/AzFuZDrQTY+rT3PxXzE= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b h1:P9L6XTDGsQ+bUrca+oAUQHC+iHzob883Yc8O0NRd3YQ= +github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b h1:zaZ4MqNOvriaUvksEH4tH46LcCeT3weiuj/wHnQycMI= +github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b h1:o/FIpPxgmB/S69FlbbDpkJiUNt7VUNq+TITTsVwCIfc= +github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b h1:zucA1sAW/XD/NzhXtyrPuwDYBvVR0tI0jVF5fPOj51o= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b h1:c4N8q7GzrExCcFAn/xtd074k5FzabKh3/XPIEDMNILk= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b h1:vrOyDF4OeTcnyCRwpdAT+cdo1G3aEhljLZbKmQn6Dwg= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 h1:17JDzMKTMXKF3xys6gPURRddkZhg1LY+xwfhbr/sVqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5/go.mod h1:LsJvoBUVVnY7tkwwByCVtAwmp5bFXdyJNGU/+KVQJVM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac h1:c7R33+TQGMYP6pvLUQQaqpdDFl+GZbhAcfGMI0285fo= diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 23cb18761..fda1ccf65 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -17,7 +17,7 @@ type Commitment struct { SpawnedChain reactive.Variable[*Chain] Chain reactive.Variable[*Chain] RequestAttestations reactive.Variable[bool] - WarpSync reactive.Variable[bool] + WarpSyncBlocks reactive.Variable[bool] RequestedBlocksReceived reactive.Variable[bool] Weight reactive.Variable[uint64] AttestedWeight reactive.Variable[uint64] @@ -27,18 +27,15 @@ type Commitment struct { IsAttested reactive.Event IsVerified reactive.Event IsAboveLatestVerifiedCommitment reactive.Variable[bool] - InSyncRange reactive.Variable[bool] + ReplayDroppedBlocks reactive.Variable[bool] IsEvicted reactive.Event - protocol *Protocol - *model.Commitment - log.Logger } func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment { - c := &Commitment{ + return (&Commitment{ Commitment: commitment, Parent: reactive.NewVariable[*Commitment](), Children: reactive.NewSet[*Commitment](), @@ -46,7 +43,7 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment SpawnedChain: reactive.NewVariable[*Chain](), Chain: reactive.NewVariable[*Chain](), RequestAttestations: reactive.NewVariable[bool](), - WarpSync: reactive.NewVariable[bool](), + WarpSyncBlocks: reactive.NewVariable[bool](), RequestedBlocksReceived: reactive.NewVariable[bool](), Weight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](func(currentValue uint64, newValue uint64) uint64 { return max(currentValue, newValue) }), @@ -56,31 +53,49 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment IsAttested: reactive.NewEvent(), IsVerified: reactive.NewEvent(), IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), - InSyncRange: reactive.NewVariable[bool](), + ReplayDroppedBlocks: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), + }).initLogging(protocol).initBehavior(protocol) +} + +func (c *Commitment) Engine() *engine.Engine { + if chain := c.Chain.Get(); chain != nil { + return chain.Engine.Get() } - c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", commitment.Slot()), c.IsEvicted, func(entityLogger log.Logger) { - c.Parent.LogUpdates(c, log.LevelTrace, "Parent", (*Commitment).LogName) - // c.Children.LogUpdates(entityLogger, log.LevelTrace, "Children", (*Commitment).LogName) - c.MainChild.LogUpdates(entityLogger, log.LevelTrace, "MainChild", (*Commitment).LogName) - c.SpawnedChain.LogUpdates(entityLogger, log.LevelTrace, "SpawnedChain", (*Chain).LogName) - c.Chain.LogUpdates(entityLogger, log.LevelTrace, "Chain", (*Chain).LogName) - c.RequestAttestations.LogUpdates(entityLogger, log.LevelTrace, "RequestAttestations") - c.WarpSync.LogUpdates(entityLogger, log.LevelTrace, "WarpSync") - c.RequestedBlocksReceived.LogUpdates(entityLogger, log.LevelTrace, "RequestedBlocksReceived") - c.Weight.LogUpdates(entityLogger, log.LevelTrace, "Weight") - c.AttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "AttestedWeight") - c.CumulativeAttestedWeight.LogUpdates(entityLogger, log.LevelTrace, "CumulativeAttestedWeight") - c.IsRoot.LogUpdates(entityLogger, log.LevelTrace, "IsRoot") - c.IsSolid.LogUpdates(entityLogger, log.LevelTrace, "IsSolid") - c.IsAttested.LogUpdates(entityLogger, log.LevelTrace, "IsAttested") - c.IsVerified.LogUpdates(entityLogger, log.LevelTrace, "IsVerified") - c.InSyncRange.LogUpdates(entityLogger, log.LevelTrace, "InSyncRange") - c.IsEvicted.LogUpdates(entityLogger, log.LevelTrace, "IsEvicted") - }) + return nil +} + +func (c *Commitment) initLogging(protocol *Protocol) (self *Commitment) { + c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot()), c.IsEvicted, func(_ log.Logger) {}) + + teardownLogging := lo.Batch( + c.Parent.LogUpdates(c, log.LevelTrace, "Parent", (*Commitment).LogName), + // c.Children.LogUpdates(c, log.LevelTrace, "Children", (*Commitment).LogName), + c.MainChild.LogUpdates(c, log.LevelTrace, "MainChild", (*Commitment).LogName), + c.SpawnedChain.LogUpdates(c, log.LevelTrace, "SpawnedChain", (*Chain).LogName), + c.Chain.LogUpdates(c, log.LevelTrace, "Chain", (*Chain).LogName), + c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), + c.WarpSyncBlocks.LogUpdates(c, log.LevelTrace, "WarpSyncBlocks"), + c.RequestedBlocksReceived.LogUpdates(c, log.LevelTrace, "RequestedBlocksReceived"), + c.Weight.LogUpdates(c, log.LevelTrace, "Weight"), + c.AttestedWeight.LogUpdates(c, log.LevelTrace, "AttestedWeight"), + c.CumulativeAttestedWeight.LogUpdates(c, log.LevelTrace, "CumulativeAttestedWeight"), + c.IsRoot.LogUpdates(c, log.LevelTrace, "IsRoot"), + c.IsSolid.LogUpdates(c, log.LevelTrace, "IsSolid"), + c.IsAttested.LogUpdates(c, log.LevelTrace, "IsAttested"), + c.IsVerified.LogUpdates(c, log.LevelTrace, "IsVerified"), + c.ReplayDroppedBlocks.LogUpdates(c, log.LevelTrace, "ReplayDroppedBlocks"), + c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), + ) + + c.IsEvicted.OnTrigger(teardownLogging) + + return c +} - unsubscribe := lo.Batch( +func (c *Commitment) initBehavior(protocol *Protocol) (self *Commitment) { + teardownBehavior := lo.Batch( c.IsSolid.InheritFrom(c.IsRoot), c.IsAttested.InheritFrom(c.IsRoot), c.IsVerified.InheritFrom(c.IsRoot), @@ -88,12 +103,9 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) - // TODO: REMOVE ON UNSUBSCRIBE - parent.MainChild.Compute(func(mainChild *Commitment) *Commitment { - return lo.Cond(mainChild != nil, mainChild, c) - }) - return lo.Batch( + parent.registerChild(c), + c.SpawnedChain.DeriveValueFrom(reactive.NewDerivedVariable2(func(spawnedChain *Chain, isRoot bool, mainChild *Commitment) *Chain { if !isRoot { // do not adjust the chain of the root commitment if mainChild != c { @@ -128,11 +140,11 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment c.Chain.WithNonEmptyValue(func(chain *Chain) func() { return lo.Batch( - c.InSyncRange.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { + c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment)), - c.WarpSync.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { + c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified)), @@ -149,17 +161,29 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment }), ) - c.IsEvicted.OnTrigger(unsubscribe) + c.IsEvicted.OnTrigger(teardownBehavior) return c } -func (c *Commitment) Engine() *engine.Engine { - if chain := c.Chain.Get(); chain != nil { - return chain.Engine.Get() - } +func (c *Commitment) registerChild(child *Commitment) (unregisterChild func()) { + c.MainChild.Compute(func(mainChild *Commitment) *Commitment { + if !c.Children.Add(child) || mainChild != nil { + return mainChild + } - return nil + return child + }) + + return func() { + c.MainChild.Compute(func(mainChild *Commitment) *Commitment { + if !c.Children.Delete(child) || child != mainChild { + return mainChild + } + + return lo.Return1(c.Children.Any()) + }) + } } func (c *Commitment) setChain(targetChain *Chain) { diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 69bedc620..4a820a109 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -33,7 +33,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { protocol.Constructed.OnTrigger(func() { protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.InSyncRange.OnUpdate(func(_, replayBlocks bool) { + commitment.ReplayDroppedBlocks.OnUpdate(func(_, replayBlocks bool) { if replayBlocks { b.LogDebug("replaying blocks", "commitmentID", commitment.ID()) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 76756ae45..d4dd14e2f 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -36,7 +36,7 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { protocol.Constructed.OnTrigger(func() { c.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.WarpSync.OnUpdate(func(_, warpSyncBlocks bool) { + commitment.WarpSyncBlocks.OnUpdate(func(_, warpSyncBlocks bool) { if warpSyncBlocks { c.ticker.StartTicker(commitment.ID()) } else { @@ -101,7 +101,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } commitment.RequestedBlocksReceived.Compute(func(requestedBlocksReceived bool) bool { - if requestedBlocksReceived || !commitment.WarpSync.Get() { + if requestedBlocksReceived || !commitment.WarpSyncBlocks.Get() { w.LogTrace("response for already synced commitment", "commitment", commitment.LogName(), "fromPeer", from) return requestedBlocksReceived diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 45fda2a00..26229c256 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231107225803-f89acd088c10 + github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -18,7 +18,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect @@ -57,19 +56,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231107225803-f89acd088c10 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e // indirect @@ -134,7 +133,6 @@ require ( github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pokt-network/smt v0.6.1 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/prometheus/client_golang v1.17.0 // indirect @@ -150,7 +148,6 @@ require ( github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.8.4 // indirect github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect @@ -182,6 +179,5 @@ require ( google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index d57ca1682..9021de915 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -277,36 +277,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231107225803-f89acd088c10 h1:M24zuxsCGccvksoanDZEjc8K3tWFyw7aZ2sbQK740pE= -github.com/iotaledger/hive.go/ads v0.0.0-20231107225803-f89acd088c10/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/app v0.0.0-20231107225803-f89acd088c10 h1:wsUsKHP9meQsr1UPYASpN+QRa2NlWyhDbt0R310NccM= -github.com/iotaledger/hive.go/app v0.0.0-20231107225803-f89acd088c10/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/ads v0.0.0-20231108145121-e1914a65274b h1:QWGaBbcd6kdgUNvYTdsb1Jz7dW8z4KhYl8XTrVBcjMU= +github.com/iotaledger/hive.go/ads v0.0.0-20231108145121-e1914a65274b/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b h1:NMyLeKTws/cCnLRWeqRQfOlN0DnKTi/MOu15wNJKZCA= +github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231107225803-f89acd088c10 h1:CJ9nehCDKqFo3sJLMnybx0/AvmdXq6dau5qFr+pivUc= -github.com/iotaledger/hive.go/constraints v0.0.0-20231107225803-f89acd088c10/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231107225803-f89acd088c10 h1:FMassldB6buYv8nsfELSkKzR3mj326YNmLy4DNY+20o= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231107225803-f89acd088c10/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231107225803-f89acd088c10 h1:sGxsehUXmhWW5Vv9PBwuW1mlW2Npdb2yMonZgolVzHs= -github.com/iotaledger/hive.go/crypto v0.0.0-20231107225803-f89acd088c10/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231107225803-f89acd088c10 h1:NufkzT29n9OconEE6+8HMoCkW+MXiznGn+HxWrNPy1o= -github.com/iotaledger/hive.go/ds v0.0.0-20231107225803-f89acd088c10/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231107225803-f89acd088c10 h1:M43fs0ybJXyVGnN55xG2OrMmXqbpYGudnU8zIA7NNL4= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231107225803-f89acd088c10/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231107225803-f89acd088c10 h1:nGffY7n3mxUFtWrKgbvNx7jYu2lGkeu01hp+8aLaOk8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231107225803-f89acd088c10/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231107225803-f89acd088c10 h1:ME7iE4yKMYEvfkFvOPswAWsZaq7mLkKiGN88K1X1OBg= -github.com/iotaledger/hive.go/lo v0.0.0-20231107225803-f89acd088c10/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231107225803-f89acd088c10 h1:yhDHLCtdpLSiv/kDDLDkJZcJispd1OUAWIYF7RXFQi4= -github.com/iotaledger/hive.go/log v0.0.0-20231107225803-f89acd088c10/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231107225803-f89acd088c10 h1:ajaTrqlYEjVbkIu2RTN+GKrQnbbbjoAFea2wLgj2B+c= -github.com/iotaledger/hive.go/logger v0.0.0-20231107225803-f89acd088c10/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231107225803-f89acd088c10 h1:5tPaO+hxPTBp5J7Ap2oIqzHEXmYbrh5Rfh4y2l5KaQQ= -github.com/iotaledger/hive.go/runtime v0.0.0-20231107225803-f89acd088c10/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231107225803-f89acd088c10 h1:KahaknpEVnJCgyaawYzRVR0rcX2/iCXiUXHvSjlMqEA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231107225803-f89acd088c10/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231107225803-f89acd088c10 h1:1BQfYB6hxWGTjrv70SP3xxThxTV8t1AqEVQRRr5dTJI= -github.com/iotaledger/hive.go/stringify v0.0.0-20231107225803-f89acd088c10/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b h1:TFmdanDRuGQsuiQ92+kCSrV9G8hFF281odflmZ+Cz+g= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b h1:W0M/VoJeqxD331urc4NOHlX5Sij/ZdrNwM/ZZkyV7h0= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b h1:IZBnVPVNG9PLKO975XGRN+YBMgMBxD/5lwv2dsttLFg= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b h1:87KrKSFG9gptutDPj9b/c0YsILu01EIodkuppfppjaE= +github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b h1:9ybKrUkZBUoAPohf4nvzklCZkM1KGQ1eY5zq25VwRLY= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b h1:l5pjwnk9HIjI2a5j4H0Q7pi/AzFuZDrQTY+rT3PxXzE= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b h1:P9L6XTDGsQ+bUrca+oAUQHC+iHzob883Yc8O0NRd3YQ= +github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b h1:zaZ4MqNOvriaUvksEH4tH46LcCeT3weiuj/wHnQycMI= +github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b h1:o/FIpPxgmB/S69FlbbDpkJiUNt7VUNq+TITTsVwCIfc= +github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b h1:zucA1sAW/XD/NzhXtyrPuwDYBvVR0tI0jVF5fPOj51o= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b h1:c4N8q7GzrExCcFAn/xtd074k5FzabKh3/XPIEDMNILk= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b h1:vrOyDF4OeTcnyCRwpdAT+cdo1G3aEhljLZbKmQn6Dwg= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5 h1:17JDzMKTMXKF3xys6gPURRddkZhg1LY+xwfhbr/sVqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231031135002-4c79ea5193f5/go.mod h1:LsJvoBUVVnY7tkwwByCVtAwmp5bFXdyJNGU/+KVQJVM= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231031134131-b6ad918dc1ac h1:c7R33+TQGMYP6pvLUQQaqpdDFl+GZbhAcfGMI0285fo= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 2035452c7..397b12c5d 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/lo v0.0.0-20231107225803-f89acd088c10 - github.com/iotaledger/hive.go/runtime v0.0.0-20231107225803-f89acd088c10 + github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e github.com/mr-tron/base58 v1.2.0 @@ -26,14 +26,14 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231107225803-f89acd088c10 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231107225803-f89acd088c10 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 12920f76f..d53596c05 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,30 +28,30 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231107225803-f89acd088c10 h1:M24zuxsCGccvksoanDZEjc8K3tWFyw7aZ2sbQK740pE= -github.com/iotaledger/hive.go/ads v0.0.0-20231107225803-f89acd088c10/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= -github.com/iotaledger/hive.go/constraints v0.0.0-20231107225803-f89acd088c10 h1:CJ9nehCDKqFo3sJLMnybx0/AvmdXq6dau5qFr+pivUc= -github.com/iotaledger/hive.go/constraints v0.0.0-20231107225803-f89acd088c10/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231107225803-f89acd088c10 h1:FMassldB6buYv8nsfELSkKzR3mj326YNmLy4DNY+20o= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231107225803-f89acd088c10/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/crypto v0.0.0-20231107225803-f89acd088c10 h1:sGxsehUXmhWW5Vv9PBwuW1mlW2Npdb2yMonZgolVzHs= -github.com/iotaledger/hive.go/crypto v0.0.0-20231107225803-f89acd088c10/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/ds v0.0.0-20231107225803-f89acd088c10 h1:NufkzT29n9OconEE6+8HMoCkW+MXiznGn+HxWrNPy1o= -github.com/iotaledger/hive.go/ds v0.0.0-20231107225803-f89acd088c10/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231107225803-f89acd088c10 h1:M43fs0ybJXyVGnN55xG2OrMmXqbpYGudnU8zIA7NNL4= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231107225803-f89acd088c10/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231107225803-f89acd088c10 h1:nGffY7n3mxUFtWrKgbvNx7jYu2lGkeu01hp+8aLaOk8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231107225803-f89acd088c10/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231107225803-f89acd088c10 h1:ME7iE4yKMYEvfkFvOPswAWsZaq7mLkKiGN88K1X1OBg= -github.com/iotaledger/hive.go/lo v0.0.0-20231107225803-f89acd088c10/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/log v0.0.0-20231107225803-f89acd088c10 h1:yhDHLCtdpLSiv/kDDLDkJZcJispd1OUAWIYF7RXFQi4= -github.com/iotaledger/hive.go/log v0.0.0-20231107225803-f89acd088c10/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/runtime v0.0.0-20231107225803-f89acd088c10 h1:5tPaO+hxPTBp5J7Ap2oIqzHEXmYbrh5Rfh4y2l5KaQQ= -github.com/iotaledger/hive.go/runtime v0.0.0-20231107225803-f89acd088c10/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231107225803-f89acd088c10 h1:KahaknpEVnJCgyaawYzRVR0rcX2/iCXiUXHvSjlMqEA= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231107225803-f89acd088c10/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/stringify v0.0.0-20231107225803-f89acd088c10 h1:1BQfYB6hxWGTjrv70SP3xxThxTV8t1AqEVQRRr5dTJI= -github.com/iotaledger/hive.go/stringify v0.0.0-20231107225803-f89acd088c10/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231108145121-e1914a65274b h1:QWGaBbcd6kdgUNvYTdsb1Jz7dW8z4KhYl8XTrVBcjMU= +github.com/iotaledger/hive.go/ads v0.0.0-20231108145121-e1914a65274b/go.mod h1:IFh0gDfeMgZtfCo+5afK59IDR4xXh+cTR9YtLnZPcbY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b h1:TFmdanDRuGQsuiQ92+kCSrV9G8hFF281odflmZ+Cz+g= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b h1:W0M/VoJeqxD331urc4NOHlX5Sij/ZdrNwM/ZZkyV7h0= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b h1:IZBnVPVNG9PLKO975XGRN+YBMgMBxD/5lwv2dsttLFg= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= +github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b h1:87KrKSFG9gptutDPj9b/c0YsILu01EIodkuppfppjaE= +github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b h1:9ybKrUkZBUoAPohf4nvzklCZkM1KGQ1eY5zq25VwRLY= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b h1:l5pjwnk9HIjI2a5j4H0Q7pi/AzFuZDrQTY+rT3PxXzE= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= +github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b h1:P9L6XTDGsQ+bUrca+oAUQHC+iHzob883Yc8O0NRd3YQ= +github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= +github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b h1:zaZ4MqNOvriaUvksEH4tH46LcCeT3weiuj/wHnQycMI= +github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b h1:zucA1sAW/XD/NzhXtyrPuwDYBvVR0tI0jVF5fPOj51o= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b h1:c4N8q7GzrExCcFAn/xtd074k5FzabKh3/XPIEDMNILk= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b h1:vrOyDF4OeTcnyCRwpdAT+cdo1G3aEhljLZbKmQn6Dwg= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e h1:ZYRC1MHn/ghsqtjIpYGTxLQrh5n5eUmC0/YWnJiTRhk= github.com/iotaledger/iota.go/v4 v4.0.0-20231102113728-20b8d01e826e/go.mod h1:jqbLYq4a/FwuiPBqFfkAwwxU8vs3+kReRq2/tyX5qRA= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= From 60a65e9bdaa382934acf57f72010d0f9568f1f35 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 01:10:56 +0100 Subject: [PATCH 230/356] Fix: fixed some pending merge errors --- components/inx/server_blocks.go | 2 +- components/inx/server_commitments.go | 6 +- go.mod | 28 +++---- go.sum | 82 +++++++-------------- pkg/protocol/commitment_verifier.go | 2 +- pkg/protocol/engines.go | 2 +- pkg/protocol/protocol_attestations.go | 8 +- pkg/protocol/protocol_warp_sync.go | 4 +- pkg/tests/accounts_test.go | 2 - pkg/tests/booker_test.go | 4 - pkg/tests/loss_of_acceptance_test.go | 5 +- pkg/tests/protocol_engine_switching_test.go | 11 --- pkg/tests/protocol_startup_test.go | 1 - tools/gendoc/go.mod | 28 +++---- tools/gendoc/go.sum | 53 ++++++------- tools/genesis-snapshot/go.mod | 24 +++--- tools/genesis-snapshot/go.sum | 45 +++++------ 17 files changed, 136 insertions(+), 171 deletions(-) diff --git a/components/inx/server_blocks.go b/components/inx/server_blocks.go index f8d533eac..4cb6f0107 100644 --- a/components/inx/server_blocks.go +++ b/components/inx/server_blocks.go @@ -125,7 +125,7 @@ func (s *Server) ListenToConfirmedBlocks(_ *inx.NoParams, srv inx.INX_ListenToCo } func (s *Server) ReadAcceptedBlocks(slot *inx.SlotIndex, srv inx.INX_ReadAcceptedBlocksServer) error { - blocksStore, err := deps.Protocol.MainEngineInstance().Storage.Blocks(slot.Unwrap()) + blocksStore, err := deps.Protocol.Engines.Main.Get().Storage.Blocks(slot.Unwrap()) if err != nil { return status.Errorf(codes.InvalidArgument, "failed to get blocks: %s", err.Error()) } diff --git a/components/inx/server_commitments.go b/components/inx/server_commitments.go index b95866524..12e1644e2 100644 --- a/components/inx/server_commitments.go +++ b/components/inx/server_commitments.go @@ -25,7 +25,7 @@ func inxCommitment(commitment *model.Commitment) *inx.Commitment { func (s *Server) ListenToCommitments(req *inx.SlotRangeRequest, srv inx.INX_ListenToCommitmentsServer) error { createCommitmentPayloadForSlotAndSend := func(slot iotago.SlotIndex) error { - commitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(slot) + commitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(slot) if err != nil { if ierrors.Is(err, kvstore.ErrKeyNotFound) { return status.Errorf(codes.NotFound, "commitment slot %d not found", slot) @@ -60,7 +60,7 @@ func (s *Server) ListenToCommitments(req *inx.SlotRangeRequest, srv inx.INX_List return 0, nil } - latestCommitment := deps.Protocol.MainEngineInstance().SyncManager.LatestCommitment() + latestCommitment := deps.Protocol.Engines.Main.Get().SyncManager.LatestCommitment() if startSlot > latestCommitment.Slot() { // no need to send previous commitments @@ -68,7 +68,7 @@ func (s *Server) ListenToCommitments(req *inx.SlotRangeRequest, srv inx.INX_List } // Stream all available commitments first - prunedEpoch, hasPruned := deps.Protocol.MainEngineInstance().SyncManager.LastPrunedEpoch() + prunedEpoch, hasPruned := deps.Protocol.Engines.Main.Get().SyncManager.LastPrunedEpoch() if hasPruned && startSlot <= deps.Protocol.CommittedAPI().TimeProvider().EpochEnd(prunedEpoch) { return 0, status.Errorf(codes.InvalidArgument, "given startSlot %d is older than the current pruningSlot %d", startSlot, deps.Protocol.CommittedAPI().TimeProvider().EpochEnd(prunedEpoch)) } diff --git a/go.mod b/go.mod index d8f114e86..054c5bfa5 100644 --- a/go.mod +++ b/go.mod @@ -11,21 +11,22 @@ require ( github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 github.com/iotaledger/hive.go/ads v0.0.0-20231108070813-497ebfef8258 - github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b - github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b - github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b - github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b - github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b - github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b - github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b - github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b - github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b - github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 - github.com/iotaledger/iota.go/v4 v4.0.0-20231108103955-bf75d703d8aa + github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a github.com/labstack/echo/v4 v4.11.2 github.com/labstack/gommon v0.4.0 github.com/libp2p/go-libp2p v0.32.0 @@ -89,7 +90,6 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b // indirect github.com/ipfs/boxo v0.13.1 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect diff --git a/go.sum b/go.sum index 247f3af8c..e03bb6284 100644 --- a/go.sum +++ b/go.sum @@ -277,66 +277,40 @@ github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PT github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= github.com/iotaledger/hive.go/ads v0.0.0-20231108070813-497ebfef8258 h1:wPNHVm76dOw/P5KFHrlnMxZDQqrgqUVLrNLhcYbLLko= github.com/iotaledger/hive.go/ads v0.0.0-20231108070813-497ebfef8258/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231108070813-497ebfef8258 h1:akc8HhwdRq8DiRAQQXv/UQm0qbA9ZunT/mVmFX7fYZw= -github.com/iotaledger/hive.go/app v0.0.0-20231108070813-497ebfef8258/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= -github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b h1:NMyLeKTws/cCnLRWeqRQfOlN0DnKTi/MOu15wNJKZCA= -github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b h1:TFmdanDRuGQsuiQ92+kCSrV9G8hFF281odflmZ+Cz+g= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108145121-e1914a65274b/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108162616-bab25251edc4 h1:v9fYr6bAPzunA1FQwYa0SthpUCc4+b5oFivpLg3quQk= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108162616-bab25251edc4/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b h1:W0M/VoJeqxD331urc4NOHlX5Sij/ZdrNwM/ZZkyV7h0= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108145121-e1914a65274b/go.mod h1:Mc+ACqBGPxrPMIPUBOm6/HL0J6m0iVMwjtIEKW3uow8= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108162616-bab25251edc4 h1:AaMdcUpeAragQXoiw/JUeqOpoZHF6AwO5SchkDz5/1E= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108162616-bab25251edc4/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b h1:IZBnVPVNG9PLKO975XGRN+YBMgMBxD/5lwv2dsttLFg= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108145121-e1914a65274b/go.mod h1:h3o6okvMSEK3KOX6pOp3yq1h9ohTkTfo6X8MzEadeb0= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108162616-bab25251edc4 h1:FfzAlmgc+ugZlcE/JWO2TtL/uEFT/V7+h3lz2WAzSWI= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108162616-bab25251edc4/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231108070813-497ebfef8258 h1:WASEdf1LmtiUH13xDLDKgDrCjTXbhRSzMaYK7sg5xYY= -github.com/iotaledger/hive.go/ds v0.0.0-20231108070813-497ebfef8258/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b h1:87KrKSFG9gptutDPj9b/c0YsILu01EIodkuppfppjaE= -github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b h1:9ybKrUkZBUoAPohf4nvzklCZkM1KGQ1eY5zq25VwRLY= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108145121-e1914a65274b/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108162616-bab25251edc4 h1:gcDpRANXwAUhMG7mV9+HZ1v+xOAa1JX9iTC1Li6VFI0= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108162616-bab25251edc4/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108070813-497ebfef8258 h1:CmNAIm53EybssTv4zqihNwUbcxm9LQaCK53xPXTsJAk= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108070813-497ebfef8258/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b h1:l5pjwnk9HIjI2a5j4H0Q7pi/AzFuZDrQTY+rT3PxXzE= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b h1:P9L6XTDGsQ+bUrca+oAUQHC+iHzob883Yc8O0NRd3YQ= -github.com/iotaledger/hive.go/lo v0.0.0-20231108145121-e1914a65274b/go.mod h1:s4kzx9QY1MVWHJralj+3q5kI0eARtrJhphYD/iBbPfo= -github.com/iotaledger/hive.go/lo v0.0.0-20231108162616-bab25251edc4 h1:coSKLUOZkhYmdB5ifiYGnYhVnt0oJfLgTWz79kM2hys= -github.com/iotaledger/hive.go/lo v0.0.0-20231108162616-bab25251edc4/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231108070813-497ebfef8258 h1:FMsVixGSddscSU42/jZGn3T/FC3uK9AZ+hyD8NmaIRs= -github.com/iotaledger/hive.go/log v0.0.0-20231108070813-497ebfef8258/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b h1:zaZ4MqNOvriaUvksEH4tH46LcCeT3weiuj/wHnQycMI= -github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231108070813-497ebfef8258 h1:R95wmni0W5VTYoxFq9nK27Tu68T10J5eZSVtxNqedA4= -github.com/iotaledger/hive.go/logger v0.0.0-20231108070813-497ebfef8258/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b h1:o/FIpPxgmB/S69FlbbDpkJiUNt7VUNq+TITTsVwCIfc= -github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b h1:zucA1sAW/XD/NzhXtyrPuwDYBvVR0tI0jVF5fPOj51o= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108145121-e1914a65274b/go.mod h1:jRw8yFipiPaqmTPHh7hTcxAP9u6pjRGpByS3REJKkbY= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108162616-bab25251edc4 h1:m5BtU3Qjls+bW3D+3wOwJPqM2AXehbbp3Pc+nkCBvoc= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108162616-bab25251edc4/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b h1:c4N8q7GzrExCcFAn/xtd074k5FzabKh3/XPIEDMNILk= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108145121-e1914a65274b/go.mod h1:SdK26z8/VhWtxaqCuQrufm80SELgowQPmu9T/8eUQ8g= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108162616-bab25251edc4 h1:KsLHCoGHUA3Gjs8Qh+4cbAJbsO2Bfgm/Hqwx3gJXFfc= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108162616-bab25251edc4/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b h1:vrOyDF4OeTcnyCRwpdAT+cdo1G3aEhljLZbKmQn6Dwg= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108145121-e1914a65274b/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108162616-bab25251edc4 h1:xl2Og80WiBt90QjKaZxOflXHPcuikV0HVFy/wSB0l6E= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108162616-bab25251edc4/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75 h1:21Qck5fHIm90h5RViIly+hGT9EeeY77lCF4gaZWIQs8= +github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 h1:9NDx5QwrXREAif/Rh7LP4Y3M7VeMNuNvBA5ktkF0/Sg= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 h1:jFAJKrcjmcMIcP48ocE0E78tPgTu7hRCLqMNCB/jjUM= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 h1:xaVSiOgWqqhCl39VoNr18J/lG209RKjyjybk+WNzE8A= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 h1:ZsC4xykx0AaonYuxR5osDGcU+prgPwNWe2uyCWB4OeQ= +github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 h1:xhJRXhfUrHL6LvsVfGx2EttzMnM3k8qhPcQVm5oWfMg= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 h1:asgLT0v/GRufd/vKzH8hOc/m3ivYma0GXAwo/lAjg5k= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 h1:OSN3/MxJ0K8D6Za8cjUzcQkLLNsmXChCTRJ0+4VKS1E= +github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 h1:DF9Ygi4OMznXZRQ5RLFKWHYf1AMPVdZ8eFIu3HGZMEI= +github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75 h1:yraXuffKrEtMKmKhX/k7A6pzq6T/7R66oYuhfnrIYg0= +github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 h1:uI/oEk4wTEdSnEsUj8WrS4bOWeUHIVN0680IEMF5IlI= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 h1:Ic4ElAyJhB5knobdMqIsx+E4PgMS16Q2wSlX6C8yeCg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 h1:iKL1ev0LBHO1hxIRTfgdu4a+aRTMEQ4oyyPLWSI6Skk= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 h1:FdM1lxUKgENO3oOlF5blVqmjER44mLIHGpavyUOY5JI= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82/go.mod h1:HVxkGPraMDTRudfG9AFN7Ga9gijp6skXB9TKNBc4KgI= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 h1:KkC0SaWrjSMg897r2DDosJYALFfLadFST3Fvoaxg7hw= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998/go.mod h1:c+lBG3vgt2rgXHeOncK8hMllMwihTAtVbu790NslW2w= github.com/iotaledger/iota.go/v4 v4.0.0-20231108103955-bf75d703d8aa h1:A2nadmSbmn62f6wtrqvv/TCCF2sDiiwyDnl6brbRo1E= github.com/iotaledger/iota.go/v4 v4.0.0-20231108103955-bf75d703d8aa/go.mod h1:8iDORW4/e4NztyAGqjW07uSMjbhs7snbxw+81IWOczY= -github.com/iotaledger/iota.go/v4 v4.0.0-20231108163058-11a75294e3ce h1:6CKxw74zE4aKHs3wjbmkLdSUAJgJ5TjMl2111Hl91Zc= -github.com/iotaledger/iota.go/v4 v4.0.0-20231108163058-11a75294e3ce/go.mod h1:Bg7BOs2wO5gw1KQwD0OedG3C2gG6Xls2VGicK9mpLLg= +github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a h1:n54B9QtipmN/UXc6uyESQrPGv5uVG/lOIOxKSaLfWpI= +github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a/go.mod h1:Bg7BOs2wO5gw1KQwD0OedG3C2gG6Xls2VGicK9mpLLg= github.com/ipfs/boxo v0.13.1 h1:nQ5oQzcMZR3oL41REJDcTbrvDvuZh3J9ckc9+ILeRQI= github.com/ipfs/boxo v0.13.1/go.mod h1:btrtHy0lmO1ODMECbbEY1pxNtrLilvKSYLoGQt1yYCk= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= diff --git a/pkg/protocol/commitment_verifier.go b/pkg/protocol/commitment_verifier.go index 3d31e3cf6..eb1015f15 100644 --- a/pkg/protocol/commitment_verifier.go +++ b/pkg/protocol/commitment_verifier.go @@ -104,7 +104,7 @@ func (c *CommitmentVerifier) verifyAttestations(attestations []*iotago.Attestati return nil, 0, ierrors.Errorf("issuerID %s contained in multiple attestations", att.Header.IssuerID) } - // TODO: this might differ if we have a Accounts with changing weights depending on the SlotIndex/epoch + // TODO: this might differ if we have a Accounts with changing weights depending on the Slot/epoch attestationBlockID, err := att.BlockID() if err != nil { return nil, 0, ierrors.Wrap(err, "error calculating blockID from attestation") diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index bd775dc4c..659809954 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -111,7 +111,7 @@ func (e *Engines) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error) { return nil, ierrors.Wrap(err, "failed to rollback commitments") } // create temporary components and rollback their permanent state, which will be reflected on disk. - evictionState := eviction.NewState(newStorage.LatestNonEmptySlot(), newStorage.RootBlocks) + evictionState := eviction.NewState(newStorage.LatestNonEmptySlot(), newStorage.RootBlocks, newStorage.GenesisRootBlockID) evictionState.Initialize(latestCommitment.Slot()) blockCache := blocks.New(evictionState, newStorage.Settings().APIProvider()) diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 0b39cd399..134af2832 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -183,9 +183,13 @@ func (a *AttestationsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, return } - roots, err := rootsStorage.Load(commitmentID) + roots, exists, err := rootsStorage.Load(commitmentID) if err != nil { - a.LogError("failed to load roots for requested attestations", "commitment", commitment.LogName(), "fromPeer", from) + a.LogError("failed to load roots for requested attestations", "commitment", commitment.LogName(), "err", err, "fromPeer", from) + + return + } else if !exists { + a.LogTrace("roots not found for requested attestations", "commitment", commitment.LogName(), "fromPeer", from) return } diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 9b3f47477..6970fa8f6 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -210,7 +210,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } } - for _, blockIDs := range blockIDsBySlotCommitment { + for slotCommitmentID, blockIDs := range blockIDsBySlotCommitment { for _, blockID := range blockIDs { w.LogError("requesting block", "blockID", blockID) @@ -224,7 +224,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // We need to make sure that we add all blocks as root blocks because we don't know which blocks are root blocks without // blocks from future slots. We're committing the current slot which then leads to the eviction of the blocks from the // block cache and thus if not root blocks no block in the next slot can become solid. - targetEngine.EvictionState.AddRootBlock(block.ID(), block.SlotCommitmentID()) + targetEngine.EvictionState.AddRootBlock(block.ID(), slotCommitmentID) block.Booked().OnUpdate(blockBookedFunc) } diff --git a/pkg/tests/accounts_test.go b/pkg/tests/accounts_test.go index 478527930..a206fbc3d 100644 --- a/pkg/tests/accounts_test.go +++ b/pkg/tests/accounts_test.go @@ -453,8 +453,6 @@ func Test_ImplicitAccounts(t *testing.T) { }, ts.Nodes()...) ts.Wait(ts.Nodes()...) - // }() - //} } /* diff --git a/pkg/tests/booker_test.go b/pkg/tests/booker_test.go index 255ac38f3..c7bd75fbf 100644 --- a/pkg/tests/booker_test.go +++ b/pkg/tests/booker_test.go @@ -4,7 +4,6 @@ import ( "testing" "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/core/acceptance" "github.com/iotaledger/iota-core/pkg/protocol" @@ -252,9 +251,6 @@ func Test_SpendRejectedCommittedRace(t *testing.T) { ts.Run(true, map[string][]options.Option[protocol.Protocol]{}) - node1.Protocol.SetLogLevel(log.LevelTrace) - //node2.Protocol.SetLogLevel(log.LevelTrace) - ts.AssertSybilProtectionCommittee(0, []iotago.AccountID{ node1.Validator.AccountID, node2.Validator.AccountID, diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index 32878aab9..124e1ac9c 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -7,6 +7,7 @@ import ( "github.com/stretchr/testify/require" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/protocol" "github.com/iotaledger/iota-core/pkg/testsuite" "github.com/iotaledger/iota-core/pkg/testsuite/mock" @@ -36,9 +37,10 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { node0 := ts.AddValidatorNode("node0") ts.AddGenesisWallet("default", node0) ts.AddValidatorNode("node1") - ts.AddNode("node2") + node2 := ts.AddNode("node2") ts.Run(true, nil) + node2.Protocol.SetLogLevel(log.LevelTrace) // Create snapshot to use later. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) @@ -81,6 +83,7 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { protocol.WithSnapshotPath(snapshotPath), protocol.WithBaseDirectory(ts.Directory.PathWithCreate(node3.Name)), ) + node3.Protocol.SetLogLevel(log.LevelTrace) ts.Wait() } diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index 98a1f29c8..54a98d27b 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -9,7 +9,6 @@ import ( "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/core/account" @@ -109,16 +108,6 @@ func TestProtocol_EngineSwitching(t *testing.T) { ts.Run(false, nodeOptions) - node0.Protocol.SetLogLevel(log.LevelTrace) - node1.Protocol.SetLogLevel(log.LevelTrace) - node2.Protocol.SetLogLevel(log.LevelTrace) - node3.Protocol.SetLogLevel(log.LevelTrace) - node4.Protocol.SetLogLevel(log.LevelTrace) - node5.Protocol.SetLogLevel(log.LevelTrace) - node6.Protocol.SetLogLevel(log.LevelTrace) - node7.Protocol.SetLogLevel(log.LevelTrace) - node8.Protocol.SetLogLevel(log.LevelTrace) - expectedCommittee := []iotago.AccountID{ node0.Validator.AccountID, node1.Validator.AccountID, diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index 4d2c37d1d..4dda4c3c4 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -122,7 +122,6 @@ func Test_BookInCommittedSlot(t *testing.T) { func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { ts := testsuite.NewTestSuite(t, - //testsuite.WithLogHandler(log.NewTextHandler(logFile)), testsuite.WithProtocolParametersOptions( iotago.WithTimeProviderOptions( 0, diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 14599732a..cf0cad5ff 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b + github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -57,21 +57,21 @@ require ( github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect github.com/iotaledger/hive.go/ads v0.0.0-20231108070813-497ebfef8258 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231108162616-bab25251edc4 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108162616-bab25251edc4 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231108162616-bab25251edc4 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231108162616-bab25251edc4 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231108162616-bab25251edc4 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231108162616-bab25251edc4 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108162616-bab25251edc4 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231108162616-bab25251edc4 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 // indirect - github.com/iotaledger/iota.go/v4 v4.0.0-20231108163058-11a75294e3ce // indirect + github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a // indirect github.com/ipfs/boxo v0.13.1 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index b194bb333..b53267201 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -279,40 +279,41 @@ github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PT github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= github.com/iotaledger/hive.go/ads v0.0.0-20231108070813-497ebfef8258 h1:wPNHVm76dOw/P5KFHrlnMxZDQqrgqUVLrNLhcYbLLko= github.com/iotaledger/hive.go/ads v0.0.0-20231108070813-497ebfef8258/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b h1:NMyLeKTws/cCnLRWeqRQfOlN0DnKTi/MOu15wNJKZCA= -github.com/iotaledger/hive.go/app v0.0.0-20231108145121-e1914a65274b/go.mod h1:8ZbIKR84oQd/3iQ5eeT7xpudO9/ytzXP7veIYnk7Orc= +github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75 h1:21Qck5fHIm90h5RViIly+hGT9EeeY77lCF4gaZWIQs8= +github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108162616-bab25251edc4 h1:v9fYr6bAPzunA1FQwYa0SthpUCc4+b5oFivpLg3quQk= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108162616-bab25251edc4/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108162616-bab25251edc4 h1:AaMdcUpeAragQXoiw/JUeqOpoZHF6AwO5SchkDz5/1E= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108162616-bab25251edc4/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108162616-bab25251edc4 h1:FfzAlmgc+ugZlcE/JWO2TtL/uEFT/V7+h3lz2WAzSWI= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108162616-bab25251edc4/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b h1:87KrKSFG9gptutDPj9b/c0YsILu01EIodkuppfppjaE= -github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108162616-bab25251edc4 h1:gcDpRANXwAUhMG7mV9+HZ1v+xOAa1JX9iTC1Li6VFI0= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108162616-bab25251edc4/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b h1:l5pjwnk9HIjI2a5j4H0Q7pi/AzFuZDrQTY+rT3PxXzE= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231108162616-bab25251edc4 h1:coSKLUOZkhYmdB5ifiYGnYhVnt0oJfLgTWz79kM2hys= -github.com/iotaledger/hive.go/lo v0.0.0-20231108162616-bab25251edc4/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b h1:zaZ4MqNOvriaUvksEH4tH46LcCeT3weiuj/wHnQycMI= -github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b h1:o/FIpPxgmB/S69FlbbDpkJiUNt7VUNq+TITTsVwCIfc= -github.com/iotaledger/hive.go/logger v0.0.0-20231108145121-e1914a65274b/go.mod h1:aBfAfIB2GO/IblhYt5ipCbyeL9bXSNeAwtYVA3hZaHg= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108162616-bab25251edc4 h1:m5BtU3Qjls+bW3D+3wOwJPqM2AXehbbp3Pc+nkCBvoc= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108162616-bab25251edc4/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108162616-bab25251edc4 h1:KsLHCoGHUA3Gjs8Qh+4cbAJbsO2Bfgm/Hqwx3gJXFfc= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108162616-bab25251edc4/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108162616-bab25251edc4 h1:xl2Og80WiBt90QjKaZxOflXHPcuikV0HVFy/wSB0l6E= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108162616-bab25251edc4/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 h1:9NDx5QwrXREAif/Rh7LP4Y3M7VeMNuNvBA5ktkF0/Sg= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 h1:jFAJKrcjmcMIcP48ocE0E78tPgTu7hRCLqMNCB/jjUM= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 h1:xaVSiOgWqqhCl39VoNr18J/lG209RKjyjybk+WNzE8A= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 h1:ZsC4xykx0AaonYuxR5osDGcU+prgPwNWe2uyCWB4OeQ= +github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 h1:xhJRXhfUrHL6LvsVfGx2EttzMnM3k8qhPcQVm5oWfMg= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 h1:asgLT0v/GRufd/vKzH8hOc/m3ivYma0GXAwo/lAjg5k= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 h1:OSN3/MxJ0K8D6Za8cjUzcQkLLNsmXChCTRJ0+4VKS1E= +github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 h1:DF9Ygi4OMznXZRQ5RLFKWHYf1AMPVdZ8eFIu3HGZMEI= +github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75 h1:yraXuffKrEtMKmKhX/k7A6pzq6T/7R66oYuhfnrIYg0= +github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 h1:uI/oEk4wTEdSnEsUj8WrS4bOWeUHIVN0680IEMF5IlI= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 h1:Ic4ElAyJhB5knobdMqIsx+E4PgMS16Q2wSlX6C8yeCg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 h1:iKL1ev0LBHO1hxIRTfgdu4a+aRTMEQ4oyyPLWSI6Skk= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 h1:FdM1lxUKgENO3oOlF5blVqmjER44mLIHGpavyUOY5JI= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82/go.mod h1:HVxkGPraMDTRudfG9AFN7Ga9gijp6skXB9TKNBc4KgI= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 h1:KkC0SaWrjSMg897r2DDosJYALFfLadFST3Fvoaxg7hw= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998/go.mod h1:c+lBG3vgt2rgXHeOncK8hMllMwihTAtVbu790NslW2w= github.com/iotaledger/iota.go/v4 v4.0.0-20231108163058-11a75294e3ce h1:6CKxw74zE4aKHs3wjbmkLdSUAJgJ5TjMl2111Hl91Zc= github.com/iotaledger/iota.go/v4 v4.0.0-20231108163058-11a75294e3ce/go.mod h1:Bg7BOs2wO5gw1KQwD0OedG3C2gG6Xls2VGicK9mpLLg= +github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a/go.mod h1:Bg7BOs2wO5gw1KQwD0OedG3C2gG6Xls2VGicK9mpLLg= github.com/ipfs/boxo v0.13.1 h1:nQ5oQzcMZR3oL41REJDcTbrvDvuZh3J9ckc9+ILeRQI= github.com/ipfs/boxo v0.13.1/go.mod h1:btrtHy0lmO1ODMECbbEY1pxNtrLilvKSYLoGQt1yYCk= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 8eab7f919..e605bbb1c 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,12 +5,12 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231108162616-bab25251edc4 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231108162616-bab25251edc4 - github.com/iotaledger/hive.go/lo v0.0.0-20231108162616-bab25251edc4 - github.com/iotaledger/hive.go/runtime v0.0.0-20231108162616-bab25251edc4 + github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 - github.com/iotaledger/iota.go/v4 v4.0.0-20231108163058-11a75294e3ce + github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a github.com/mr-tron/base58 v1.2.0 github.com/spf13/pflag v1.0.5 golang.org/x/crypto v0.14.0 @@ -27,13 +27,13 @@ require ( github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect github.com/iotaledger/hive.go/ads v0.0.0-20231108070813-497ebfef8258 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231108162616-bab25251edc4 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108162616-bab25251edc4 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108162616-bab25251edc4 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231108162616-bab25251edc4 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 57c011d78..beafab199 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -30,30 +30,31 @@ github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PT github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= github.com/iotaledger/hive.go/ads v0.0.0-20231108070813-497ebfef8258 h1:wPNHVm76dOw/P5KFHrlnMxZDQqrgqUVLrNLhcYbLLko= github.com/iotaledger/hive.go/ads v0.0.0-20231108070813-497ebfef8258/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108162616-bab25251edc4 h1:v9fYr6bAPzunA1FQwYa0SthpUCc4+b5oFivpLg3quQk= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108162616-bab25251edc4/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108162616-bab25251edc4 h1:AaMdcUpeAragQXoiw/JUeqOpoZHF6AwO5SchkDz5/1E= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108162616-bab25251edc4/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108162616-bab25251edc4 h1:FfzAlmgc+ugZlcE/JWO2TtL/uEFT/V7+h3lz2WAzSWI= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108162616-bab25251edc4/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b h1:87KrKSFG9gptutDPj9b/c0YsILu01EIodkuppfppjaE= -github.com/iotaledger/hive.go/ds v0.0.0-20231108145121-e1914a65274b/go.mod h1:3XkUSKfHaVxGbT0XAvjNlVYqPzhfLTGhDtdNA5UBPco= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108162616-bab25251edc4 h1:gcDpRANXwAUhMG7mV9+HZ1v+xOAa1JX9iTC1Li6VFI0= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108162616-bab25251edc4/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b h1:l5pjwnk9HIjI2a5j4H0Q7pi/AzFuZDrQTY+rT3PxXzE= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108145121-e1914a65274b/go.mod h1:O/U3jtiUDeqqM0MZQFu2UPqS9fUm0C5hNISxlmg/thE= -github.com/iotaledger/hive.go/lo v0.0.0-20231108162616-bab25251edc4 h1:coSKLUOZkhYmdB5ifiYGnYhVnt0oJfLgTWz79kM2hys= -github.com/iotaledger/hive.go/lo v0.0.0-20231108162616-bab25251edc4/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b h1:zaZ4MqNOvriaUvksEH4tH46LcCeT3weiuj/wHnQycMI= -github.com/iotaledger/hive.go/log v0.0.0-20231108145121-e1914a65274b/go.mod h1:JvokzmpmFZPDskMlUqqjgHtD8usVJU4nAY/TNMGge8M= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108162616-bab25251edc4 h1:m5BtU3Qjls+bW3D+3wOwJPqM2AXehbbp3Pc+nkCBvoc= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108162616-bab25251edc4/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108162616-bab25251edc4 h1:KsLHCoGHUA3Gjs8Qh+4cbAJbsO2Bfgm/Hqwx3gJXFfc= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108162616-bab25251edc4/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108162616-bab25251edc4 h1:xl2Og80WiBt90QjKaZxOflXHPcuikV0HVFy/wSB0l6E= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108162616-bab25251edc4/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 h1:9NDx5QwrXREAif/Rh7LP4Y3M7VeMNuNvBA5ktkF0/Sg= +github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 h1:jFAJKrcjmcMIcP48ocE0E78tPgTu7hRCLqMNCB/jjUM= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 h1:xaVSiOgWqqhCl39VoNr18J/lG209RKjyjybk+WNzE8A= +github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 h1:ZsC4xykx0AaonYuxR5osDGcU+prgPwNWe2uyCWB4OeQ= +github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 h1:xhJRXhfUrHL6LvsVfGx2EttzMnM3k8qhPcQVm5oWfMg= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 h1:asgLT0v/GRufd/vKzH8hOc/m3ivYma0GXAwo/lAjg5k= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 h1:OSN3/MxJ0K8D6Za8cjUzcQkLLNsmXChCTRJ0+4VKS1E= +github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 h1:DF9Ygi4OMznXZRQ5RLFKWHYf1AMPVdZ8eFIu3HGZMEI= +github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 h1:uI/oEk4wTEdSnEsUj8WrS4bOWeUHIVN0680IEMF5IlI= +github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 h1:Ic4ElAyJhB5knobdMqIsx+E4PgMS16Q2wSlX6C8yeCg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 h1:iKL1ev0LBHO1hxIRTfgdu4a+aRTMEQ4oyyPLWSI6Skk= +github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231108163058-11a75294e3ce h1:6CKxw74zE4aKHs3wjbmkLdSUAJgJ5TjMl2111Hl91Zc= github.com/iotaledger/iota.go/v4 v4.0.0-20231108163058-11a75294e3ce/go.mod h1:Bg7BOs2wO5gw1KQwD0OedG3C2gG6Xls2VGicK9mpLLg= +github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a/go.mod h1:Bg7BOs2wO5gw1KQwD0OedG3C2gG6Xls2VGicK9mpLLg= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= github.com/ipfs/go-cid v0.4.1/go.mod h1:uQHwDeX4c6CtyrFwdqyhpNcxVewur1M7l7fNU7LKwZk= github.com/klauspost/cpuid/v2 v2.2.5 h1:0E5MSMDEoAulmXNFquVs//DdoomxaoTY1kUhbc/qbZg= From 70582dc57e8903ff0b5f5d4c68e93c968f7d1cc6 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 01:49:13 +0100 Subject: [PATCH 231/356] Refactor: fixed refactor bug --- pkg/protocol/protocol_warp_sync.go | 4 +++- pkg/tests/loss_of_acceptance_test.go | 5 +---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 6970fa8f6..3e9755dad 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -107,10 +107,13 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return requestedBlocksReceived } + totalBlocks := uint32(0) acceptedBlocks := ads.NewSet[iotago.Identifier](mapdb.NewMapDB(), iotago.Identifier.Bytes, iotago.IdentifierFromBytes, iotago.BlockID.Bytes, iotago.BlockIDFromBytes) for _, blockIDs := range blockIDsBySlotCommitment { for _, blockID := range blockIDs { _ = acceptedBlocks.Add(blockID) // a mapdb can newer return an error + + totalBlocks++ } } @@ -151,7 +154,6 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // 1. Mark all transactions as accepted // 2. Mark all blocks as accepted // 3. Force commitment of the slot - totalBlocks := uint32(len(blockIDsBySlotCommitment)) var bookedBlocks atomic.Uint32 var notarizedBlocks atomic.Uint32 diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index 124e1ac9c..32878aab9 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -7,7 +7,6 @@ import ( "github.com/stretchr/testify/require" - "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/protocol" "github.com/iotaledger/iota-core/pkg/testsuite" "github.com/iotaledger/iota-core/pkg/testsuite/mock" @@ -37,10 +36,9 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { node0 := ts.AddValidatorNode("node0") ts.AddGenesisWallet("default", node0) ts.AddValidatorNode("node1") - node2 := ts.AddNode("node2") + ts.AddNode("node2") ts.Run(true, nil) - node2.Protocol.SetLogLevel(log.LevelTrace) // Create snapshot to use later. snapshotPath := ts.Directory.Path(fmt.Sprintf("%d_snapshot", time.Now().Unix())) @@ -83,7 +81,6 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { protocol.WithSnapshotPath(snapshotPath), protocol.WithBaseDirectory(ts.Directory.PathWithCreate(node3.Name)), ) - node3.Protocol.SetLogLevel(log.LevelTrace) ts.Wait() } From 9e3290ecfca529690b8749b7afd38cbc0e1d6f8b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 01:52:46 +0100 Subject: [PATCH 232/356] Refactor: go mod tidy --- go.sum | 2 -- 1 file changed, 2 deletions(-) diff --git a/go.sum b/go.sum index e03bb6284..b05e3ee4a 100644 --- a/go.sum +++ b/go.sum @@ -307,8 +307,6 @@ github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 h1:FdM1l github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82/go.mod h1:HVxkGPraMDTRudfG9AFN7Ga9gijp6skXB9TKNBc4KgI= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 h1:KkC0SaWrjSMg897r2DDosJYALFfLadFST3Fvoaxg7hw= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998/go.mod h1:c+lBG3vgt2rgXHeOncK8hMllMwihTAtVbu790NslW2w= -github.com/iotaledger/iota.go/v4 v4.0.0-20231108103955-bf75d703d8aa h1:A2nadmSbmn62f6wtrqvv/TCCF2sDiiwyDnl6brbRo1E= -github.com/iotaledger/iota.go/v4 v4.0.0-20231108103955-bf75d703d8aa/go.mod h1:8iDORW4/e4NztyAGqjW07uSMjbhs7snbxw+81IWOczY= github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a h1:n54B9QtipmN/UXc6uyESQrPGv5uVG/lOIOxKSaLfWpI= github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a/go.mod h1:Bg7BOs2wO5gw1KQwD0OedG3C2gG6Xls2VGicK9mpLLg= github.com/ipfs/boxo v0.13.1 h1:nQ5oQzcMZR3oL41REJDcTbrvDvuZh3J9ckc9+ILeRQI= From c5dfffe6dbad156bf28249f67c7721f3d290ed78 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 02:37:47 +0100 Subject: [PATCH 233/356] Feat: update iota.go --- go.mod | 6 +++--- go.sum | 12 ++++++------ tools/gendoc/go.mod | 6 +++--- tools/gendoc/go.sum | 3 +++ tools/genesis-snapshot/go.mod | 4 ++-- tools/genesis-snapshot/go.sum | 2 ++ 6 files changed, 19 insertions(+), 14 deletions(-) diff --git a/go.mod b/go.mod index 054c5bfa5..d6ed45f39 100644 --- a/go.mod +++ b/go.mod @@ -42,7 +42,7 @@ require ( github.com/zyedidia/generic v1.2.1 go.uber.org/atomic v1.11.0 go.uber.org/dig v1.17.1 - golang.org/x/crypto v0.14.0 + golang.org/x/crypto v0.15.0 golang.org/x/exp v0.0.0-20231006140011-7918f672742d google.golang.org/grpc v1.59.0 google.golang.org/protobuf v1.31.0 @@ -173,8 +173,8 @@ require ( golang.org/x/mod v0.13.0 // indirect golang.org/x/net v0.17.0 // indirect golang.org/x/sync v0.4.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/sys v0.14.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.14.0 // indirect gonum.org/v1/gonum v0.14.0 // indirect diff --git a/go.sum b/go.sum index b05e3ee4a..183aa090d 100644 --- a/go.sum +++ b/go.sum @@ -715,8 +715,8 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200602180216-279210d13fed/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= -golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= -golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0 h1:frVn1TEaCEaZcn3Tmd7Y2b5KKPaZ+I32Q2OA3kYp5TA= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= @@ -820,8 +820,8 @@ golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= -golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -830,8 +830,8 @@ golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= -golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index cf0cad5ff..57c8561ed 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -164,14 +164,14 @@ require ( go.uber.org/mock v0.3.0 // indirect go.uber.org/multierr v1.11.0 // indirect go.uber.org/zap v1.26.0 // indirect - golang.org/x/crypto v0.14.0 // indirect + golang.org/x/crypto v0.15.0 // indirect golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect golang.org/x/image v0.13.0 // indirect golang.org/x/mod v0.13.0 // indirect golang.org/x/net v0.17.0 // indirect golang.org/x/sync v0.4.0 // indirect - golang.org/x/sys v0.13.0 // indirect - golang.org/x/text v0.13.0 // indirect + golang.org/x/sys v0.14.0 // indirect + golang.org/x/text v0.14.0 // indirect golang.org/x/time v0.3.0 // indirect golang.org/x/tools v0.14.0 // indirect gonum.org/v1/gonum v0.14.0 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index b53267201..613533edb 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -722,6 +722,7 @@ golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPh golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4= golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= @@ -827,6 +828,7 @@ golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -837,6 +839,7 @@ golang.org/x/text v0.3.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index e605bbb1c..4a4ae25f6 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -13,7 +13,7 @@ require ( github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a github.com/mr-tron/base58 v1.2.0 github.com/spf13/pflag v1.0.5 - golang.org/x/crypto v0.14.0 + golang.org/x/crypto v0.15.0 ) require ( @@ -61,7 +61,7 @@ require ( go.uber.org/atomic v1.11.0 // indirect golang.org/x/exp v0.0.0-20231006140011-7918f672742d // indirect golang.org/x/sync v0.4.0 // indirect - golang.org/x/sys v0.13.0 // indirect + golang.org/x/sys v0.14.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index beafab199..0c1897aed 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -125,6 +125,7 @@ go.uber.org/atomic v1.11.0 h1:ZvwS0R+56ePWxUNi+Atn9dWONBPp/AUETXlHW0DxSjE= go.uber.org/atomic v1.11.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/exp v0.0.0-20231006140011-7918f672742d h1:jtJma62tbqLibJ5sFQz8bKtEM8rJBtfilJ2qTU199MI= golang.org/x/exp v0.0.0-20231006140011-7918f672742d/go.mod h1:ldy0pHrwJyGW56pPQzzkH36rKxoZW1tw7ZJpeKx+hdo= golang.org/x/sync v0.4.0 h1:zxkM55ReGkDlKSM+Fu41A+zmbZuaPVbGMzvvdUPznYQ= @@ -132,6 +133,7 @@ golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8= From b2d78626a605a91906f0a6a6a06472f349273b02 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 03:01:52 +0100 Subject: [PATCH 234/356] Refactor: addressed linter remarks --- pkg/protocol/chain.go | 18 +++++++++--------- pkg/protocol/chain_manager.go | 2 +- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 9608677dc..d3e2a998e 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -71,13 +71,13 @@ func NewChain(protocol *Protocol) *Chain { c.initEngine() c.initWarpSync() - protocol.NetworkClock.OnUpdate(func(_, now time.Time) { + protocol.NetworkClock.OnUpdate(func(_ time.Time, now time.Time) { if engineInstance := c.Engine.Get(); engineInstance != nil { c.NetworkClockSlot.Set(engineInstance.LatestAPI().TimeProvider().SlotFromTime(now)) } }) - c.NetworkClockSlot.OnUpdate(func(_, slot iotago.SlotIndex) { + c.NetworkClockSlot.OnUpdate(func(_ iotago.SlotIndex, slot iotago.SlotIndex) { engineInstance := c.Engine.Get() if engineInstance == nil { return @@ -99,7 +99,7 @@ func NewChain(protocol *Protocol) *Chain { } }) - c.ParentChain.OnUpdate(func(prevParent, newParent *Chain) { + c.ParentChain.OnUpdate(func(prevParent *Chain, newParent *Chain) { if prevParent != nil { prevParent.ChildChains.Delete(c) } @@ -109,9 +109,9 @@ func NewChain(protocol *Protocol) *Chain { } }) - c.ForkingPoint.OnUpdateWithContext(func(_, forkingPoint *Commitment, forkingPointContext func(subscriptionFactory func() (unsubscribe func()))) { + c.ForkingPoint.OnUpdateWithContext(func(_ *Commitment, forkingPoint *Commitment, forkingPointContext func(subscriptionFactory func() (unsubscribe func()))) { forkingPointContext(func() func() { - return forkingPoint.Parent.OnUpdate(func(_, parent *Commitment) { + return forkingPoint.Parent.OnUpdate(func(_ *Commitment, parent *Commitment) { forkingPointContext(func() func() { return c.ParentChain.InheritFrom(parent.Chain) }) @@ -151,7 +151,7 @@ func (c *Chain) initClaimedWeight() { } func (c *Chain) initAttestedWeight() { - c.LatestAttestedCommitment.OnUpdateWithContext(func(_, latestAttestedCommitment *Commitment, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + c.LatestAttestedCommitment.OnUpdateWithContext(func(_ *Commitment, latestAttestedCommitment *Commitment, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { if latestAttestedCommitment != nil { setupInheritance := func() func() { return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) @@ -190,7 +190,7 @@ func (c *Chain) initWarpSync() { var unsubscribe func() - c.WarpSync.OnUpdate(func(_, warpSync bool) { + c.WarpSync.OnUpdate(func(_ bool, warpSync bool) { if !c.IsEvicted.Get() { warpSyncTogglePool.Submit(func() { if unsubscribe != nil { @@ -208,13 +208,13 @@ func (c *Chain) initWarpSync() { } func (c *Chain) initEngine() { - c.ParentChain.OnUpdateWithContext(func(_, parentChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + c.ParentChain.OnUpdateWithContext(func(_ *Chain, parentChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { unsubscribeOnUpdate(func() func() { if parentChain == nil { return c.Engine.InheritFrom(c.SpawnedEngine) } - return c.Engine.InheritFrom(reactive.NewDerivedVariable2(func(_, spawnedEngine, parentEngine *engine.Engine) *engine.Engine { + return c.Engine.InheritFrom(reactive.NewDerivedVariable2(func(_ *engine.Engine, spawnedEngine *engine.Engine, parentEngine *engine.Engine) *engine.Engine { if spawnedEngine != nil { return spawnedEngine } diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index fc841bdb1..22fbc741b 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -46,7 +46,7 @@ func newChainManager(protocol *Protocol) *ChainManager { protocol.Constructed.OnTrigger(func() { trackHeaviestChain := func(chainVariable reactive.Variable[*Chain], getWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { - return getWeightVariable(candidate).OnUpdate(func(_, newChainWeight uint64) { + return getWeightVariable(candidate).OnUpdate(func(_ uint64, newChainWeight uint64) { if heaviestChain := c.HeaviestVerifiedChain.Get(); heaviestChain != nil && newChainWeight < heaviestChain.VerifiedWeight.Get() { return } From 10b123a3252c3a09f9e64226e70a0edb822fe34a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 03:07:07 +0100 Subject: [PATCH 235/356] Refactor: addressed more linter remarks --- pkg/protocol/chain_manager.go | 14 +++++++------- pkg/protocol/commitment.go | 6 +++--- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 22fbc741b..fc4fee542 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -128,7 +128,7 @@ func (c *ChainManager) initMainChain() { //c.protocol.LogDebug("new chain created", "name", mainChain.LogName(), "forkingPoint", "") mainChain.VerifyState.Set(true) - mainChain.Engine.OnUpdate(func(_, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) + mainChain.Engine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) c.MainChain.Set(mainChain) c.Chains.Add(mainChain) @@ -143,7 +143,7 @@ func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent commitment.IsEvicted.Trigger() }) - commitment.SpawnedChain.OnUpdate(func(_, newChain *Chain) { + commitment.SpawnedChain.OnUpdate(func(_ *Chain, newChain *Chain) { if newChain != nil { c.Chains.Add(newChain) } @@ -163,13 +163,13 @@ func (c *ChainManager) initChainSwitching() { } }) - c.HeaviestAttestedChain.OnUpdate(func(_, heaviestAttestedChain *Chain) { + c.HeaviestAttestedChain.OnUpdate(func(_ *Chain, heaviestAttestedChain *Chain) { heaviestAttestedChain.VerifyAttestations.Set(false) heaviestAttestedChain.VerifyState.Set(true) }) - c.HeaviestVerifiedChain.OnUpdate(func(_, heaviestVerifiedChain *Chain) { - heaviestVerifiedChain.LatestVerifiedCommitment.OnUpdate(func(_, latestVerifiedCommitment *Commitment) { + c.HeaviestVerifiedChain.OnUpdate(func(_ *Chain, heaviestVerifiedChain *Chain) { + heaviestVerifiedChain.LatestVerifiedCommitment.OnUpdate(func(_ *Commitment, latestVerifiedCommitment *Commitment) { forkingPoint := heaviestVerifiedChain.ForkingPoint.Get() if forkingPoint == nil || latestVerifiedCommitment == nil { return @@ -224,7 +224,7 @@ func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, reque } func (c *ChainManager) publishEngineCommitments(chain *Chain) { - chain.SpawnedEngine.OnUpdateWithContext(func(_, engine *engine.Engine, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + chain.SpawnedEngine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { var latestPublishedSlot iotago.SlotIndex @@ -260,7 +260,7 @@ func (c *ChainManager) publishEngineCommitments(chain *Chain) { latestPublishedSlot = forkingPoint.Slot() - 1 } - return engine.LatestCommitment.OnUpdate(func(_, latestCommitment *model.Commitment) { + return engine.LatestCommitment.OnUpdate(func(_ *model.Commitment, latestCommitment *model.Commitment) { for latestPublishedSlot < latestCommitment.Slot() { commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedSlot + 1) if err != nil { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index fda1ccf65..c951f4e3e 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -124,15 +124,15 @@ func (c *Commitment) initBehavior(protocol *Protocol) (self *Commitment) { return spawnedChain }, c.IsRoot, parent.MainChild, c.SpawnedChain.Get())), - c.Chain.DeriveValueFrom(reactive.NewDerivedVariable2(func(_, parentChain, spawnedChain *Chain) *Chain { + c.Chain.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ *Chain, parentChain, spawnedChain *Chain) *Chain { return lo.Cond(spawnedChain != nil, spawnedChain, parentChain) }, parent.Chain, c.SpawnedChain)), - c.CumulativeAttestedWeight.DeriveValueFrom(reactive.NewDerivedVariable2(func(_, parentCumulativeAttestedWeight, attestedWeight uint64) uint64 { + c.CumulativeAttestedWeight.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ uint64, parentCumulativeAttestedWeight uint64, attestedWeight uint64) uint64 { return parentCumulativeAttestedWeight + attestedWeight }, parent.CumulativeAttestedWeight, c.AttestedWeight)), - c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_, parentAboveLatestVerifiedCommitment, parentIsVerified, isVerified bool) bool { + c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, parentAboveLatestVerifiedCommitment bool, parentIsVerified bool, isVerified bool) bool { return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)), From 6224ffa3aee1821e974049622e4f67b8d978fc46 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 03:15:20 +0100 Subject: [PATCH 236/356] Refactor: addressed more linter warnings --- pkg/protocol/chain_manager.go | 2 +- pkg/protocol/commitment.go | 8 ++++---- pkg/protocol/engines.go | 6 +++--- pkg/protocol/network_clock.go | 2 +- pkg/protocol/protocol.go | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index fc4fee542..8a0183cad 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -153,7 +153,7 @@ func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent } func (c *ChainManager) initChainSwitching() { - c.HeaviestChain.OnUpdate(func(prevHeaviestChain, heaviestChain *Chain) { + c.HeaviestChain.OnUpdate(func(prevHeaviestChain *Chain, heaviestChain *Chain) { if prevHeaviestChain != nil { prevHeaviestChain.VerifyAttestations.Set(false) } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index c951f4e3e..f9459d45f 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -124,7 +124,7 @@ func (c *Commitment) initBehavior(protocol *Protocol) (self *Commitment) { return spawnedChain }, c.IsRoot, parent.MainChild, c.SpawnedChain.Get())), - c.Chain.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ *Chain, parentChain, spawnedChain *Chain) *Chain { + c.Chain.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ *Chain, parentChain *Chain, spawnedChain *Chain) *Chain { return lo.Cond(spawnedChain != nil, spawnedChain, parentChain) }, parent.Chain, c.SpawnedChain)), @@ -140,15 +140,15 @@ func (c *Commitment) initBehavior(protocol *Protocol) (self *Commitment) { c.Chain.WithNonEmptyValue(func(chain *Chain) func() { return lo.Batch( - c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, spawnedEngine *engine.Engine, warpSyncing, isAboveLatestVerifiedCommitment bool) bool { + c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, spawnedEngine *engine.Engine, warpSyncing bool, isAboveLatestVerifiedCommitment bool) bool { return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment)), - c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync, parentIsVerified, isVerified bool) bool { + c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync bool, parentIsVerified bool, isVerified bool) bool { return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified)), - c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, verifyAttestations, parentIsAttested, isAttested bool) bool { + c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, verifyAttestations bool, parentIsAttested bool, isAttested bool) bool { return verifyAttestations && parentIsAttested && !isAttested }, chain.VerifyAttestations, parent.IsAttested, c.IsAttested)), ) diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 659809954..f71ae3593 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -190,7 +190,7 @@ func (e *Engines) loadEngineInstanceWithStorage(engineAlias string, storage *sto } func (e *Engines) syncMainEngineFromMainChain() (unsubscribe func()) { - return e.protocol.MainChain.OnUpdateWithContext(func(_, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + return e.protocol.MainChain.OnUpdateWithContext(func(_ *Chain, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { unsubscribeOnUpdate(func() func() { return e.Main.InheritFrom(mainChain.SpawnedEngine) }) @@ -198,7 +198,7 @@ func (e *Engines) syncMainEngineFromMainChain() (unsubscribe func()) { } func (e *Engines) syncMainEngineInfoFile() (unsubscribe func()) { - return e.Main.OnUpdate(func(_, mainEngine *engine.Engine) { + return e.Main.OnUpdate(func(_ *engine.Engine, mainEngine *engine.Engine) { if mainEngine != nil { if err := ioutils.WriteJSONToFile(e.infoFilePath(), &engineInfo{Name: filepath.Base(mainEngine.Storage.Directory())}, 0o644); err != nil { e.LogError("unable to write engine info file", "err", err) @@ -209,7 +209,7 @@ func (e *Engines) syncMainEngineInfoFile() (unsubscribe func()) { func (e *Engines) injectEngineInstances() (unsubscribe func()) { return e.protocol.OnChainCreated(func(chain *Chain) { - chain.VerifyState.OnUpdate(func(_, instantiate bool) { + chain.VerifyState.OnUpdate(func(_ bool, instantiate bool) { e.worker.Submit(func() { if !instantiate { chain.SpawnedEngine.Set(nil) diff --git a/pkg/protocol/network_clock.go b/pkg/protocol/network_clock.go index 19a4b566d..0cb68a32b 100644 --- a/pkg/protocol/network_clock.go +++ b/pkg/protocol/network_clock.go @@ -35,7 +35,7 @@ func NewNetworkClock(protocol *Protocol) *NetworkClock { }), protocol.OnChainCreated(func(chain *Chain) { - unsubscribe := chain.LatestCommitment.OnUpdate(func(_, latestCommitment *Commitment) { + unsubscribe := chain.LatestCommitment.OnUpdate(func(_ *Commitment, latestCommitment *Commitment) { if engineInstance := chain.Engine.Get(); engineInstance != nil { n.Set(engineInstance.LatestAPI().TimeProvider().SlotEndTime(latestCommitment.Slot())) } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index ff4af9d52..7020be45b 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -109,7 +109,7 @@ func (p *Protocol) waitEngineInitialized() { var waitInitialized sync.WaitGroup waitInitialized.Add(1) - p.Engines.Main.OnUpdateOnce(func(_, engine *engine.Engine) { + p.Engines.Main.OnUpdateOnce(func(_ *engine.Engine, engine *engine.Engine) { engine.Initialized.OnTrigger(waitInitialized.Done) }) waitInitialized.Wait() From 337ca369d4aa2650bff40d2d091910c0597f0c1b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 03:27:21 +0100 Subject: [PATCH 237/356] Refactor: still more --- components/metrics/metrics_commitments.go | 2 +- pkg/protocol/protocol_attestations.go | 4 ++-- pkg/protocol/protocol_blocks.go | 6 +++--- pkg/protocol/protocol_warp_sync.go | 6 +++--- pkg/testsuite/mock/node.go | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/components/metrics/metrics_commitments.go b/components/metrics/metrics_commitments.go index 0cb6d6201..55ff4655b 100644 --- a/components/metrics/metrics_commitments.go +++ b/components/metrics/metrics_commitments.go @@ -47,7 +47,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of forks seen by the node."), collector.WithInitFunc(func() { - deps.Protocol.HeaviestVerifiedChain.OnUpdate(func(oldChain, _ *protocol.Chain) { + deps.Protocol.HeaviestVerifiedChain.OnUpdate(func(oldChain *protocol.Chain, _ *protocol.Chain) { if oldChain != nil { Component.WorkerPool.Submit(func() { deps.Collector.Increment(commitmentsNamespace, forksCount) }) } diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 134af2832..98f3f1db2 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -37,7 +37,7 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { protocol.Constructed.OnTrigger(func() { protocol.OnChainCreated(func(chain *Chain) { - chain.VerifyAttestations.OnUpdate(func(_, requestAttestations bool) { + chain.VerifyAttestations.OnUpdate(func(_ bool, requestAttestations bool) { forkingPoint := chain.ForkingPoint.Get() if requestAttestations { @@ -54,7 +54,7 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { }) protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.RequestAttestations.OnUpdate(func(_, requestAttestations bool) { + commitment.RequestAttestations.OnUpdate(func(_ bool, requestAttestations bool) { if requestAttestations { if commitment.CumulativeWeight() == 0 { commitment.IsAttested.Set(true) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 4a820a109..6db4b08a0 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -33,7 +33,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { protocol.Constructed.OnTrigger(func() { protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.ReplayDroppedBlocks.OnUpdate(func(_, replayBlocks bool) { + commitment.ReplayDroppedBlocks.OnUpdate(func(_ bool, replayBlocks bool) { if replayBlocks { b.LogDebug("replaying blocks", "commitmentID", commitment.ID()) @@ -46,7 +46,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { protocol.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { mutations.AddedElements().Range(func(chain *Chain) { - chain.Engine.OnUpdate(func(_, engine *engine.Engine) { + chain.Engine.OnUpdate(func(_ *engine.Engine, engine *engine.Engine) { unsubscribe := engine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook engine.Shutdown.OnTrigger(unsubscribe) @@ -54,7 +54,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) }) - protocol.MainChain.Get().Engine.OnUpdateWithContext(func(_, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { + protocol.MainChain.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { unsubscribeOnEngineChange(func() (unsubscribe func()) { return lo.Batch( diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 3e9755dad..e5f5d1b4a 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -36,7 +36,7 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { protocol.Constructed.OnTrigger(func() { c.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.WarpSyncBlocks.OnUpdate(func(_, warpSyncBlocks bool) { + commitment.WarpSyncBlocks.OnUpdate(func(_ bool, warpSyncBlocks bool) { if warpSyncBlocks { c.ticker.StartTicker(commitment.ID()) } else { @@ -180,7 +180,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return true } - blockBookedFunc := func(_, _ bool) { + blockBookedFunc := func(_ bool, _ bool) { if bookedBlocks.Add(1) != totalBlocks { return } @@ -200,7 +200,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo targetEngine.BlockGadget.SetAccepted(block) - block.Notarized().OnUpdate(func(_, _ bool) { + block.Notarized().OnUpdate(func(_ bool, _ bool) { // Wait for all blocks to be notarized before forcing the commitment of the slot. if notarizedBlocks.Add(1) != totalBlocks { return diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index c39fba0ee..6930f5d84 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -152,7 +152,7 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto } func (n *Node) hookEvents() { - n.Protocol.HeaviestAttestedChain.OnUpdate(func(prevHeaviestAttestedChain, heaviestAttestedChain *protocol.Chain) { + n.Protocol.HeaviestAttestedChain.OnUpdate(func(prevHeaviestAttestedChain *protocol.Chain, heaviestAttestedChain *protocol.Chain) { if prevHeaviestAttestedChain != nil { n.Protocol.LogError("WHAT HeaviestAttestedChain", "from", prevHeaviestAttestedChain.LogName(), "to", heaviestAttestedChain.LogName()) From 522c9715122abb1312303a84d0e9445667810b70 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 03:32:47 +0100 Subject: [PATCH 238/356] Refactor: and even more --- pkg/testsuite/mock/node.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 6930f5d84..d8498b24f 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -158,13 +158,13 @@ func (n *Node) hookEvents() { n.forkDetectedCount.Add(1) - heaviestAttestedChain.SpawnedEngine.OnUpdate(func(prevEngine, newEngine *engine.Engine) { + heaviestAttestedChain.SpawnedEngine.OnUpdate(func(prevEngine *engine.Engine, newEngine *engine.Engine) { n.candidateEngineActivatedCount.Add(1) }) } }) - n.Protocol.MainChain.OnUpdate(func(prevChain, newChain *protocol.Chain) { + n.Protocol.MainChain.OnUpdate(func(prevChain *protocol.Chain, newChain *protocol.Chain) { if prevChain != nil { n.mainEngineSwitchedCount.Add(1) } @@ -174,7 +174,7 @@ func (n *Node) hookEvents() { func (n *Node) hookLogging(failOnBlockFiltered bool) { n.Protocol.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*protocol.Chain]) { mutations.AddedElements().Range(func(chain *protocol.Chain) { - chain.SpawnedEngine.OnUpdate(func(_, newEngine *engine.Engine) { + chain.SpawnedEngine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { if newEngine != nil { n.attachEngineLogs(failOnBlockFiltered, newEngine) } From 672d080c462a90ce7e8c1700d3b1d38d28a22713 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 13:12:35 +0100 Subject: [PATCH 239/356] Refactor: fixed bug in chain inheritance after merge --- pkg/protocol/chain.go | 51 +++++++++++++++++---------------- pkg/protocol/chain_manager.go | 2 +- pkg/protocol/commitment.go | 42 +++++++++++---------------- pkg/protocol/protocol_blocks.go | 4 +-- 4 files changed, 46 insertions(+), 53 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index d3e2a998e..9af444b30 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -65,6 +65,25 @@ func NewChain(protocol *Protocol) *Chain { SpawnedEngine: reactive.NewVariable[*engine.Engine](), } + c.Logger = protocol.NewEntityLogger("Chain", c.IsEvicted, func(chainLogger log.Logger) { + chainLogger.LogDebug("created") + + c.WarpSync.LogUpdates(chainLogger, log.LevelTrace, "WarpSync") + c.NetworkClockSlot.LogUpdates(chainLogger, log.LevelTrace, "NetworkClockSlot") + c.WarpSyncThreshold.LogUpdates(chainLogger, log.LevelTrace, "WarpSyncThreshold") + c.OutOfSyncThreshold.LogUpdates(chainLogger, log.LevelTrace, "OutOfSyncThreshold") + c.ForkingPoint.LogUpdates(chainLogger, log.LevelTrace, "ForkingPoint", (*Commitment).LogName) + c.ClaimedWeight.LogUpdates(chainLogger, log.LevelTrace, "ClaimedWeight") + c.AttestedWeight.LogUpdates(chainLogger, log.LevelTrace, "AttestedWeight") + c.VerifiedWeight.LogUpdates(chainLogger, log.LevelTrace, "VerifiedWeight") + c.LatestCommitment.LogUpdates(chainLogger, log.LevelTrace, "LatestCommitment", (*Commitment).LogName) + c.LatestVerifiedCommitment.LogUpdates(chainLogger, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName) + c.VerifyAttestations.LogUpdates(chainLogger, log.LevelTrace, "VerifyAttestations") + c.VerifyState.LogUpdates(chainLogger, log.LevelDebug, "VerifyState") + c.SpawnedEngine.LogUpdates(chainLogger, log.LevelDebug, "SpawnedEngine", (*engine.Engine).LogName) + c.IsEvicted.LogUpdates(chainLogger, log.LevelDebug, "IsEvicted") + }) + c.initClaimedWeight() c.initAttestedWeight() c.initVerifiedWeight() @@ -119,29 +138,11 @@ func NewChain(protocol *Protocol) *Chain { }) }) - c.Logger = protocol.NewEntityLogger("Chain", c.IsEvicted, func(chainLogger log.Logger) { - chainLogger.LogDebug("created") - - c.WarpSync.LogUpdates(chainLogger, log.LevelTrace, "WarpSync") - c.NetworkClockSlot.LogUpdates(chainLogger, log.LevelTrace, "NetworkClockSlot") - c.WarpSyncThreshold.LogUpdates(chainLogger, log.LevelTrace, "WarpSyncThreshold") - c.OutOfSyncThreshold.LogUpdates(chainLogger, log.LevelTrace, "OutOfSyncThreshold") - c.ForkingPoint.LogUpdates(chainLogger, log.LevelTrace, "ForkingPoint", (*Commitment).LogName) - c.ClaimedWeight.LogUpdates(chainLogger, log.LevelTrace, "ClaimedWeight") - c.AttestedWeight.LogUpdates(chainLogger, log.LevelTrace, "AttestedWeight") - c.VerifiedWeight.LogUpdates(chainLogger, log.LevelTrace, "VerifiedWeight") - c.LatestCommitment.LogUpdates(chainLogger, log.LevelTrace, "LatestCommitment", (*Commitment).LogName) - c.LatestVerifiedCommitment.LogUpdates(chainLogger, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName) - c.VerifyAttestations.LogUpdates(chainLogger, log.LevelTrace, "VerifyAttestations") - c.VerifyState.LogUpdates(chainLogger, log.LevelDebug, "VerifyState") - c.SpawnedEngine.LogUpdates(chainLogger, log.LevelDebug, "SpawnedEngine", (*engine.Engine).LogName) - }) - return c } func (c *Chain) initClaimedWeight() { - c.ClaimedWeight.InheritFrom(reactive.NewDerivedVariable(func(_ uint64, c *Commitment) uint64 { + c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, c *Commitment) uint64 { if c == nil { return 0 } @@ -163,7 +164,7 @@ func (c *Chain) initAttestedWeight() { } func (c *Chain) initVerifiedWeight() { - c.VerifiedWeight.InheritFrom(reactive.NewDerivedVariable(func(_ uint64, c *Commitment) uint64 { + c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, c *Commitment) uint64 { if c == nil { return 0 } @@ -174,15 +175,15 @@ func (c *Chain) initVerifiedWeight() { func (c *Chain) initWarpSync() { enableWarpSyncIfNecessary := func() (unsubscribe func()) { - return c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(_ bool, latestVerifiedCommitment *Commitment, outOfSyncThreshold iotago.SlotIndex) bool { + return c.WarpSync.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ bool, latestVerifiedCommitment *Commitment, outOfSyncThreshold iotago.SlotIndex) bool { return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < outOfSyncThreshold - }, c.LatestVerifiedCommitment, c.OutOfSyncThreshold)) + }, c.LatestVerifiedCommitment, c.OutOfSyncThreshold, c.WarpSync.Get())) } disableWarpSyncIfNecessary := func() (unsubscribe func()) { - return c.WarpSync.InheritFrom(reactive.NewDerivedVariable2(func(_ bool, latestVerifiedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex) bool { + return c.WarpSync.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ bool, latestVerifiedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex) bool { return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < warpSyncThreshold - }, c.LatestVerifiedCommitment, c.WarpSyncThreshold)) + }, c.LatestVerifiedCommitment, c.WarpSyncThreshold, c.WarpSync.Get())) } warpSyncTogglePool := workerpool.New("WarpSync toggle", workerpool.WithWorkerCount(1)).Start() @@ -214,7 +215,7 @@ func (c *Chain) initEngine() { return c.Engine.InheritFrom(c.SpawnedEngine) } - return c.Engine.InheritFrom(reactive.NewDerivedVariable2(func(_ *engine.Engine, spawnedEngine *engine.Engine, parentEngine *engine.Engine) *engine.Engine { + return c.Engine.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ *engine.Engine, spawnedEngine *engine.Engine, parentEngine *engine.Engine) *engine.Engine { if spawnedEngine != nil { return spawnedEngine } diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chain_manager.go index 8a0183cad..e10f3d9ff 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chain_manager.go @@ -143,7 +143,7 @@ func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent commitment.IsEvicted.Trigger() }) - commitment.SpawnedChain.OnUpdate(func(_ *Chain, newChain *Chain) { + commitment.Chain.OnUpdate(func(_ *Chain, newChain *Chain) { if newChain != nil { c.Chains.Add(newChain) } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index f9459d45f..30339a838 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -14,7 +14,6 @@ type Commitment struct { Parent reactive.Variable[*Commitment] Children reactive.Set[*Commitment] MainChild reactive.Variable[*Commitment] - SpawnedChain reactive.Variable[*Chain] Chain reactive.Variable[*Chain] RequestAttestations reactive.Variable[bool] WarpSyncBlocks reactive.Variable[bool] @@ -40,7 +39,6 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment Parent: reactive.NewVariable[*Commitment](), Children: reactive.NewSet[*Commitment](), MainChild: reactive.NewVariable[*Commitment](), - SpawnedChain: reactive.NewVariable[*Chain](), Chain: reactive.NewVariable[*Chain](), RequestAttestations: reactive.NewVariable[bool](), WarpSyncBlocks: reactive.NewVariable[bool](), @@ -73,7 +71,6 @@ func (c *Commitment) initLogging(protocol *Protocol) (self *Commitment) { c.Parent.LogUpdates(c, log.LevelTrace, "Parent", (*Commitment).LogName), // c.Children.LogUpdates(c, log.LevelTrace, "Children", (*Commitment).LogName), c.MainChild.LogUpdates(c, log.LevelTrace, "MainChild", (*Commitment).LogName), - c.SpawnedChain.LogUpdates(c, log.LevelTrace, "SpawnedChain", (*Chain).LogName), c.Chain.LogUpdates(c, log.LevelTrace, "Chain", (*Chain).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), c.WarpSyncBlocks.LogUpdates(c, log.LevelTrace, "WarpSyncBlocks"), @@ -106,27 +103,26 @@ func (c *Commitment) initBehavior(protocol *Protocol) (self *Commitment) { return lo.Batch( parent.registerChild(c), - c.SpawnedChain.DeriveValueFrom(reactive.NewDerivedVariable2(func(spawnedChain *Chain, isRoot bool, mainChild *Commitment) *Chain { - if !isRoot { // do not adjust the chain of the root commitment - if mainChild != c { - if spawnedChain == nil { - spawnedChain = NewChain(protocol) - spawnedChain.ForkingPoint.Set(c) - } - } else { - if spawnedChain != nil { - spawnedChain.IsEvicted.Trigger() - spawnedChain = nil - } + c.Chain.DeriveValueFrom(reactive.NewDerivedVariable3(func(chain *Chain, isRoot bool, mainChild *Commitment, parentChain *Chain) *Chain { + if isRoot { + return chain + } + + if c != mainChild { + if chain == nil { + chain = NewChain(protocol) + chain.ForkingPoint.Set(c) } + + return chain } - return spawnedChain - }, c.IsRoot, parent.MainChild, c.SpawnedChain.Get())), + if chain != nil && chain != parentChain { + chain.IsEvicted.Trigger() + } - c.Chain.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ *Chain, parentChain *Chain, spawnedChain *Chain) *Chain { - return lo.Cond(spawnedChain != nil, spawnedChain, parentChain) - }, parent.Chain, c.SpawnedChain)), + return parentChain + }, c.IsRoot, parent.MainChild, parent.Chain, c.Chain.Get())), c.CumulativeAttestedWeight.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ uint64, parentCumulativeAttestedWeight uint64, attestedWeight uint64) uint64 { return parentCumulativeAttestedWeight + attestedWeight @@ -188,11 +184,7 @@ func (c *Commitment) registerChild(child *Commitment) (unregisterChild func()) { func (c *Commitment) setChain(targetChain *Chain) { if currentChain := c.Chain.Get(); currentChain != targetChain { - if currentChain == nil { - // since we only call setChain for commitments coming from an engine (which by definition are solid), this - // can only happen if the commitment is the root commitment of the main chain that is the first commitment - // ever published (which means that we can just set the chain that we want it to have). - c.SpawnedChain.Set(targetChain) + if currentChain == nil { // the root commitment doesn't inherit a chain from its parents c.Chain.Set(targetChain) } else if parent := c.Parent.Get(); parent.Chain.Get() == targetChain { parent.MainChild.Set(c) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 6db4b08a0..9b23794aa 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -35,9 +35,9 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { protocol.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.ReplayDroppedBlocks.OnUpdate(func(_ bool, replayBlocks bool) { if replayBlocks { - b.LogDebug("replaying blocks", "commitmentID", commitment.ID()) - for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { + b.LogTrace("replaying dropped block", "commitmentID", commitment.ID(), "blockID", droppedBlock.A.ID()) + b.ProcessResponse(droppedBlock.A, droppedBlock.B) } } From 9786bc2b33f03c6e3f517cf1e6108af5417f7461 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 14:01:23 +0100 Subject: [PATCH 240/356] Feat: started refactoring chains --- components/debugapi/commitment.go | 6 ++-- components/metrics/metrics_commitments.go | 2 +- pkg/protocol/{chain_manager.go => chains.go} | 32 ++++++++++---------- pkg/protocol/engines.go | 4 +-- pkg/protocol/network_clock.go | 2 +- pkg/protocol/protocol.go | 4 +-- pkg/protocol/protocol_attestations.go | 10 +++--- pkg/protocol/protocol_blocks.go | 8 ++--- pkg/protocol/protocol_commitments.go | 4 +-- pkg/protocol/protocol_warp_sync.go | 8 ++--- pkg/testsuite/chainmanager.go | 2 +- pkg/testsuite/mock/node.go | 6 ++-- pkg/testsuite/storage_settings.go | 4 +-- 13 files changed, 46 insertions(+), 46 deletions(-) rename pkg/protocol/{chain_manager.go => chains.go} (88%) diff --git a/components/debugapi/commitment.go b/components/debugapi/commitment.go index 19c3b81ab..bdff195bc 100644 --- a/components/debugapi/commitment.go +++ b/components/debugapi/commitment.go @@ -13,7 +13,7 @@ import ( ) func chainManagerAllChainsDot() (string, error) { - rootCommitment := deps.Protocol.MainChain.Get().ForkingPoint.Get() + rootCommitment := deps.Protocol.Chains.MainChain.Get().ForkingPoint.Get() g := graphviz.New() defer g.Close() @@ -32,7 +32,7 @@ func chainManagerAllChainsDot() (string, error) { } func chainManagerAllChainsRendered() ([]byte, error) { - rootCommitment := deps.Protocol.MainChain.Get().ForkingPoint.Get() + rootCommitment := deps.Protocol.Chains.MainChain.Get().ForkingPoint.Get() g := graphviz.New() defer g.Close() @@ -75,7 +75,7 @@ func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *protocol.Commi return childErr } - if childCommitment.Chain.Get() == deps.Protocol.MainChain.Get() { + if childCommitment.Chain.Get() == deps.Protocol.Chains.MainChain.Get() { child.SetColor("green") } diff --git a/components/metrics/metrics_commitments.go b/components/metrics/metrics_commitments.go index 55ff4655b..0e0327007 100644 --- a/components/metrics/metrics_commitments.go +++ b/components/metrics/metrics_commitments.go @@ -47,7 +47,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of forks seen by the node."), collector.WithInitFunc(func() { - deps.Protocol.HeaviestVerifiedChain.OnUpdate(func(oldChain *protocol.Chain, _ *protocol.Chain) { + deps.Protocol.Chains.HeaviestVerifiedChain.OnUpdate(func(oldChain *protocol.Chain, _ *protocol.Chain) { if oldChain != nil { Component.WorkerPool.Submit(func() { deps.Collector.Increment(commitmentsNamespace, forksCount) }) } diff --git a/pkg/protocol/chain_manager.go b/pkg/protocol/chains.go similarity index 88% rename from pkg/protocol/chain_manager.go rename to pkg/protocol/chains.go index e10f3d9ff..5554afb3f 100644 --- a/pkg/protocol/chain_manager.go +++ b/pkg/protocol/chains.go @@ -14,9 +14,8 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -type ChainManager struct { +type Chains struct { MainChain reactive.Variable[*Chain] - Chains reactive.Set[*Chain] HeaviestChain reactive.Variable[*Chain] HeaviestAttestedChain reactive.Variable[*Chain] HeaviestVerifiedChain reactive.Variable[*Chain] @@ -25,15 +24,16 @@ type ChainManager struct { protocol *Protocol commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] + reactive.Set[*Chain] reactive.EvictionState[iotago.SlotIndex] } -func newChainManager(protocol *Protocol) *ChainManager { - c := &ChainManager{ +func newChains(protocol *Protocol) *Chains { + c := &Chains{ protocol: protocol, EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), + Set: reactive.NewSet[*Chain](), MainChain: reactive.NewVariable[*Chain](), - Chains: reactive.NewSet[*Chain](), HeaviestChain: reactive.NewVariable[*Chain](), HeaviestAttestedChain: reactive.NewVariable[*Chain](), HeaviestVerifiedChain: reactive.NewVariable[*Chain](), @@ -77,7 +77,7 @@ func newChainManager(protocol *Protocol) *ChainManager { return c } -func (c *ChainManager) PublishCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment, published bool, err error) { +func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment, published bool, err error) { request := c.requestCommitment(commitment.ID(), false) if request.WasRejected() { return nil, false, ierrors.Wrapf(request.Err(), "failed to request commitment %s", commitment.ID()) @@ -95,7 +95,7 @@ func (c *ChainManager) PublishCommitment(commitment *model.Commitment) (commitme return commitmentMetadata, commitmentMetadata == publishedCommitmentMetadata, nil } -func (c *ChainManager) Commitment(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { +func (c *Chains) Commitment(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { commitmentRequest, exists := c.commitments.Get(commitmentID) if !exists && lo.First(requestMissing) { if commitmentRequest = c.requestCommitment(commitmentID, true); commitmentRequest.WasRejected() { @@ -114,13 +114,13 @@ func (c *ChainManager) Commitment(commitmentID iotago.CommitmentID, requestMissi return commitmentRequest.Result(), nil } -func (c *ChainManager) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { - return c.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { +func (c *Chains) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { + return c.OnUpdate(func(mutations ds.SetMutations[*Chain]) { mutations.AddedElements().Range(callback) }) } -func (c *ChainManager) initMainChain() { +func (c *Chains) initMainChain() { c.protocol.LogDebug("initializing main chain") mainChain := NewChain(c.protocol) @@ -131,10 +131,10 @@ func (c *ChainManager) initMainChain() { mainChain.Engine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) c.MainChain.Set(mainChain) - c.Chains.Add(mainChain) + c.Add(mainChain) } -func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { +func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { c.requestCommitment(commitment.PreviousCommitmentID(), true, lo.Void(commitment.Parent.Set)).OnError(func(err error) { c.protocol.LogDebug("failed to request previous commitment", "prevId", commitment.PreviousCommitmentID(), "error", err) }) @@ -145,14 +145,14 @@ func (c *ChainManager) setupCommitment(commitment *Commitment, slotEvictedEvent commitment.Chain.OnUpdate(func(_ *Chain, newChain *Chain) { if newChain != nil { - c.Chains.Add(newChain) + c.Add(newChain) } }) c.CommitmentCreated.Trigger(commitment) } -func (c *ChainManager) initChainSwitching() { +func (c *Chains) initChainSwitching() { c.HeaviestChain.OnUpdate(func(prevHeaviestChain *Chain, heaviestChain *Chain) { if prevHeaviestChain != nil { prevHeaviestChain.VerifyAttestations.Set(false) @@ -183,7 +183,7 @@ func (c *ChainManager) initChainSwitching() { }) } -func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { +func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { slotEvicted := c.EvictionEvent(commitmentID.Index()) if slotEvicted.WasTriggered() && c.LastEvictedSlot().Get() != 0 { forkingPoint := c.MainChain.Get().ForkingPoint.Get() @@ -223,7 +223,7 @@ func (c *ChainManager) requestCommitment(commitmentID iotago.CommitmentID, reque return commitmentRequest } -func (c *ChainManager) publishEngineCommitments(chain *Chain) { +func (c *Chains) publishEngineCommitments(chain *Chain) { chain.SpawnedEngine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { var latestPublishedSlot iotago.SlotIndex diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index f71ae3593..67ba68b2d 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -190,7 +190,7 @@ func (e *Engines) loadEngineInstanceWithStorage(engineAlias string, storage *sto } func (e *Engines) syncMainEngineFromMainChain() (unsubscribe func()) { - return e.protocol.MainChain.OnUpdateWithContext(func(_ *Chain, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + return e.protocol.Chains.MainChain.OnUpdateWithContext(func(_ *Chain, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { unsubscribeOnUpdate(func() func() { return e.Main.InheritFrom(mainChain.SpawnedEngine) }) @@ -208,7 +208,7 @@ func (e *Engines) syncMainEngineInfoFile() (unsubscribe func()) { } func (e *Engines) injectEngineInstances() (unsubscribe func()) { - return e.protocol.OnChainCreated(func(chain *Chain) { + return e.protocol.Chains.OnChainCreated(func(chain *Chain) { chain.VerifyState.OnUpdate(func(_ bool, instantiate bool) { e.worker.Submit(func() { if !instantiate { diff --git a/pkg/protocol/network_clock.go b/pkg/protocol/network_clock.go index 0cb68a32b..f1ac5b105 100644 --- a/pkg/protocol/network_clock.go +++ b/pkg/protocol/network_clock.go @@ -34,7 +34,7 @@ func NewNetworkClock(protocol *Protocol) *NetworkClock { n.Set(block.ProtocolBlock().Header.IssuingTime) }), - protocol.OnChainCreated(func(chain *Chain) { + protocol.Chains.OnChainCreated(func(chain *Chain) { unsubscribe := chain.LatestCommitment.OnUpdate(func(_ *Commitment, latestCommitment *Commitment) { if engineInstance := chain.Engine.Get(); engineInstance != nil { n.Set(engineInstance.LatestAPI().TimeProvider().SlotEndTime(latestCommitment.Slot())) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 7020be45b..132ca9bc7 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -30,7 +30,7 @@ type Protocol struct { Engines *Engines Options *Options - *ChainManager + Chains *Chains *APIProvider *module.ReactiveModule @@ -50,7 +50,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.CommitmentsProtocol = NewCommitmentsProtocol(p) p.AttestationsProtocol = NewAttestationsProtocol(p) p.WarpSyncProtocol = NewWarpSyncProtocol(p) - p.ChainManager = newChainManager(p) + p.Chains = newChains(p) p.Engines = NewEngines(p) p.APIProvider = NewAPIProvider(p) diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 98f3f1db2..da3ff8676 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -36,7 +36,7 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { a.ticker.Events.Tick.Hook(a.sendRequest) protocol.Constructed.OnTrigger(func() { - protocol.OnChainCreated(func(chain *Chain) { + protocol.Chains.OnChainCreated(func(chain *Chain) { chain.VerifyAttestations.OnUpdate(func(_ bool, requestAttestations bool) { forkingPoint := chain.ForkingPoint.Get() @@ -53,7 +53,7 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { }) }) - protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + protocol.Chains.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.RequestAttestations.OnUpdate(func(_ bool, requestAttestations bool) { if requestAttestations { if commitment.CumulativeWeight() == 0 { @@ -73,7 +73,7 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { a.workerPool.Submit(func() { - commitment, _, err := a.protocol.PublishCommitment(commitmentModel) + commitment, _, err := a.protocol.Chains.PublishCommitment(commitmentModel) if err != nil { a.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", from, "error", err) @@ -121,7 +121,7 @@ func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment func (a *AttestationsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { a.workerPool.Submit(func() { - commitment, err := a.protocol.Commitment(commitmentID, false) + commitment, err := a.protocol.Chains.Commitment(commitmentID, false) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { a.LogError("failed to load requested commitment", "commitmentID", commitmentID, "fromPeer", from, "err", err) @@ -209,7 +209,7 @@ func (a *AttestationsProtocol) Shutdown() { func (a *AttestationsProtocol) sendRequest(commitmentID iotago.CommitmentID) { a.workerPool.Submit(func() { - if commitment, err := a.protocol.Commitment(commitmentID, false); err == nil { + if commitment, err := a.protocol.Chains.Commitment(commitmentID, false); err == nil { a.protocol.Network.RequestAttestations(commitmentID) a.LogDebug("request", "commitment", commitment.LogName()) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 9b23794aa..55a45ea0c 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -32,7 +32,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { } protocol.Constructed.OnTrigger(func() { - protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + protocol.Chains.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.ReplayDroppedBlocks.OnUpdate(func(_ bool, replayBlocks bool) { if replayBlocks { for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { @@ -44,7 +44,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) }) - protocol.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { + protocol.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { mutations.AddedElements().Range(func(chain *Chain) { chain.Engine.OnUpdate(func(_ *engine.Engine, engine *engine.Engine) { unsubscribe := engine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook @@ -54,7 +54,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) }) - protocol.MainChain.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { + protocol.Chains.MainChain.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { unsubscribeOnEngineChange(func() (unsubscribe func()) { return lo.Batch( @@ -87,7 +87,7 @@ func (b *BlocksProtocol) SendResponse(block *model.Block) { func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { b.workerPool.Submit(func() { - commitmentRequest := b.protocol.requestCommitment(block.ProtocolBlock().Header.SlotCommitmentID, true) + commitmentRequest := b.protocol.Chains.requestCommitment(block.ProtocolBlock().Header.SlotCommitmentID, true) if commitmentRequest.WasRejected() { b.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID(), "err", commitmentRequest.Err()) diff --git a/pkg/protocol/protocol_commitments.go b/pkg/protocol/protocol_commitments.go index 160caeeb2..9fd21f2ed 100644 --- a/pkg/protocol/protocol_commitments.go +++ b/pkg/protocol/protocol_commitments.go @@ -51,7 +51,7 @@ func (c *CommitmentsProtocol) SendResponse(commitment *Commitment, to peer.ID) { func (c *CommitmentsProtocol) ProcessResponse(commitmentModel *model.Commitment, from peer.ID) { c.workerPool.Submit(func() { - if commitment, published, err := c.protocol.PublishCommitment(commitmentModel); err != nil { + if commitment, published, err := c.protocol.Chains.PublishCommitment(commitmentModel); err != nil { c.LogError("failed to process commitment", "fromPeer", from, "err", err) } else if published { c.LogTrace("received response", "commitment", commitment.LogName(), "fromPeer", from) @@ -61,7 +61,7 @@ func (c *CommitmentsProtocol) ProcessResponse(commitmentModel *model.Commitment, func (c *CommitmentsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { c.workerPool.Submit(func() { - commitment, err := c.protocol.Commitment(commitmentID) + commitment, err := c.protocol.Chains.Commitment(commitmentID) if err != nil { logLevel := lo.Cond(ierrors.Is(err, ErrorCommitmentNotFound), log.LevelTrace, log.LevelError) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index e5f5d1b4a..27b095535 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -35,7 +35,7 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { c.ticker.Events.Tick.Hook(c.SendRequest) protocol.Constructed.OnTrigger(func() { - c.protocol.CommitmentCreated.Hook(func(commitment *Commitment) { + c.protocol.Chains.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.WarpSyncBlocks.OnUpdate(func(_ bool, warpSyncBlocks bool) { if warpSyncBlocks { c.ticker.StartTicker(commitment.ID()) @@ -51,7 +51,7 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { func (w *WarpSyncProtocol) SendRequest(commitmentID iotago.CommitmentID) { w.workerPool.Submit(func() { - if commitment, err := w.protocol.Commitment(commitmentID, false); err == nil { + if commitment, err := w.protocol.Chains.Commitment(commitmentID, false); err == nil { w.protocol.Network.SendWarpSyncRequest(commitmentID) w.LogDebug("request", "commitment", commitment.LogName()) @@ -69,7 +69,7 @@ func (w *WarpSyncProtocol) SendResponse(commitment *Commitment, blockIDsBySlotCo func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blockIDsBySlotCommitment map[iotago.CommitmentID]iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], transactionIDs iotago.TransactionIDs, mutationProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { w.workerPool.Submit(func() { - commitment, err := w.protocol.Commitment(commitmentID) + commitment, err := w.protocol.Chains.Commitment(commitmentID) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { w.LogError("failed to load commitment for response", "commitmentID", commitmentID, "fromPeer", from, "err", err) @@ -241,7 +241,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo func (w *WarpSyncProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { w.workerPool.Submit(func() { - commitment, err := w.protocol.Commitment(commitmentID) + commitment, err := w.protocol.Chains.Commitment(commitmentID) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { w.LogError("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index 6db00d9ed..d6f4a78c0 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -10,7 +10,7 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { for _, node := range nodes { t.Eventually(func() error { - chain := node.Protocol.MainChain.Get() + chain := node.Protocol.Chains.MainChain.Get() if chain == nil { return ierrors.Errorf("AssertChainManagerIsSolid: %s: chain is nil", node.Name) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index d8498b24f..6e9359279 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -152,7 +152,7 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto } func (n *Node) hookEvents() { - n.Protocol.HeaviestAttestedChain.OnUpdate(func(prevHeaviestAttestedChain *protocol.Chain, heaviestAttestedChain *protocol.Chain) { + n.Protocol.Chains.HeaviestAttestedChain.OnUpdate(func(prevHeaviestAttestedChain *protocol.Chain, heaviestAttestedChain *protocol.Chain) { if prevHeaviestAttestedChain != nil { n.Protocol.LogError("WHAT HeaviestAttestedChain", "from", prevHeaviestAttestedChain.LogName(), "to", heaviestAttestedChain.LogName()) @@ -164,7 +164,7 @@ func (n *Node) hookEvents() { } }) - n.Protocol.MainChain.OnUpdate(func(prevChain *protocol.Chain, newChain *protocol.Chain) { + n.Protocol.Chains.MainChain.OnUpdate(func(prevChain *protocol.Chain, newChain *protocol.Chain) { if prevChain != nil { n.mainEngineSwitchedCount.Add(1) } @@ -172,7 +172,7 @@ func (n *Node) hookEvents() { } func (n *Node) hookLogging(failOnBlockFiltered bool) { - n.Protocol.ChainManager.Chains.OnUpdate(func(mutations ds.SetMutations[*protocol.Chain]) { + n.Protocol.Chains.OnUpdate(func(mutations ds.SetMutations[*protocol.Chain]) { mutations.AddedElements().Range(func(chain *protocol.Chain) { chain.SpawnedEngine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { if newEngine != nil { diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index f8667ead0..993aade63 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -67,7 +67,7 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes } // Make sure the commitment is also available in the ChainManager. - if node.Protocol.MainChain.Get().LatestCommitment.Get().ID().Slot() < slot { + if node.Protocol.Chains.MainChain.Get().LatestCommitment.Get().ID().Slot() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found in ChainManager", node.Name, slot) } @@ -123,7 +123,7 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - actualChainID := node.Protocol.MainChain.Get().ForkingPoint.Get().ID() + actualChainID := node.Protocol.Chains.MainChain.Get().ForkingPoint.Get().ID() if expectedChainID != actualChainID { return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Slot(), actualChainID, actualChainID.Slot()) } From d09d4303896a5a8942e41a3e456b2157404fbfc8 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 14:06:49 +0100 Subject: [PATCH 241/356] Refactor: renamed chains properties --- components/debugapi/commitment.go | 6 +-- components/metrics/metrics_commitments.go | 2 +- pkg/protocol/chains.go | 52 +++++++++++------------ pkg/protocol/engines.go | 2 +- pkg/protocol/protocol_blocks.go | 2 +- pkg/testsuite/chainmanager.go | 2 +- pkg/testsuite/mock/node.go | 6 +-- pkg/testsuite/storage_settings.go | 4 +- 8 files changed, 37 insertions(+), 39 deletions(-) diff --git a/components/debugapi/commitment.go b/components/debugapi/commitment.go index bdff195bc..4319459c4 100644 --- a/components/debugapi/commitment.go +++ b/components/debugapi/commitment.go @@ -13,7 +13,7 @@ import ( ) func chainManagerAllChainsDot() (string, error) { - rootCommitment := deps.Protocol.Chains.MainChain.Get().ForkingPoint.Get() + rootCommitment := deps.Protocol.Chains.Main.Get().ForkingPoint.Get() g := graphviz.New() defer g.Close() @@ -32,7 +32,7 @@ func chainManagerAllChainsDot() (string, error) { } func chainManagerAllChainsRendered() ([]byte, error) { - rootCommitment := deps.Protocol.Chains.MainChain.Get().ForkingPoint.Get() + rootCommitment := deps.Protocol.Chains.Main.Get().ForkingPoint.Get() g := graphviz.New() defer g.Close() @@ -75,7 +75,7 @@ func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *protocol.Commi return childErr } - if childCommitment.Chain.Get() == deps.Protocol.Chains.MainChain.Get() { + if childCommitment.Chain.Get() == deps.Protocol.Chains.Main.Get() { child.SetColor("green") } diff --git a/components/metrics/metrics_commitments.go b/components/metrics/metrics_commitments.go index 0e0327007..634be489b 100644 --- a/components/metrics/metrics_commitments.go +++ b/components/metrics/metrics_commitments.go @@ -47,7 +47,7 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of forks seen by the node."), collector.WithInitFunc(func() { - deps.Protocol.Chains.HeaviestVerifiedChain.OnUpdate(func(oldChain *protocol.Chain, _ *protocol.Chain) { + deps.Protocol.Chains.HeaviestVerified.OnUpdate(func(oldChain *protocol.Chain, _ *protocol.Chain) { if oldChain != nil { Component.WorkerPool.Submit(func() { deps.Collector.Increment(commitmentsNamespace, forksCount) }) } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 5554afb3f..b1fa2ab6a 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -15,11 +15,11 @@ import ( ) type Chains struct { - MainChain reactive.Variable[*Chain] - HeaviestChain reactive.Variable[*Chain] - HeaviestAttestedChain reactive.Variable[*Chain] - HeaviestVerifiedChain reactive.Variable[*Chain] - CommitmentCreated *event.Event1[*Commitment] + Main reactive.Variable[*Chain] + Heaviest reactive.Variable[*Chain] + HeaviestAttested reactive.Variable[*Chain] + HeaviestVerified reactive.Variable[*Chain] + CommitmentCreated *event.Event1[*Commitment] protocol *Protocol commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] @@ -30,24 +30,24 @@ type Chains struct { func newChains(protocol *Protocol) *Chains { c := &Chains{ - protocol: protocol, - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), - Set: reactive.NewSet[*Chain](), - MainChain: reactive.NewVariable[*Chain](), - HeaviestChain: reactive.NewVariable[*Chain](), - HeaviestAttestedChain: reactive.NewVariable[*Chain](), - HeaviestVerifiedChain: reactive.NewVariable[*Chain](), - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), - CommitmentCreated: event.New1[*Commitment](), + protocol: protocol, + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), + Set: reactive.NewSet[*Chain](), + Main: reactive.NewVariable[*Chain](), + Heaviest: reactive.NewVariable[*Chain](), + HeaviestAttested: reactive.NewVariable[*Chain](), + HeaviestVerified: reactive.NewVariable[*Chain](), + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + CommitmentCreated: event.New1[*Commitment](), } - c.HeaviestChain.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) - c.HeaviestAttestedChain.LogUpdates(c.protocol, log.LevelTrace, "Attested Heavier Chain", (*Chain).LogName) + c.Heaviest.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) + c.HeaviestAttested.LogUpdates(c.protocol, log.LevelTrace, "Attested Heavier Chain", (*Chain).LogName) protocol.Constructed.OnTrigger(func() { trackHeaviestChain := func(chainVariable reactive.Variable[*Chain], getWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { return getWeightVariable(candidate).OnUpdate(func(_ uint64, newChainWeight uint64) { - if heaviestChain := c.HeaviestVerifiedChain.Get(); heaviestChain != nil && newChainWeight < heaviestChain.VerifiedWeight.Get() { + if heaviestChain := c.HeaviestVerified.Get(); heaviestChain != nil && newChainWeight < heaviestChain.VerifiedWeight.Get() { return } @@ -64,9 +64,9 @@ func newChains(protocol *Protocol) *Chains { c.OnChainCreated(func(chain *Chain) { c.publishEngineCommitments(chain) - trackHeaviestChain(c.HeaviestVerifiedChain, (*Chain).verifiedWeight, chain) - trackHeaviestChain(c.HeaviestAttestedChain, (*Chain).attestedWeight, chain) - trackHeaviestChain(c.HeaviestChain, (*Chain).claimedWeight, chain) + trackHeaviestChain(c.HeaviestVerified, (*Chain).verifiedWeight, chain) + trackHeaviestChain(c.HeaviestAttested, (*Chain).attestedWeight, chain) + trackHeaviestChain(c.Heaviest, (*Chain).claimedWeight, chain) }) c.initChainSwitching() @@ -130,7 +130,7 @@ func (c *Chains) initMainChain() { mainChain.VerifyState.Set(true) mainChain.Engine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) - c.MainChain.Set(mainChain) + c.Main.Set(mainChain) c.Add(mainChain) } @@ -153,7 +153,7 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti } func (c *Chains) initChainSwitching() { - c.HeaviestChain.OnUpdate(func(prevHeaviestChain *Chain, heaviestChain *Chain) { + c.Heaviest.OnUpdate(func(prevHeaviestChain *Chain, heaviestChain *Chain) { if prevHeaviestChain != nil { prevHeaviestChain.VerifyAttestations.Set(false) } @@ -163,12 +163,12 @@ func (c *Chains) initChainSwitching() { } }) - c.HeaviestAttestedChain.OnUpdate(func(_ *Chain, heaviestAttestedChain *Chain) { + c.HeaviestAttested.OnUpdate(func(_ *Chain, heaviestAttestedChain *Chain) { heaviestAttestedChain.VerifyAttestations.Set(false) heaviestAttestedChain.VerifyState.Set(true) }) - c.HeaviestVerifiedChain.OnUpdate(func(_ *Chain, heaviestVerifiedChain *Chain) { + c.HeaviestVerified.OnUpdate(func(_ *Chain, heaviestVerifiedChain *Chain) { heaviestVerifiedChain.LatestVerifiedCommitment.OnUpdate(func(_ *Commitment, latestVerifiedCommitment *Commitment) { forkingPoint := heaviestVerifiedChain.ForkingPoint.Get() if forkingPoint == nil || latestVerifiedCommitment == nil { @@ -177,7 +177,7 @@ func (c *Chains) initChainSwitching() { distanceFromForkingPoint := latestVerifiedCommitment.ID().Slot() - forkingPoint.ID().Slot() if distanceFromForkingPoint > c.protocol.Options.ChainSwitchingThreshold { - c.MainChain.Set(heaviestVerifiedChain) + c.Main.Set(heaviestVerifiedChain) } }) }) @@ -186,7 +186,7 @@ func (c *Chains) initChainSwitching() { func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { slotEvicted := c.EvictionEvent(commitmentID.Index()) if slotEvicted.WasTriggered() && c.LastEvictedSlot().Get() != 0 { - forkingPoint := c.MainChain.Get().ForkingPoint.Get() + forkingPoint := c.Main.Get().ForkingPoint.Get() if forkingPoint == nil || commitmentID != forkingPoint.ID() { return promise.New[*Commitment]().Reject(ErrorSlotEvicted) diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 67ba68b2d..6409d12a9 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -190,7 +190,7 @@ func (e *Engines) loadEngineInstanceWithStorage(engineAlias string, storage *sto } func (e *Engines) syncMainEngineFromMainChain() (unsubscribe func()) { - return e.protocol.Chains.MainChain.OnUpdateWithContext(func(_ *Chain, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + return e.protocol.Chains.Main.OnUpdateWithContext(func(_ *Chain, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { unsubscribeOnUpdate(func() func() { return e.Main.InheritFrom(mainChain.SpawnedEngine) }) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 55a45ea0c..2e19a5dda 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -54,7 +54,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) }) - protocol.Chains.MainChain.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { + protocol.Chains.Main.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { unsubscribeOnEngineChange(func() (unsubscribe func()) { return lo.Batch( diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index d6f4a78c0..0954d7f46 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -10,7 +10,7 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { for _, node := range nodes { t.Eventually(func() error { - chain := node.Protocol.Chains.MainChain.Get() + chain := node.Protocol.Chains.Main.Get() if chain == nil { return ierrors.Errorf("AssertChainManagerIsSolid: %s: chain is nil", node.Name) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 6e9359279..f32a17198 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -152,10 +152,8 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto } func (n *Node) hookEvents() { - n.Protocol.Chains.HeaviestAttestedChain.OnUpdate(func(prevHeaviestAttestedChain *protocol.Chain, heaviestAttestedChain *protocol.Chain) { + n.Protocol.Chains.HeaviestAttested.OnUpdate(func(prevHeaviestAttestedChain *protocol.Chain, heaviestAttestedChain *protocol.Chain) { if prevHeaviestAttestedChain != nil { - n.Protocol.LogError("WHAT HeaviestAttestedChain", "from", prevHeaviestAttestedChain.LogName(), "to", heaviestAttestedChain.LogName()) - n.forkDetectedCount.Add(1) heaviestAttestedChain.SpawnedEngine.OnUpdate(func(prevEngine *engine.Engine, newEngine *engine.Engine) { @@ -164,7 +162,7 @@ func (n *Node) hookEvents() { } }) - n.Protocol.Chains.MainChain.OnUpdate(func(prevChain *protocol.Chain, newChain *protocol.Chain) { + n.Protocol.Chains.Main.OnUpdate(func(prevChain *protocol.Chain, newChain *protocol.Chain) { if prevChain != nil { n.mainEngineSwitchedCount.Add(1) } diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 993aade63..6ee042ee5 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -67,7 +67,7 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes } // Make sure the commitment is also available in the ChainManager. - if node.Protocol.Chains.MainChain.Get().LatestCommitment.Get().ID().Slot() < slot { + if node.Protocol.Chains.Main.Get().LatestCommitment.Get().ID().Slot() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found in ChainManager", node.Name, slot) } @@ -123,7 +123,7 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - actualChainID := node.Protocol.Chains.MainChain.Get().ForkingPoint.Get().ID() + actualChainID := node.Protocol.Chains.Main.Get().ForkingPoint.Get().ID() if expectedChainID != actualChainID { return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Slot(), actualChainID, actualChainID.Slot()) } From 7a4042480003ae678225ccc9616de6909c7c60f6 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 16:37:46 +0100 Subject: [PATCH 242/356] Refactor: cleaning up chains --- pkg/protocol/chain.go | 6 +-- pkg/protocol/chains.go | 44 ++++++++++++-------- pkg/protocol/commitment.go | 13 +++--- pkg/protocol/{constants.go => versioning.go} | 0 pkg/tests/accounts_test.go | 2 + 5 files changed, 37 insertions(+), 28 deletions(-) rename pkg/protocol/{constants.go => versioning.go} (100%) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 9af444b30..594e7d7ba 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -41,7 +41,7 @@ type Chain struct { log.Logger } -func NewChain(protocol *Protocol) *Chain { +func NewChain(chains *Chains) *Chain { c := &Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), ParentChain: reactive.NewVariable[*Chain](), @@ -65,7 +65,7 @@ func NewChain(protocol *Protocol) *Chain { SpawnedEngine: reactive.NewVariable[*engine.Engine](), } - c.Logger = protocol.NewEntityLogger("Chain", c.IsEvicted, func(chainLogger log.Logger) { + c.Logger = chains.protocol.NewEntityLogger("Chain", c.IsEvicted, func(chainLogger log.Logger) { chainLogger.LogDebug("created") c.WarpSync.LogUpdates(chainLogger, log.LevelTrace, "WarpSync") @@ -90,7 +90,7 @@ func NewChain(protocol *Protocol) *Chain { c.initEngine() c.initWarpSync() - protocol.NetworkClock.OnUpdate(func(_ time.Time, now time.Time) { + chains.protocol.NetworkClock.OnUpdate(func(_ time.Time, now time.Time) { if engineInstance := c.Engine.Get(); engineInstance != nil { c.NetworkClockSlot.Set(engineInstance.LatestAPI().TimeProvider().SlotFromTime(now)) } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index b1fa2ab6a..991cbbdd5 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -15,30 +15,33 @@ import ( ) type Chains struct { - Main reactive.Variable[*Chain] - Heaviest reactive.Variable[*Chain] - HeaviestAttested reactive.Variable[*Chain] - HeaviestVerified reactive.Variable[*Chain] + reactive.Set[*Chain] + reactive.EvictionState[iotago.SlotIndex] + + Main reactive.Variable[*Chain] + Heaviest reactive.Variable[*Chain] + HeaviestAttested reactive.Variable[*Chain] + HeaviestVerified reactive.Variable[*Chain] + CommitmentCreated *event.Event1[*Commitment] + ChainCreated *event.Event1[*Chain] protocol *Protocol commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] - - reactive.Set[*Chain] - reactive.EvictionState[iotago.SlotIndex] } func newChains(protocol *Protocol) *Chains { c := &Chains{ - protocol: protocol, - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), Set: reactive.NewSet[*Chain](), + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), Main: reactive.NewVariable[*Chain](), Heaviest: reactive.NewVariable[*Chain](), HeaviestAttested: reactive.NewVariable[*Chain](), HeaviestVerified: reactive.NewVariable[*Chain](), - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), CommitmentCreated: event.New1[*Commitment](), + ChainCreated: event.New1[*Chain](), + protocol: protocol, + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), } c.Heaviest.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) @@ -83,7 +86,7 @@ func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMeta return nil, false, ierrors.Wrapf(request.Err(), "failed to request commitment %s", commitment.ID()) } - publishedCommitmentMetadata := NewCommitment(commitment, c.protocol) + publishedCommitmentMetadata := NewCommitment(commitment, c) request.Resolve(publishedCommitmentMetadata).OnSuccess(func(resolvedMetadata *Commitment) { commitmentMetadata = resolvedMetadata }) @@ -123,7 +126,7 @@ func (c *Chains) OnChainCreated(callback func(chain *Chain)) (unsubscribe func() func (c *Chains) initMainChain() { c.protocol.LogDebug("initializing main chain") - mainChain := NewChain(c.protocol) + mainChain := NewChain(c) //c.protocol.LogDebug("new chain created", "name", mainChain.LogName(), "forkingPoint", "") @@ -131,6 +134,7 @@ func (c *Chains) initMainChain() { mainChain.Engine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) c.Main.Set(mainChain) + c.ChainCreated.Trigger(mainChain) c.Add(mainChain) } @@ -143,15 +147,19 @@ func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reacti commitment.IsEvicted.Trigger() }) - commitment.Chain.OnUpdate(func(_ *Chain, newChain *Chain) { - if newChain != nil { - c.Add(newChain) - } - }) - c.CommitmentCreated.Trigger(commitment) } +func (c *Chains) Fork(forkingPoint *Commitment) *Chain { + chain := NewChain(c) + chain.ForkingPoint.Set(forkingPoint) + + c.ChainCreated.Trigger(chain) + c.Add(chain) + + return chain +} + func (c *Chains) initChainSwitching() { c.Heaviest.OnUpdate(func(prevHeaviestChain *Chain, heaviestChain *Chain) { if prevHeaviestChain != nil { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 30339a838..ea966c9c0 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -33,7 +33,7 @@ type Commitment struct { log.Logger } -func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment { +func NewCommitment(commitment *model.Commitment, chains *Chains) *Commitment { return (&Commitment{ Commitment: commitment, Parent: reactive.NewVariable[*Commitment](), @@ -53,7 +53,7 @@ func NewCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), ReplayDroppedBlocks: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), - }).initLogging(protocol).initBehavior(protocol) + }).initLogging(chains).initBehavior(chains) } func (c *Commitment) Engine() *engine.Engine { @@ -64,8 +64,8 @@ func (c *Commitment) Engine() *engine.Engine { return nil } -func (c *Commitment) initLogging(protocol *Protocol) (self *Commitment) { - c.Logger = protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot()), c.IsEvicted, func(_ log.Logger) {}) +func (c *Commitment) initLogging(chains *Chains) (self *Commitment) { + c.Logger = chains.protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot()), c.IsEvicted, func(_ log.Logger) {}) teardownLogging := lo.Batch( c.Parent.LogUpdates(c, log.LevelTrace, "Parent", (*Commitment).LogName), @@ -91,7 +91,7 @@ func (c *Commitment) initLogging(protocol *Protocol) (self *Commitment) { return c } -func (c *Commitment) initBehavior(protocol *Protocol) (self *Commitment) { +func (c *Commitment) initBehavior(chains *Chains) (self *Commitment) { teardownBehavior := lo.Batch( c.IsSolid.InheritFrom(c.IsRoot), c.IsAttested.InheritFrom(c.IsRoot), @@ -110,8 +110,7 @@ func (c *Commitment) initBehavior(protocol *Protocol) (self *Commitment) { if c != mainChild { if chain == nil { - chain = NewChain(protocol) - chain.ForkingPoint.Set(c) + chain = chains.Fork(c) } return chain diff --git a/pkg/protocol/constants.go b/pkg/protocol/versioning.go similarity index 100% rename from pkg/protocol/constants.go rename to pkg/protocol/versioning.go diff --git a/pkg/tests/accounts_test.go b/pkg/tests/accounts_test.go index a206fbc3d..0ddb7dd73 100644 --- a/pkg/tests/accounts_test.go +++ b/pkg/tests/accounts_test.go @@ -3,6 +3,7 @@ package tests import ( "testing" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts" "github.com/iotaledger/iota-core/pkg/testsuite" @@ -358,6 +359,7 @@ func Test_ImplicitAccounts(t *testing.T) { wallet := ts.AddGenesisWallet("default", node1, iotago.MaxBlockIssuanceCredits/2) ts.Run(true) + node1.Protocol.SetLogLevel(log.LevelTrace) // assert validator and block issuer accounts in genesis snapshot. // validator node account. From 3bcf9d03858fbd2c6457b516bfa02ac6f48510cb Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 21:09:25 +0100 Subject: [PATCH 243/356] Feat: started using latest hive.go features --- go.mod | 28 +++++++------- go.sum | 56 +++++++++++++-------------- pkg/protocol/chains.go | 26 +++++-------- pkg/protocol/engines.go | 4 +- pkg/protocol/network_clock.go | 6 +-- pkg/protocol/protocol_attestations.go | 4 +- pkg/protocol/protocol_blocks.go | 11 ++---- pkg/testsuite/mock/node.go | 13 +++---- tools/gendoc/go.mod | 32 +++++++-------- tools/gendoc/go.sum | 56 +++++++++++++-------------- tools/genesis-snapshot/go.mod | 24 ++++++------ tools/genesis-snapshot/go.sum | 48 +++++++++++------------ 12 files changed, 145 insertions(+), 163 deletions(-) diff --git a/go.mod b/go.mod index e4cf42ba6..657174126 100644 --- a/go.mod +++ b/go.mod @@ -10,19 +10,20 @@ require ( github.com/google/uuid v1.4.0 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/ads v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/app v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/constraints v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109195003-91f206338890 + github.com/iotaledger/hive.go/crypto v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/ds v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/kvstore v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/lo v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/log v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/logger v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/runtime v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109195003-91f206338890 + github.com/iotaledger/hive.go/stringify v0.0.0-20231109195003-91f206338890 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a @@ -89,7 +90,6 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 // indirect github.com/ipfs/boxo v0.13.1 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect diff --git a/go.sum b/go.sum index f4939ca5c..484753dbe 100644 --- a/go.sum +++ b/go.sum @@ -275,34 +275,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231108215351-f9dc9def4f75 h1:t9nS05VgQHwNL2Lw0fwdH9KA8hkKWuRDMF3Uf/nJv60= -github.com/iotaledger/hive.go/ads v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75 h1:21Qck5fHIm90h5RViIly+hGT9EeeY77lCF4gaZWIQs8= -github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 h1:9NDx5QwrXREAif/Rh7LP4Y3M7VeMNuNvBA5ktkF0/Sg= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 h1:jFAJKrcjmcMIcP48ocE0E78tPgTu7hRCLqMNCB/jjUM= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 h1:xaVSiOgWqqhCl39VoNr18J/lG209RKjyjybk+WNzE8A= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 h1:ZsC4xykx0AaonYuxR5osDGcU+prgPwNWe2uyCWB4OeQ= -github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 h1:xhJRXhfUrHL6LvsVfGx2EttzMnM3k8qhPcQVm5oWfMg= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 h1:asgLT0v/GRufd/vKzH8hOc/m3ivYma0GXAwo/lAjg5k= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 h1:OSN3/MxJ0K8D6Za8cjUzcQkLLNsmXChCTRJ0+4VKS1E= -github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 h1:DF9Ygi4OMznXZRQ5RLFKWHYf1AMPVdZ8eFIu3HGZMEI= -github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75 h1:yraXuffKrEtMKmKhX/k7A6pzq6T/7R66oYuhfnrIYg0= -github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 h1:uI/oEk4wTEdSnEsUj8WrS4bOWeUHIVN0680IEMF5IlI= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 h1:Ic4ElAyJhB5knobdMqIsx+E4PgMS16Q2wSlX6C8yeCg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 h1:iKL1ev0LBHO1hxIRTfgdu4a+aRTMEQ4oyyPLWSI6Skk= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231109195003-91f206338890 h1:DNxpVXpeTD/kTjg2mQsUr/7WtW/mPuYen4DjLhY7ZZw= +github.com/iotaledger/hive.go/ads v0.0.0-20231109195003-91f206338890/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/app v0.0.0-20231109195003-91f206338890 h1:PkoMWMvCsTAHReplnAVFEPz54xZpJfGrWrZPBQr8ac8= +github.com/iotaledger/hive.go/app v0.0.0-20231109195003-91f206338890/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/constraints v0.0.0-20231109195003-91f206338890 h1:DlohqoDquEOdMVr1WVeiKHFr0+LftlsU+YHMLV3VidY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231109195003-91f206338890/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109195003-91f206338890 h1:WrxsNX6PLOB49VEikKG0YbUrtf+xGY9UYyodykq8k9U= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109195003-91f206338890/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231109195003-91f206338890 h1:8JI5VxWxEoZnUtfmQZq0JuBKQP4BsXwgNIlhWeJY0ic= +github.com/iotaledger/hive.go/crypto v0.0.0-20231109195003-91f206338890/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231109195003-91f206338890 h1:+XTJQ4GRMfr86SbTrrAaFPLwBxrTrl8CCQRv67T7t4U= +github.com/iotaledger/hive.go/ds v0.0.0-20231109195003-91f206338890/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231109195003-91f206338890 h1:QiOdTzlHFqSahtDYWk33VV60unCjoQNQDHPJrHbvVTg= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231109195003-91f206338890/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231109195003-91f206338890 h1:0RqnI06J3hLNb5n3a2JJLZDWb7Og8mE/QXXGtljfF1Q= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231109195003-91f206338890/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231109195003-91f206338890 h1:oQRxNiMJ0rZFqCsBqSE/K3AP4kPdrPoz+VyGVZ045sY= +github.com/iotaledger/hive.go/lo v0.0.0-20231109195003-91f206338890/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231109195003-91f206338890 h1:IvdQj72nUvlaW5fvC4aXP2olJJ/zuxLv1RbUbKXkKxU= +github.com/iotaledger/hive.go/log v0.0.0-20231109195003-91f206338890/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231109195003-91f206338890 h1:K3AiEPQiSftLMsv3mkaIF48T7UYaDzUDZefQDEqpat4= +github.com/iotaledger/hive.go/logger v0.0.0-20231109195003-91f206338890/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231109195003-91f206338890 h1:ShRA3hiVOyepQDkLgseaKNS00GugKoNA5PdvC3vUzn4= +github.com/iotaledger/hive.go/runtime v0.0.0-20231109195003-91f206338890/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109195003-91f206338890 h1:hTY+n8AQO86U0XgodfbGfPZtT/J/5GDBPB7VJFj+9ZA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109195003-91f206338890/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231109195003-91f206338890 h1:Dv4OIVp3aA+KGnarRd5vo7B2fGTUT7pMVUKf06IukWg= +github.com/iotaledger/hive.go/stringify v0.0.0-20231109195003-91f206338890/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 h1:FdM1lxUKgENO3oOlF5blVqmjER44mLIHGpavyUOY5JI= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82/go.mod h1:HVxkGPraMDTRudfG9AFN7Ga9gijp6skXB9TKNBc4KgI= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 h1:KkC0SaWrjSMg897r2DDosJYALFfLadFST3Fvoaxg7hw= diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 991cbbdd5..e2dfb143e 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -1,7 +1,6 @@ package protocol import ( - "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" @@ -64,12 +63,14 @@ func newChains(protocol *Protocol) *Chains { }, true) } - c.OnChainCreated(func(chain *Chain) { - c.publishEngineCommitments(chain) + c.WithElements(func(chain *Chain) (teardown func()) { + return lo.Batch( + c.publishEngineCommitments(chain), - trackHeaviestChain(c.HeaviestVerified, (*Chain).verifiedWeight, chain) - trackHeaviestChain(c.HeaviestAttested, (*Chain).attestedWeight, chain) - trackHeaviestChain(c.Heaviest, (*Chain).claimedWeight, chain) + trackHeaviestChain(c.HeaviestVerified, (*Chain).verifiedWeight, chain), + trackHeaviestChain(c.HeaviestAttested, (*Chain).attestedWeight, chain), + trackHeaviestChain(c.Heaviest, (*Chain).claimedWeight, chain), + ) }) c.initChainSwitching() @@ -117,12 +118,6 @@ func (c *Chains) Commitment(commitmentID iotago.CommitmentID, requestMissing ... return commitmentRequest.Result(), nil } -func (c *Chains) OnChainCreated(callback func(chain *Chain)) (unsubscribe func()) { - return c.OnUpdate(func(mutations ds.SetMutations[*Chain]) { - mutations.AddedElements().Range(callback) - }) -} - func (c *Chains) initMainChain() { c.protocol.LogDebug("initializing main chain") @@ -134,7 +129,7 @@ func (c *Chains) initMainChain() { mainChain.Engine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) c.Main.Set(mainChain) - c.ChainCreated.Trigger(mainChain) + c.Add(mainChain) } @@ -154,7 +149,6 @@ func (c *Chains) Fork(forkingPoint *Commitment) *Chain { chain := NewChain(c) chain.ForkingPoint.Set(forkingPoint) - c.ChainCreated.Trigger(chain) c.Add(chain) return chain @@ -231,8 +225,8 @@ func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFrom return commitmentRequest } -func (c *Chains) publishEngineCommitments(chain *Chain) { - chain.SpawnedEngine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { +func (c *Chains) publishEngineCommitments(chain *Chain) (unsubscribe func()) { + return chain.SpawnedEngine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { var latestPublishedSlot iotago.SlotIndex diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 6409d12a9..0597fc092 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -208,8 +208,8 @@ func (e *Engines) syncMainEngineInfoFile() (unsubscribe func()) { } func (e *Engines) injectEngineInstances() (unsubscribe func()) { - return e.protocol.Chains.OnChainCreated(func(chain *Chain) { - chain.VerifyState.OnUpdate(func(_ bool, instantiate bool) { + return e.protocol.Chains.WithElements(func(chain *Chain) (teardown func()) { + return chain.VerifyState.OnUpdate(func(_ bool, instantiate bool) { e.worker.Submit(func() { if !instantiate { chain.SpawnedEngine.Set(nil) diff --git a/pkg/protocol/network_clock.go b/pkg/protocol/network_clock.go index f1ac5b105..27f71f263 100644 --- a/pkg/protocol/network_clock.go +++ b/pkg/protocol/network_clock.go @@ -34,14 +34,12 @@ func NewNetworkClock(protocol *Protocol) *NetworkClock { n.Set(block.ProtocolBlock().Header.IssuingTime) }), - protocol.Chains.OnChainCreated(func(chain *Chain) { - unsubscribe := chain.LatestCommitment.OnUpdate(func(_ *Commitment, latestCommitment *Commitment) { + protocol.Chains.WithElements(func(chain *Chain) (teardown func()) { + return chain.LatestCommitment.OnUpdate(func(_ *Commitment, latestCommitment *Commitment) { if engineInstance := chain.Engine.Get(); engineInstance != nil { n.Set(engineInstance.LatestAPI().TimeProvider().SlotEndTime(latestCommitment.Slot())) } }) - - chain.IsEvicted.OnTrigger(unsubscribe) }), ) diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index da3ff8676..f9ea31923 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -36,8 +36,8 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { a.ticker.Events.Tick.Hook(a.sendRequest) protocol.Constructed.OnTrigger(func() { - protocol.Chains.OnChainCreated(func(chain *Chain) { - chain.VerifyAttestations.OnUpdate(func(_ bool, requestAttestations bool) { + protocol.Chains.WithElements(func(chain *Chain) (teardown func()) { + return chain.VerifyAttestations.OnUpdate(func(_ bool, requestAttestations bool) { forkingPoint := chain.ForkingPoint.Get() if requestAttestations { diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 2e19a5dda..bd4d12846 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -3,7 +3,6 @@ package protocol import ( "github.com/libp2p/go-libp2p/core/peer" - "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ds/types" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" @@ -44,13 +43,11 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) }) - protocol.Chains.OnUpdate(func(mutations ds.SetMutations[*Chain]) { - mutations.AddedElements().Range(func(chain *Chain) { - chain.Engine.OnUpdate(func(_ *engine.Engine, engine *engine.Engine) { - unsubscribe := engine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook + protocol.Chains.WithElements(func(chain *Chain) func() { + return chain.Engine.OnUpdate(func(_ *engine.Engine, engine *engine.Engine) { + unsubscribe := engine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook - engine.Shutdown.OnTrigger(unsubscribe) - }) + engine.Shutdown.OnTrigger(unsubscribe) }) }) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index f32a17198..57d768723 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -13,7 +13,6 @@ import ( "github.com/stretchr/testify/require" "golang.org/x/crypto/blake2b" - "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/options" @@ -170,13 +169,11 @@ func (n *Node) hookEvents() { } func (n *Node) hookLogging(failOnBlockFiltered bool) { - n.Protocol.Chains.OnUpdate(func(mutations ds.SetMutations[*protocol.Chain]) { - mutations.AddedElements().Range(func(chain *protocol.Chain) { - chain.SpawnedEngine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { - if newEngine != nil { - n.attachEngineLogs(failOnBlockFiltered, newEngine) - } - }) + n.Protocol.Chains.WithElements(func(chain *protocol.Chain) (teardown func()) { + return chain.SpawnedEngine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { + if newEngine != nil { + n.attachEngineLogs(failOnBlockFiltered, newEngine) + } }) }) } diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 14dc01c98..256eeb384 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/app v0.0.0-20231109195003-91f206338890 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -18,7 +18,6 @@ require ( github.com/cespare/xxhash/v2 v2.2.0 // indirect github.com/containerd/cgroups v1.1.0 // indirect github.com/coreos/go-systemd/v22 v22.5.0 // indirect - github.com/davecgh/go-spew v1.1.1 // indirect github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/docker/go-units v0.5.0 // indirect @@ -57,19 +56,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231109195003-91f206338890 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a // indirect @@ -134,7 +133,6 @@ require ( github.com/pelletier/go-toml/v2 v2.1.0 // indirect github.com/petermattis/goid v0.0.0-20230904192822-1876fd5063bc // indirect github.com/pkg/errors v0.9.1 // indirect - github.com/pmezard/go-difflib v1.0.0 // indirect github.com/pokt-network/smt v0.6.1 // indirect github.com/polydawn/refmt v0.89.0 // indirect github.com/prometheus/client_golang v1.17.0 // indirect @@ -150,7 +148,6 @@ require ( github.com/spaolacci/murmur3 v1.1.0 // indirect github.com/spf13/cast v1.5.1 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.8.4 // indirect github.com/tcnksm/go-latest v0.0.0-20170313132115-e3007ae9052e // indirect github.com/valyala/bytebufferpool v1.0.0 // indirect github.com/valyala/fasttemplate v1.2.2 // indirect @@ -182,6 +179,5 @@ require ( google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/yaml.v2 v2.4.0 // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect lukechampine.com/blake3 v1.2.1 // indirect ) diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 9593ce557..1e15a90ec 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -277,36 +277,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231108215351-f9dc9def4f75 h1:t9nS05VgQHwNL2Lw0fwdH9KA8hkKWuRDMF3Uf/nJv60= -github.com/iotaledger/hive.go/ads v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75 h1:21Qck5fHIm90h5RViIly+hGT9EeeY77lCF4gaZWIQs8= -github.com/iotaledger/hive.go/app v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/ads v0.0.0-20231109195003-91f206338890 h1:DNxpVXpeTD/kTjg2mQsUr/7WtW/mPuYen4DjLhY7ZZw= +github.com/iotaledger/hive.go/ads v0.0.0-20231109195003-91f206338890/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/app v0.0.0-20231109195003-91f206338890 h1:PkoMWMvCsTAHReplnAVFEPz54xZpJfGrWrZPBQr8ac8= +github.com/iotaledger/hive.go/app v0.0.0-20231109195003-91f206338890/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 h1:9NDx5QwrXREAif/Rh7LP4Y3M7VeMNuNvBA5ktkF0/Sg= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 h1:jFAJKrcjmcMIcP48ocE0E78tPgTu7hRCLqMNCB/jjUM= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 h1:xaVSiOgWqqhCl39VoNr18J/lG209RKjyjybk+WNzE8A= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 h1:ZsC4xykx0AaonYuxR5osDGcU+prgPwNWe2uyCWB4OeQ= -github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 h1:xhJRXhfUrHL6LvsVfGx2EttzMnM3k8qhPcQVm5oWfMg= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 h1:asgLT0v/GRufd/vKzH8hOc/m3ivYma0GXAwo/lAjg5k= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 h1:OSN3/MxJ0K8D6Za8cjUzcQkLLNsmXChCTRJ0+4VKS1E= -github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 h1:DF9Ygi4OMznXZRQ5RLFKWHYf1AMPVdZ8eFIu3HGZMEI= -github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75 h1:yraXuffKrEtMKmKhX/k7A6pzq6T/7R66oYuhfnrIYg0= -github.com/iotaledger/hive.go/logger v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 h1:uI/oEk4wTEdSnEsUj8WrS4bOWeUHIVN0680IEMF5IlI= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 h1:Ic4ElAyJhB5knobdMqIsx+E4PgMS16Q2wSlX6C8yeCg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 h1:iKL1ev0LBHO1hxIRTfgdu4a+aRTMEQ4oyyPLWSI6Skk= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231109195003-91f206338890 h1:DlohqoDquEOdMVr1WVeiKHFr0+LftlsU+YHMLV3VidY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231109195003-91f206338890/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109195003-91f206338890 h1:WrxsNX6PLOB49VEikKG0YbUrtf+xGY9UYyodykq8k9U= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109195003-91f206338890/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231109195003-91f206338890 h1:8JI5VxWxEoZnUtfmQZq0JuBKQP4BsXwgNIlhWeJY0ic= +github.com/iotaledger/hive.go/crypto v0.0.0-20231109195003-91f206338890/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231109195003-91f206338890 h1:+XTJQ4GRMfr86SbTrrAaFPLwBxrTrl8CCQRv67T7t4U= +github.com/iotaledger/hive.go/ds v0.0.0-20231109195003-91f206338890/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231109195003-91f206338890 h1:QiOdTzlHFqSahtDYWk33VV60unCjoQNQDHPJrHbvVTg= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231109195003-91f206338890/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231109195003-91f206338890 h1:0RqnI06J3hLNb5n3a2JJLZDWb7Og8mE/QXXGtljfF1Q= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231109195003-91f206338890/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231109195003-91f206338890 h1:oQRxNiMJ0rZFqCsBqSE/K3AP4kPdrPoz+VyGVZ045sY= +github.com/iotaledger/hive.go/lo v0.0.0-20231109195003-91f206338890/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231109195003-91f206338890 h1:IvdQj72nUvlaW5fvC4aXP2olJJ/zuxLv1RbUbKXkKxU= +github.com/iotaledger/hive.go/log v0.0.0-20231109195003-91f206338890/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231109195003-91f206338890 h1:K3AiEPQiSftLMsv3mkaIF48T7UYaDzUDZefQDEqpat4= +github.com/iotaledger/hive.go/logger v0.0.0-20231109195003-91f206338890/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231109195003-91f206338890 h1:ShRA3hiVOyepQDkLgseaKNS00GugKoNA5PdvC3vUzn4= +github.com/iotaledger/hive.go/runtime v0.0.0-20231109195003-91f206338890/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109195003-91f206338890 h1:hTY+n8AQO86U0XgodfbGfPZtT/J/5GDBPB7VJFj+9ZA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109195003-91f206338890/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231109195003-91f206338890 h1:Dv4OIVp3aA+KGnarRd5vo7B2fGTUT7pMVUKf06IukWg= +github.com/iotaledger/hive.go/stringify v0.0.0-20231109195003-91f206338890/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 h1:FdM1lxUKgENO3oOlF5blVqmjER44mLIHGpavyUOY5JI= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82/go.mod h1:HVxkGPraMDTRudfG9AFN7Ga9gijp6skXB9TKNBc4KgI= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 h1:KkC0SaWrjSMg897r2DDosJYALFfLadFST3Fvoaxg7hw= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 9f521ef43..154d1ae4c 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 - github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 + github.com/iotaledger/hive.go/crypto v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/lo v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/runtime v0.0.0-20231109195003-91f206338890 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a github.com/mr-tron/base58 v1.2.0 @@ -26,14 +26,14 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109195003-91f206338890 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231109195003-91f206338890 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 3496e4d26..ca23515cb 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,30 +28,30 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231108215351-f9dc9def4f75 h1:t9nS05VgQHwNL2Lw0fwdH9KA8hkKWuRDMF3Uf/nJv60= -github.com/iotaledger/hive.go/ads v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75 h1:9NDx5QwrXREAif/Rh7LP4Y3M7VeMNuNvBA5ktkF0/Sg= -github.com/iotaledger/hive.go/constraints v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75 h1:jFAJKrcjmcMIcP48ocE0E78tPgTu7hRCLqMNCB/jjUM= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231108215351-f9dc9def4f75/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75 h1:xaVSiOgWqqhCl39VoNr18J/lG209RKjyjybk+WNzE8A= -github.com/iotaledger/hive.go/crypto v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75 h1:ZsC4xykx0AaonYuxR5osDGcU+prgPwNWe2uyCWB4OeQ= -github.com/iotaledger/hive.go/ds v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75 h1:xhJRXhfUrHL6LvsVfGx2EttzMnM3k8qhPcQVm5oWfMg= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75 h1:asgLT0v/GRufd/vKzH8hOc/m3ivYma0GXAwo/lAjg5k= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75 h1:OSN3/MxJ0K8D6Za8cjUzcQkLLNsmXChCTRJ0+4VKS1E= -github.com/iotaledger/hive.go/lo v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75 h1:DF9Ygi4OMznXZRQ5RLFKWHYf1AMPVdZ8eFIu3HGZMEI= -github.com/iotaledger/hive.go/log v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75 h1:uI/oEk4wTEdSnEsUj8WrS4bOWeUHIVN0680IEMF5IlI= -github.com/iotaledger/hive.go/runtime v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75 h1:Ic4ElAyJhB5knobdMqIsx+E4PgMS16Q2wSlX6C8yeCg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231108215351-f9dc9def4f75/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75 h1:iKL1ev0LBHO1hxIRTfgdu4a+aRTMEQ4oyyPLWSI6Skk= -github.com/iotaledger/hive.go/stringify v0.0.0-20231108215351-f9dc9def4f75/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231109195003-91f206338890 h1:DNxpVXpeTD/kTjg2mQsUr/7WtW/mPuYen4DjLhY7ZZw= +github.com/iotaledger/hive.go/ads v0.0.0-20231109195003-91f206338890/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/constraints v0.0.0-20231109195003-91f206338890 h1:DlohqoDquEOdMVr1WVeiKHFr0+LftlsU+YHMLV3VidY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231109195003-91f206338890/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109195003-91f206338890 h1:WrxsNX6PLOB49VEikKG0YbUrtf+xGY9UYyodykq8k9U= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109195003-91f206338890/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231109195003-91f206338890 h1:8JI5VxWxEoZnUtfmQZq0JuBKQP4BsXwgNIlhWeJY0ic= +github.com/iotaledger/hive.go/crypto v0.0.0-20231109195003-91f206338890/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231109195003-91f206338890 h1:+XTJQ4GRMfr86SbTrrAaFPLwBxrTrl8CCQRv67T7t4U= +github.com/iotaledger/hive.go/ds v0.0.0-20231109195003-91f206338890/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231109195003-91f206338890 h1:QiOdTzlHFqSahtDYWk33VV60unCjoQNQDHPJrHbvVTg= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231109195003-91f206338890/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231109195003-91f206338890 h1:0RqnI06J3hLNb5n3a2JJLZDWb7Og8mE/QXXGtljfF1Q= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231109195003-91f206338890/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231109195003-91f206338890 h1:oQRxNiMJ0rZFqCsBqSE/K3AP4kPdrPoz+VyGVZ045sY= +github.com/iotaledger/hive.go/lo v0.0.0-20231109195003-91f206338890/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231109195003-91f206338890 h1:IvdQj72nUvlaW5fvC4aXP2olJJ/zuxLv1RbUbKXkKxU= +github.com/iotaledger/hive.go/log v0.0.0-20231109195003-91f206338890/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/runtime v0.0.0-20231109195003-91f206338890 h1:ShRA3hiVOyepQDkLgseaKNS00GugKoNA5PdvC3vUzn4= +github.com/iotaledger/hive.go/runtime v0.0.0-20231109195003-91f206338890/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109195003-91f206338890 h1:hTY+n8AQO86U0XgodfbGfPZtT/J/5GDBPB7VJFj+9ZA= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109195003-91f206338890/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231109195003-91f206338890 h1:Dv4OIVp3aA+KGnarRd5vo7B2fGTUT7pMVUKf06IukWg= +github.com/iotaledger/hive.go/stringify v0.0.0-20231109195003-91f206338890/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a h1:n54B9QtipmN/UXc6uyESQrPGv5uVG/lOIOxKSaLfWpI= github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a/go.mod h1:Bg7BOs2wO5gw1KQwD0OedG3C2gG6Xls2VGicK9mpLLg= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= From 4353b80cc7254864f25eaa12ddf2f9c73b799f8c Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 21:31:15 +0100 Subject: [PATCH 244/356] Feat: fixed nil pointer exception --- pkg/protocol/protocol_blocks.go | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index bd4d12846..650635699 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -119,7 +119,29 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { func (b *BlocksProtocol) ProcessRequest(blockID iotago.BlockID, from peer.ID) { b.workerPool.Submit(func() { block, exists := b.protocol.Engines.Main.Get().Block(blockID) - if !exists { + + // TODO: CHECK why blocks can be nil here: + //panic: runtime error: invalid memory address or nil pointer dereference + //[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x10c2ac3] + // + // goroutine 302684 [running]: + // github.com/iotaledger/iota-core/pkg/model.(*Block).Data(...) + // /actions-runner/_work/iota-core/iota-core/pkg/model/block.go:85 + // github.com/iotaledger/iota-core/pkg/network/protocols/core.(*Protocol).SendBlock(0xc0045f0420, 0x0, {0xc0045a7c70, 0x1, 0x1}) + // /actions-runner/_work/iota-core/iota-core/pkg/network/protocols/core/protocol.go:57 +0x43 + // github.com/iotaledger/iota-core/pkg/protocol.(*BlocksProtocol).ProcessRequest-fm.(*BlocksProtocol).ProcessRequest.func1() + // /actions-runner/_work/iota-core/iota-core/pkg/protocol/protocol_blocks.go:128 +0x1ae + // github.com/iotaledger/hive.go/runtime/workerpool.(*Task).run(0xc0035f4060) + // /home/runner/go/pkg/mod/github.com/iotaledger/hive.go/runtime@v0.0.0-20231109195003-91f206338890/workerpool/task.go:48 +0xb6 + // github.com/iotaledger/hive.go/runtime/workerpool.(*WorkerPool).workerReadLoop(0xc0021408c0) + // /home/runner/go/pkg/mod/github.com/iotaledger/hive.go/runtime@v0.0.0-20231109195003-91f206338890/workerpool/workerpool.go:190 +0x3b + // github.com/iotaledger/hive.go/runtime/workerpool.(*WorkerPool).worker(0xc0021408c0) + // /home/runner/go/pkg/mod/github.com/iotaledger/hive.go/runtime@v0.0.0-20231109195003-91f206338890/workerpool/workerpool.go:170 +0x69 + // created by github.com/iotaledger/hive.go/runtime/workerpool.(*WorkerPool).startWorkers in goroutine 282432 + // /home/runner/go/pkg/mod/github.com/iotaledger/hive.go/runtime@v0.0.0-20231109195003-91f206338890/workerpool/workerpool.go:162 +0x32 + // FAIL github.com/iotaledger/iota-core/pkg/tests 151.748s + // FAIL + if !exists || block == nil { b.LogTrace("requested block not found", "blockID", blockID) return From 6bdbd7318982245fc5641d849e01190392356af3 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 21:48:54 +0100 Subject: [PATCH 245/356] Feat: moved evictionstate to procotol --- pkg/protocol/chains.go | 6 ++---- pkg/protocol/protocol.go | 4 ++++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index e2dfb143e..430514a1d 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -15,7 +15,6 @@ import ( type Chains struct { reactive.Set[*Chain] - reactive.EvictionState[iotago.SlotIndex] Main reactive.Variable[*Chain] Heaviest reactive.Variable[*Chain] @@ -32,7 +31,6 @@ type Chains struct { func newChains(protocol *Protocol) *Chains { c := &Chains{ Set: reactive.NewSet[*Chain](), - EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), Main: reactive.NewVariable[*Chain](), Heaviest: reactive.NewVariable[*Chain](), HeaviestAttested: reactive.NewVariable[*Chain](), @@ -186,8 +184,8 @@ func (c *Chains) initChainSwitching() { } func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { - slotEvicted := c.EvictionEvent(commitmentID.Index()) - if slotEvicted.WasTriggered() && c.LastEvictedSlot().Get() != 0 { + slotEvicted := c.protocol.EvictionEvent(commitmentID.Index()) + if slotEvicted.WasTriggered() && c.protocol.LastEvictedSlot().Get() != 0 { forkingPoint := c.Main.Get().ForkingPoint.Get() if forkingPoint == nil || commitmentID != forkingPoint.ID() { diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 132ca9bc7..cb8c3c0db 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -6,6 +6,7 @@ import ( "github.com/libp2p/go-libp2p/core/peer" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/module" @@ -15,6 +16,7 @@ import ( "github.com/iotaledger/iota-core/pkg/network" "github.com/iotaledger/iota-core/pkg/network/protocols/core" "github.com/iotaledger/iota-core/pkg/protocol/engine" + iotago "github.com/iotaledger/iota.go/v4" ) // Protocol implements the meta-protocol that is responsible for syncing with the heaviest chain. @@ -33,6 +35,7 @@ type Protocol struct { Chains *Chains *APIProvider + reactive.EvictionState[iotago.SlotIndex] *module.ReactiveModule } @@ -43,6 +46,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E Workers: workers, Options: NewDefaultOptions(), ReactiveModule: module.NewReactiveModule(logger), + EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), }, opts, func(p *Protocol) { p.Network = core.NewProtocol(networkEndpoint, workers.CreatePool("NetworkProtocol"), p) p.NetworkClock = NewNetworkClock(p) From fe7cea0e486c5c219a6bf903161c6d7a06b76651 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 22:26:41 +0100 Subject: [PATCH 246/356] Refactor: introduced subcomponent tracking commitments --- components/debugapi/commitment.go | 6 +- pkg/protocol/chains.go | 128 +++----------------------- pkg/protocol/commitments.go | 121 ++++++++++++++++++++++++ pkg/protocol/engines.go | 2 +- pkg/protocol/protocol.go | 4 +- pkg/protocol/protocol_attestations.go | 8 +- pkg/protocol/protocol_blocks.go | 6 +- pkg/protocol/protocol_commitments.go | 4 +- pkg/protocol/protocol_warp_sync.go | 8 +- pkg/testsuite/chainmanager.go | 2 +- pkg/testsuite/mock/node.go | 2 +- pkg/testsuite/storage_settings.go | 4 +- 12 files changed, 159 insertions(+), 136 deletions(-) create mode 100644 pkg/protocol/commitments.go diff --git a/components/debugapi/commitment.go b/components/debugapi/commitment.go index 4319459c4..98d6c4412 100644 --- a/components/debugapi/commitment.go +++ b/components/debugapi/commitment.go @@ -13,7 +13,7 @@ import ( ) func chainManagerAllChainsDot() (string, error) { - rootCommitment := deps.Protocol.Chains.Main.Get().ForkingPoint.Get() + rootCommitment := deps.Protocol.Chains.Heaviest.Get().ForkingPoint.Get() g := graphviz.New() defer g.Close() @@ -32,7 +32,7 @@ func chainManagerAllChainsDot() (string, error) { } func chainManagerAllChainsRendered() ([]byte, error) { - rootCommitment := deps.Protocol.Chains.Main.Get().ForkingPoint.Get() + rootCommitment := deps.Protocol.Chains.Heaviest.Get().ForkingPoint.Get() g := graphviz.New() defer g.Close() @@ -75,7 +75,7 @@ func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *protocol.Commi return childErr } - if childCommitment.Chain.Get() == deps.Protocol.Chains.Main.Get() { + if childCommitment.Chain.Get() == deps.Protocol.Chains.Heaviest.Get() { child.SetColor("green") } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 430514a1d..c21cc86e8 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -2,12 +2,8 @@ package protocol import ( "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/ds/shrinkingmap" - "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/hive.go/runtime/event" - "github.com/iotaledger/iota-core/pkg/core/promise" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" @@ -16,32 +12,25 @@ import ( type Chains struct { reactive.Set[*Chain] - Main reactive.Variable[*Chain] Heaviest reactive.Variable[*Chain] + HeaviestClaimed reactive.Variable[*Chain] HeaviestAttested reactive.Variable[*Chain] HeaviestVerified reactive.Variable[*Chain] - CommitmentCreated *event.Event1[*Commitment] - ChainCreated *event.Event1[*Chain] - - protocol *Protocol - commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] + protocol *Protocol } func newChains(protocol *Protocol) *Chains { c := &Chains{ - Set: reactive.NewSet[*Chain](), - Main: reactive.NewVariable[*Chain](), - Heaviest: reactive.NewVariable[*Chain](), - HeaviestAttested: reactive.NewVariable[*Chain](), - HeaviestVerified: reactive.NewVariable[*Chain](), - CommitmentCreated: event.New1[*Commitment](), - ChainCreated: event.New1[*Chain](), - protocol: protocol, - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + Set: reactive.NewSet[*Chain](), + Heaviest: reactive.NewVariable[*Chain](), + HeaviestClaimed: reactive.NewVariable[*Chain](), + HeaviestAttested: reactive.NewVariable[*Chain](), + HeaviestVerified: reactive.NewVariable[*Chain](), + protocol: protocol, } - c.Heaviest.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) + c.HeaviestClaimed.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) c.HeaviestAttested.LogUpdates(c.protocol, log.LevelTrace, "Attested Heavier Chain", (*Chain).LogName) protocol.Constructed.OnTrigger(func() { @@ -67,7 +56,7 @@ func newChains(protocol *Protocol) *Chains { trackHeaviestChain(c.HeaviestVerified, (*Chain).verifiedWeight, chain), trackHeaviestChain(c.HeaviestAttested, (*Chain).attestedWeight, chain), - trackHeaviestChain(c.Heaviest, (*Chain).claimedWeight, chain), + trackHeaviestChain(c.HeaviestClaimed, (*Chain).claimedWeight, chain), ) }) @@ -79,43 +68,6 @@ func newChains(protocol *Protocol) *Chains { return c } -func (c *Chains) PublishCommitment(commitment *model.Commitment) (commitmentMetadata *Commitment, published bool, err error) { - request := c.requestCommitment(commitment.ID(), false) - if request.WasRejected() { - return nil, false, ierrors.Wrapf(request.Err(), "failed to request commitment %s", commitment.ID()) - } - - publishedCommitmentMetadata := NewCommitment(commitment, c) - request.Resolve(publishedCommitmentMetadata).OnSuccess(func(resolvedMetadata *Commitment) { - commitmentMetadata = resolvedMetadata - }) - - if published = commitmentMetadata == publishedCommitmentMetadata; published { - commitmentMetadata.LogDebug("created", "id", commitment.ID()) - } - - return commitmentMetadata, commitmentMetadata == publishedCommitmentMetadata, nil -} - -func (c *Chains) Commitment(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { - commitmentRequest, exists := c.commitments.Get(commitmentID) - if !exists && lo.First(requestMissing) { - if commitmentRequest = c.requestCommitment(commitmentID, true); commitmentRequest.WasRejected() { - return nil, ierrors.Wrapf(commitmentRequest.Err(), "failed to request commitment %s", commitmentID) - } - } - - if commitmentRequest == nil || !commitmentRequest.WasCompleted() { - return nil, ErrorCommitmentNotFound - } - - if commitmentRequest.WasRejected() { - return nil, commitmentRequest.Err() - } - - return commitmentRequest.Result(), nil -} - func (c *Chains) initMainChain() { c.protocol.LogDebug("initializing main chain") @@ -126,23 +78,11 @@ func (c *Chains) initMainChain() { mainChain.VerifyState.Set(true) mainChain.Engine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) - c.Main.Set(mainChain) + c.Heaviest.Set(mainChain) c.Add(mainChain) } -func (c *Chains) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { - c.requestCommitment(commitment.PreviousCommitmentID(), true, lo.Void(commitment.Parent.Set)).OnError(func(err error) { - c.protocol.LogDebug("failed to request previous commitment", "prevId", commitment.PreviousCommitmentID(), "error", err) - }) - - slotEvictedEvent.OnTrigger(func() { - commitment.IsEvicted.Trigger() - }) - - c.CommitmentCreated.Trigger(commitment) -} - func (c *Chains) Fork(forkingPoint *Commitment) *Chain { chain := NewChain(c) chain.ForkingPoint.Set(forkingPoint) @@ -153,7 +93,7 @@ func (c *Chains) Fork(forkingPoint *Commitment) *Chain { } func (c *Chains) initChainSwitching() { - c.Heaviest.OnUpdate(func(prevHeaviestChain *Chain, heaviestChain *Chain) { + c.HeaviestClaimed.OnUpdate(func(prevHeaviestChain *Chain, heaviestChain *Chain) { if prevHeaviestChain != nil { prevHeaviestChain.VerifyAttestations.Set(false) } @@ -177,59 +117,19 @@ func (c *Chains) initChainSwitching() { distanceFromForkingPoint := latestVerifiedCommitment.ID().Slot() - forkingPoint.ID().Slot() if distanceFromForkingPoint > c.protocol.Options.ChainSwitchingThreshold { - c.Main.Set(heaviestVerifiedChain) + c.Heaviest.Set(heaviestVerifiedChain) } }) }) } -func (c *Chains) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { - slotEvicted := c.protocol.EvictionEvent(commitmentID.Index()) - if slotEvicted.WasTriggered() && c.protocol.LastEvictedSlot().Get() != 0 { - forkingPoint := c.Main.Get().ForkingPoint.Get() - - if forkingPoint == nil || commitmentID != forkingPoint.ID() { - return promise.New[*Commitment]().Reject(ErrorSlotEvicted) - } - - for _, successCallback := range optSuccessCallbacks { - successCallback(forkingPoint) - } - - return promise.New[*Commitment]().Resolve(forkingPoint) - } - - commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) - if requestCreated { - if requestFromPeers { - c.protocol.CommitmentsProtocol.ticker.StartTicker(commitmentID) - - commitmentRequest.OnComplete(func() { - c.protocol.CommitmentsProtocol.ticker.StopTicker(commitmentID) - }) - } - - commitmentRequest.OnSuccess(func(commitment *Commitment) { - c.setupCommitment(commitment, slotEvicted) - }) - - slotEvicted.OnTrigger(func() { c.commitments.Delete(commitmentID) }) - } - - for _, successCallback := range optSuccessCallbacks { - commitmentRequest.OnSuccess(successCallback) - } - - return commitmentRequest -} - func (c *Chains) publishEngineCommitments(chain *Chain) (unsubscribe func()) { return chain.SpawnedEngine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { var latestPublishedSlot iotago.SlotIndex publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment, published bool) { - publishedCommitment, published, err := c.PublishCommitment(commitment) + publishedCommitment, published, err := c.protocol.Commitments.Publish(commitment) if err != nil { panic(err) // this can never happen, but we panic to get a stack trace if it ever does } diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go new file mode 100644 index 000000000..08cd03a4d --- /dev/null +++ b/pkg/protocol/commitments.go @@ -0,0 +1,121 @@ +package protocol + +import ( + "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/ds/shrinkingmap" + "github.com/iotaledger/hive.go/ierrors" + "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/runtime/event" + "github.com/iotaledger/iota-core/pkg/core/promise" + "github.com/iotaledger/iota-core/pkg/model" + iotago "github.com/iotaledger/iota.go/v4" +) + +type Commitments struct { + reactive.Set[*Commitment] + + CommitmentCreated *event.Event1[*Commitment] + + protocol *Protocol + commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] +} + +func newCommitments(protocol *Protocol) *Commitments { + c := &Commitments{ + Set: reactive.NewSet[*Commitment](), + CommitmentCreated: event.New1[*Commitment](), + protocol: protocol, + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + } + + return c +} + +func (c *Commitments) Publish(commitment *model.Commitment) (commitmentMetadata *Commitment, published bool, err error) { + request := c.requestCommitment(commitment.ID(), false) + if request.WasRejected() { + return nil, false, ierrors.Wrapf(request.Err(), "failed to request commitment %s", commitment.ID()) + } + + publishedCommitmentMetadata := NewCommitment(commitment, c.protocol.Chains) + request.Resolve(publishedCommitmentMetadata).OnSuccess(func(resolvedMetadata *Commitment) { + commitmentMetadata = resolvedMetadata + }) + + if published = commitmentMetadata == publishedCommitmentMetadata; published { + commitmentMetadata.LogDebug("created", "id", commitment.ID()) + } + + return commitmentMetadata, commitmentMetadata == publishedCommitmentMetadata, nil +} + +func (c *Commitments) Get(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { + commitmentRequest, exists := c.commitments.Get(commitmentID) + if !exists && lo.First(requestMissing) { + if commitmentRequest = c.requestCommitment(commitmentID, true); commitmentRequest.WasRejected() { + return nil, ierrors.Wrapf(commitmentRequest.Err(), "failed to request commitment %s", commitmentID) + } + } + + if commitmentRequest == nil || !commitmentRequest.WasCompleted() { + return nil, ErrorCommitmentNotFound + } + + if commitmentRequest.WasRejected() { + return nil, commitmentRequest.Err() + } + + return commitmentRequest.Result(), nil +} + +func (c *Commitments) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { + slotEvicted := c.protocol.EvictionEvent(commitmentID.Index()) + if slotEvicted.WasTriggered() && c.protocol.LastEvictedSlot().Get() != 0 { + forkingPoint := c.protocol.Chains.Heaviest.Get().ForkingPoint.Get() + + if forkingPoint == nil || commitmentID != forkingPoint.ID() { + return promise.New[*Commitment]().Reject(ErrorSlotEvicted) + } + + for _, successCallback := range optSuccessCallbacks { + successCallback(forkingPoint) + } + + return promise.New[*Commitment]().Resolve(forkingPoint) + } + + commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) + if requestCreated { + if requestFromPeers { + c.protocol.CommitmentsProtocol.ticker.StartTicker(commitmentID) + + commitmentRequest.OnComplete(func() { + c.protocol.CommitmentsProtocol.ticker.StopTicker(commitmentID) + }) + } + + commitmentRequest.OnSuccess(func(commitment *Commitment) { + c.setupCommitment(commitment, slotEvicted) + }) + + slotEvicted.OnTrigger(func() { c.commitments.Delete(commitmentID) }) + } + + for _, successCallback := range optSuccessCallbacks { + commitmentRequest.OnSuccess(successCallback) + } + + return commitmentRequest +} + +func (c *Commitments) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { + c.requestCommitment(commitment.PreviousCommitmentID(), true, lo.Void(commitment.Parent.Set)).OnError(func(err error) { + c.protocol.LogDebug("failed to request previous commitment", "prevId", commitment.PreviousCommitmentID(), "error", err) + }) + + slotEvictedEvent.OnTrigger(func() { + commitment.IsEvicted.Trigger() + }) + + c.CommitmentCreated.Trigger(commitment) +} diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 0597fc092..26287fbb7 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -190,7 +190,7 @@ func (e *Engines) loadEngineInstanceWithStorage(engineAlias string, storage *sto } func (e *Engines) syncMainEngineFromMainChain() (unsubscribe func()) { - return e.protocol.Chains.Main.OnUpdateWithContext(func(_ *Chain, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + return e.protocol.Chains.Heaviest.OnUpdateWithContext(func(_ *Chain, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { unsubscribeOnUpdate(func() func() { return e.Main.InheritFrom(mainChain.SpawnedEngine) }) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index cb8c3c0db..298c2b1a2 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -25,6 +25,8 @@ type Protocol struct { Workers *workerpool.Group Network *core.Protocol NetworkClock *NetworkClock + Commitments *Commitments + Chains *Chains BlocksProtocol *BlocksProtocol CommitmentsProtocol *CommitmentsProtocol AttestationsProtocol *AttestationsProtocol @@ -32,7 +34,6 @@ type Protocol struct { Engines *Engines Options *Options - Chains *Chains *APIProvider reactive.EvictionState[iotago.SlotIndex] @@ -54,6 +55,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.CommitmentsProtocol = NewCommitmentsProtocol(p) p.AttestationsProtocol = NewAttestationsProtocol(p) p.WarpSyncProtocol = NewWarpSyncProtocol(p) + p.Commitments = newCommitments(p) p.Chains = newChains(p) p.Engines = NewEngines(p) p.APIProvider = NewAPIProvider(p) diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index f9ea31923..bdcc2201b 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -53,7 +53,7 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { }) }) - protocol.Chains.CommitmentCreated.Hook(func(commitment *Commitment) { + protocol.Commitments.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.RequestAttestations.OnUpdate(func(_ bool, requestAttestations bool) { if requestAttestations { if commitment.CumulativeWeight() == 0 { @@ -73,7 +73,7 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { a.workerPool.Submit(func() { - commitment, _, err := a.protocol.Chains.PublishCommitment(commitmentModel) + commitment, _, err := a.protocol.Commitments.Publish(commitmentModel) if err != nil { a.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", from, "error", err) @@ -121,7 +121,7 @@ func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment func (a *AttestationsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { a.workerPool.Submit(func() { - commitment, err := a.protocol.Chains.Commitment(commitmentID, false) + commitment, err := a.protocol.Commitments.Get(commitmentID, false) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { a.LogError("failed to load requested commitment", "commitmentID", commitmentID, "fromPeer", from, "err", err) @@ -209,7 +209,7 @@ func (a *AttestationsProtocol) Shutdown() { func (a *AttestationsProtocol) sendRequest(commitmentID iotago.CommitmentID) { a.workerPool.Submit(func() { - if commitment, err := a.protocol.Chains.Commitment(commitmentID, false); err == nil { + if commitment, err := a.protocol.Commitments.Get(commitmentID, false); err == nil { a.protocol.Network.RequestAttestations(commitmentID) a.LogDebug("request", "commitment", commitment.LogName()) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 650635699..78af1c473 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -31,7 +31,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { } protocol.Constructed.OnTrigger(func() { - protocol.Chains.CommitmentCreated.Hook(func(commitment *Commitment) { + protocol.Commitments.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.ReplayDroppedBlocks.OnUpdate(func(_ bool, replayBlocks bool) { if replayBlocks { for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { @@ -51,7 +51,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) }) - protocol.Chains.Main.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { + protocol.Chains.Heaviest.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { unsubscribeOnEngineChange(func() (unsubscribe func()) { return lo.Batch( @@ -84,7 +84,7 @@ func (b *BlocksProtocol) SendResponse(block *model.Block) { func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { b.workerPool.Submit(func() { - commitmentRequest := b.protocol.Chains.requestCommitment(block.ProtocolBlock().Header.SlotCommitmentID, true) + commitmentRequest := b.protocol.Commitments.requestCommitment(block.ProtocolBlock().Header.SlotCommitmentID, true) if commitmentRequest.WasRejected() { b.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID(), "err", commitmentRequest.Err()) diff --git a/pkg/protocol/protocol_commitments.go b/pkg/protocol/protocol_commitments.go index 9fd21f2ed..cbd8010bb 100644 --- a/pkg/protocol/protocol_commitments.go +++ b/pkg/protocol/protocol_commitments.go @@ -51,7 +51,7 @@ func (c *CommitmentsProtocol) SendResponse(commitment *Commitment, to peer.ID) { func (c *CommitmentsProtocol) ProcessResponse(commitmentModel *model.Commitment, from peer.ID) { c.workerPool.Submit(func() { - if commitment, published, err := c.protocol.Chains.PublishCommitment(commitmentModel); err != nil { + if commitment, published, err := c.protocol.Commitments.Publish(commitmentModel); err != nil { c.LogError("failed to process commitment", "fromPeer", from, "err", err) } else if published { c.LogTrace("received response", "commitment", commitment.LogName(), "fromPeer", from) @@ -61,7 +61,7 @@ func (c *CommitmentsProtocol) ProcessResponse(commitmentModel *model.Commitment, func (c *CommitmentsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { c.workerPool.Submit(func() { - commitment, err := c.protocol.Chains.Commitment(commitmentID) + commitment, err := c.protocol.Commitments.Get(commitmentID) if err != nil { logLevel := lo.Cond(ierrors.Is(err, ErrorCommitmentNotFound), log.LevelTrace, log.LevelError) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 27b095535..773707776 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -35,7 +35,7 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { c.ticker.Events.Tick.Hook(c.SendRequest) protocol.Constructed.OnTrigger(func() { - c.protocol.Chains.CommitmentCreated.Hook(func(commitment *Commitment) { + c.protocol.Commitments.CommitmentCreated.Hook(func(commitment *Commitment) { commitment.WarpSyncBlocks.OnUpdate(func(_ bool, warpSyncBlocks bool) { if warpSyncBlocks { c.ticker.StartTicker(commitment.ID()) @@ -51,7 +51,7 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { func (w *WarpSyncProtocol) SendRequest(commitmentID iotago.CommitmentID) { w.workerPool.Submit(func() { - if commitment, err := w.protocol.Chains.Commitment(commitmentID, false); err == nil { + if commitment, err := w.protocol.Commitments.Get(commitmentID, false); err == nil { w.protocol.Network.SendWarpSyncRequest(commitmentID) w.LogDebug("request", "commitment", commitment.LogName()) @@ -69,7 +69,7 @@ func (w *WarpSyncProtocol) SendResponse(commitment *Commitment, blockIDsBySlotCo func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blockIDsBySlotCommitment map[iotago.CommitmentID]iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], transactionIDs iotago.TransactionIDs, mutationProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { w.workerPool.Submit(func() { - commitment, err := w.protocol.Chains.Commitment(commitmentID) + commitment, err := w.protocol.Commitments.Get(commitmentID) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { w.LogError("failed to load commitment for response", "commitmentID", commitmentID, "fromPeer", from, "err", err) @@ -241,7 +241,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo func (w *WarpSyncProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { w.workerPool.Submit(func() { - commitment, err := w.protocol.Chains.Commitment(commitmentID) + commitment, err := w.protocol.Commitments.Get(commitmentID) if err != nil { if !ierrors.Is(err, ErrorCommitmentNotFound) { w.LogError("failed to load commitment for warp-sync request", "commitmentID", commitmentID, "fromPeer", from, "err", err) diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index 0954d7f46..c5c6b22a7 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -10,7 +10,7 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { for _, node := range nodes { t.Eventually(func() error { - chain := node.Protocol.Chains.Main.Get() + chain := node.Protocol.Chains.Heaviest.Get() if chain == nil { return ierrors.Errorf("AssertChainManagerIsSolid: %s: chain is nil", node.Name) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 57d768723..b8a5f44dc 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -161,7 +161,7 @@ func (n *Node) hookEvents() { } }) - n.Protocol.Chains.Main.OnUpdate(func(prevChain *protocol.Chain, newChain *protocol.Chain) { + n.Protocol.Chains.Heaviest.OnUpdate(func(prevChain *protocol.Chain, newChain *protocol.Chain) { if prevChain != nil { n.mainEngineSwitchedCount.Add(1) } diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 6ee042ee5..13ee3dc6a 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -67,7 +67,7 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes } // Make sure the commitment is also available in the ChainManager. - if node.Protocol.Chains.Main.Get().LatestCommitment.Get().ID().Slot() < slot { + if node.Protocol.Chains.Heaviest.Get().LatestCommitment.Get().ID().Slot() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found in ChainManager", node.Name, slot) } @@ -123,7 +123,7 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - actualChainID := node.Protocol.Chains.Main.Get().ForkingPoint.Get().ID() + actualChainID := node.Protocol.Chains.Heaviest.Get().ForkingPoint.Get().ID() if expectedChainID != actualChainID { return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Slot(), actualChainID, actualChainID.Slot()) } From 38700a3f626be1f08897b6ee7a92881f76a1860a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 9 Nov 2023 23:16:42 +0100 Subject: [PATCH 247/356] Refactor: removed CommitmentCreated event --- pkg/protocol/commitments.go | 14 ++++++-------- pkg/protocol/protocol_attestations.go | 4 ++-- pkg/protocol/protocol_blocks.go | 4 ++-- pkg/protocol/protocol_warp_sync.go | 4 ++-- 4 files changed, 12 insertions(+), 14 deletions(-) diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 08cd03a4d..4e0c4e382 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -5,7 +5,6 @@ import ( "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/iota-core/pkg/core/promise" "github.com/iotaledger/iota-core/pkg/model" iotago "github.com/iotaledger/iota.go/v4" @@ -14,18 +13,15 @@ import ( type Commitments struct { reactive.Set[*Commitment] - CommitmentCreated *event.Event1[*Commitment] - protocol *Protocol commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] } func newCommitments(protocol *Protocol) *Commitments { c := &Commitments{ - Set: reactive.NewSet[*Commitment](), - CommitmentCreated: event.New1[*Commitment](), - protocol: protocol, - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + Set: reactive.NewSet[*Commitment](), + protocol: protocol, + commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), } return c @@ -44,6 +40,8 @@ func (c *Commitments) Publish(commitment *model.Commitment) (commitmentMetadata if published = commitmentMetadata == publishedCommitmentMetadata; published { commitmentMetadata.LogDebug("created", "id", commitment.ID()) + + c.Add(commitmentMetadata) } return commitmentMetadata, commitmentMetadata == publishedCommitmentMetadata, nil @@ -117,5 +115,5 @@ func (c *Commitments) setupCommitment(commitment *Commitment, slotEvictedEvent r commitment.IsEvicted.Trigger() }) - c.CommitmentCreated.Trigger(commitment) + c.Add(commitment) } diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index bdcc2201b..580438083 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -53,8 +53,8 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { }) }) - protocol.Commitments.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.RequestAttestations.OnUpdate(func(_ bool, requestAttestations bool) { + protocol.Commitments.WithElements(func(commitment *Commitment) (teardown func()) { + return commitment.RequestAttestations.OnUpdate(func(_ bool, requestAttestations bool) { if requestAttestations { if commitment.CumulativeWeight() == 0 { commitment.IsAttested.Set(true) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 78af1c473..89ec03e28 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -31,8 +31,8 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { } protocol.Constructed.OnTrigger(func() { - protocol.Commitments.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.ReplayDroppedBlocks.OnUpdate(func(_ bool, replayBlocks bool) { + protocol.Commitments.WithElements(func(commitment *Commitment) (teardown func()) { + return commitment.ReplayDroppedBlocks.OnUpdate(func(_ bool, replayBlocks bool) { if replayBlocks { for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { b.LogTrace("replaying dropped block", "commitmentID", commitment.ID(), "blockID", droppedBlock.A.ID()) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 773707776..36941e4bd 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -35,8 +35,8 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { c.ticker.Events.Tick.Hook(c.SendRequest) protocol.Constructed.OnTrigger(func() { - c.protocol.Commitments.CommitmentCreated.Hook(func(commitment *Commitment) { - commitment.WarpSyncBlocks.OnUpdate(func(_ bool, warpSyncBlocks bool) { + c.protocol.Commitments.WithElements(func(commitment *Commitment) (teardown func()) { + return commitment.WarpSyncBlocks.OnUpdate(func(_ bool, warpSyncBlocks bool) { if warpSyncBlocks { c.ticker.StartTicker(commitment.ID()) } else { From 577aa2de1f404baa2b6ab617e4560bb1f4d37362 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 10 Nov 2023 00:11:44 +0100 Subject: [PATCH 248/356] Feat: go mod tidy --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index 5ce1d63b3..657174126 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ require ( github.com/iotaledger/hive.go/ierrors v0.0.0-20231109195003-91f206338890 github.com/iotaledger/hive.go/kvstore v0.0.0-20231109195003-91f206338890 github.com/iotaledger/hive.go/lo v0.0.0-20231109195003-91f206338890 + github.com/iotaledger/hive.go/log v0.0.0-20231109195003-91f206338890 github.com/iotaledger/hive.go/logger v0.0.0-20231109195003-91f206338890 github.com/iotaledger/hive.go/runtime v0.0.0-20231109195003-91f206338890 github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109195003-91f206338890 @@ -89,7 +90,6 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231109195003-91f206338890 // indirect github.com/ipfs/boxo v0.13.1 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect From c509f882e09513395e81ddf3af374ab92931f019 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 10 Nov 2023 03:42:19 +0100 Subject: [PATCH 249/356] Feat: introduced blocktowarpsync --- pkg/protocol/chain.go | 19 +++++++++++++++---- pkg/protocol/commitment.go | 15 ++++++++------- pkg/protocol/commitments.go | 4 +++- pkg/protocol/protocol_warp_sync.go | 26 +++++++++++++++----------- 4 files changed, 41 insertions(+), 23 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index db218ea1b..407ae6e14 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -253,13 +253,24 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { } for _, chain := range append([]*Chain{c}, c.ChildChains.ToSlice()...) { - if chain.VerifyState.Get() { - if targetEngine := chain.Engine.Get(); targetEngine != nil && !chain.WarpSync.Get() || targetEngine.BlockRequester.HasTicker(block.ID()) { - targetEngine.ProcessBlockFromPeer(block, src) + if !chain.VerifyState.Get() { + continue + } - success = true + targetEngine := chain.Engine.Get() + if targetEngine == nil { + continue + } else if issuingTime := block.ProtocolBlock().Header.IssuingTime; chain.WarpSync.Get() { + if targetCommitment, exists := chain.Commitment(targetEngine.APIForTime(issuingTime).TimeProvider().SlotFromTime(issuingTime)); !exists { + continue + } else if blocksToWarpSync := targetCommitment.BlocksToWarpSync.Get(); blocksToWarpSync == nil || !blocksToWarpSync.Has(block.ID()) { + continue } } + + targetEngine.ProcessBlockFromPeer(block, src) + + success = true } return success diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index c3b06b0cb..030989486 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -3,11 +3,13 @@ package protocol import ( "fmt" + "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" + iotago "github.com/iotaledger/iota.go/v4" ) type Commitment struct { @@ -16,8 +18,8 @@ type Commitment struct { MainChild reactive.Variable[*Commitment] Chain reactive.Variable[*Chain] RequestAttestations reactive.Variable[bool] - WarpSyncBlocks reactive.Variable[bool] - RequestedBlocksReceived reactive.Variable[bool] + RequestBlocksToWarpSync reactive.Variable[bool] + BlocksToWarpSync reactive.Variable[ds.Set[iotago.BlockID]] Weight reactive.Variable[uint64] AttestedWeight reactive.Variable[uint64] CumulativeAttestedWeight reactive.Variable[uint64] @@ -41,8 +43,8 @@ func NewCommitment(commitment *model.Commitment, chains *Chains) *Commitment { MainChild: reactive.NewVariable[*Commitment](), Chain: reactive.NewVariable[*Chain](), RequestAttestations: reactive.NewVariable[bool](), - WarpSyncBlocks: reactive.NewVariable[bool](), - RequestedBlocksReceived: reactive.NewVariable[bool](), + RequestBlocksToWarpSync: reactive.NewVariable[bool](), + BlocksToWarpSync: reactive.NewVariable[ds.Set[iotago.BlockID]](), Weight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](func(currentValue uint64, newValue uint64) uint64 { return max(currentValue, newValue) }), CumulativeAttestedWeight: reactive.NewVariable[uint64](), @@ -74,8 +76,7 @@ func (c *Commitment) initLogging(chains *Chains) (self *Commitment) { c.MainChild.LogUpdates(c, log.LevelTrace, "MainChild", (*Commitment).LogName), c.Chain.LogUpdates(c, log.LevelTrace, "Chain", (*Chain).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), - c.WarpSyncBlocks.LogUpdates(c, log.LevelTrace, "WarpSyncBlocks"), - c.RequestedBlocksReceived.LogUpdates(c, log.LevelTrace, "RequestedBlocksReceived"), + c.RequestBlocksToWarpSync.LogUpdates(c, log.LevelTrace, "RequestBlocksToWarpSync"), c.Weight.LogUpdates(c, log.LevelTrace, "Weight"), c.AttestedWeight.LogUpdates(c, log.LevelTrace, "AttestedWeight"), c.CumulativeAttestedWeight.LogUpdates(c, log.LevelTrace, "CumulativeAttestedWeight"), @@ -142,7 +143,7 @@ func (c *Commitment) initBehavior(chains *Chains) (self *Commitment) { return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment)), - c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync bool, parentIsVerified bool, isVerified bool) bool { + c.RequestBlocksToWarpSync.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync bool, parentIsVerified bool, isVerified bool) bool { return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified)), diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 4e0c4e382..cc098f014 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -41,7 +41,9 @@ func (c *Commitments) Publish(commitment *model.Commitment) (commitmentMetadata if published = commitmentMetadata == publishedCommitmentMetadata; published { commitmentMetadata.LogDebug("created", "id", commitment.ID()) - c.Add(commitmentMetadata) + if c.Add(commitmentMetadata) { + commitmentMetadata.IsEvicted.OnTrigger(func() { c.Delete(commitmentMetadata) }) + } } return commitmentMetadata, commitmentMetadata == publishedCommitmentMetadata, nil diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 36941e4bd..be4fab64d 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -7,6 +7,7 @@ import ( "github.com/iotaledger/hive.go/ads" "github.com/iotaledger/hive.go/core/eventticker" + "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore/mapdb" "github.com/iotaledger/hive.go/lo" @@ -36,7 +37,7 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { protocol.Constructed.OnTrigger(func() { c.protocol.Commitments.WithElements(func(commitment *Commitment) (teardown func()) { - return commitment.WarpSyncBlocks.OnUpdate(func(_ bool, warpSyncBlocks bool) { + return commitment.RequestBlocksToWarpSync.OnUpdate(func(_ bool, warpSyncBlocks bool) { if warpSyncBlocks { c.ticker.StartTicker(commitment.ID()) } else { @@ -100,11 +101,11 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } - commitment.RequestedBlocksReceived.Compute(func(requestedBlocksReceived bool) bool { - if requestedBlocksReceived || !commitment.WarpSyncBlocks.Get() { + commitment.BlocksToWarpSync.Compute(func(blocksToWarpSync ds.Set[iotago.BlockID]) ds.Set[iotago.BlockID] { + if blocksToWarpSync != nil || !commitment.RequestBlocksToWarpSync.Get() { w.LogTrace("response for already synced commitment", "commitment", commitment.LogName(), "fromPeer", from) - return requestedBlocksReceived + return blocksToWarpSync } totalBlocks := uint32(0) @@ -120,7 +121,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo if !iotago.VerifyProof(proof, acceptedBlocks.Root(), commitment.RootsID()) { w.LogError("failed to verify blocks proof", "commitment", commitment.LogName(), "blockIDs", blockIDsBySlotCommitment, "proof", proof, "fromPeer", from) - return false + return blocksToWarpSync } acceptedTransactionIDs := ads.NewSet[iotago.Identifier](mapdb.NewMapDB(), iotago.Identifier.Bytes, iotago.IdentifierFromBytes, iotago.TransactionID.Bytes, iotago.TransactionIDFromBytes) @@ -131,7 +132,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo if !iotago.VerifyProof(mutationProof, acceptedTransactionIDs.Root(), commitment.RootsID()) { w.LogError("failed to verify mutations proof", "commitment", commitment.LogName(), "transactionIDs", transactionIDs, "proof", mutationProof, "fromPeer", from) - return false + return blocksToWarpSync } w.ticker.StopTicker(commitmentID) @@ -141,12 +142,12 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo if !chain.WarpSync.Get() { w.LogTrace("response for chain without warp-sync", "chain", chain.LogName(), "fromPeer", from) - return false + return blocksToWarpSync } // make sure the engine is clean and requires a warp-sync before we start processing the blocks if targetEngine.Workers.WaitChildren(); targetEngine.Storage.Settings().LatestCommitment().ID().Slot() > commitmentID.Slot() { - return true + return blocksToWarpSync } targetEngine.Reset() @@ -174,10 +175,10 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } } - if len(blockIDsBySlotCommitment) == 0 { + if totalBlocks == 0 { forceCommitmentFunc() - return true + return blocksToWarpSync } blockBookedFunc := func(_ bool, _ bool) { @@ -212,8 +213,11 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } } + blocksToWarpSync = ds.NewSet[iotago.BlockID]() for slotCommitmentID, blockIDs := range blockIDsBySlotCommitment { for _, blockID := range blockIDs { + blocksToWarpSync.Add(blockID) + w.LogError("requesting block", "blockID", blockID) block, _ := targetEngine.BlockDAG.GetOrRequestBlock(blockID) @@ -234,7 +238,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo w.LogDebug("received response", "commitment", commitment.LogName()) - return true + return blocksToWarpSync }) }) } From cb3aff909f1d2ff07edae88860a7757c91c4aeb1 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 10 Nov 2023 04:22:00 +0100 Subject: [PATCH 250/356] Refactor: refactor chains --- pkg/protocol/chain.go | 114 ++++++++++++++++++----------------------- pkg/protocol/chains.go | 68 +++++++++++------------- 2 files changed, 82 insertions(+), 100 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 407ae6e14..b56bf046b 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -140,6 +140,57 @@ func NewChain(chains *Chains) *Chain { return c } +func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { + for currentChain := c; currentChain != nil; { + switch forkingPoint := currentChain.ForkingPoint.Get(); { + case forkingPoint == nil: + return nil, false // this should never happen, but we can handle it gracefully anyway + case forkingPoint.Slot() == slot: + return forkingPoint, true + case slot > forkingPoint.Slot(): + return currentChain.commitments.Get(slot) + default: + parent := forkingPoint.Parent.Get() + if parent == nil { + return nil, false + } + + currentChain = parent.Chain.Get() + } + } + + return nil, false +} + +func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { + if c == nil { + return false + } + + for _, chain := range append([]*Chain{c}, c.ChildChains.ToSlice()...) { + if !chain.VerifyState.Get() { + continue + } + + targetEngine := chain.Engine.Get() + if targetEngine == nil { + continue + } else if issuingTime := block.ProtocolBlock().Header.IssuingTime; chain.WarpSync.Get() { + if targetCommitment, exists := chain.Commitment(targetEngine.APIForTime(issuingTime).TimeProvider().SlotFromTime(issuingTime)); !exists { + continue + } else if blocksToWarpSync := targetCommitment.BlocksToWarpSync.Get(); blocksToWarpSync == nil || !blocksToWarpSync.Has(block.ID()) { + continue + } + } + + targetEngine.ProcessBlockFromPeer(block, src) + + success = true + } + + return success +} + func (c *Chain) initClaimedWeight() { c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, c *Commitment) uint64 { if c == nil { @@ -225,57 +276,6 @@ func (c *Chain) initEngine() { }, true) } -func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { - for currentChain := c; currentChain != nil; { - switch forkingPoint := currentChain.ForkingPoint.Get(); { - case forkingPoint == nil: - return nil, false // this should never happen, but we can handle it gracefully anyway - case forkingPoint.Slot() == slot: - return forkingPoint, true - case slot > forkingPoint.Slot(): - return currentChain.commitments.Get(slot) - default: - parent := forkingPoint.Parent.Get() - if parent == nil { - return nil, false - } - - currentChain = parent.Chain.Get() - } - } - - return nil, false -} - -func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { - if c == nil { - return false - } - - for _, chain := range append([]*Chain{c}, c.ChildChains.ToSlice()...) { - if !chain.VerifyState.Get() { - continue - } - - targetEngine := chain.Engine.Get() - if targetEngine == nil { - continue - } else if issuingTime := block.ProtocolBlock().Header.IssuingTime; chain.WarpSync.Get() { - if targetCommitment, exists := chain.Commitment(targetEngine.APIForTime(issuingTime).TimeProvider().SlotFromTime(issuingTime)); !exists { - continue - } else if blocksToWarpSync := targetCommitment.BlocksToWarpSync.Get(); blocksToWarpSync == nil || !blocksToWarpSync.Has(block.ID()) { - continue - } - } - - targetEngine.ProcessBlockFromPeer(block, src) - - success = true - } - - return success -} - func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { if c.commitments.Compute(commitment.Slot(), func(currentCommitment *Commitment, exists bool) *Commitment { if !exists { @@ -323,15 +323,3 @@ func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { c.LatestVerifiedCommitment.Compute(resetToParent) } } - -func (c *Chain) claimedWeight() reactive.Variable[uint64] { - return c.ClaimedWeight -} - -func (c *Chain) attestedWeight() reactive.Variable[uint64] { - return c.AttestedWeight -} - -func (c *Chain) verifiedWeight() reactive.Variable[uint64] { - return c.VerifiedWeight -} diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index c21cc86e8..18572bfd2 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -33,48 +33,51 @@ func newChains(protocol *Protocol) *Chains { c.HeaviestClaimed.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) c.HeaviestAttested.LogUpdates(c.protocol, log.LevelTrace, "Attested Heavier Chain", (*Chain).LogName) - protocol.Constructed.OnTrigger(func() { - trackHeaviestChain := func(chainVariable reactive.Variable[*Chain], getWeightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { - return getWeightVariable(candidate).OnUpdate(func(_ uint64, newChainWeight uint64) { - if heaviestChain := c.HeaviestVerified.Get(); heaviestChain != nil && newChainWeight < heaviestChain.VerifiedWeight.Get() { - return - } - - chainVariable.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newChainWeight > getWeightVariable(currentCandidate).Get() { - return candidate - } + trackHeaviestChain := func(targetWeight reactive.Variable[*Chain], weight func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { + return weight(candidate).OnUpdate(func(_ uint64, newWeight uint64) { + if heaviestChain := c.HeaviestVerified.Get(); heaviestChain != nil && newWeight < heaviestChain.VerifiedWeight.Get() { + return + } - return currentCandidate - }) - }, true) - } + targetWeight.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newWeight > weight(currentCandidate).Get() { + return candidate + } - c.WithElements(func(chain *Chain) (teardown func()) { - return lo.Batch( - c.publishEngineCommitments(chain), + return currentCandidate + }) + }, true) + } - trackHeaviestChain(c.HeaviestVerified, (*Chain).verifiedWeight, chain), - trackHeaviestChain(c.HeaviestAttested, (*Chain).attestedWeight, chain), - trackHeaviestChain(c.HeaviestClaimed, (*Chain).claimedWeight, chain), - ) - }) + c.WithElements(func(chain *Chain) (teardown func()) { + return lo.Batch( + c.publishEngineCommitments(chain), - c.initChainSwitching() + trackHeaviestChain(c.HeaviestVerified, func(chain *Chain) reactive.Variable[uint64] { return chain.VerifiedWeight }, chain), + trackHeaviestChain(c.HeaviestAttested, func(chain *Chain) reactive.Variable[uint64] { return chain.AttestedWeight }, chain), + trackHeaviestChain(c.HeaviestClaimed, func(chain *Chain) reactive.Variable[uint64] { return chain.ClaimedWeight }, chain), + ) }) + c.initChainSwitching() c.initMainChain() return c } -func (c *Chains) initMainChain() { - c.protocol.LogDebug("initializing main chain") +func (c *Chains) Fork(forkingPoint *Commitment) *Chain { + chain := NewChain(c) + chain.ForkingPoint.Set(forkingPoint) - mainChain := NewChain(c) + c.Add(chain) + + return chain +} - //c.protocol.LogDebug("new chain created", "name", mainChain.LogName(), "forkingPoint", "") +func (c *Chains) initMainChain() { + c.protocol.LogTrace("initializing main chain") + mainChain := NewChain(c) mainChain.VerifyState.Set(true) mainChain.Engine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) @@ -83,15 +86,6 @@ func (c *Chains) initMainChain() { c.Add(mainChain) } -func (c *Chains) Fork(forkingPoint *Commitment) *Chain { - chain := NewChain(c) - chain.ForkingPoint.Set(forkingPoint) - - c.Add(chain) - - return chain -} - func (c *Chains) initChainSwitching() { c.HeaviestClaimed.OnUpdate(func(prevHeaviestChain *Chain, heaviestChain *Chain) { if prevHeaviestChain != nil { From 74f70a2bf129edcc8266117b5c2f6120c4f3f61f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 10 Nov 2023 06:03:29 +0100 Subject: [PATCH 251/356] Refactor: started cleaning up chain --- go.mod | 28 ++++---- go.sum | 56 ++++++++-------- pkg/protocol/chain.go | 117 ++++++++++++++++++---------------- tools/gendoc/go.mod | 28 ++++---- tools/gendoc/go.sum | 56 ++++++++-------- tools/genesis-snapshot/go.mod | 24 +++---- tools/genesis-snapshot/go.sum | 48 +++++++------- 7 files changed, 183 insertions(+), 174 deletions(-) diff --git a/go.mod b/go.mod index 83562dcf4..7b5d071ea 100644 --- a/go.mod +++ b/go.mod @@ -10,20 +10,20 @@ require ( github.com/google/uuid v1.4.0 github.com/gorilla/websocket v1.5.0 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/app v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/constraints v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/crypto v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/ds v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/kvstore v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/lo v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/log v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/logger v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/runtime v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/stringify v0.0.0-20231109235725-f1737f5f8556 + github.com/iotaledger/hive.go/ads v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/app v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/constraints v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231110044001-59e985668279 + github.com/iotaledger/hive.go/crypto v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/ds v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/kvstore v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/lo v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/log v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/logger v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/runtime v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231110044001-59e985668279 + github.com/iotaledger/hive.go/stringify v0.0.0-20231110044001-59e985668279 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a diff --git a/go.sum b/go.sum index d1276186e..b7bc68b18 100644 --- a/go.sum +++ b/go.sum @@ -275,34 +275,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231109235725-f1737f5f8556 h1:avgCil1SmzE6sYIiHRai25wKTYHWVJHgFufivcWIAtE= -github.com/iotaledger/hive.go/ads v0.0.0-20231109235725-f1737f5f8556/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231109235725-f1737f5f8556 h1:buC+mA2y4nzk/rRTt7Vc12LR8utyc6dFWVIOLeR6+gg= -github.com/iotaledger/hive.go/app v0.0.0-20231109235725-f1737f5f8556/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= -github.com/iotaledger/hive.go/constraints v0.0.0-20231109235725-f1737f5f8556 h1:sjtxqrUFynRXGqY1Y1SvdBnT3YWyXouElQQVEUKaVbo= -github.com/iotaledger/hive.go/constraints v0.0.0-20231109235725-f1737f5f8556/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109235725-f1737f5f8556 h1:GNvUlt/43dgTt4WdiiQLVml6PghAO5taFpZrKFQsVgU= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109235725-f1737f5f8556/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231109235725-f1737f5f8556 h1:/B0z+DSHu6i0ZjDiIqMrHGzOuhKxyPhAnXX0cakU5EM= -github.com/iotaledger/hive.go/crypto v0.0.0-20231109235725-f1737f5f8556/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231109235725-f1737f5f8556 h1:HPiD85eV0pMH4s8Xkdf1Z7PTtikwogQZ2DTQPYrdKzA= -github.com/iotaledger/hive.go/ds v0.0.0-20231109235725-f1737f5f8556/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231109235725-f1737f5f8556 h1:NfP5pmvmapQSHT3MObcUYDOF9XyTzUbUZjOg/VD1xgE= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231109235725-f1737f5f8556/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231109235725-f1737f5f8556 h1:qyFLVeR8GmHcSodProR9jFr9aPSMO5jyxscovr+AAIs= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231109235725-f1737f5f8556/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231109235725-f1737f5f8556 h1:uhmjuBI54e1+3qOKkJkpM8I+GWxCvhoLY1UkS29OsOk= -github.com/iotaledger/hive.go/lo v0.0.0-20231109235725-f1737f5f8556/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231109235725-f1737f5f8556 h1:tNo/g17uLXfrb6Cx7k22XVwr0nJIagbTcLuwzrYbRA4= -github.com/iotaledger/hive.go/log v0.0.0-20231109235725-f1737f5f8556/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231109235725-f1737f5f8556 h1:b2n6xzQrjvPYQAY++PcAA4HDnaDP1jhRN7m0AewkJLw= -github.com/iotaledger/hive.go/logger v0.0.0-20231109235725-f1737f5f8556/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231109235725-f1737f5f8556 h1:sJ+AYyyb1kuplGQ8zPomcKl72L8UevMmtAhN+vwW7s8= -github.com/iotaledger/hive.go/runtime v0.0.0-20231109235725-f1737f5f8556/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109235725-f1737f5f8556 h1:2OthaNRTc80ama64VaWNghgPfvetl/6g0/fNhrZtolY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109235725-f1737f5f8556/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231109235725-f1737f5f8556 h1:UPucU6yF6p4lHMjgNcuZhx3mDyPemmqvj1Y/owarvSk= -github.com/iotaledger/hive.go/stringify v0.0.0-20231109235725-f1737f5f8556/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231110044001-59e985668279 h1:TZ0ULSxgQmc7IPtEMHnqmnmXRvPVlEpoA2RxPRKzujs= +github.com/iotaledger/hive.go/ads v0.0.0-20231110044001-59e985668279/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/app v0.0.0-20231110044001-59e985668279 h1:W5174y3TdMi899bxoOR6CoHlm5O2hHGxaJtpfhzooOc= +github.com/iotaledger/hive.go/app v0.0.0-20231110044001-59e985668279/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/constraints v0.0.0-20231110044001-59e985668279 h1:nLzbjOmPpd7SYvoWBLRExIlfWqe+zXATB7nh7mgjfOU= +github.com/iotaledger/hive.go/constraints v0.0.0-20231110044001-59e985668279/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231110044001-59e985668279 h1:1xcxEtzk7Dd1TvFnbqVYR+GkrUtZ1dPBwAac+p12n3k= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231110044001-59e985668279/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231110044001-59e985668279 h1:1KGKL2CdBIvBs2xsBnSNemQvj68UBoB2anHGqHWYCl8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231110044001-59e985668279/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231110044001-59e985668279 h1:mO+AjEBn8SaFlK/YwibWVxt02hfGICYvxUJaoaqUcA4= +github.com/iotaledger/hive.go/ds v0.0.0-20231110044001-59e985668279/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231110044001-59e985668279 h1:CiASym4RciQkxW3nUYnYwDuKEwCDkfSObRS6X01BuIk= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231110044001-59e985668279/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231110044001-59e985668279 h1:Vf1gt7d+s6Fvzpi53fFfoyRnHcgAoBOBV84XhqXCmso= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231110044001-59e985668279/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231110044001-59e985668279 h1:i6uW8bR5OXDAoof14POU7XnSWZe/9nZwZAjiqcxTnxw= +github.com/iotaledger/hive.go/lo v0.0.0-20231110044001-59e985668279/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231110044001-59e985668279 h1:ZkZpB2+mHWr++g2LR8K5wJ4YvAT0zERtINZYHJ55Qs4= +github.com/iotaledger/hive.go/log v0.0.0-20231110044001-59e985668279/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231110044001-59e985668279 h1:uZ0YWK4aVZ64jLxlgJ9FoHk+Bd/acVQcbadzk+R5UeA= +github.com/iotaledger/hive.go/logger v0.0.0-20231110044001-59e985668279/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231110044001-59e985668279 h1:cgYqMbwy6svM53UslFh1WiSHXlwZWBr3r9WqbCIPxDU= +github.com/iotaledger/hive.go/runtime v0.0.0-20231110044001-59e985668279/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231110044001-59e985668279 h1:kxz/tJSNCJ4kVZ+Bp+LqRTW3e2ccpow8vfh4cmpvOM4= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231110044001-59e985668279/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231110044001-59e985668279 h1:OQaLf+3nWwS2CEdpLvYoZUmttw8xUMlfLwN7w470lPA= +github.com/iotaledger/hive.go/stringify v0.0.0-20231110044001-59e985668279/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 h1:FdM1lxUKgENO3oOlF5blVqmjER44mLIHGpavyUOY5JI= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82/go.mod h1:HVxkGPraMDTRudfG9AFN7Ga9gijp6skXB9TKNBc4KgI= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 h1:KkC0SaWrjSMg897r2DDosJYALFfLadFST3Fvoaxg7hw= diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index b56bf046b..e5120865c 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -17,7 +17,6 @@ import ( type Chain struct { ForkingPoint reactive.Variable[*Commitment] - ParentChain reactive.Variable[*Chain] ChildChains reactive.Set[*Chain] LatestCommitment reactive.Variable[*Commitment] LatestAttestedCommitment reactive.Variable[*Commitment] @@ -42,9 +41,8 @@ type Chain struct { } func NewChain(chains *Chains) *Chain { - c := &Chain{ + c := (&Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), - ParentChain: reactive.NewVariable[*Chain](), ChildChains: reactive.NewSet[*Chain](), LatestCommitment: reactive.NewVariable[*Commitment](), LatestAttestedCommitment: reactive.NewVariable[*Commitment](), @@ -63,30 +61,11 @@ func NewChain(chains *Chains) *Chain { commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), VerifyState: reactive.NewVariable[bool](), SpawnedEngine: reactive.NewVariable[*engine.Engine](), - } - - c.Logger, _ = chains.protocol.NewEntityLogger("Chain") - c.LogDebug("created") - - c.WarpSync.LogUpdates(c, log.LevelTrace, "WarpSync") - c.NetworkClockSlot.LogUpdates(c, log.LevelTrace, "NetworkClockSlot") - c.WarpSyncThreshold.LogUpdates(c, log.LevelTrace, "WarpSyncThreshold") - c.OutOfSyncThreshold.LogUpdates(c, log.LevelTrace, "OutOfSyncThreshold") - c.ForkingPoint.LogUpdates(c, log.LevelTrace, "ForkingPoint", (*Commitment).LogName) - c.ClaimedWeight.LogUpdates(c, log.LevelTrace, "ClaimedWeight") - c.AttestedWeight.LogUpdates(c, log.LevelTrace, "AttestedWeight") - c.VerifiedWeight.LogUpdates(c, log.LevelTrace, "VerifiedWeight") - c.LatestCommitment.LogUpdates(c, log.LevelTrace, "LatestCommitment", (*Commitment).LogName) - c.LatestVerifiedCommitment.LogUpdates(c, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName) - c.VerifyAttestations.LogUpdates(c, log.LevelTrace, "VerifyAttestations") - c.VerifyState.LogUpdates(c, log.LevelDebug, "VerifyState") - c.SpawnedEngine.LogUpdates(c, log.LevelDebug, "SpawnedEngine", (*engine.Engine).LogName) - c.IsEvicted.LogUpdates(c, log.LevelDebug, "IsEvicted") + }).initLogging(chains) c.initClaimedWeight() c.initAttestedWeight() c.initVerifiedWeight() - c.initEngine() c.initWarpSync() chains.protocol.NetworkClock.OnUpdate(func(_ time.Time, now time.Time) { @@ -117,22 +96,32 @@ func NewChain(chains *Chains) *Chain { } }) - c.ParentChain.OnUpdate(func(prevParent *Chain, newParent *Chain) { - if prevParent != nil { - prevParent.ChildChains.Delete(c) + c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (teardown func()) { + if forkingPoint == nil { + return c.Engine.InheritFrom(c.SpawnedEngine) } - if newParent != nil { - newParent.ChildChains.Add(c) - } - }) + return forkingPoint.Parent.WithValue(func(parent *Commitment) (teardown func()) { + if parent == nil { + return c.Engine.InheritFrom(c.SpawnedEngine) + } - c.ForkingPoint.OnUpdateWithContext(func(_ *Commitment, forkingPoint *Commitment, forkingPointContext func(subscriptionFactory func() (unsubscribe func()))) { - forkingPointContext(func() func() { - return forkingPoint.Parent.OnUpdate(func(_ *Commitment, parent *Commitment) { - forkingPointContext(func() func() { - return c.ParentChain.InheritFrom(parent.Chain) - }) + return parent.Chain.WithValue(func(parentChain *Chain) (teardown func()) { + if parentChain == nil { + return c.Engine.InheritFrom(c.SpawnedEngine) + } + + return lo.Batch( + parentChain.registerChild(c), + + c.Engine.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ *engine.Engine, spawnedEngine *engine.Engine, parentEngine *engine.Engine) *engine.Engine { + if spawnedEngine != nil { + return spawnedEngine + } + + return parentEngine + }, c.SpawnedEngine, parentChain.Engine)), + ) }) }) }) @@ -140,6 +129,36 @@ func NewChain(chains *Chains) *Chain { return c } +func (c *Chain) initLogging(chains *Chains) (self *Chain) { + var shutdownLogger func() + c.Logger, shutdownLogger = chains.protocol.NewEntityLogger("Chain") + + teardownLogging := lo.Batch( + c.Engine.LogUpdates(c, log.LevelError, "Engine", (*engine.Engine).LogName), + c.WarpSync.LogUpdates(c, log.LevelTrace, "WarpSync"), + c.NetworkClockSlot.LogUpdates(c, log.LevelTrace, "NetworkClockSlot"), + c.WarpSyncThreshold.LogUpdates(c, log.LevelTrace, "WarpSyncThreshold"), + c.OutOfSyncThreshold.LogUpdates(c, log.LevelTrace, "OutOfSyncThreshold"), + c.ForkingPoint.LogUpdates(c, log.LevelTrace, "ForkingPoint", (*Commitment).LogName), + c.ClaimedWeight.LogUpdates(c, log.LevelTrace, "ClaimedWeight"), + c.AttestedWeight.LogUpdates(c, log.LevelTrace, "AttestedWeight"), + c.VerifiedWeight.LogUpdates(c, log.LevelTrace, "VerifiedWeight"), + c.LatestCommitment.LogUpdates(c, log.LevelTrace, "LatestCommitment", (*Commitment).LogName), + c.LatestVerifiedCommitment.LogUpdates(c, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName), + c.VerifyAttestations.LogUpdates(c, log.LevelTrace, "VerifyAttestations"), + c.VerifyState.LogUpdates(c, log.LevelDebug, "VerifyState"), + c.SpawnedEngine.LogUpdates(c, log.LevelTrace, "SpawnedEngine", (*engine.Engine).LogName), + c.Engine.LogUpdates(c, log.LevelTrace, "SpawnedEngine", (*engine.Engine).LogName), + c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), + + shutdownLogger, + ) + + c.IsEvicted.OnTrigger(teardownLogging) + + return c +} + func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c; currentChain != nil; { switch forkingPoint := currentChain.ForkingPoint.Get(); { @@ -258,24 +277,6 @@ func (c *Chain) initWarpSync() { }) } -func (c *Chain) initEngine() { - c.ParentChain.OnUpdateWithContext(func(_ *Chain, parentChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { - unsubscribeOnUpdate(func() func() { - if parentChain == nil { - return c.Engine.InheritFrom(c.SpawnedEngine) - } - - return c.Engine.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ *engine.Engine, spawnedEngine *engine.Engine, parentEngine *engine.Engine) *engine.Engine { - if spawnedEngine != nil { - return spawnedEngine - } - - return parentEngine - }, c.SpawnedEngine, parentChain.Engine)) - }) - }, true) -} - func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { if c.commitments.Compute(commitment.Slot(), func(currentCommitment *Commitment, exists bool) *Commitment { if !exists { @@ -323,3 +324,11 @@ func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { c.LatestVerifiedCommitment.Compute(resetToParent) } } + +func (c *Chain) registerChild(child *Chain) (unregisterChild func()) { + c.ChildChains.Add(child) + + return func() { + c.ChildChains.Delete(child) + } +} diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 83f2967b3..3d88531b3 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231109235725-f1737f5f8556 + github.com/iotaledger/hive.go/app v0.0.0-20231110044001-59e985668279 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -56,19 +56,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231109235725-f1737f5f8556 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231110044001-59e985668279 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index c82e7a2e9..8aaf193b9 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -277,36 +277,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231109235725-f1737f5f8556 h1:avgCil1SmzE6sYIiHRai25wKTYHWVJHgFufivcWIAtE= -github.com/iotaledger/hive.go/ads v0.0.0-20231109235725-f1737f5f8556/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231109235725-f1737f5f8556 h1:buC+mA2y4nzk/rRTt7Vc12LR8utyc6dFWVIOLeR6+gg= -github.com/iotaledger/hive.go/app v0.0.0-20231109235725-f1737f5f8556/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/ads v0.0.0-20231110044001-59e985668279 h1:TZ0ULSxgQmc7IPtEMHnqmnmXRvPVlEpoA2RxPRKzujs= +github.com/iotaledger/hive.go/ads v0.0.0-20231110044001-59e985668279/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/app v0.0.0-20231110044001-59e985668279 h1:W5174y3TdMi899bxoOR6CoHlm5O2hHGxaJtpfhzooOc= +github.com/iotaledger/hive.go/app v0.0.0-20231110044001-59e985668279/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231109235725-f1737f5f8556 h1:sjtxqrUFynRXGqY1Y1SvdBnT3YWyXouElQQVEUKaVbo= -github.com/iotaledger/hive.go/constraints v0.0.0-20231109235725-f1737f5f8556/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109235725-f1737f5f8556 h1:GNvUlt/43dgTt4WdiiQLVml6PghAO5taFpZrKFQsVgU= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109235725-f1737f5f8556/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231109235725-f1737f5f8556 h1:/B0z+DSHu6i0ZjDiIqMrHGzOuhKxyPhAnXX0cakU5EM= -github.com/iotaledger/hive.go/crypto v0.0.0-20231109235725-f1737f5f8556/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231109235725-f1737f5f8556 h1:HPiD85eV0pMH4s8Xkdf1Z7PTtikwogQZ2DTQPYrdKzA= -github.com/iotaledger/hive.go/ds v0.0.0-20231109235725-f1737f5f8556/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231109235725-f1737f5f8556 h1:NfP5pmvmapQSHT3MObcUYDOF9XyTzUbUZjOg/VD1xgE= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231109235725-f1737f5f8556/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231109235725-f1737f5f8556 h1:qyFLVeR8GmHcSodProR9jFr9aPSMO5jyxscovr+AAIs= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231109235725-f1737f5f8556/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231109235725-f1737f5f8556 h1:uhmjuBI54e1+3qOKkJkpM8I+GWxCvhoLY1UkS29OsOk= -github.com/iotaledger/hive.go/lo v0.0.0-20231109235725-f1737f5f8556/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231109235725-f1737f5f8556 h1:tNo/g17uLXfrb6Cx7k22XVwr0nJIagbTcLuwzrYbRA4= -github.com/iotaledger/hive.go/log v0.0.0-20231109235725-f1737f5f8556/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231109235725-f1737f5f8556 h1:b2n6xzQrjvPYQAY++PcAA4HDnaDP1jhRN7m0AewkJLw= -github.com/iotaledger/hive.go/logger v0.0.0-20231109235725-f1737f5f8556/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231109235725-f1737f5f8556 h1:sJ+AYyyb1kuplGQ8zPomcKl72L8UevMmtAhN+vwW7s8= -github.com/iotaledger/hive.go/runtime v0.0.0-20231109235725-f1737f5f8556/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109235725-f1737f5f8556 h1:2OthaNRTc80ama64VaWNghgPfvetl/6g0/fNhrZtolY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109235725-f1737f5f8556/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231109235725-f1737f5f8556 h1:UPucU6yF6p4lHMjgNcuZhx3mDyPemmqvj1Y/owarvSk= -github.com/iotaledger/hive.go/stringify v0.0.0-20231109235725-f1737f5f8556/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231110044001-59e985668279 h1:nLzbjOmPpd7SYvoWBLRExIlfWqe+zXATB7nh7mgjfOU= +github.com/iotaledger/hive.go/constraints v0.0.0-20231110044001-59e985668279/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231110044001-59e985668279 h1:1xcxEtzk7Dd1TvFnbqVYR+GkrUtZ1dPBwAac+p12n3k= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231110044001-59e985668279/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231110044001-59e985668279 h1:1KGKL2CdBIvBs2xsBnSNemQvj68UBoB2anHGqHWYCl8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231110044001-59e985668279/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231110044001-59e985668279 h1:mO+AjEBn8SaFlK/YwibWVxt02hfGICYvxUJaoaqUcA4= +github.com/iotaledger/hive.go/ds v0.0.0-20231110044001-59e985668279/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231110044001-59e985668279 h1:CiASym4RciQkxW3nUYnYwDuKEwCDkfSObRS6X01BuIk= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231110044001-59e985668279/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231110044001-59e985668279 h1:Vf1gt7d+s6Fvzpi53fFfoyRnHcgAoBOBV84XhqXCmso= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231110044001-59e985668279/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231110044001-59e985668279 h1:i6uW8bR5OXDAoof14POU7XnSWZe/9nZwZAjiqcxTnxw= +github.com/iotaledger/hive.go/lo v0.0.0-20231110044001-59e985668279/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231110044001-59e985668279 h1:ZkZpB2+mHWr++g2LR8K5wJ4YvAT0zERtINZYHJ55Qs4= +github.com/iotaledger/hive.go/log v0.0.0-20231110044001-59e985668279/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231110044001-59e985668279 h1:uZ0YWK4aVZ64jLxlgJ9FoHk+Bd/acVQcbadzk+R5UeA= +github.com/iotaledger/hive.go/logger v0.0.0-20231110044001-59e985668279/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231110044001-59e985668279 h1:cgYqMbwy6svM53UslFh1WiSHXlwZWBr3r9WqbCIPxDU= +github.com/iotaledger/hive.go/runtime v0.0.0-20231110044001-59e985668279/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231110044001-59e985668279 h1:kxz/tJSNCJ4kVZ+Bp+LqRTW3e2ccpow8vfh4cmpvOM4= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231110044001-59e985668279/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231110044001-59e985668279 h1:OQaLf+3nWwS2CEdpLvYoZUmttw8xUMlfLwN7w470lPA= +github.com/iotaledger/hive.go/stringify v0.0.0-20231110044001-59e985668279/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82 h1:FdM1lxUKgENO3oOlF5blVqmjER44mLIHGpavyUOY5JI= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231108104504-1445f545de82/go.mod h1:HVxkGPraMDTRudfG9AFN7Ga9gijp6skXB9TKNBc4KgI= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231108104322-f301c3573998 h1:KkC0SaWrjSMg897r2DDosJYALFfLadFST3Fvoaxg7hw= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index b7d22be5c..2606862c0 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/lo v0.0.0-20231109235725-f1737f5f8556 - github.com/iotaledger/hive.go/runtime v0.0.0-20231109235725-f1737f5f8556 + github.com/iotaledger/hive.go/crypto v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/lo v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/runtime v0.0.0-20231110044001-59e985668279 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a github.com/mr-tron/base58 v1.2.0 @@ -26,14 +26,14 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109235725-f1737f5f8556 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231109235725-f1737f5f8556 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231110044001-59e985668279 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231110044001-59e985668279 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 7531ffd91..6ce74ac84 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,30 +28,30 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231109235725-f1737f5f8556 h1:avgCil1SmzE6sYIiHRai25wKTYHWVJHgFufivcWIAtE= -github.com/iotaledger/hive.go/ads v0.0.0-20231109235725-f1737f5f8556/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/constraints v0.0.0-20231109235725-f1737f5f8556 h1:sjtxqrUFynRXGqY1Y1SvdBnT3YWyXouElQQVEUKaVbo= -github.com/iotaledger/hive.go/constraints v0.0.0-20231109235725-f1737f5f8556/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109235725-f1737f5f8556 h1:GNvUlt/43dgTt4WdiiQLVml6PghAO5taFpZrKFQsVgU= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231109235725-f1737f5f8556/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231109235725-f1737f5f8556 h1:/B0z+DSHu6i0ZjDiIqMrHGzOuhKxyPhAnXX0cakU5EM= -github.com/iotaledger/hive.go/crypto v0.0.0-20231109235725-f1737f5f8556/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231109235725-f1737f5f8556 h1:HPiD85eV0pMH4s8Xkdf1Z7PTtikwogQZ2DTQPYrdKzA= -github.com/iotaledger/hive.go/ds v0.0.0-20231109235725-f1737f5f8556/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231109235725-f1737f5f8556 h1:NfP5pmvmapQSHT3MObcUYDOF9XyTzUbUZjOg/VD1xgE= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231109235725-f1737f5f8556/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231109235725-f1737f5f8556 h1:qyFLVeR8GmHcSodProR9jFr9aPSMO5jyxscovr+AAIs= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231109235725-f1737f5f8556/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231109235725-f1737f5f8556 h1:uhmjuBI54e1+3qOKkJkpM8I+GWxCvhoLY1UkS29OsOk= -github.com/iotaledger/hive.go/lo v0.0.0-20231109235725-f1737f5f8556/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231109235725-f1737f5f8556 h1:tNo/g17uLXfrb6Cx7k22XVwr0nJIagbTcLuwzrYbRA4= -github.com/iotaledger/hive.go/log v0.0.0-20231109235725-f1737f5f8556/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/runtime v0.0.0-20231109235725-f1737f5f8556 h1:sJ+AYyyb1kuplGQ8zPomcKl72L8UevMmtAhN+vwW7s8= -github.com/iotaledger/hive.go/runtime v0.0.0-20231109235725-f1737f5f8556/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109235725-f1737f5f8556 h1:2OthaNRTc80ama64VaWNghgPfvetl/6g0/fNhrZtolY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231109235725-f1737f5f8556/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231109235725-f1737f5f8556 h1:UPucU6yF6p4lHMjgNcuZhx3mDyPemmqvj1Y/owarvSk= -github.com/iotaledger/hive.go/stringify v0.0.0-20231109235725-f1737f5f8556/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231110044001-59e985668279 h1:TZ0ULSxgQmc7IPtEMHnqmnmXRvPVlEpoA2RxPRKzujs= +github.com/iotaledger/hive.go/ads v0.0.0-20231110044001-59e985668279/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/constraints v0.0.0-20231110044001-59e985668279 h1:nLzbjOmPpd7SYvoWBLRExIlfWqe+zXATB7nh7mgjfOU= +github.com/iotaledger/hive.go/constraints v0.0.0-20231110044001-59e985668279/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231110044001-59e985668279 h1:1xcxEtzk7Dd1TvFnbqVYR+GkrUtZ1dPBwAac+p12n3k= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231110044001-59e985668279/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231110044001-59e985668279 h1:1KGKL2CdBIvBs2xsBnSNemQvj68UBoB2anHGqHWYCl8= +github.com/iotaledger/hive.go/crypto v0.0.0-20231110044001-59e985668279/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231110044001-59e985668279 h1:mO+AjEBn8SaFlK/YwibWVxt02hfGICYvxUJaoaqUcA4= +github.com/iotaledger/hive.go/ds v0.0.0-20231110044001-59e985668279/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231110044001-59e985668279 h1:CiASym4RciQkxW3nUYnYwDuKEwCDkfSObRS6X01BuIk= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231110044001-59e985668279/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231110044001-59e985668279 h1:Vf1gt7d+s6Fvzpi53fFfoyRnHcgAoBOBV84XhqXCmso= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231110044001-59e985668279/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231110044001-59e985668279 h1:i6uW8bR5OXDAoof14POU7XnSWZe/9nZwZAjiqcxTnxw= +github.com/iotaledger/hive.go/lo v0.0.0-20231110044001-59e985668279/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231110044001-59e985668279 h1:ZkZpB2+mHWr++g2LR8K5wJ4YvAT0zERtINZYHJ55Qs4= +github.com/iotaledger/hive.go/log v0.0.0-20231110044001-59e985668279/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/runtime v0.0.0-20231110044001-59e985668279 h1:cgYqMbwy6svM53UslFh1WiSHXlwZWBr3r9WqbCIPxDU= +github.com/iotaledger/hive.go/runtime v0.0.0-20231110044001-59e985668279/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231110044001-59e985668279 h1:kxz/tJSNCJ4kVZ+Bp+LqRTW3e2ccpow8vfh4cmpvOM4= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231110044001-59e985668279/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231110044001-59e985668279 h1:OQaLf+3nWwS2CEdpLvYoZUmttw8xUMlfLwN7w470lPA= +github.com/iotaledger/hive.go/stringify v0.0.0-20231110044001-59e985668279/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a h1:n54B9QtipmN/UXc6uyESQrPGv5uVG/lOIOxKSaLfWpI= github.com/iotaledger/iota.go/v4 v4.0.0-20231108164901-c08a4ff4664a/go.mod h1:Bg7BOs2wO5gw1KQwD0OedG3C2gG6Xls2VGicK9mpLLg= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= From 17776162bb3f1fda00f9ae89c72597ead4e523e6 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 10 Nov 2023 06:05:27 +0100 Subject: [PATCH 252/356] Feat: merge --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index f8a755e8a..7b5d071ea 100644 --- a/go.mod +++ b/go.mod @@ -19,6 +19,7 @@ require ( github.com/iotaledger/hive.go/ierrors v0.0.0-20231110044001-59e985668279 github.com/iotaledger/hive.go/kvstore v0.0.0-20231110044001-59e985668279 github.com/iotaledger/hive.go/lo v0.0.0-20231110044001-59e985668279 + github.com/iotaledger/hive.go/log v0.0.0-20231110044001-59e985668279 github.com/iotaledger/hive.go/logger v0.0.0-20231110044001-59e985668279 github.com/iotaledger/hive.go/runtime v0.0.0-20231110044001-59e985668279 github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231110044001-59e985668279 @@ -89,7 +90,6 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231110044001-59e985668279 // indirect github.com/ipfs/boxo v0.13.1 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/ipfs/go-datastore v0.6.0 // indirect From ae6b0c88355c114ee557f9d37310ea3cc941066e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 10 Nov 2023 14:30:02 +0100 Subject: [PATCH 253/356] Refactor: more cleanup --- components/debugapi/commitment.go | 6 +- pkg/protocol/api_provider.go | 2 +- pkg/protocol/chain.go | 329 +++++++++++++---------------- pkg/protocol/chains.go | 16 +- pkg/protocol/commitment.go | 4 +- pkg/protocol/commitments.go | 2 +- pkg/protocol/engines.go | 2 +- pkg/protocol/protocol.go | 18 +- pkg/protocol/protocol_blocks.go | 2 +- pkg/protocol/protocol_warp_sync.go | 4 +- pkg/testsuite/chainmanager.go | 2 +- pkg/testsuite/mock/node.go | 2 +- pkg/testsuite/storage_settings.go | 4 +- 13 files changed, 171 insertions(+), 222 deletions(-) diff --git a/components/debugapi/commitment.go b/components/debugapi/commitment.go index 98d6c4412..4319459c4 100644 --- a/components/debugapi/commitment.go +++ b/components/debugapi/commitment.go @@ -13,7 +13,7 @@ import ( ) func chainManagerAllChainsDot() (string, error) { - rootCommitment := deps.Protocol.Chains.Heaviest.Get().ForkingPoint.Get() + rootCommitment := deps.Protocol.Chains.Main.Get().ForkingPoint.Get() g := graphviz.New() defer g.Close() @@ -32,7 +32,7 @@ func chainManagerAllChainsDot() (string, error) { } func chainManagerAllChainsRendered() ([]byte, error) { - rootCommitment := deps.Protocol.Chains.Heaviest.Get().ForkingPoint.Get() + rootCommitment := deps.Protocol.Chains.Main.Get().ForkingPoint.Get() g := graphviz.New() defer g.Close() @@ -75,7 +75,7 @@ func prepareCommitmentGraph(g *graphviz.Graphviz, rootCommitment *protocol.Commi return childErr } - if childCommitment.Chain.Get() == deps.Protocol.Chains.Heaviest.Get() { + if childCommitment.Chain.Get() == deps.Protocol.Chains.Main.Get() { child.SetColor("green") } diff --git a/pkg/protocol/api_provider.go b/pkg/protocol/api_provider.go index df8b7cb12..0008bc173 100644 --- a/pkg/protocol/api_provider.go +++ b/pkg/protocol/api_provider.go @@ -21,7 +21,7 @@ func NewAPIProvider(protocol *Protocol) *APIProvider { // APIForVersion returns the API for the given version. func (a *APIProvider) APIForVersion(version iotago.Version) (api iotago.API, err error) { if mainEngineInstance := a.Engines.Main.Get(); mainEngineInstance != nil { - return a.Engines.Main.Get().APIForVersion(version) + return mainEngineInstance.APIForVersion(version) } return nil, ierrors.New("no engine instance available") diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index e5120865c..c2cb1872b 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -9,7 +9,6 @@ import ( "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" @@ -17,116 +16,53 @@ import ( type Chain struct { ForkingPoint reactive.Variable[*Commitment] - ChildChains reactive.Set[*Chain] + Parent reactive.Variable[*Chain] + Children reactive.Set[*Chain] LatestCommitment reactive.Variable[*Commitment] LatestAttestedCommitment reactive.Variable[*Commitment] LatestVerifiedCommitment reactive.Variable[*Commitment] ClaimedWeight reactive.Variable[uint64] AttestedWeight reactive.Variable[uint64] VerifiedWeight reactive.Variable[uint64] - NetworkClockSlot reactive.Variable[iotago.SlotIndex] - WarpSync reactive.Variable[bool] + LatestNetworkSlot reactive.Variable[iotago.SlotIndex] + WarpSyncMode reactive.Variable[bool] WarpSyncThreshold reactive.Variable[iotago.SlotIndex] OutOfSyncThreshold reactive.Variable[iotago.SlotIndex] VerifyAttestations reactive.Variable[bool] VerifyState reactive.Variable[bool] + SpawnedEngine reactive.Variable[*engine.Engine] Engine reactive.Variable[*engine.Engine] IsSolid reactive.Event IsEvicted reactive.Event - commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] - SpawnedEngine reactive.Variable[*engine.Engine] + commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] log.Logger } func NewChain(chains *Chains) *Chain { - c := (&Chain{ + return (&Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), - ChildChains: reactive.NewSet[*Chain](), + Parent: reactive.NewVariable[*Chain](), + Children: reactive.NewSet[*Chain](), LatestCommitment: reactive.NewVariable[*Commitment](), LatestAttestedCommitment: reactive.NewVariable[*Commitment](), LatestVerifiedCommitment: reactive.NewVariable[*Commitment](), ClaimedWeight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](), VerifiedWeight: reactive.NewVariable[uint64](), - WarpSync: reactive.NewVariable[bool]().Init(true), - NetworkClockSlot: reactive.NewVariable[iotago.SlotIndex](), + WarpSyncMode: reactive.NewVariable[bool]().Init(true), + LatestNetworkSlot: reactive.NewVariable[iotago.SlotIndex](), WarpSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), VerifyAttestations: reactive.NewVariable[bool](), + VerifyState: reactive.NewVariable[bool](), + SpawnedEngine: reactive.NewVariable[*engine.Engine](), Engine: reactive.NewVariable[*engine.Engine](), IsEvicted: reactive.NewEvent(), - commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), - VerifyState: reactive.NewVariable[bool](), - SpawnedEngine: reactive.NewVariable[*engine.Engine](), - }).initLogging(chains) - - c.initClaimedWeight() - c.initAttestedWeight() - c.initVerifiedWeight() - c.initWarpSync() - - chains.protocol.NetworkClock.OnUpdate(func(_ time.Time, now time.Time) { - if engineInstance := c.Engine.Get(); engineInstance != nil { - c.NetworkClockSlot.Set(engineInstance.LatestAPI().TimeProvider().SlotFromTime(now)) - } - }) - - c.NetworkClockSlot.OnUpdate(func(_ iotago.SlotIndex, slot iotago.SlotIndex) { - engineInstance := c.Engine.Get() - if engineInstance == nil { - return - } - - warpSyncThresholdOffset := engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge() - outOfSyncThresholdOffset := 2 * warpSyncThresholdOffset - - if warpSyncThresholdOffset > slot { - c.WarpSyncThreshold.Set(0) - } else { - c.WarpSyncThreshold.Set(slot - warpSyncThresholdOffset) - } - - if outOfSyncThresholdOffset > slot { - c.OutOfSyncThreshold.Set(0) - } else { - c.OutOfSyncThreshold.Set(slot - outOfSyncThresholdOffset) - } - }) - - c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (teardown func()) { - if forkingPoint == nil { - return c.Engine.InheritFrom(c.SpawnedEngine) - } - - return forkingPoint.Parent.WithValue(func(parent *Commitment) (teardown func()) { - if parent == nil { - return c.Engine.InheritFrom(c.SpawnedEngine) - } - - return parent.Chain.WithValue(func(parentChain *Chain) (teardown func()) { - if parentChain == nil { - return c.Engine.InheritFrom(c.SpawnedEngine) - } - - return lo.Batch( - parentChain.registerChild(c), - - c.Engine.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ *engine.Engine, spawnedEngine *engine.Engine, parentEngine *engine.Engine) *engine.Engine { - if spawnedEngine != nil { - return spawnedEngine - } - - return parentEngine - }, c.SpawnedEngine, parentChain.Engine)), - ) - }) - }) - }) - - return c + commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), + }).initLogging(chains).initBehavior(chains) } func (c *Chain) initLogging(chains *Chains) (self *Chain) { @@ -134,9 +70,9 @@ func (c *Chain) initLogging(chains *Chains) (self *Chain) { c.Logger, shutdownLogger = chains.protocol.NewEntityLogger("Chain") teardownLogging := lo.Batch( - c.Engine.LogUpdates(c, log.LevelError, "Engine", (*engine.Engine).LogName), - c.WarpSync.LogUpdates(c, log.LevelTrace, "WarpSync"), - c.NetworkClockSlot.LogUpdates(c, log.LevelTrace, "NetworkClockSlot"), + c.Engine.LogUpdates(c, log.LevelTrace, "Engine", (*engine.Engine).LogName), + c.WarpSyncMode.LogUpdates(c, log.LevelTrace, "WarpSyncMode"), + c.LatestNetworkSlot.LogUpdates(c, log.LevelTrace, "LatestNetworkSlot"), c.WarpSyncThreshold.LogUpdates(c, log.LevelTrace, "WarpSyncThreshold"), c.OutOfSyncThreshold.LogUpdates(c, log.LevelTrace, "OutOfSyncThreshold"), c.ForkingPoint.LogUpdates(c, log.LevelTrace, "ForkingPoint", (*Commitment).LogName), @@ -159,164 +95,181 @@ func (c *Chain) initLogging(chains *Chains) (self *Chain) { return c } -func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { - for currentChain := c; currentChain != nil; { - switch forkingPoint := currentChain.ForkingPoint.Get(); { - case forkingPoint == nil: - return nil, false // this should never happen, but we can handle it gracefully anyway - case forkingPoint.Slot() == slot: - return forkingPoint, true - case slot > forkingPoint.Slot(): - return currentChain.commitments.Get(slot) - default: - parent := forkingPoint.Parent.Get() +func (c *Chain) initBehavior(chains *Chains) (self *Chain) { + teardownBehavior := lo.Batch( + c.Parent.WithValue(func(parent *Chain) (teardown func()) { if parent == nil { - return nil, false + return c.Engine.InheritFrom(c.SpawnedEngine) } - currentChain = parent.Chain.Get() - } - } + return lo.Batch( + parent.registerChild(c), - return nil, false -} + c.Engine.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ *engine.Engine, spawnedEngine *engine.Engine, parentEngine *engine.Engine) *engine.Engine { + if spawnedEngine != nil { + return spawnedEngine + } -func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { - if c == nil { - return false - } + return parentEngine + }, c.SpawnedEngine, parent.Engine)), + ) + }), - for _, chain := range append([]*Chain{c}, c.ChildChains.ToSlice()...) { - if !chain.VerifyState.Get() { - continue - } + c.SpawnedEngine.WithNonEmptyValue(func(engine *engine.Engine) (teardown func()) { + return lo.Batch( + c.LatestNetworkSlot.DeriveValueFrom(reactive.NewDerivedVariable(func(latestNetworkSlot iotago.SlotIndex, latestNetworkTime time.Time) iotago.SlotIndex { + return engine.LatestAPI().TimeProvider().SlotFromTime(latestNetworkTime) + }, chains.protocol.NetworkClock)), + + c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestNetworkSlot iotago.SlotIndex) iotago.SlotIndex { + warpSyncOffset := engine.LatestAPI().ProtocolParameters().MaxCommittableAge() + if warpSyncOffset >= latestNetworkSlot { + return 0 + } + + return latestNetworkSlot - warpSyncOffset + }, c.LatestNetworkSlot)), + + c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestNetworkSlot iotago.SlotIndex) iotago.SlotIndex { + outOfSyncOffset := 2 * engine.LatestAPI().ProtocolParameters().MaxCommittableAge() + if outOfSyncOffset >= latestNetworkSlot { + return 0 + } + + return latestNetworkSlot - outOfSyncOffset + }, c.LatestNetworkSlot)), + ) + }), - targetEngine := chain.Engine.Get() - if targetEngine == nil { - continue - } else if issuingTime := block.ProtocolBlock().Header.IssuingTime; chain.WarpSync.Get() { - if targetCommitment, exists := chain.Commitment(targetEngine.APIForTime(issuingTime).TimeProvider().SlotFromTime(issuingTime)); !exists { - continue - } else if blocksToWarpSync := targetCommitment.BlocksToWarpSync.Get(); blocksToWarpSync == nil || !blocksToWarpSync.Has(block.ID()) { - continue + c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (teardown func()) { + if forkingPoint == nil { + c.Parent.Set(nil) + + return func() {} } - } - targetEngine.ProcessBlockFromPeer(block, src) + return forkingPoint.Parent.WithValue(func(parentCommitment *Commitment) (teardown func()) { + if parentCommitment == nil { + c.Parent.Set(nil) - success = true - } + return func() {} + } - return success -} + return c.Parent.InheritFrom(parentCommitment.Chain) + }) + }), -func (c *Chain) initClaimedWeight() { - c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, c *Commitment) uint64 { - if c == nil { - return 0 - } + c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { + if latestCommitment == nil { + return 0 + } - return c.CumulativeWeight() - }, c.LatestCommitment)) -} + return latestCommitment.CumulativeWeight() + }, c.LatestCommitment)), -func (c *Chain) initAttestedWeight() { - c.LatestAttestedCommitment.OnUpdateWithContext(func(_ *Commitment, latestAttestedCommitment *Commitment, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { - if latestAttestedCommitment != nil { - setupInheritance := func() func() { - return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) + c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestVerifiedCommitment *Commitment) uint64 { + if latestVerifiedCommitment == nil { + return 0 } - unsubscribeOnUpdate(setupInheritance) - } - }) -} + return latestVerifiedCommitment.CumulativeWeight() + }, c.LatestVerifiedCommitment)), -func (c *Chain) initVerifiedWeight() { - c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, c *Commitment) uint64 { - if c == nil { - return 0 - } + c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (teardown func()) { + return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) + }), + + c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSync bool, latestVerifiedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + return latestVerifiedCommitment != nil && lo.Cond(warpSync, latestVerifiedCommitment.ID().Slot() < warpSyncThreshold, latestVerifiedCommitment.ID().Slot() < outOfSyncThreshold) + }, c.LatestVerifiedCommitment, c.WarpSyncThreshold, c.OutOfSyncThreshold, c.WarpSyncMode.Get())), + ) + + c.IsEvicted.OnTrigger(teardownBehavior) - return c.CumulativeWeight() - }, c.LatestVerifiedCommitment)) + return c } -func (c *Chain) initWarpSync() { - enableWarpSyncIfNecessary := func() (unsubscribe func()) { - return c.WarpSync.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ bool, latestVerifiedCommitment *Commitment, outOfSyncThreshold iotago.SlotIndex) bool { - return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < outOfSyncThreshold - }, c.LatestVerifiedCommitment, c.OutOfSyncThreshold, c.WarpSync.Get())) +func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { + for currentChain := c; currentChain != nil; { + switch forkingPoint := currentChain.ForkingPoint.Get(); { + case forkingPoint == nil: + return nil, false // this should never happen, but we can handle it gracefully anyway + case forkingPoint.Slot() == slot: + return forkingPoint, true + case slot > forkingPoint.Slot(): + return currentChain.commitments.Get(slot) + default: + currentChain = c.Parent.Get() + } } - disableWarpSyncIfNecessary := func() (unsubscribe func()) { - return c.WarpSync.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ bool, latestVerifiedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex) bool { - return latestVerifiedCommitment != nil && latestVerifiedCommitment.ID().Slot() < warpSyncThreshold - }, c.LatestVerifiedCommitment, c.WarpSyncThreshold, c.WarpSync.Get())) - } + return nil, false +} - warpSyncTogglePool := workerpool.New("WarpSync toggle", workerpool.WithWorkerCount(1)).Start() - c.IsEvicted.OnTrigger(func() { warpSyncTogglePool.Shutdown() }) +func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { + if c != nil { + for _, chain := range append([]*Chain{c}, c.Children.ToSlice()...) { + targetEngine := chain.SpawnedEngine.Get() + if targetEngine == nil { + continue + } - var unsubscribe func() + if chain.WarpSyncMode.Get() { + issuingTime := block.ProtocolBlock().Header.IssuingTime - c.WarpSync.OnUpdate(func(_ bool, warpSync bool) { - if !c.IsEvicted.Get() { - warpSyncTogglePool.Submit(func() { - if unsubscribe != nil { - unsubscribe() + targetCommitment, targetCommitmentExists := chain.Commitment(targetEngine.APIForTime(issuingTime).TimeProvider().SlotFromTime(issuingTime)) + if !targetCommitmentExists { + continue } - if warpSync { - unsubscribe = disableWarpSyncIfNecessary() - } else { - unsubscribe = enableWarpSyncIfNecessary() + if blocksToWarpSync := targetCommitment.BlocksToWarpSync.Get(); blocksToWarpSync == nil || !blocksToWarpSync.Has(block.ID()) { + continue } - }) - } - }) -} + } + + targetEngine.ProcessBlockFromPeer(block, src) -func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { - if c.commitments.Compute(commitment.Slot(), func(currentCommitment *Commitment, exists bool) *Commitment { - if !exists { - return commitment + success = true } + } - return currentCommitment - }) != commitment { + return success +} + +func (c *Chain) registerCommitment(newCommitment *Commitment) (unregister func()) { + if c.commitments.Compute(newCommitment.Slot(), func(currentCommitment *Commitment, exists bool) *Commitment { + return lo.Cond(exists, currentCommitment, newCommitment) + }) != newCommitment { return func() {} } // maxCommitment returns the Commitment object with the higher slot. maxCommitment := func(other *Commitment) *Commitment { - if commitment == nil || other != nil && other.Slot() >= commitment.Slot() { + if newCommitment == nil || other != nil && other.Slot() >= newCommitment.Slot() { return other } - return commitment + return newCommitment } c.LatestCommitment.Compute(maxCommitment) unsubscribe := lo.Batch( - commitment.IsAttested.OnTrigger(func() { - c.LatestAttestedCommitment.Compute(maxCommitment) - }), - commitment.IsVerified.OnTrigger(func() { c.LatestVerifiedCommitment.Compute(maxCommitment) }), + newCommitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Compute(maxCommitment) }), + newCommitment.IsVerified.OnTrigger(func() { c.LatestVerifiedCommitment.Compute(maxCommitment) }), ) return func() { unsubscribe() - c.commitments.Delete(commitment.Slot()) + c.commitments.Delete(newCommitment.Slot()) resetToParent := func(latestCommitment *Commitment) *Commitment { - if latestCommitment == nil || commitment.Slot() < latestCommitment.Slot() { + if latestCommitment == nil || newCommitment.Slot() < latestCommitment.Slot() { return latestCommitment } - return commitment.Parent.Get() + return newCommitment.Parent.Get() } c.LatestCommitment.Compute(resetToParent) @@ -326,9 +279,9 @@ func (c *Chain) registerCommitment(commitment *Commitment) (unregister func()) { } func (c *Chain) registerChild(child *Chain) (unregisterChild func()) { - c.ChildChains.Add(child) + c.Children.Add(child) return func() { - c.ChildChains.Delete(child) + c.Children.Delete(child) } } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 18572bfd2..46b5ffe22 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -12,10 +12,10 @@ import ( type Chains struct { reactive.Set[*Chain] - Heaviest reactive.Variable[*Chain] HeaviestClaimed reactive.Variable[*Chain] HeaviestAttested reactive.Variable[*Chain] HeaviestVerified reactive.Variable[*Chain] + Main reactive.Variable[*Chain] protocol *Protocol } @@ -23,7 +23,7 @@ type Chains struct { func newChains(protocol *Protocol) *Chains { c := &Chains{ Set: reactive.NewSet[*Chain](), - Heaviest: reactive.NewVariable[*Chain](), + Main: reactive.NewVariable[*Chain](), HeaviestClaimed: reactive.NewVariable[*Chain](), HeaviestAttested: reactive.NewVariable[*Chain](), HeaviestVerified: reactive.NewVariable[*Chain](), @@ -33,14 +33,14 @@ func newChains(protocol *Protocol) *Chains { c.HeaviestClaimed.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) c.HeaviestAttested.LogUpdates(c.protocol, log.LevelTrace, "Attested Heavier Chain", (*Chain).LogName) - trackHeaviestChain := func(targetWeight reactive.Variable[*Chain], weight func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { - return weight(candidate).OnUpdate(func(_ uint64, newWeight uint64) { + trackHeaviestChain := func(targetChainVariable reactive.Variable[*Chain], weightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { + return weightVariable(candidate).OnUpdate(func(_ uint64, newWeight uint64) { if heaviestChain := c.HeaviestVerified.Get(); heaviestChain != nil && newWeight < heaviestChain.VerifiedWeight.Get() { return } - targetWeight.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newWeight > weight(currentCandidate).Get() { + targetChainVariable.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newWeight > weightVariable(currentCandidate).Get() { return candidate } @@ -81,7 +81,7 @@ func (c *Chains) initMainChain() { mainChain.VerifyState.Set(true) mainChain.Engine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) - c.Heaviest.Set(mainChain) + c.Main.Set(mainChain) c.Add(mainChain) } @@ -111,7 +111,7 @@ func (c *Chains) initChainSwitching() { distanceFromForkingPoint := latestVerifiedCommitment.ID().Slot() - forkingPoint.ID().Slot() if distanceFromForkingPoint > c.protocol.Options.ChainSwitchingThreshold { - c.Heaviest.Set(heaviestVerifiedChain) + c.Main.Set(heaviestVerifiedChain) } }) }) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 030989486..aa980ccbd 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -141,11 +141,11 @@ func (c *Commitment) initBehavior(chains *Chains) (self *Commitment) { return lo.Batch( c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, spawnedEngine *engine.Engine, warpSyncing bool, isAboveLatestVerifiedCommitment bool) bool { return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment - }, chain.SpawnedEngine, chain.WarpSync, c.IsAboveLatestVerifiedCommitment)), + }, chain.SpawnedEngine, chain.WarpSyncMode, c.IsAboveLatestVerifiedCommitment)), c.RequestBlocksToWarpSync.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync bool, parentIsVerified bool, isVerified bool) bool { return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified - }, chain.SpawnedEngine, chain.WarpSync, parent.IsVerified, c.IsVerified)), + }, chain.SpawnedEngine, chain.WarpSyncMode, parent.IsVerified, c.IsVerified)), c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, verifyAttestations bool, parentIsAttested bool, isAttested bool) bool { return verifyAttestations && parentIsAttested && !isAttested diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index cc098f014..40868f30b 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -71,7 +71,7 @@ func (c *Commitments) Get(commitmentID iotago.CommitmentID, requestMissing ...bo func (c *Commitments) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { slotEvicted := c.protocol.EvictionEvent(commitmentID.Index()) if slotEvicted.WasTriggered() && c.protocol.LastEvictedSlot().Get() != 0 { - forkingPoint := c.protocol.Chains.Heaviest.Get().ForkingPoint.Get() + forkingPoint := c.protocol.Chains.Main.Get().ForkingPoint.Get() if forkingPoint == nil || commitmentID != forkingPoint.ID() { return promise.New[*Commitment]().Reject(ErrorSlotEvicted) diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 26287fbb7..0597fc092 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -190,7 +190,7 @@ func (e *Engines) loadEngineInstanceWithStorage(engineAlias string, storage *sto } func (e *Engines) syncMainEngineFromMainChain() (unsubscribe func()) { - return e.protocol.Chains.Heaviest.OnUpdateWithContext(func(_ *Chain, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { + return e.protocol.Chains.Main.OnUpdateWithContext(func(_ *Chain, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { unsubscribeOnUpdate(func() func() { return e.Main.InheritFrom(mainChain.SpawnedEngine) }) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 298c2b1a2..6a09b9166 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -87,7 +87,13 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.Constructed.Trigger() - p.waitEngineInitialized() + // wait for the main engine to be initialized + var waitInitialized sync.WaitGroup + waitInitialized.Add(1) + p.Engines.Main.OnUpdateOnce(func(_ *engine.Engine, engine *engine.Engine) { + engine.Initialized.OnTrigger(waitInitialized.Done) + }) + waitInitialized.Wait() }) } @@ -110,13 +116,3 @@ func (p *Protocol) Run(ctx context.Context) error { return ctx.Err() } - -func (p *Protocol) waitEngineInitialized() { - var waitInitialized sync.WaitGroup - - waitInitialized.Add(1) - p.Engines.Main.OnUpdateOnce(func(_ *engine.Engine, engine *engine.Engine) { - engine.Initialized.OnTrigger(waitInitialized.Done) - }) - waitInitialized.Wait() -} diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 89ec03e28..d5dd2d941 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -51,7 +51,7 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) }) - protocol.Chains.Heaviest.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { + protocol.Chains.Main.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { unsubscribeOnEngineChange(func() (unsubscribe func()) { return lo.Batch( diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index be4fab64d..4fa4d59bf 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -88,7 +88,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } - if !chain.WarpSync.Get() { + if !chain.WarpSyncMode.Get() { w.LogTrace("response for chain without warp-sync", "chain", chain.LogName(), "fromPeer", from) return @@ -139,7 +139,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo targetEngine.Workers.WaitChildren() - if !chain.WarpSync.Get() { + if !chain.WarpSyncMode.Get() { w.LogTrace("response for chain without warp-sync", "chain", chain.LogName(), "fromPeer", from) return blocksToWarpSync diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index c5c6b22a7..0954d7f46 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -10,7 +10,7 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { for _, node := range nodes { t.Eventually(func() error { - chain := node.Protocol.Chains.Heaviest.Get() + chain := node.Protocol.Chains.Main.Get() if chain == nil { return ierrors.Errorf("AssertChainManagerIsSolid: %s: chain is nil", node.Name) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index b8a5f44dc..57d768723 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -161,7 +161,7 @@ func (n *Node) hookEvents() { } }) - n.Protocol.Chains.Heaviest.OnUpdate(func(prevChain *protocol.Chain, newChain *protocol.Chain) { + n.Protocol.Chains.Main.OnUpdate(func(prevChain *protocol.Chain, newChain *protocol.Chain) { if prevChain != nil { n.mainEngineSwitchedCount.Add(1) } diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 13ee3dc6a..6ee042ee5 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -67,7 +67,7 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes } // Make sure the commitment is also available in the ChainManager. - if node.Protocol.Chains.Heaviest.Get().LatestCommitment.Get().ID().Slot() < slot { + if node.Protocol.Chains.Main.Get().LatestCommitment.Get().ID().Slot() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found in ChainManager", node.Name, slot) } @@ -123,7 +123,7 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - actualChainID := node.Protocol.Chains.Heaviest.Get().ForkingPoint.Get().ID() + actualChainID := node.Protocol.Chains.Main.Get().ForkingPoint.Get().ID() if expectedChainID != actualChainID { return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Slot(), actualChainID, actualChainID.Slot()) } From fda739f3e49215a18e33f441a94a98975339ae0a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 10 Nov 2023 16:58:50 +0100 Subject: [PATCH 254/356] Refactor: refactored some code --- pkg/protocol/chain.go | 2 ++ pkg/protocol/chains.go | 12 +++++++----- pkg/protocol/commitments.go | 4 +--- 3 files changed, 10 insertions(+), 8 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index c2cb1872b..f7f732ba8 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -237,6 +237,8 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { } func (c *Chain) registerCommitment(newCommitment *Commitment) (unregister func()) { + // if a commitment for this slot already exists, then this is a newly forked commitment, that only got associated + // with this chain because it temporarily inherited it through its parent before forking its own chain if c.commitments.Compute(newCommitment.Slot(), func(currentCommitment *Commitment, exists bool) *Commitment { return lo.Cond(exists, currentCommitment, newCommitment) }) != newCommitment { diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 46b5ffe22..296f2f290 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -30,8 +30,9 @@ func newChains(protocol *Protocol) *Chains { protocol: protocol, } - c.HeaviestClaimed.LogUpdates(c.protocol, log.LevelTrace, "Unchecked Heavier Chain", (*Chain).LogName) - c.HeaviestAttested.LogUpdates(c.protocol, log.LevelTrace, "Attested Heavier Chain", (*Chain).LogName) + c.Main.LogUpdates(c.protocol, log.LevelTrace, "Main", (*Chain).LogName) + c.HeaviestClaimed.LogUpdates(c.protocol, log.LevelTrace, "HeaviestClaimed", (*Chain).LogName) + c.HeaviestAttested.LogUpdates(c.protocol, log.LevelTrace, "HeaviestAttested", (*Chain).LogName) trackHeaviestChain := func(targetChainVariable reactive.Variable[*Chain], weightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { return weightVariable(candidate).OnUpdate(func(_ uint64, newWeight uint64) { @@ -129,8 +130,8 @@ func (c *Chains) publishEngineCommitments(chain *Chain) (unsubscribe func()) { } publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) - publishedCommitment.IsAttested.Trigger() - publishedCommitment.IsVerified.Trigger() + publishedCommitment.IsAttested.Set(true) + publishedCommitment.IsVerified.Set(true) latestPublishedSlot = commitment.Slot() @@ -145,8 +146,9 @@ func (c *Chains) publishEngineCommitments(chain *Chain) (unsubscribe func()) { return engine.Ledger.HookInitialized(func() { unsubscribeOnUpdate(func() (unsubscribe func()) { if forkingPoint := chain.ForkingPoint.Get(); forkingPoint == nil { + // publish the root commitment (very first commitment ever) rootCommitment, _ := publishCommitment(engine.RootCommitment.Get()) - rootCommitment.IsRoot.Trigger() + rootCommitment.IsRoot.Set(true) rootCommitment.setChain(chain) chain.ForkingPoint.Set(rootCommitment) diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 40868f30b..2ca8ab9e1 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -18,13 +18,11 @@ type Commitments struct { } func newCommitments(protocol *Protocol) *Commitments { - c := &Commitments{ + return &Commitments{ Set: reactive.NewSet[*Commitment](), protocol: protocol, commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), } - - return c } func (c *Commitments) Publish(commitment *model.Commitment) (commitmentMetadata *Commitment, published bool, err error) { From a29b1427b63da3c1d974988da44fdaf84f9ac76a Mon Sep 17 00:00:00 2001 From: Andrea V <1577639+karimodm@users.noreply.github.com> Date: Wed, 15 Nov 2023 11:53:28 +0100 Subject: [PATCH 255/356] Fix RootCommitment load below genesis slot --- pkg/protocol/engine/engine.go | 6 ++++-- tools/genesis-snapshot/presets/presets.go | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index 248c2677a..3e4f22480 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -530,10 +530,12 @@ func (e *Engine) ErrorHandler(componentName string) func(error) { func (e *Engine) initRootCommitment() { updateRootCommitment := func(lastFinalizedSlot iotago.SlotIndex) { - maxCommittableAge := e.APIForSlot(lastFinalizedSlot).ProtocolParameters().MaxCommittableAge() + protocolParams := e.APIForSlot(lastFinalizedSlot).ProtocolParameters() + maxCommittableAge := protocolParams.MaxCommittableAge() + genesisSlot := protocolParams.GenesisSlot() e.RootCommitment.Compute(func(rootCommitment *model.Commitment) *model.Commitment { - return lo.Return1(e.Storage.Commitments().Load(lo.Cond(lastFinalizedSlot < maxCommittableAge, 0, lastFinalizedSlot-maxCommittableAge))) + return lo.Return1(e.Storage.Commitments().Load(lo.Cond(lastFinalizedSlot < genesisSlot+maxCommittableAge, genesisSlot, lastFinalizedSlot-maxCommittableAge))) }) } diff --git a/tools/genesis-snapshot/presets/presets.go b/tools/genesis-snapshot/presets/presets.go index 5c81cdaa7..da733eed1 100644 --- a/tools/genesis-snapshot/presets/presets.go +++ b/tools/genesis-snapshot/presets/presets.go @@ -133,7 +133,7 @@ var Docker = []options.Option[snapshotcreator.Options]{ iotago.NewV3ProtocolParameters( iotago.WithNetworkOptions("docker", "rms"), iotago.WithSupplyOptions(4_600_000_000_000_000, 1, 1, 10, 100, 100, 100), - iotago.WithTimeProviderOptions(0, time.Now().Unix(), 10, 13), + iotago.WithTimeProviderOptions(1000, time.Now().Unix(), 10, 13), iotago.WithLivenessOptions(30, 30, 7, 14, 30), // increase/decrease threshold = fraction * slotDurationInSeconds * schedulerRate iotago.WithCongestionControlOptions(500, 500, 500, 800000, 500000, 100000, 1000, 100), From 00bdb31d4d5b38bfc3887abce2d30ab75e2d02d1 Mon Sep 17 00:00:00 2001 From: Andrea V <1577639+karimodm@users.noreply.github.com> Date: Thu, 16 Nov 2023 12:31:05 +0100 Subject: [PATCH 256/356] Docker 5 genesisSlot --- tools/genesis-snapshot/presets/presets.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/genesis-snapshot/presets/presets.go b/tools/genesis-snapshot/presets/presets.go index 9be6ad0d4..719eb534a 100644 --- a/tools/genesis-snapshot/presets/presets.go +++ b/tools/genesis-snapshot/presets/presets.go @@ -133,7 +133,7 @@ var Docker = []options.Option[snapshotcreator.Options]{ iotago.NewV3ProtocolParameters( iotago.WithNetworkOptions("docker", "rms"), iotago.WithSupplyOptions(4_600_000_000_000_000, 1, 1, 10, 100, 100, 100), - iotago.WithTimeProviderOptions(1000, time.Now().Unix(), 10, 13), + iotago.WithTimeProviderOptions(5, time.Now().Unix(), 10, 13), iotago.WithLivenessOptions(30, 30, 7, 14, 30), // increase/decrease threshold = fraction * slotDurationInSeconds * schedulerRate iotago.WithCongestionControlOptions(500, 500, 500, 800000, 500000, 100000, 1000, 100), @@ -242,7 +242,7 @@ var Feature = []options.Option[snapshotcreator.Options]{ iotago.NewV3ProtocolParameters( iotago.WithNetworkOptions("feature", "rms"), iotago.WithSupplyOptions(4_600_000_000_000_000, 100, 1, 10, 100, 100, 100), - iotago.WithTimeProviderOptions(666666, time.Now().Unix()-100_000, 10, 13), // Let's fix genesis at 10_000 slots back. + iotago.WithTimeProviderOptions(666666, time.Now().Unix() - 100_000, 10, 13), // Let's fix genesis at 10_000 slots back. iotago.WithLivenessOptions(30, 30, 10, 20, 30), // increase/decrease threshold = fraction * slotDurationInSeconds * schedulerRate iotago.WithCongestionControlOptions(500, 500, 500, 800000, 500000, 100000, 1000, 100), From 490361ad7d408d89d8105854e820343d6c5d4149 Mon Sep 17 00:00:00 2001 From: Andrea V <1577639+karimodm@users.noreply.github.com> Date: Thu, 16 Nov 2023 13:05:20 +0100 Subject: [PATCH 257/356] Increase log levels --- .../iota-core-node/templates/docker-compose-iota-core.yml.j2 | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy/ansible/roles/iota-core-node/templates/docker-compose-iota-core.yml.j2 b/deploy/ansible/roles/iota-core-node/templates/docker-compose-iota-core.yml.j2 index 1ad23ed19..ec685a853 100644 --- a/deploy/ansible/roles/iota-core-node/templates/docker-compose-iota-core.yml.j2 +++ b/deploy/ansible/roles/iota-core-node/templates/docker-compose-iota-core.yml.j2 @@ -38,7 +38,7 @@ services: command: > -c config.json - --logger.level=debug + --logger.level=trace --logger.disableCaller=false --p2p.peers=/dns/node-01.feature/tcp/14666/p2p/12D3KooWCrjmh4dUCWfGVQT6ivzArieJB9Z3eKdy2mdEEN95NDPS --p2p.externalMultiAddresses={{ ips | join(',') }} @@ -141,6 +141,7 @@ services: environment: - "VALIDATOR_PRV_KEY={{validatorPrvKey}}" command: > + --logger.level=debug --inx.address=iota-core:9029 {% if 'node-01' in inventory_hostname %} --validator.ignoreBootstrapped=true From 84a997f49ff079b16c9a3d7d6f8cb81f81580008 Mon Sep 17 00:00:00 2001 From: Andrea V <1577639+karimodm@users.noreply.github.com> Date: Thu, 16 Nov 2023 13:30:12 +0100 Subject: [PATCH 258/356] trace log doesn't exist --- tools/genesis-snapshot/presets/presets.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/genesis-snapshot/presets/presets.go b/tools/genesis-snapshot/presets/presets.go index 719eb534a..ce02e5e6f 100644 --- a/tools/genesis-snapshot/presets/presets.go +++ b/tools/genesis-snapshot/presets/presets.go @@ -133,7 +133,7 @@ var Docker = []options.Option[snapshotcreator.Options]{ iotago.NewV3ProtocolParameters( iotago.WithNetworkOptions("docker", "rms"), iotago.WithSupplyOptions(4_600_000_000_000_000, 1, 1, 10, 100, 100, 100), - iotago.WithTimeProviderOptions(5, time.Now().Unix(), 10, 13), + iotago.WithTimeProviderOptions(666666, time.Now().Unix()-10_000, 10, 13), // Let's fix genesis at 10_000 slots back. iotago.WithLivenessOptions(30, 30, 7, 14, 30), // increase/decrease threshold = fraction * slotDurationInSeconds * schedulerRate iotago.WithCongestionControlOptions(500, 500, 500, 800000, 500000, 100000, 1000, 100), @@ -242,7 +242,7 @@ var Feature = []options.Option[snapshotcreator.Options]{ iotago.NewV3ProtocolParameters( iotago.WithNetworkOptions("feature", "rms"), iotago.WithSupplyOptions(4_600_000_000_000_000, 100, 1, 10, 100, 100, 100), - iotago.WithTimeProviderOptions(666666, time.Now().Unix() - 100_000, 10, 13), // Let's fix genesis at 10_000 slots back. + iotago.WithTimeProviderOptions(666666, time.Now().Unix()-100_000, 10, 13), // Let's fix genesis at 10_000 slots back. iotago.WithLivenessOptions(30, 30, 10, 20, 30), // increase/decrease threshold = fraction * slotDurationInSeconds * schedulerRate iotago.WithCongestionControlOptions(500, 500, 500, 800000, 500000, 100000, 1000, 100), From 329990cb8502ab3da6cbd0651fe2c61abfa87ab7 Mon Sep 17 00:00:00 2001 From: Andrea V <1577639+karimodm@users.noreply.github.com> Date: Fri, 17 Nov 2023 15:04:10 +0100 Subject: [PATCH 259/356] trace loglevel does not exist --- .../iota-core-node/templates/docker-compose-iota-core.yml.j2 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/ansible/roles/iota-core-node/templates/docker-compose-iota-core.yml.j2 b/deploy/ansible/roles/iota-core-node/templates/docker-compose-iota-core.yml.j2 index ec685a853..7b576168b 100644 --- a/deploy/ansible/roles/iota-core-node/templates/docker-compose-iota-core.yml.j2 +++ b/deploy/ansible/roles/iota-core-node/templates/docker-compose-iota-core.yml.j2 @@ -38,7 +38,7 @@ services: command: > -c config.json - --logger.level=trace + --logger.level=debug --logger.disableCaller=false --p2p.peers=/dns/node-01.feature/tcp/14666/p2p/12D3KooWCrjmh4dUCWfGVQT6ivzArieJB9Z3eKdy2mdEEN95NDPS --p2p.externalMultiAddresses={{ ips | join(',') }} From a92a3faf6306a031fb237aacacf88dc5b725c403 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 20 Nov 2023 23:56:20 +0100 Subject: [PATCH 260/356] Feat: added Commitments.Root --- pkg/protocol/commitments.go | 37 ++++++++++++++++++++++++++++++----- pkg/protocol/engine/engine.go | 13 +++++++++--- pkg/protocol/protocol.go | 5 +++++ 3 files changed, 47 insertions(+), 8 deletions(-) diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 2ca8ab9e1..14e6fc13a 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -7,22 +7,47 @@ import ( "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/iota-core/pkg/core/promise" "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" ) type Commitments struct { reactive.Set[*Commitment] + Root reactive.Variable[*Commitment] + protocol *Protocol commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] } func newCommitments(protocol *Protocol) *Commitments { - return &Commitments{ + c := &Commitments{ Set: reactive.NewSet[*Commitment](), + Root: reactive.NewVariable[*Commitment](), protocol: protocol, commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), } + + protocol.Constructed.OnTrigger(func() { + protocol.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (teardown func()) { + return mainEngine.RootCommitment.OnUpdate(func(_ *model.Commitment, newRootCommitmentModel *model.Commitment) { + c.Root.Compute(func(currentRootCommitment *Commitment) *Commitment { + newRootCommitment, err := protocol.Commitments.Get(newRootCommitmentModel.ID(), false) + if err != nil { + protocol.LogError("failed to retrieve new root commitment", "id", newRootCommitment.ID(), "error", err) + + return currentRootCommitment + } + + newRootCommitment.IsRoot.Set(true) + + return newRootCommitment + }) + }) + }) + }) + + return c } func (c *Commitments) Publish(commitment *model.Commitment) (commitmentMetadata *Commitment, published bool, err error) { @@ -111,9 +136,11 @@ func (c *Commitments) setupCommitment(commitment *Commitment, slotEvictedEvent r c.protocol.LogDebug("failed to request previous commitment", "prevId", commitment.PreviousCommitmentID(), "error", err) }) - slotEvictedEvent.OnTrigger(func() { - commitment.IsEvicted.Trigger() - }) + if c.Add(commitment) { + slotEvictedEvent.OnTrigger(func() { + commitment.IsEvicted.Trigger() - c.Add(commitment) + c.Delete(commitment) + }) + } } diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index 248c2677a..dc0249ae2 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -530,10 +530,17 @@ func (e *Engine) ErrorHandler(componentName string) func(error) { func (e *Engine) initRootCommitment() { updateRootCommitment := func(lastFinalizedSlot iotago.SlotIndex) { - maxCommittableAge := e.APIForSlot(lastFinalizedSlot).ProtocolParameters().MaxCommittableAge() - e.RootCommitment.Compute(func(rootCommitment *model.Commitment) *model.Commitment { - return lo.Return1(e.Storage.Commitments().Load(lo.Cond(lastFinalizedSlot < maxCommittableAge, 0, lastFinalizedSlot-maxCommittableAge))) + var targetSlot iotago.SlotIndex + if maxCommittableAge := e.APIForSlot(lastFinalizedSlot).ProtocolParameters().MaxCommittableAge(); lastFinalizedSlot > maxCommittableAge { + targetSlot = lastFinalizedSlot - maxCommittableAge + } + + if rootCommitment != nil && targetSlot == rootCommitment.Slot() { + return rootCommitment + } + + return lo.Return1(e.Storage.Commitments().Load(targetSlot)) }) } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 6a09b9166..f1ca0e12b 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -60,6 +60,11 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.Engines = NewEngines(p) p.APIProvider = NewAPIProvider(p) + p.Commitments.Root.OnUpdate(func(_ *Commitment, rootCommitment *Commitment) { + // TODO: DECIDE ON DATA AVAILABILITY TIMESPAN / EVICTION STRATEGY + //p.Evict(rootCommitment.Slot() - 1) + }) + p.Initialized.OnTrigger(func() { unsubscribeFromNetwork := lo.Batch( p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), From cecb64bc055d9eba1958ebc228304562c9287746 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 21 Nov 2023 02:56:32 +0100 Subject: [PATCH 261/356] Fix: fix merge conflicts --- components/restapi/core/blocks.go | 2 +- components/restapi/core/commitment.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/components/restapi/core/blocks.go b/components/restapi/core/blocks.go index f53290fc2..c28166cea 100644 --- a/components/restapi/core/blocks.go +++ b/components/restapi/core/blocks.go @@ -50,7 +50,7 @@ func blockWithMetadataByID(c echo.Context) (*apimodels.BlockWithMetadataResponse return nil, ierrors.Wrapf(err, "failed to parse block ID %s", c.Param(restapi.ParameterBlockID)) } - block, exists := deps.Protocol.MainEngineInstance().Block(blockID) + block, exists := deps.Protocol.Engines.Main.Get().Block(blockID) if !exists { return nil, ierrors.Wrapf(echo.ErrNotFound, "block not found: %s", blockID.ToHex()) } diff --git a/components/restapi/core/commitment.go b/components/restapi/core/commitment.go index 8c76576e0..2ecab0e68 100644 --- a/components/restapi/core/commitment.go +++ b/components/restapi/core/commitment.go @@ -34,7 +34,7 @@ func getUTXOChanges(slot iotago.SlotIndex) (*apimodels.UTXOChangesResponse, erro return nil, ierrors.Wrapf(echo.ErrInternalServerError, "failed to get slot diffs %d: %s", slot, err) } - commitment, err := deps.Protocol.MainEngineInstance().Storage.Commitments().Load(diffs.Slot) + commitment, err := deps.Protocol.Engines.Main.Get().Storage.Commitments().Load(diffs.Slot) if err != nil { return nil, ierrors.Wrapf(echo.ErrInternalServerError, "failed to load commitment %d: %s", diffs.Slot, err) } From fc6991ef6a66c79ae1bb94ebb8943e59d5da4bae Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 21 Nov 2023 12:29:25 +0100 Subject: [PATCH 262/356] Feat: add logging --- pkg/tests/loss_of_acceptance_test.go | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index 25b1f1362..6a90bbc0d 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -7,6 +7,7 @@ import ( "github.com/stretchr/testify/require" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/protocol" "github.com/iotaledger/iota-core/pkg/testsuite" "github.com/iotaledger/iota-core/pkg/testsuite/mock" @@ -126,6 +127,7 @@ func TestLossOfAcceptanceFromSnapshot(t *testing.T) { node2 := ts.AddNode("node2") ts.Run(true, nil) + node2.Protocol.SetLogLevel(log.LevelTrace) // Issue up to slot 10, committing slot 8. { @@ -221,6 +223,7 @@ func TestLossOfAcceptanceWithRestartFromDisk(t *testing.T) { node2 := ts.AddNode("node2") ts.Run(true, nil) + node2.Protocol.SetLogLevel(log.LevelTrace) // Issue up to slot 10, committing slot 8. { From f77aa259ca7c90a6f2ad92f40a517dce96eb17b8 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 22 Nov 2023 02:35:20 +0100 Subject: [PATCH 263/356] Feat: started refactoring / cleaning up code --- pkg/protocol/chain.go | 220 +++++++++++++++----------- pkg/protocol/chains.go | 14 +- pkg/protocol/commitment.go | 6 +- pkg/protocol/engines.go | 2 +- pkg/protocol/network_clock.go | 50 ------ pkg/protocol/protocol.go | 28 +++- pkg/protocol/protocol_attestations.go | 51 ++++-- pkg/protocol/protocol_blocks.go | 16 +- pkg/protocol/protocol_warp_sync.go | 4 +- 9 files changed, 211 insertions(+), 180 deletions(-) delete mode 100644 pkg/protocol/network_clock.go diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index f7f732ba8..c95f4c8e7 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -14,32 +14,73 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) +// Chain represents a chain of commitments. type Chain struct { - ForkingPoint reactive.Variable[*Commitment] - Parent reactive.Variable[*Chain] - Children reactive.Set[*Chain] - LatestCommitment reactive.Variable[*Commitment] + // ForkingPoint contains the first commitment of this chain. + ForkingPoint reactive.Variable[*Commitment] + + // Parent contains the chain that this chain forked from. + Parent reactive.Variable[*Chain] + + // Children contains the set of all chains that forked from this chain. + Children reactive.Set[*Chain] + + // LatestCommitment contains the latest commitment of this chain. + LatestCommitment reactive.Variable[*Commitment] + + // LatestAttestedCommitment contains the latest commitment of this chain for which attestations were received. LatestAttestedCommitment reactive.Variable[*Commitment] + + // LatestVerifiedCommitment contains the latest commitment of this chain that we produced by an engine instance. LatestVerifiedCommitment reactive.Variable[*Commitment] - ClaimedWeight reactive.Variable[uint64] - AttestedWeight reactive.Variable[uint64] - VerifiedWeight reactive.Variable[uint64] - LatestNetworkSlot reactive.Variable[iotago.SlotIndex] - WarpSyncMode reactive.Variable[bool] - WarpSyncThreshold reactive.Variable[iotago.SlotIndex] - OutOfSyncThreshold reactive.Variable[iotago.SlotIndex] - VerifyAttestations reactive.Variable[bool] - VerifyState reactive.Variable[bool] - SpawnedEngine reactive.Variable[*engine.Engine] - Engine reactive.Variable[*engine.Engine] - IsSolid reactive.Event - IsEvicted reactive.Event + // ClaimedWeight contains the claimed weight of this chain which is derived from the cumulative weight of the + // LatestCommitment. + ClaimedWeight reactive.Variable[uint64] + + // AttestedWeight contains the attested weight of this chain which is derived from the cumulative weight of all + // attestations up to the LatestAttestedCommitment. + AttestedWeight reactive.Variable[uint64] + + // VerifiedWeight contains the verified weight of this chain which is derived from the cumulative weight of the + // latest verified commitment. + VerifiedWeight reactive.Variable[uint64] + + // LatestNetworkSlot contains the latest network slot. + LatestNetworkSlot reactive.Variable[iotago.SlotIndex] + + // WarpSyncMode contains a flag that indicates whether this chain is in warp sync mode. + WarpSyncMode reactive.Variable[bool] + + // WarpSyncThreshold contains the slot at which the chain will exit warp sync mode which is derived from the latest + // network slot minus the max committable age. + WarpSyncThreshold reactive.Variable[iotago.SlotIndex] + + // OutOfSyncThreshold contains the slot at which the chain will consider itself to be out of sync and switch to warp + // sync mode. It is derived from the latest network slot minus two times the max committable age. + OutOfSyncThreshold reactive.Variable[iotago.SlotIndex] + + // RequestAttestations contains a flag that indicates whether this chain should verify the claimed weight by + // requesting attestations. + RequestAttestations reactive.Variable[bool] + + // RequestBlocks contains a flag that indicates whether this chain should verify the state by requesting blocks. + RequestBlocks reactive.Variable[bool] + + // SpawnedEngine contains the engine that was spawned by this chain. + SpawnedEngine reactive.Variable[*engine.Engine] + + // IsEvicted contains a flag that indicates whether this chain was evicted. + IsEvicted reactive.Event + + // commitments contains the commitments that make up this chain. commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] + // Logger embeds a logger that can be used to log messages emitted by this chain. log.Logger } +// NewChain creates a new chain instance. func NewChain(chains *Chains) *Chain { return (&Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), @@ -55,22 +96,83 @@ func NewChain(chains *Chains) *Chain { LatestNetworkSlot: reactive.NewVariable[iotago.SlotIndex](), WarpSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), - VerifyAttestations: reactive.NewVariable[bool](), - VerifyState: reactive.NewVariable[bool](), + RequestAttestations: reactive.NewVariable[bool](), + RequestBlocks: reactive.NewVariable[bool](), SpawnedEngine: reactive.NewVariable[*engine.Engine](), - Engine: reactive.NewVariable[*engine.Engine](), IsEvicted: reactive.NewEvent(), commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), }).initLogging(chains).initBehavior(chains) } +// Engine returns the engine that is spawned by this chain. +func (c *Chain) Engine() *engine.Engine { + currentChain, currentEngine := c, c.SpawnedEngine.Get() + for currentEngine == nil { + if currentChain = c.Parent.Get(); currentChain == nil { + return nil + } + + currentEngine = currentChain.SpawnedEngine.Get() + } + + return currentEngine +} + +// Commitment returns the Commitment for the given slot. +func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { + for currentChain := c; currentChain != nil; { + switch forkingPoint := currentChain.ForkingPoint.Get(); { + case forkingPoint.Slot() == slot: + return forkingPoint, true + case slot > forkingPoint.Slot(): + return currentChain.commitments.Get(slot) + default: + currentChain = c.Parent.Get() + } + } + + return nil, false +} + +func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { + if c == nil { + return false + } + + for _, chain := range append([]*Chain{c}, c.Children.ToSlice()...) { + spawnedEngine := chain.SpawnedEngine.Get() + if spawnedEngine == nil { + continue + } + + if chain.WarpSyncMode.Get() { + issuingTime := block.ProtocolBlock().Header.IssuingTime + + targetCommitment, targetCommitmentExists := chain.Commitment(spawnedEngine.APIForTime(issuingTime).TimeProvider().SlotFromTime(issuingTime)) + if !targetCommitmentExists { + continue + } + + if blocksToWarpSync := targetCommitment.BlocksToWarpSync.Get(); blocksToWarpSync == nil || !blocksToWarpSync.Has(block.ID()) { + continue + } + } + + spawnedEngine.ProcessBlockFromPeer(block, src) + + success = true + } + + return success +} + +// initLogging initializes the logging of changes to the properties of this chain. func (c *Chain) initLogging(chains *Chains) (self *Chain) { var shutdownLogger func() c.Logger, shutdownLogger = chains.protocol.NewEntityLogger("Chain") teardownLogging := lo.Batch( - c.Engine.LogUpdates(c, log.LevelTrace, "Engine", (*engine.Engine).LogName), c.WarpSyncMode.LogUpdates(c, log.LevelTrace, "WarpSyncMode"), c.LatestNetworkSlot.LogUpdates(c, log.LevelTrace, "LatestNetworkSlot"), c.WarpSyncThreshold.LogUpdates(c, log.LevelTrace, "WarpSyncThreshold"), @@ -81,10 +183,9 @@ func (c *Chain) initLogging(chains *Chains) (self *Chain) { c.VerifiedWeight.LogUpdates(c, log.LevelTrace, "VerifiedWeight"), c.LatestCommitment.LogUpdates(c, log.LevelTrace, "LatestCommitment", (*Commitment).LogName), c.LatestVerifiedCommitment.LogUpdates(c, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName), - c.VerifyAttestations.LogUpdates(c, log.LevelTrace, "VerifyAttestations"), - c.VerifyState.LogUpdates(c, log.LevelDebug, "VerifyState"), + c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), + c.RequestBlocks.LogUpdates(c, log.LevelDebug, "RequestBlocks"), c.SpawnedEngine.LogUpdates(c, log.LevelTrace, "SpawnedEngine", (*engine.Engine).LogName), - c.Engine.LogUpdates(c, log.LevelTrace, "SpawnedEngine", (*engine.Engine).LogName), c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), shutdownLogger, @@ -95,31 +196,18 @@ func (c *Chain) initLogging(chains *Chains) (self *Chain) { return c } +// initBehavior initializes the behavior of this chain by setting up the relations between its properties. func (c *Chain) initBehavior(chains *Chains) (self *Chain) { teardownBehavior := lo.Batch( - c.Parent.WithValue(func(parent *Chain) (teardown func()) { - if parent == nil { - return c.Engine.InheritFrom(c.SpawnedEngine) - } - - return lo.Batch( - parent.registerChild(c), - - c.Engine.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ *engine.Engine, spawnedEngine *engine.Engine, parentEngine *engine.Engine) *engine.Engine { - if spawnedEngine != nil { - return spawnedEngine - } - - return parentEngine - }, c.SpawnedEngine, parent.Engine)), - ) + c.Parent.WithNonEmptyValue(func(parent *Chain) (teardown func()) { + return parent.registerChild(c) }), c.SpawnedEngine.WithNonEmptyValue(func(engine *engine.Engine) (teardown func()) { return lo.Batch( c.LatestNetworkSlot.DeriveValueFrom(reactive.NewDerivedVariable(func(latestNetworkSlot iotago.SlotIndex, latestNetworkTime time.Time) iotago.SlotIndex { return engine.LatestAPI().TimeProvider().SlotFromTime(latestNetworkTime) - }, chains.protocol.NetworkClock)), + }, chains.protocol.Clock)), c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestNetworkSlot iotago.SlotIndex) iotago.SlotIndex { warpSyncOffset := engine.LatestAPI().ProtocolParameters().MaxCommittableAge() @@ -175,6 +263,9 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { return latestVerifiedCommitment.CumulativeWeight() }, c.LatestVerifiedCommitment)), + // the AttestedWeight is defined slightly different from the ClaimedWeight and VerifiedWeight, because it is not + // derived from a static value in the commitment but a dynamic value that is derived from the received + // attestations (which may change over time). c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (teardown func()) { return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) }), @@ -189,53 +280,6 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { return c } -func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { - for currentChain := c; currentChain != nil; { - switch forkingPoint := currentChain.ForkingPoint.Get(); { - case forkingPoint == nil: - return nil, false // this should never happen, but we can handle it gracefully anyway - case forkingPoint.Slot() == slot: - return forkingPoint, true - case slot > forkingPoint.Slot(): - return currentChain.commitments.Get(slot) - default: - currentChain = c.Parent.Get() - } - } - - return nil, false -} - -func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { - if c != nil { - for _, chain := range append([]*Chain{c}, c.Children.ToSlice()...) { - targetEngine := chain.SpawnedEngine.Get() - if targetEngine == nil { - continue - } - - if chain.WarpSyncMode.Get() { - issuingTime := block.ProtocolBlock().Header.IssuingTime - - targetCommitment, targetCommitmentExists := chain.Commitment(targetEngine.APIForTime(issuingTime).TimeProvider().SlotFromTime(issuingTime)) - if !targetCommitmentExists { - continue - } - - if blocksToWarpSync := targetCommitment.BlocksToWarpSync.Get(); blocksToWarpSync == nil || !blocksToWarpSync.Has(block.ID()) { - continue - } - } - - targetEngine.ProcessBlockFromPeer(block, src) - - success = true - } - } - - return success -} - func (c *Chain) registerCommitment(newCommitment *Commitment) (unregister func()) { // if a commitment for this slot already exists, then this is a newly forked commitment, that only got associated // with this chain because it temporarily inherited it through its parent before forking its own chain diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 3b70074a1..0ba94581e 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -79,8 +79,8 @@ func (c *Chains) initMainChain() { c.protocol.LogTrace("initializing main chain") mainChain := NewChain(c) - mainChain.VerifyState.Set(true) - mainChain.Engine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) + mainChain.RequestBlocks.Set(true) + mainChain.SpawnedEngine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) c.Main.Set(mainChain) @@ -90,17 +90,17 @@ func (c *Chains) initMainChain() { func (c *Chains) initChainSwitching() { c.HeaviestClaimed.OnUpdate(func(prevHeaviestChain *Chain, heaviestChain *Chain) { if prevHeaviestChain != nil { - prevHeaviestChain.VerifyAttestations.Set(false) + prevHeaviestChain.RequestAttestations.Set(false) } - if !heaviestChain.VerifyState.Get() { - heaviestChain.VerifyAttestations.Set(true) + if !heaviestChain.RequestBlocks.Get() { + heaviestChain.RequestAttestations.Set(true) } }) c.HeaviestAttested.OnUpdate(func(_ *Chain, heaviestAttestedChain *Chain) { - heaviestAttestedChain.VerifyAttestations.Set(false) - heaviestAttestedChain.VerifyState.Set(true) + heaviestAttestedChain.RequestAttestations.Set(false) + heaviestAttestedChain.RequestBlocks.Set(true) }) c.HeaviestVerified.OnUpdate(func(_ *Chain, heaviestVerifiedChain *Chain) { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index aa980ccbd..b343d6728 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -58,9 +58,9 @@ func NewCommitment(commitment *model.Commitment, chains *Chains) *Commitment { }).initLogging(chains).initBehavior(chains) } -func (c *Commitment) Engine() *engine.Engine { +func (c *Commitment) SpawnedEngine() *engine.Engine { if chain := c.Chain.Get(); chain != nil { - return chain.Engine.Get() + return chain.SpawnedEngine.Get() } return nil @@ -149,7 +149,7 @@ func (c *Commitment) initBehavior(chains *Chains) (self *Commitment) { c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, verifyAttestations bool, parentIsAttested bool, isAttested bool) bool { return verifyAttestations && parentIsAttested && !isAttested - }, chain.VerifyAttestations, parent.IsAttested, c.IsAttested)), + }, chain.RequestAttestations, parent.IsAttested, c.IsAttested)), ) }), ) diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 0597fc092..c76dd85b1 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -209,7 +209,7 @@ func (e *Engines) syncMainEngineInfoFile() (unsubscribe func()) { func (e *Engines) injectEngineInstances() (unsubscribe func()) { return e.protocol.Chains.WithElements(func(chain *Chain) (teardown func()) { - return chain.VerifyState.OnUpdate(func(_ bool, instantiate bool) { + return chain.RequestBlocks.OnUpdate(func(_ bool, instantiate bool) { e.worker.Submit(func() { if !instantiate { chain.SpawnedEngine.Set(nil) diff --git a/pkg/protocol/network_clock.go b/pkg/protocol/network_clock.go deleted file mode 100644 index 27f71f263..000000000 --- a/pkg/protocol/network_clock.go +++ /dev/null @@ -1,50 +0,0 @@ -package protocol - -import ( - "time" - - "github.com/libp2p/go-libp2p/core/peer" - - "github.com/iotaledger/hive.go/ds/reactive" - "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/iota-core/pkg/model" -) - -type NetworkClock struct { - protocol *Protocol - - reactive.Variable[time.Time] -} - -func NewNetworkClock(protocol *Protocol) *NetworkClock { - n := &NetworkClock{ - protocol: protocol, - Variable: reactive.NewVariable[time.Time](func(currentValue time.Time, newValue time.Time) time.Time { - if newValue.Before(currentValue) || newValue.After(time.Now()) { - return currentValue - } - - return newValue - }), - } - - protocol.Constructed.OnTrigger(func() { - unsubscribe := lo.Batch( - protocol.Network.OnBlockReceived(func(block *model.Block, src peer.ID) { - n.Set(block.ProtocolBlock().Header.IssuingTime) - }), - - protocol.Chains.WithElements(func(chain *Chain) (teardown func()) { - return chain.LatestCommitment.OnUpdate(func(_ *Commitment, latestCommitment *Commitment) { - if engineInstance := chain.Engine.Get(); engineInstance != nil { - n.Set(engineInstance.LatestAPI().TimeProvider().SlotEndTime(latestCommitment.Slot())) - } - }) - }), - ) - - protocol.Shutdown.OnTrigger(unsubscribe) - }) - - return n -} diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index f1ca0e12b..28578b2fd 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -3,6 +3,7 @@ package protocol import ( "context" "sync" + "time" "github.com/libp2p/go-libp2p/core/peer" @@ -23,8 +24,8 @@ import ( type Protocol struct { Events *Events Workers *workerpool.Group + Clock reactive.Variable[time.Time] Network *core.Protocol - NetworkClock *NetworkClock Commitments *Commitments Chains *Chains BlocksProtocol *BlocksProtocol @@ -45,12 +46,12 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E return options.Apply(&Protocol{ Events: NewEvents(), Workers: workers, + Clock: reactive.NewVariable[time.Time](maxTimeBeforeWallClock), Options: NewDefaultOptions(), ReactiveModule: module.NewReactiveModule(logger), EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), }, opts, func(p *Protocol) { p.Network = core.NewProtocol(networkEndpoint, workers.CreatePool("NetworkProtocol"), p) - p.NetworkClock = NewNetworkClock(p) p.BlocksProtocol = NewBlocksProtocol(p) p.CommitmentsProtocol = NewCommitmentsProtocol(p) p.AttestationsProtocol = NewAttestationsProtocol(p) @@ -65,6 +66,20 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E //p.Evict(rootCommitment.Slot() - 1) }) + stopClock := lo.Batch( + p.Network.OnBlockReceived(func(block *model.Block, src peer.ID) { + p.Clock.Set(block.ProtocolBlock().Header.IssuingTime) + }), + + p.Chains.WithElements(func(chain *Chain) (teardown func()) { + return chain.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { + return chain.LatestVerifiedCommitment.OnUpdate(func(_ *Commitment, latestCommitment *Commitment) { + p.Clock.Set(spawnedEngine.LatestAPI().TimeProvider().SlotEndTime(latestCommitment.Slot())) + }) + }) + }), + ) + p.Initialized.OnTrigger(func() { unsubscribeFromNetwork := lo.Batch( p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), @@ -79,6 +94,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E ) p.Shutdown.OnTrigger(func() { + stopClock() unsubscribeFromNetwork() p.BlocksProtocol.Shutdown() @@ -121,3 +137,11 @@ func (p *Protocol) Run(ctx context.Context) error { return ctx.Err() } + +func maxTimeBeforeWallClock(currentValue time.Time, newValue time.Time) time.Time { + if newValue.Before(currentValue) || newValue.After(time.Now()) { + return currentValue + } + + return newValue +} diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 580438083..62bfb9ff7 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -37,20 +37,33 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { protocol.Constructed.OnTrigger(func() { protocol.Chains.WithElements(func(chain *Chain) (teardown func()) { - return chain.VerifyAttestations.OnUpdate(func(_ bool, requestAttestations bool) { + return chain.RequestAttestations.WithValue(func(requestAttestations bool) (teardown func()) { forkingPoint := chain.ForkingPoint.Get() - if requestAttestations { - if commitmentBeforeForkingPoint := forkingPoint.Parent.Get(); commitmentBeforeForkingPoint != nil { - a.commitmentVerifiers.GetOrCreate(forkingPoint.ID(), func() *CommitmentVerifier { - // TODO: HANDLE ERROR GRACEFULLY - return lo.PanicOnErr(NewCommitmentVerifier(chain.Engine.Get(), commitmentBeforeForkingPoint.Commitment)) - }) + if commitmentBeforeForkingPoint := forkingPoint.Parent.Get(); commitmentBeforeForkingPoint != nil { + if err := a.createCommitmentVerifier(forkingPoint, chain, commitmentBeforeForkingPoint); err != nil { + a.commitmentVerifiers.Delete(forkingPoint.ID()) } - } else { + } + + return func() { a.commitmentVerifiers.Delete(forkingPoint.ID()) } }) + return chain.RequestAttestations.OnUpdate(func(_ bool, requestAttestations bool) { + forkingPoint := chain.ForkingPoint.Get() + if !requestAttestations { + a.commitmentVerifiers.Delete(forkingPoint.ID()) + + return + } + + if commitmentBeforeForkingPoint := forkingPoint.Parent.Get(); commitmentBeforeForkingPoint != nil { + if err := a.createCommitmentVerifier(forkingPoint, chain, commitmentBeforeForkingPoint); err != nil { + a.commitmentVerifiers.Delete(forkingPoint.ID()) + } + } + }) }) protocol.Commitments.WithElements(func(commitment *Commitment) (teardown func()) { @@ -71,6 +84,16 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { return a } +func (a *AttestationsProtocol) createCommitmentVerifier(forkingPoint *Commitment, chain *Chain, commitmentBeforeForkingPoint *Commitment) (err error) { + a.commitmentVerifiers.GetOrCreate(forkingPoint.ID(), func() (commitmentVerifier *CommitmentVerifier) { + commitmentVerifier, err = NewCommitmentVerifier(chain.Engine(), commitmentBeforeForkingPoint.Commitment) + + return commitmentVerifier + }) + + return err +} + func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { a.workerPool.Submit(func() { commitment, _, err := a.protocol.Commitments.Publish(commitmentModel) @@ -139,20 +162,20 @@ func (a *AttestationsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, return } - engineInstance := commitment.Engine() - if engineInstance == nil { + spawnedEngine := commitment.SpawnedEngine() + if spawnedEngine == nil { a.LogTrace("request for chain without engine", "chain", chain.LogName(), "fromPeer", from) return } - if engineInstance.Storage.Settings().LatestCommitment().Slot() < commitmentID.Slot() { + if spawnedEngine.Storage.Settings().LatestCommitment().Slot() < commitmentID.Slot() { a.LogTrace("requested commitment not verified", "commitment", commitment.LogName(), "fromPeer", from) return } - commitmentModel, err := engineInstance.Storage.Commitments().Load(commitmentID.Slot()) + commitmentModel, err := spawnedEngine.Storage.Commitments().Load(commitmentID.Slot()) if err != nil { if !ierrors.Is(err, kvstore.ErrKeyNotFound) { a.LogError("failed to load requested commitment from engine", "commitment", commitment.LogName(), "fromPeer", from, "err", err) @@ -169,14 +192,14 @@ func (a *AttestationsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, return } - attestations, err := engineInstance.Attestations.Get(commitmentID.Slot()) + attestations, err := spawnedEngine.Attestations.Get(commitmentID.Slot()) if err != nil { a.LogError("failed to load requested attestations", "commitment", commitment.LogName(), "fromPeer", from) return } - rootsStorage, err := engineInstance.Storage.Roots(commitmentID.Slot()) + rootsStorage, err := spawnedEngine.Storage.Roots(commitmentID.Slot()) if err != nil { a.LogError("failed to load roots storage for requested attestations", "commitment", commitment.LogName(), "fromPeer", from) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index d5dd2d941..a2345eab7 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -44,14 +44,14 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) protocol.Chains.WithElements(func(chain *Chain) func() { - return chain.Engine.OnUpdate(func(_ *engine.Engine, engine *engine.Engine) { + return chain.SpawnedEngine.OnUpdate(func(_ *engine.Engine, engine *engine.Engine) { unsubscribe := engine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook engine.Shutdown.OnTrigger(unsubscribe) }) }) - protocol.Chains.Main.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { + protocol.Chains.Main.Get().SpawnedEngine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { unsubscribeOnEngineChange(func() (unsubscribe func()) { return lo.Batch( @@ -92,7 +92,7 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { } commitment := commitmentRequest.Result() - if commitment == nil { + if commitment == nil || !commitment.Chain.Get().DispatchBlock(block, from) { if !b.droppedBlocksBuffer.Add(block.ProtocolBlock().Header.SlotCommitmentID, types.NewTuple(block, from)) { b.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID()) } else { @@ -102,16 +102,6 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { return } - if !commitment.Chain.Get().DispatchBlock(block, from) { - if !b.droppedBlocksBuffer.Add(block.ProtocolBlock().Header.SlotCommitmentID, types.NewTuple(block, from)) { - b.LogError("afailed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID()) - } else { - b.LogTrace("adropped block referencing unsolid commitment added to dropped blocks buffer", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID()) - } - - return - } - b.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName()) }) } diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 4fa4d59bf..f83df9720 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -94,7 +94,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } - targetEngine := commitment.Engine() + targetEngine := commitment.SpawnedEngine() if targetEngine == nil { w.LogDebug("failed to get target engine for response", "commitment", commitment.LogName()) @@ -263,7 +263,7 @@ func (w *WarpSyncProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from return } - engineInstance := commitment.Engine() + engineInstance := commitment.SpawnedEngine() if engineInstance == nil { w.LogTrace("warp-sync request for chain without engine", "chain", chain.LogName(), "fromPeer", from) From b905bd54c63c7c874220b90a712684a007f35f65 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 22 Nov 2023 03:22:18 +0100 Subject: [PATCH 264/356] Feat: more cleanup --- go.mod | 28 ++++++------- go.sum | 56 +++++++++++++------------- pkg/protocol/protocol_attestations.go | 57 ++++++++++++--------------- tools/gendoc/go.mod | 28 ++++++------- tools/gendoc/go.sum | 56 +++++++++++++------------- tools/genesis-snapshot/go.mod | 24 +++++------ tools/genesis-snapshot/go.sum | 48 +++++++++++----------- 7 files changed, 146 insertions(+), 151 deletions(-) diff --git a/go.mod b/go.mod index 7ec6fb71a..2451f12ff 100644 --- a/go.mod +++ b/go.mod @@ -10,20 +10,20 @@ require ( github.com/google/uuid v1.4.0 github.com/gorilla/websocket v1.5.1 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20231110191152-7135670285dc - github.com/iotaledger/hive.go/app v0.0.0-20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/constraints v0.0.0-20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/crypto v0.0.0-20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/ds v0.0.0-20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/kvstore v0.0.0-20231110191152-7135670285dc - github.com/iotaledger/hive.go/lo v0.0.0-20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/log v0.0.0-20231110191152-7135670285dc - github.com/iotaledger/hive.go/logger v0.0.0-20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/runtime v0.0.0-20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/stringify v0.0.0-20231113110812-4ca2b6cc9a42 + github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231120094046-1308e2a5e072 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 github.com/iotaledger/iota.go/v4 v4.0.0-20231120063545-80c263f28140 diff --git a/go.sum b/go.sum index d8a8e6585..abe5341f4 100644 --- a/go.sum +++ b/go.sum @@ -275,34 +275,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231110191152-7135670285dc h1:PsArE43UkLymmDy9r7n42Yd1pv1iq4FwSx3iv2Mo+vc= -github.com/iotaledger/hive.go/ads v0.0.0-20231110191152-7135670285dc/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231113110812-4ca2b6cc9a42 h1:K6VF23FOqHTRdk5OzsuBkYlGV008SZgKYqNwb0bp3rk= -github.com/iotaledger/hive.go/app v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= -github.com/iotaledger/hive.go/constraints v0.0.0-20231113110812-4ca2b6cc9a42 h1:+PyLPZhRHy+Negjpuj0CSLaObpErEH7yI6HB2z5N6b0= -github.com/iotaledger/hive.go/constraints v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231113110812-4ca2b6cc9a42 h1:3dW4gz0Vr9BogN826HRTp0OFlbngjhWcVPUfDhJ57Yw= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231113110812-4ca2b6cc9a42/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231113110812-4ca2b6cc9a42 h1:t6EKe+O7XAmbe07cVHuM/3aBLEbVIY4D6yefANB4PUA= -github.com/iotaledger/hive.go/crypto v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231113110812-4ca2b6cc9a42 h1:QZiMlDxmikF64zimWQunTrsEGOK9ydRahUAz2I46JAk= -github.com/iotaledger/hive.go/ds v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231113110812-4ca2b6cc9a42 h1:gxlZ4zL6EfLyqT0+hIFV3WVE0FrPVgV5cQdyn36vPXQ= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231110191152-7135670285dc h1:3fsqfM2NqfhrewVdlKT3MHcXxVNvUCSP7P32il1ypa0= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231110191152-7135670285dc/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231113110812-4ca2b6cc9a42 h1:kcHkWyURZDVqO80OmJo5Z+wTJB6H+s52WAnU575vX0o= -github.com/iotaledger/hive.go/lo v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231110191152-7135670285dc h1:joYrsSZuVG3DfAQR9iS3qjnMExJ0qNp2+369sxb1Y4g= -github.com/iotaledger/hive.go/log v0.0.0-20231110191152-7135670285dc/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231113110812-4ca2b6cc9a42 h1:uD99UbTtBM5SIP9N3c/3BBLtb0frGYFsZ2lS8Zxtqr4= -github.com/iotaledger/hive.go/logger v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231113110812-4ca2b6cc9a42 h1:hpR++ME3Y3CcxA431Zg0PgcCJUNkbBqjNXxR/bs+NdI= -github.com/iotaledger/hive.go/runtime v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231113110812-4ca2b6cc9a42 h1:hepsnGvaS39azq80GV8DT9HlexoO/RqJbyiW5FXZ0HQ= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231113110812-4ca2b6cc9a42/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231113110812-4ca2b6cc9a42 h1:9c7NiX2cnNPHR9UNWINDqNkolupXiDF3543pR6KLwIg= -github.com/iotaledger/hive.go/stringify v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d h1:ma1lnidD2i3P6TothwfCI0sYMYWznVxnjsgLU8EkVZk= +github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d h1:gmATV8KWAmJfHYTQFMSpOl19HSyObyIYNeAMybjNfrU= +github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d h1:t6m4NGToN55zoYjHMJ23lJ//9Bq0zrgfXnA5ULzSyPQ= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d h1:a7E1SsznVfVbNpaGn0zIwsFXEQ+n0VP5gDDe9S0uzgQ= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d h1:zieWXaSvgGR2C3WRlInsgASH6Nic3cu9na2qb6H9SBY= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d h1:4jIfgKKfMiOEjrWk6hRFrtrK5SXvIlShjbBrOo0Yv7U= +github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d h1:5TVJZVN4B7H0OV5ARP7VWUlI8CqHO4/ZftcvM0PkFo4= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d h1:FOlCv2hzILzfaTf58K25gEcese7YiHaM8O4xMTgzBK8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d h1:N1NyLt4JxkpVuu/p3kzrvGN5UzV8yOExJrSA6Yg/grU= +github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d h1:FHJZd0JljCbujTrL74sLcRsUI0KHSkqFJnRIvJPH4rg= +github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d h1:xkoth+LJ4sOR9xLTTPS8MMfj88mjH2U78w16RTtuNXg= +github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d h1:W/LmUNldvVsPWTq49/5Pw8qY6csdniZgsUn5b0FcZVk= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d h1:nWYOqBz6SWUddBiGFl35AOfIyPTbT/ZJXwYtNoF9oGk= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d h1:gYXVxuf0+GLjqIffpYx34pfwlJxkS9uF/kHl2zn8hWM= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231120094046-1308e2a5e072 h1:xbaW2dnDZy0ThcEcdK7ir3b+ynBXsn0R14lgxiFVuB0= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231120094046-1308e2a5e072/go.mod h1:iFiY6UukYeL8D3N1mtg4jh/9lxTBhzG0QgtD+w0gpps= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 h1:bYGO8jXNXJNMGPG9etGW7WXfLbRU9ofx1xdd29/sS9M= diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 62bfb9ff7..722320235 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -37,32 +37,8 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { protocol.Constructed.OnTrigger(func() { protocol.Chains.WithElements(func(chain *Chain) (teardown func()) { - return chain.RequestAttestations.WithValue(func(requestAttestations bool) (teardown func()) { - forkingPoint := chain.ForkingPoint.Get() - - if commitmentBeforeForkingPoint := forkingPoint.Parent.Get(); commitmentBeforeForkingPoint != nil { - if err := a.createCommitmentVerifier(forkingPoint, chain, commitmentBeforeForkingPoint); err != nil { - a.commitmentVerifiers.Delete(forkingPoint.ID()) - } - } - - return func() { - a.commitmentVerifiers.Delete(forkingPoint.ID()) - } - }) - return chain.RequestAttestations.OnUpdate(func(_ bool, requestAttestations bool) { - forkingPoint := chain.ForkingPoint.Get() - if !requestAttestations { - a.commitmentVerifiers.Delete(forkingPoint.ID()) - - return - } - - if commitmentBeforeForkingPoint := forkingPoint.Parent.Get(); commitmentBeforeForkingPoint != nil { - if err := a.createCommitmentVerifier(forkingPoint, chain, commitmentBeforeForkingPoint); err != nil { - a.commitmentVerifiers.Delete(forkingPoint.ID()) - } - } + return chain.RequestAttestations.WithNonEmptyValue(func(requestAttestations bool) (teardown func()) { + return a.setupCommitmentVerifier(chain) }) }) @@ -84,14 +60,33 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { return a } -func (a *AttestationsProtocol) createCommitmentVerifier(forkingPoint *Commitment, chain *Chain, commitmentBeforeForkingPoint *Commitment) (err error) { +func (a *AttestationsProtocol) setupCommitmentVerifier(chain *Chain) (teardown func()) { + forkingPoint := chain.ForkingPoint.Get() + if forkingPoint == nil { + a.LogError("failed to retrieve forking point", "chain", chain.LogName()) + + return nil + } + + parentOfForkingPoint := forkingPoint.Parent.Get() + if parentOfForkingPoint == nil { + a.LogError("failed to retrieve parent of forking point", "chain", chain.LogName()) + + return nil + } + a.commitmentVerifiers.GetOrCreate(forkingPoint.ID(), func() (commitmentVerifier *CommitmentVerifier) { - commitmentVerifier, err = NewCommitmentVerifier(chain.Engine(), commitmentBeforeForkingPoint.Commitment) + commitmentVerifier, err := NewCommitmentVerifier(forkingPoint.Chain.Get().Engine(), parentOfForkingPoint.Commitment) + if err != nil { + a.LogError("failed to create commitment verifier", "chain", chain.LogName(), "error", err) + } return commitmentVerifier }) - return err + return func() { + a.commitmentVerifiers.Delete(forkingPoint.ID()) + } } func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { @@ -118,8 +113,8 @@ func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment } commitmentVerifier, exists := a.commitmentVerifiers.Get(chain.ForkingPoint.Get().ID()) - if !exists { - a.LogDebug("failed to find commitment verifier", "commitment", commitment.LogName()) + if !exists || commitmentVerifier == nil { + a.LogDebug("failed to retrieve commitment verifier", "commitment", commitment.LogName()) return currentWeight } diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index b5cfb4db6..1a5ec0da8 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231113110812-4ca2b6cc9a42 + github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -56,19 +56,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231110191152-7135670285dc // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231110191152-7135670285dc // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231110191152-7135670285dc // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231113110812-4ca2b6cc9a42 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231120094046-1308e2a5e072 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231120063545-80c263f28140 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 4c0a34b99..80c8e616f 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -277,36 +277,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231110191152-7135670285dc h1:PsArE43UkLymmDy9r7n42Yd1pv1iq4FwSx3iv2Mo+vc= -github.com/iotaledger/hive.go/ads v0.0.0-20231110191152-7135670285dc/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231113110812-4ca2b6cc9a42 h1:K6VF23FOqHTRdk5OzsuBkYlGV008SZgKYqNwb0bp3rk= -github.com/iotaledger/hive.go/app v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d h1:ma1lnidD2i3P6TothwfCI0sYMYWznVxnjsgLU8EkVZk= +github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d h1:gmATV8KWAmJfHYTQFMSpOl19HSyObyIYNeAMybjNfrU= +github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231113110812-4ca2b6cc9a42 h1:+PyLPZhRHy+Negjpuj0CSLaObpErEH7yI6HB2z5N6b0= -github.com/iotaledger/hive.go/constraints v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231113110812-4ca2b6cc9a42 h1:3dW4gz0Vr9BogN826HRTp0OFlbngjhWcVPUfDhJ57Yw= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231113110812-4ca2b6cc9a42/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231113110812-4ca2b6cc9a42 h1:t6EKe+O7XAmbe07cVHuM/3aBLEbVIY4D6yefANB4PUA= -github.com/iotaledger/hive.go/crypto v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231113110812-4ca2b6cc9a42 h1:QZiMlDxmikF64zimWQunTrsEGOK9ydRahUAz2I46JAk= -github.com/iotaledger/hive.go/ds v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231113110812-4ca2b6cc9a42 h1:gxlZ4zL6EfLyqT0+hIFV3WVE0FrPVgV5cQdyn36vPXQ= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231110191152-7135670285dc h1:3fsqfM2NqfhrewVdlKT3MHcXxVNvUCSP7P32il1ypa0= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231110191152-7135670285dc/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231113110812-4ca2b6cc9a42 h1:kcHkWyURZDVqO80OmJo5Z+wTJB6H+s52WAnU575vX0o= -github.com/iotaledger/hive.go/lo v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231110191152-7135670285dc h1:joYrsSZuVG3DfAQR9iS3qjnMExJ0qNp2+369sxb1Y4g= -github.com/iotaledger/hive.go/log v0.0.0-20231110191152-7135670285dc/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231113110812-4ca2b6cc9a42 h1:uD99UbTtBM5SIP9N3c/3BBLtb0frGYFsZ2lS8Zxtqr4= -github.com/iotaledger/hive.go/logger v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231113110812-4ca2b6cc9a42 h1:hpR++ME3Y3CcxA431Zg0PgcCJUNkbBqjNXxR/bs+NdI= -github.com/iotaledger/hive.go/runtime v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231113110812-4ca2b6cc9a42 h1:hepsnGvaS39azq80GV8DT9HlexoO/RqJbyiW5FXZ0HQ= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231113110812-4ca2b6cc9a42/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231113110812-4ca2b6cc9a42 h1:9c7NiX2cnNPHR9UNWINDqNkolupXiDF3543pR6KLwIg= -github.com/iotaledger/hive.go/stringify v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d h1:t6m4NGToN55zoYjHMJ23lJ//9Bq0zrgfXnA5ULzSyPQ= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d h1:a7E1SsznVfVbNpaGn0zIwsFXEQ+n0VP5gDDe9S0uzgQ= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d h1:zieWXaSvgGR2C3WRlInsgASH6Nic3cu9na2qb6H9SBY= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d h1:4jIfgKKfMiOEjrWk6hRFrtrK5SXvIlShjbBrOo0Yv7U= +github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d h1:5TVJZVN4B7H0OV5ARP7VWUlI8CqHO4/ZftcvM0PkFo4= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d h1:FOlCv2hzILzfaTf58K25gEcese7YiHaM8O4xMTgzBK8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d h1:N1NyLt4JxkpVuu/p3kzrvGN5UzV8yOExJrSA6Yg/grU= +github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d h1:FHJZd0JljCbujTrL74sLcRsUI0KHSkqFJnRIvJPH4rg= +github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d h1:xkoth+LJ4sOR9xLTTPS8MMfj88mjH2U78w16RTtuNXg= +github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d h1:W/LmUNldvVsPWTq49/5Pw8qY6csdniZgsUn5b0FcZVk= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d h1:nWYOqBz6SWUddBiGFl35AOfIyPTbT/ZJXwYtNoF9oGk= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d h1:gYXVxuf0+GLjqIffpYx34pfwlJxkS9uF/kHl2zn8hWM= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231120094046-1308e2a5e072 h1:xbaW2dnDZy0ThcEcdK7ir3b+ynBXsn0R14lgxiFVuB0= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231120094046-1308e2a5e072/go.mod h1:iFiY6UukYeL8D3N1mtg4jh/9lxTBhzG0QgtD+w0gpps= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 h1:bYGO8jXNXJNMGPG9etGW7WXfLbRU9ofx1xdd29/sS9M= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 0d28ae51d..d94a0d6a0 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/lo v0.0.0-20231113110812-4ca2b6cc9a42 - github.com/iotaledger/hive.go/runtime v0.0.0-20231113110812-4ca2b6cc9a42 + github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231120063545-80c263f28140 github.com/mr-tron/base58 v1.2.0 @@ -26,14 +26,14 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231110191152-7135670285dc // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231110191152-7135670285dc // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231110191152-7135670285dc // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231113110812-4ca2b6cc9a42 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231113110812-4ca2b6cc9a42 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index b8d3f0878..f3ed6c83a 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,30 +28,30 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231110191152-7135670285dc h1:PsArE43UkLymmDy9r7n42Yd1pv1iq4FwSx3iv2Mo+vc= -github.com/iotaledger/hive.go/ads v0.0.0-20231110191152-7135670285dc/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/constraints v0.0.0-20231113110812-4ca2b6cc9a42 h1:+PyLPZhRHy+Negjpuj0CSLaObpErEH7yI6HB2z5N6b0= -github.com/iotaledger/hive.go/constraints v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231113110812-4ca2b6cc9a42 h1:3dW4gz0Vr9BogN826HRTp0OFlbngjhWcVPUfDhJ57Yw= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231113110812-4ca2b6cc9a42/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231113110812-4ca2b6cc9a42 h1:t6EKe+O7XAmbe07cVHuM/3aBLEbVIY4D6yefANB4PUA= -github.com/iotaledger/hive.go/crypto v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231113110812-4ca2b6cc9a42 h1:QZiMlDxmikF64zimWQunTrsEGOK9ydRahUAz2I46JAk= -github.com/iotaledger/hive.go/ds v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231113110812-4ca2b6cc9a42 h1:gxlZ4zL6EfLyqT0+hIFV3WVE0FrPVgV5cQdyn36vPXQ= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231110191152-7135670285dc h1:3fsqfM2NqfhrewVdlKT3MHcXxVNvUCSP7P32il1ypa0= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231110191152-7135670285dc/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231113110812-4ca2b6cc9a42 h1:kcHkWyURZDVqO80OmJo5Z+wTJB6H+s52WAnU575vX0o= -github.com/iotaledger/hive.go/lo v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231110191152-7135670285dc h1:joYrsSZuVG3DfAQR9iS3qjnMExJ0qNp2+369sxb1Y4g= -github.com/iotaledger/hive.go/log v0.0.0-20231110191152-7135670285dc/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/runtime v0.0.0-20231113110812-4ca2b6cc9a42 h1:hpR++ME3Y3CcxA431Zg0PgcCJUNkbBqjNXxR/bs+NdI= -github.com/iotaledger/hive.go/runtime v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231113110812-4ca2b6cc9a42 h1:hepsnGvaS39azq80GV8DT9HlexoO/RqJbyiW5FXZ0HQ= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231113110812-4ca2b6cc9a42/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231113110812-4ca2b6cc9a42 h1:9c7NiX2cnNPHR9UNWINDqNkolupXiDF3543pR6KLwIg= -github.com/iotaledger/hive.go/stringify v0.0.0-20231113110812-4ca2b6cc9a42/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d h1:ma1lnidD2i3P6TothwfCI0sYMYWznVxnjsgLU8EkVZk= +github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d h1:t6m4NGToN55zoYjHMJ23lJ//9Bq0zrgfXnA5ULzSyPQ= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d h1:a7E1SsznVfVbNpaGn0zIwsFXEQ+n0VP5gDDe9S0uzgQ= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d h1:zieWXaSvgGR2C3WRlInsgASH6Nic3cu9na2qb6H9SBY= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d h1:4jIfgKKfMiOEjrWk6hRFrtrK5SXvIlShjbBrOo0Yv7U= +github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d h1:5TVJZVN4B7H0OV5ARP7VWUlI8CqHO4/ZftcvM0PkFo4= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d h1:FOlCv2hzILzfaTf58K25gEcese7YiHaM8O4xMTgzBK8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d h1:N1NyLt4JxkpVuu/p3kzrvGN5UzV8yOExJrSA6Yg/grU= +github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d h1:FHJZd0JljCbujTrL74sLcRsUI0KHSkqFJnRIvJPH4rg= +github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d h1:W/LmUNldvVsPWTq49/5Pw8qY6csdniZgsUn5b0FcZVk= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d h1:nWYOqBz6SWUddBiGFl35AOfIyPTbT/ZJXwYtNoF9oGk= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d h1:gYXVxuf0+GLjqIffpYx34pfwlJxkS9uF/kHl2zn8hWM= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231120063545-80c263f28140 h1:8zHRYT1KADR9bOLUg7Ia4XA3StBHzV4Tb2Qtp42KLN8= github.com/iotaledger/iota.go/v4 v4.0.0-20231120063545-80c263f28140/go.mod h1:1CUJKGvkOUGXakxFZGAagEQDX9qYyhzIElmUHCHo9RM= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= From ab607eec7f2210bd91de663bf6e6199eb38db0ac Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 22 Nov 2023 03:28:10 +0100 Subject: [PATCH 265/356] Refactor: moved private method to end --- pkg/protocol/protocol_attestations.go | 58 +++++++++++++-------------- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 722320235..98f038d9b 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -60,35 +60,6 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { return a } -func (a *AttestationsProtocol) setupCommitmentVerifier(chain *Chain) (teardown func()) { - forkingPoint := chain.ForkingPoint.Get() - if forkingPoint == nil { - a.LogError("failed to retrieve forking point", "chain", chain.LogName()) - - return nil - } - - parentOfForkingPoint := forkingPoint.Parent.Get() - if parentOfForkingPoint == nil { - a.LogError("failed to retrieve parent of forking point", "chain", chain.LogName()) - - return nil - } - - a.commitmentVerifiers.GetOrCreate(forkingPoint.ID(), func() (commitmentVerifier *CommitmentVerifier) { - commitmentVerifier, err := NewCommitmentVerifier(forkingPoint.Chain.Get().Engine(), parentOfForkingPoint.Commitment) - if err != nil { - a.LogError("failed to create commitment verifier", "chain", chain.LogName(), "error", err) - } - - return commitmentVerifier - }) - - return func() { - a.commitmentVerifiers.Delete(forkingPoint.ID()) - } -} - func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { a.workerPool.Submit(func() { commitment, _, err := a.protocol.Commitments.Publish(commitmentModel) @@ -225,6 +196,35 @@ func (a *AttestationsProtocol) Shutdown() { a.workerPool.Shutdown().ShutdownComplete.Wait() } +func (a *AttestationsProtocol) setupCommitmentVerifier(chain *Chain) (teardown func()) { + forkingPoint := chain.ForkingPoint.Get() + if forkingPoint == nil { + a.LogError("failed to retrieve forking point", "chain", chain.LogName()) + + return nil + } + + parentOfForkingPoint := forkingPoint.Parent.Get() + if parentOfForkingPoint == nil { + a.LogError("failed to retrieve parent of forking point", "chain", chain.LogName()) + + return nil + } + + a.commitmentVerifiers.GetOrCreate(forkingPoint.ID(), func() (commitmentVerifier *CommitmentVerifier) { + commitmentVerifier, err := NewCommitmentVerifier(forkingPoint.Chain.Get().Engine(), parentOfForkingPoint.Commitment) + if err != nil { + a.LogError("failed to create commitment verifier", "chain", chain.LogName(), "error", err) + } + + return commitmentVerifier + }) + + return func() { + a.commitmentVerifiers.Delete(forkingPoint.ID()) + } +} + func (a *AttestationsProtocol) sendRequest(commitmentID iotago.CommitmentID) { a.workerPool.Submit(func() { if commitment, err := a.protocol.Commitments.Get(commitmentID, false); err == nil { From 02b8c1e815adbfa26c95dccc8a1364e8d5d6017c Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 22 Nov 2023 04:21:57 +0100 Subject: [PATCH 266/356] Feat: fixed race condition in hive --- go.mod | 28 +++++++++--------- go.sum | 56 +++++++++++++++++------------------ pkg/protocol/chain.go | 16 ++++------ tools/gendoc/go.mod | 28 +++++++++--------- tools/gendoc/go.sum | 56 +++++++++++++++++------------------ tools/genesis-snapshot/go.mod | 24 +++++++-------- tools/genesis-snapshot/go.sum | 48 +++++++++++++++--------------- 7 files changed, 126 insertions(+), 130 deletions(-) diff --git a/go.mod b/go.mod index 82e211134..7f70338ee 100644 --- a/go.mod +++ b/go.mod @@ -10,20 +10,20 @@ require ( github.com/google/uuid v1.4.0 github.com/gorilla/websocket v1.5.1 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 + github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 + github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 github.com/iotaledger/iota.go/v4 v4.0.0-20231120063545-80c263f28140 diff --git a/go.sum b/go.sum index fd189a359..ecd44fade 100644 --- a/go.sum +++ b/go.sum @@ -275,34 +275,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d h1:ma1lnidD2i3P6TothwfCI0sYMYWznVxnjsgLU8EkVZk= -github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d h1:gmATV8KWAmJfHYTQFMSpOl19HSyObyIYNeAMybjNfrU= -github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d h1:t6m4NGToN55zoYjHMJ23lJ//9Bq0zrgfXnA5ULzSyPQ= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d h1:a7E1SsznVfVbNpaGn0zIwsFXEQ+n0VP5gDDe9S0uzgQ= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d h1:zieWXaSvgGR2C3WRlInsgASH6Nic3cu9na2qb6H9SBY= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d h1:4jIfgKKfMiOEjrWk6hRFrtrK5SXvIlShjbBrOo0Yv7U= -github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d h1:5TVJZVN4B7H0OV5ARP7VWUlI8CqHO4/ZftcvM0PkFo4= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d h1:FOlCv2hzILzfaTf58K25gEcese7YiHaM8O4xMTgzBK8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d h1:N1NyLt4JxkpVuu/p3kzrvGN5UzV8yOExJrSA6Yg/grU= -github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d h1:FHJZd0JljCbujTrL74sLcRsUI0KHSkqFJnRIvJPH4rg= -github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d h1:xkoth+LJ4sOR9xLTTPS8MMfj88mjH2U78w16RTtuNXg= -github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d h1:W/LmUNldvVsPWTq49/5Pw8qY6csdniZgsUn5b0FcZVk= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d h1:nWYOqBz6SWUddBiGFl35AOfIyPTbT/ZJXwYtNoF9oGk= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d h1:gYXVxuf0+GLjqIffpYx34pfwlJxkS9uF/kHl2zn8hWM= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 h1:/bPkeopkkxvxYnq2+rwmhmwy9BllRE5UqA9Cp+PimGQ= +github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8 h1:IXAjdd6aUNXKXdgFsW5tDFft7lRCefraDSar5YqOu+M= +github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 h1:yiD0GFjG/YmdZW6wRmBC3ptIB3w3rVgQ4UDb90r23vI= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 h1:M1LrOy5jMCzy+32FacXefYD/Q4ubkkZU4PVXY3G2pu0= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 h1:Yo+YCBbjuOu0J0KmIqV50KRXFGi8v/HAKuLYr+2E9r4= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 h1:VhjAt9Thwsd1biYGIRTfH+akYvCpUpl425f6u23wu5U= +github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 h1:ICQ5vZlL7ZlR/BQTPGkuaOrNGLS0d8hc2RlcJm3wivM= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 h1:dCOgLYm2W9TUoQLWcImFG38kk0lRYjVHGsP5n7iZkBE= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 h1:O1cXMY+n5gMA9X3c+jjOrv6AADEpi4ts/ETQVPGBHIY= +github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 h1:dQeW6RJz3RJ+WMCUVjCrEVp8OtzU6TVhV9mxn6Hr478= +github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8 h1:6kbSEaFTZ+8wwektMJ58na39kAiTloBLRRrjOh2pcRE= +github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 h1:TYBWMTGE0Oka/DF2QIUYMURvA+cnVPyvFxChFLTREdU= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 h1:PNRe2VbUzI7CCKf8aCxb1t0P08zqlD0BBtrBZ9D/YlY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 h1:O8zvNJCJ+AQJgMbpdDKMCVdYKmDTh6RxOtLZHYfPtSc= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 h1:hAVWoyAF4FE+1gUd2IqvTBDTnQ4Z0GKE6qc8qw9QPqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180/go.mod h1:iFiY6UukYeL8D3N1mtg4jh/9lxTBhzG0QgtD+w0gpps= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 h1:bYGO8jXNXJNMGPG9etGW7WXfLbRU9ofx1xdd29/sS9M= diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index c95f4c8e7..1f8409005 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -119,7 +119,7 @@ func (c *Chain) Engine() *engine.Engine { return currentEngine } -// Commitment returns the Commitment for the given slot. +// Commitment returns the Commitment for the given slot from the perspective of this chain. func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c; currentChain != nil; { switch forkingPoint := currentChain.ForkingPoint.Get(); { @@ -200,7 +200,11 @@ func (c *Chain) initLogging(chains *Chains) (self *Chain) { func (c *Chain) initBehavior(chains *Chains) (self *Chain) { teardownBehavior := lo.Batch( c.Parent.WithNonEmptyValue(func(parent *Chain) (teardown func()) { - return parent.registerChild(c) + parent.Children.Add(c) + + return func() { + parent.Children.Delete(c) + } }), c.SpawnedEngine.WithNonEmptyValue(func(engine *engine.Engine) (teardown func()) { @@ -323,11 +327,3 @@ func (c *Chain) registerCommitment(newCommitment *Commitment) (unregister func() c.LatestVerifiedCommitment.Compute(resetToParent) } } - -func (c *Chain) registerChild(child *Chain) (unregisterChild func()) { - c.Children.Add(child) - - return func() { - c.Children.Delete(child) - } -} diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 80365a8c5..53dcedbf5 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -56,19 +56,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231120063545-80c263f28140 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index ffb67fec7..38e94fa1a 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -277,36 +277,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d h1:ma1lnidD2i3P6TothwfCI0sYMYWznVxnjsgLU8EkVZk= -github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d h1:gmATV8KWAmJfHYTQFMSpOl19HSyObyIYNeAMybjNfrU= -github.com/iotaledger/hive.go/app v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 h1:/bPkeopkkxvxYnq2+rwmhmwy9BllRE5UqA9Cp+PimGQ= +github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8 h1:IXAjdd6aUNXKXdgFsW5tDFft7lRCefraDSar5YqOu+M= +github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d h1:t6m4NGToN55zoYjHMJ23lJ//9Bq0zrgfXnA5ULzSyPQ= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d h1:a7E1SsznVfVbNpaGn0zIwsFXEQ+n0VP5gDDe9S0uzgQ= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d h1:zieWXaSvgGR2C3WRlInsgASH6Nic3cu9na2qb6H9SBY= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d h1:4jIfgKKfMiOEjrWk6hRFrtrK5SXvIlShjbBrOo0Yv7U= -github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d h1:5TVJZVN4B7H0OV5ARP7VWUlI8CqHO4/ZftcvM0PkFo4= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d h1:FOlCv2hzILzfaTf58K25gEcese7YiHaM8O4xMTgzBK8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d h1:N1NyLt4JxkpVuu/p3kzrvGN5UzV8yOExJrSA6Yg/grU= -github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d h1:FHJZd0JljCbujTrL74sLcRsUI0KHSkqFJnRIvJPH4rg= -github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d h1:xkoth+LJ4sOR9xLTTPS8MMfj88mjH2U78w16RTtuNXg= -github.com/iotaledger/hive.go/logger v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d h1:W/LmUNldvVsPWTq49/5Pw8qY6csdniZgsUn5b0FcZVk= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d h1:nWYOqBz6SWUddBiGFl35AOfIyPTbT/ZJXwYtNoF9oGk= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d h1:gYXVxuf0+GLjqIffpYx34pfwlJxkS9uF/kHl2zn8hWM= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 h1:yiD0GFjG/YmdZW6wRmBC3ptIB3w3rVgQ4UDb90r23vI= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 h1:M1LrOy5jMCzy+32FacXefYD/Q4ubkkZU4PVXY3G2pu0= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 h1:Yo+YCBbjuOu0J0KmIqV50KRXFGi8v/HAKuLYr+2E9r4= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 h1:VhjAt9Thwsd1biYGIRTfH+akYvCpUpl425f6u23wu5U= +github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 h1:ICQ5vZlL7ZlR/BQTPGkuaOrNGLS0d8hc2RlcJm3wivM= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 h1:dCOgLYm2W9TUoQLWcImFG38kk0lRYjVHGsP5n7iZkBE= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 h1:O1cXMY+n5gMA9X3c+jjOrv6AADEpi4ts/ETQVPGBHIY= +github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 h1:dQeW6RJz3RJ+WMCUVjCrEVp8OtzU6TVhV9mxn6Hr478= +github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8 h1:6kbSEaFTZ+8wwektMJ58na39kAiTloBLRRrjOh2pcRE= +github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 h1:TYBWMTGE0Oka/DF2QIUYMURvA+cnVPyvFxChFLTREdU= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 h1:PNRe2VbUzI7CCKf8aCxb1t0P08zqlD0BBtrBZ9D/YlY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 h1:O8zvNJCJ+AQJgMbpdDKMCVdYKmDTh6RxOtLZHYfPtSc= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 h1:hAVWoyAF4FE+1gUd2IqvTBDTnQ4Z0GKE6qc8qw9QPqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180/go.mod h1:iFiY6UukYeL8D3N1mtg4jh/9lxTBhzG0QgtD+w0gpps= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 h1:bYGO8jXNXJNMGPG9etGW7WXfLbRU9ofx1xdd29/sS9M= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index d94a0d6a0..ea040bda5 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d - github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d + github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231120063545-80c263f28140 github.com/mr-tron/base58 v1.2.0 @@ -26,14 +26,14 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index f3ed6c83a..a8a2593a3 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,30 +28,30 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d h1:ma1lnidD2i3P6TothwfCI0sYMYWznVxnjsgLU8EkVZk= -github.com/iotaledger/hive.go/ads v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d h1:t6m4NGToN55zoYjHMJ23lJ//9Bq0zrgfXnA5ULzSyPQ= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d h1:a7E1SsznVfVbNpaGn0zIwsFXEQ+n0VP5gDDe9S0uzgQ= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122011820-fae2840ffc8d/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d h1:zieWXaSvgGR2C3WRlInsgASH6Nic3cu9na2qb6H9SBY= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d h1:4jIfgKKfMiOEjrWk6hRFrtrK5SXvIlShjbBrOo0Yv7U= -github.com/iotaledger/hive.go/ds v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d h1:5TVJZVN4B7H0OV5ARP7VWUlI8CqHO4/ZftcvM0PkFo4= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d h1:FOlCv2hzILzfaTf58K25gEcese7YiHaM8O4xMTgzBK8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d h1:N1NyLt4JxkpVuu/p3kzrvGN5UzV8yOExJrSA6Yg/grU= -github.com/iotaledger/hive.go/lo v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d h1:FHJZd0JljCbujTrL74sLcRsUI0KHSkqFJnRIvJPH4rg= -github.com/iotaledger/hive.go/log v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d h1:W/LmUNldvVsPWTq49/5Pw8qY6csdniZgsUn5b0FcZVk= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d h1:nWYOqBz6SWUddBiGFl35AOfIyPTbT/ZJXwYtNoF9oGk= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122011820-fae2840ffc8d/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d h1:gYXVxuf0+GLjqIffpYx34pfwlJxkS9uF/kHl2zn8hWM= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122011820-fae2840ffc8d/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 h1:/bPkeopkkxvxYnq2+rwmhmwy9BllRE5UqA9Cp+PimGQ= +github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 h1:yiD0GFjG/YmdZW6wRmBC3ptIB3w3rVgQ4UDb90r23vI= +github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 h1:M1LrOy5jMCzy+32FacXefYD/Q4ubkkZU4PVXY3G2pu0= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 h1:Yo+YCBbjuOu0J0KmIqV50KRXFGi8v/HAKuLYr+2E9r4= +github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 h1:VhjAt9Thwsd1biYGIRTfH+akYvCpUpl425f6u23wu5U= +github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 h1:ICQ5vZlL7ZlR/BQTPGkuaOrNGLS0d8hc2RlcJm3wivM= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 h1:dCOgLYm2W9TUoQLWcImFG38kk0lRYjVHGsP5n7iZkBE= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 h1:O1cXMY+n5gMA9X3c+jjOrv6AADEpi4ts/ETQVPGBHIY= +github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 h1:dQeW6RJz3RJ+WMCUVjCrEVp8OtzU6TVhV9mxn6Hr478= +github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 h1:TYBWMTGE0Oka/DF2QIUYMURvA+cnVPyvFxChFLTREdU= +github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 h1:PNRe2VbUzI7CCKf8aCxb1t0P08zqlD0BBtrBZ9D/YlY= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 h1:O8zvNJCJ+AQJgMbpdDKMCVdYKmDTh6RxOtLZHYfPtSc= +github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231120063545-80c263f28140 h1:8zHRYT1KADR9bOLUg7Ia4XA3StBHzV4Tb2Qtp42KLN8= github.com/iotaledger/iota.go/v4 v4.0.0-20231120063545-80c263f28140/go.mod h1:1CUJKGvkOUGXakxFZGAagEQDX9qYyhzIElmUHCHo9RM= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= From 56b35b7be3cce0dfd19eb673d2e8a9a289a90178 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 22 Nov 2023 13:34:04 +0100 Subject: [PATCH 267/356] Feat: finished commenting chain --- pkg/protocol/chain.go | 95 ++++++++++++++------------- pkg/protocol/chains.go | 2 +- pkg/protocol/protocol.go | 2 +- pkg/protocol/protocol_attestations.go | 2 +- pkg/protocol/protocol_blocks.go | 2 +- 5 files changed, 54 insertions(+), 49 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 1f8409005..e6e075def 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -31,8 +31,9 @@ type Chain struct { // LatestAttestedCommitment contains the latest commitment of this chain for which attestations were received. LatestAttestedCommitment reactive.Variable[*Commitment] - // LatestVerifiedCommitment contains the latest commitment of this chain that we produced by an engine instance. - LatestVerifiedCommitment reactive.Variable[*Commitment] + // LatestProducedCommitment contains the latest commitment of this chain that we produced ourselves by booking the + // corresponding blocks in the SpawnedEngine. + LatestProducedCommitment reactive.Variable[*Commitment] // ClaimedWeight contains the claimed weight of this chain which is derived from the cumulative weight of the // LatestCommitment. @@ -64,10 +65,11 @@ type Chain struct { // requesting attestations. RequestAttestations reactive.Variable[bool] - // RequestBlocks contains a flag that indicates whether this chain should verify the state by requesting blocks. + // RequestBlocks contains a flag that indicates whether this chain should verify the state by requesting blocks and + // processing them in its SpawnedEngine. RequestBlocks reactive.Variable[bool] - // SpawnedEngine contains the engine that was spawned by this chain. + // SpawnedEngine contains the engine that is used to process blocks for this chain. SpawnedEngine reactive.Variable[*engine.Engine] // IsEvicted contains a flag that indicates whether this chain was evicted. @@ -88,7 +90,7 @@ func NewChain(chains *Chains) *Chain { Children: reactive.NewSet[*Chain](), LatestCommitment: reactive.NewVariable[*Commitment](), LatestAttestedCommitment: reactive.NewVariable[*Commitment](), - LatestVerifiedCommitment: reactive.NewVariable[*Commitment](), + LatestProducedCommitment: reactive.NewVariable[*Commitment](), ClaimedWeight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](), VerifiedWeight: reactive.NewVariable[uint64](), @@ -105,18 +107,38 @@ func NewChain(chains *Chains) *Chain { }).initLogging(chains).initBehavior(chains) } -// Engine returns the engine that is spawned by this chain. -func (c *Chain) Engine() *engine.Engine { - currentChain, currentEngine := c, c.SpawnedEngine.Get() - for currentEngine == nil { - if currentChain = c.Parent.Get(); currentChain == nil { - return nil +// DispatchBlock dispatches the given block to the chain and its children. +func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (dispatched bool) { + // allow to call this method on a nil chain to avoid nil checks in the caller when dispatching to unsolid chains + if c == nil { + return false + } + + // first try to dispatch to our chain + if spawnedEngine := c.SpawnedEngine.Get(); spawnedEngine != nil { + // only dispatch blocks that are for slots larger than the latest commitment + if targetSlot := spawnedEngine.APIForTime(block.ProtocolBlock().Header.IssuingTime).TimeProvider().SlotFromTime(block.ProtocolBlock().Header.IssuingTime); targetSlot > spawnedEngine.LatestCommitment.Get().Slot() { + // if we are in warp sync mode, then we only accept blocks that are part of the blocks to warp sync. + if dispatched = !c.WarpSyncMode.Get(); !dispatched { + if targetCommitment, targetCommitmentExists := c.Commitment(targetSlot); targetCommitmentExists { + if blocksToWarpSync := targetCommitment.BlocksToWarpSync.Get(); blocksToWarpSync != nil && blocksToWarpSync.Has(block.ID()) { + dispatched = true + } + } + } + + if dispatched { + spawnedEngine.ProcessBlockFromPeer(block, src) + } } + } - currentEngine = currentChain.SpawnedEngine.Get() + // then try to dispatch to our children + for _, childChain := range c.Children.ToSlice() { + dispatched = childChain.DispatchBlock(block, src) || dispatched } - return currentEngine + return dispatched } // Commitment returns the Commitment for the given slot from the perspective of this chain. @@ -135,36 +157,18 @@ func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exist return nil, false } -func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (success bool) { - if c == nil { - return false - } - - for _, chain := range append([]*Chain{c}, c.Children.ToSlice()...) { - spawnedEngine := chain.SpawnedEngine.Get() - if spawnedEngine == nil { - continue - } - - if chain.WarpSyncMode.Get() { - issuingTime := block.ProtocolBlock().Header.IssuingTime - - targetCommitment, targetCommitmentExists := chain.Commitment(spawnedEngine.APIForTime(issuingTime).TimeProvider().SlotFromTime(issuingTime)) - if !targetCommitmentExists { - continue - } - - if blocksToWarpSync := targetCommitment.BlocksToWarpSync.Get(); blocksToWarpSync == nil || !blocksToWarpSync.Has(block.ID()) { - continue - } +// LatestEngine returns the latest engine instance that was spawned by the chain itself or one of its ancestors. +func (c *Chain) LatestEngine() *engine.Engine { + currentChain, currentEngine := c, c.SpawnedEngine.Get() + for currentEngine == nil { + if currentChain = c.Parent.Get(); currentChain == nil { + return nil } - spawnedEngine.ProcessBlockFromPeer(block, src) - - success = true + currentEngine = currentChain.SpawnedEngine.Get() } - return success + return currentEngine } // initLogging initializes the logging of changes to the properties of this chain. @@ -182,7 +186,7 @@ func (c *Chain) initLogging(chains *Chains) (self *Chain) { c.AttestedWeight.LogUpdates(c, log.LevelTrace, "AttestedWeight"), c.VerifiedWeight.LogUpdates(c, log.LevelTrace, "VerifiedWeight"), c.LatestCommitment.LogUpdates(c, log.LevelTrace, "LatestCommitment", (*Commitment).LogName), - c.LatestVerifiedCommitment.LogUpdates(c, log.LevelDebug, "LatestVerifiedCommitment", (*Commitment).LogName), + c.LatestProducedCommitment.LogUpdates(c, log.LevelDebug, "LatestProducedCommitment", (*Commitment).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), c.RequestBlocks.LogUpdates(c, log.LevelDebug, "RequestBlocks"), c.SpawnedEngine.LogUpdates(c, log.LevelTrace, "SpawnedEngine", (*engine.Engine).LogName), @@ -265,7 +269,7 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { } return latestVerifiedCommitment.CumulativeWeight() - }, c.LatestVerifiedCommitment)), + }, c.LatestProducedCommitment)), // the AttestedWeight is defined slightly different from the ClaimedWeight and VerifiedWeight, because it is not // derived from a static value in the commitment but a dynamic value that is derived from the received @@ -276,7 +280,7 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSync bool, latestVerifiedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { return latestVerifiedCommitment != nil && lo.Cond(warpSync, latestVerifiedCommitment.ID().Slot() < warpSyncThreshold, latestVerifiedCommitment.ID().Slot() < outOfSyncThreshold) - }, c.LatestVerifiedCommitment, c.WarpSyncThreshold, c.OutOfSyncThreshold, c.WarpSyncMode.Get())), + }, c.LatestProducedCommitment, c.WarpSyncThreshold, c.OutOfSyncThreshold, c.WarpSyncMode.Get())), ) c.IsEvicted.OnTrigger(teardownBehavior) @@ -284,9 +288,10 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { return c } +// registerCommitment registers the given commitment with this chain. func (c *Chain) registerCommitment(newCommitment *Commitment) (unregister func()) { // if a commitment for this slot already exists, then this is a newly forked commitment, that only got associated - // with this chain because it temporarily inherited it through its parent before forking its own chain + // with this chain because it temporarily inherited it through its parent before forking (ignore it). if c.commitments.Compute(newCommitment.Slot(), func(currentCommitment *Commitment, exists bool) *Commitment { return lo.Cond(exists, currentCommitment, newCommitment) }) != newCommitment { @@ -306,7 +311,7 @@ func (c *Chain) registerCommitment(newCommitment *Commitment) (unregister func() unsubscribe := lo.Batch( newCommitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Compute(maxCommitment) }), - newCommitment.IsVerified.OnTrigger(func() { c.LatestVerifiedCommitment.Compute(maxCommitment) }), + newCommitment.IsVerified.OnTrigger(func() { c.LatestProducedCommitment.Compute(maxCommitment) }), ) return func() { @@ -324,6 +329,6 @@ func (c *Chain) registerCommitment(newCommitment *Commitment) (unregister func() c.LatestCommitment.Compute(resetToParent) c.LatestAttestedCommitment.Compute(resetToParent) - c.LatestVerifiedCommitment.Compute(resetToParent) + c.LatestProducedCommitment.Compute(resetToParent) } } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 0ba94581e..558ad13b9 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -104,7 +104,7 @@ func (c *Chains) initChainSwitching() { }) c.HeaviestVerified.OnUpdate(func(_ *Chain, heaviestVerifiedChain *Chain) { - heaviestVerifiedChain.LatestVerifiedCommitment.OnUpdate(func(_ *Commitment, latestVerifiedCommitment *Commitment) { + heaviestVerifiedChain.LatestProducedCommitment.OnUpdate(func(_ *Commitment, latestVerifiedCommitment *Commitment) { forkingPoint := heaviestVerifiedChain.ForkingPoint.Get() if forkingPoint == nil || latestVerifiedCommitment == nil { return diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 28578b2fd..2cf63907a 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -73,7 +73,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.Chains.WithElements(func(chain *Chain) (teardown func()) { return chain.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { - return chain.LatestVerifiedCommitment.OnUpdate(func(_ *Commitment, latestCommitment *Commitment) { + return chain.LatestProducedCommitment.OnUpdate(func(_ *Commitment, latestCommitment *Commitment) { p.Clock.Set(spawnedEngine.LatestAPI().TimeProvider().SlotEndTime(latestCommitment.Slot())) }) }) diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 98f038d9b..1a8831b41 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -212,7 +212,7 @@ func (a *AttestationsProtocol) setupCommitmentVerifier(chain *Chain) (teardown f } a.commitmentVerifiers.GetOrCreate(forkingPoint.ID(), func() (commitmentVerifier *CommitmentVerifier) { - commitmentVerifier, err := NewCommitmentVerifier(forkingPoint.Chain.Get().Engine(), parentOfForkingPoint.Commitment) + commitmentVerifier, err := NewCommitmentVerifier(forkingPoint.Chain.Get().LatestEngine(), parentOfForkingPoint.Commitment) if err != nil { a.LogError("failed to create commitment verifier", "chain", chain.LogName(), "error", err) } diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index a2345eab7..52ff77761 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -102,7 +102,7 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { return } - b.LogTrace("processed received block", "blockID", block.ID(), "commitment", commitment.LogName()) + b.LogTrace("received block", "blockID", block.ID(), "commitment", commitment.LogName()) }) } From 21d93d73d22bbd199bc86008c9cf778fefe1b935 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 22 Nov 2023 16:23:28 +0100 Subject: [PATCH 268/356] Feat: started cleaning up chains.go --- pkg/protocol/api_provider.go | 53 ----------------------- pkg/protocol/chain.go | 14 +++--- pkg/protocol/chains.go | 76 ++++++++++++++++----------------- pkg/protocol/commitment.go | 6 +-- pkg/protocol/engines.go | 8 ++-- pkg/protocol/protocol.go | 47 ++++++++++++++++++-- pkg/protocol/protocol_blocks.go | 6 +-- 7 files changed, 97 insertions(+), 113 deletions(-) delete mode 100644 pkg/protocol/api_provider.go diff --git a/pkg/protocol/api_provider.go b/pkg/protocol/api_provider.go deleted file mode 100644 index 0008bc173..000000000 --- a/pkg/protocol/api_provider.go +++ /dev/null @@ -1,53 +0,0 @@ -package protocol - -import ( - "time" - - "github.com/iotaledger/hive.go/ierrors" - iotago "github.com/iotaledger/iota.go/v4" -) - -// APIProvider is a protocol component that exposes the methods to comply with the iotago.APIProvider interface. -type APIProvider struct { - // Protocol is the protocol instance. - *Protocol -} - -// NewAPIProvider creates a new APIProvider. -func NewAPIProvider(protocol *Protocol) *APIProvider { - return &APIProvider{Protocol: protocol} -} - -// APIForVersion returns the API for the given version. -func (a *APIProvider) APIForVersion(version iotago.Version) (api iotago.API, err error) { - if mainEngineInstance := a.Engines.Main.Get(); mainEngineInstance != nil { - return mainEngineInstance.APIForVersion(version) - } - - return nil, ierrors.New("no engine instance available") -} - -// APIForSlot returns the API for the given slot. -func (a *APIProvider) APIForSlot(slot iotago.SlotIndex) iotago.API { - return a.Engines.Main.Get().APIForSlot(slot) -} - -// APIForEpoch returns the API for the given epoch. -func (a *APIProvider) APIForEpoch(epoch iotago.EpochIndex) iotago.API { - return a.Engines.Main.Get().APIForEpoch(epoch) -} - -// APIForTime returns the API for the given time. -func (a *APIProvider) APIForTime(t time.Time) iotago.API { - return a.Engines.Main.Get().APIForTime(t) -} - -// CommittedAPI returns the API for the committed state. -func (a *APIProvider) CommittedAPI() iotago.API { - return a.Engines.Main.Get().CommittedAPI() -} - -// LatestAPI returns the latest API. -func (a *APIProvider) LatestAPI() iotago.API { - return a.Engines.Main.Get().LatestAPI() -} diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index e6e075def..44e2cfffd 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -82,8 +82,8 @@ type Chain struct { log.Logger } -// NewChain creates a new chain instance. -func NewChain(chains *Chains) *Chain { +// newChain creates a new chain instance. +func newChain(chains *Chains) *Chain { return (&Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), Parent: reactive.NewVariable[*Chain](), @@ -263,12 +263,12 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { return latestCommitment.CumulativeWeight() }, c.LatestCommitment)), - c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestVerifiedCommitment *Commitment) uint64 { - if latestVerifiedCommitment == nil { + c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestProducedCommitment *Commitment) uint64 { + if latestProducedCommitment == nil { return 0 } - return latestVerifiedCommitment.CumulativeWeight() + return latestProducedCommitment.CumulativeWeight() }, c.LatestProducedCommitment)), // the AttestedWeight is defined slightly different from the ClaimedWeight and VerifiedWeight, because it is not @@ -278,8 +278,8 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) }), - c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSync bool, latestVerifiedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - return latestVerifiedCommitment != nil && lo.Cond(warpSync, latestVerifiedCommitment.ID().Slot() < warpSyncThreshold, latestVerifiedCommitment.ID().Slot() < outOfSyncThreshold) + c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSync bool, latestProducedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + return latestProducedCommitment != nil && lo.Cond(warpSync, latestProducedCommitment.ID().Slot() < warpSyncThreshold, latestProducedCommitment.ID().Slot() < outOfSyncThreshold) }, c.LatestProducedCommitment, c.WarpSyncThreshold, c.OutOfSyncThreshold, c.WarpSyncMode.Get())), ) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 558ad13b9..88b307c7a 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -9,13 +9,15 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) +// Chains represents the set of chains that are managed by the protocol. type Chains struct { + // Set contains all chains that are managed by the protocol. reactive.Set[*Chain] + Main reactive.Variable[*Chain] HeaviestClaimed reactive.Variable[*Chain] HeaviestAttested reactive.Variable[*Chain] HeaviestVerified reactive.Variable[*Chain] - Main reactive.Variable[*Chain] protocol *Protocol } @@ -34,19 +36,16 @@ func newChains(protocol *Protocol) *Chains { c.HeaviestClaimed.LogUpdates(c.protocol, log.LevelTrace, "HeaviestClaimed", (*Chain).LogName) c.HeaviestAttested.LogUpdates(c.protocol, log.LevelTrace, "HeaviestAttested", (*Chain).LogName) - trackHeaviestChain := func(targetChainVariable reactive.Variable[*Chain], weightVariable func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { - return weightVariable(candidate).OnUpdate(func(_ uint64, newWeight uint64) { - if heaviestChain := c.HeaviestVerified.Get(); heaviestChain != nil && newWeight < heaviestChain.VerifiedWeight.Get() { - return + trackHeaviestChain := func(candidateVar reactive.Variable[*Chain], weightVar func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { + return weightVar(candidate).OnUpdate(func(_ uint64, newWeight uint64) { + // if the weight of the candidate is higher than the current main chain + if mainChain := c.Main.Get(); mainChain == nil || newWeight > mainChain.VerifiedWeight.Get() { + // try to set the candidate as the new heaviest chain + candidateVar.Compute(func(currentCandidate *Chain) *Chain { + // only set the candidate as the heaviest chain if it is still the heaviest chain (double locking) + return lo.Cond(currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newWeight > weightVar(currentCandidate).Get(), candidate, currentCandidate) + }) } - - targetChainVariable.Compute(func(currentCandidate *Chain) *Chain { - if currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newWeight > weightVariable(currentCandidate).Get() { - return candidate - } - - return currentCandidate - }) }, true) } @@ -67,7 +66,7 @@ func newChains(protocol *Protocol) *Chains { } func (c *Chains) Fork(forkingPoint *Commitment) *Chain { - chain := NewChain(c) + chain := newChain(c) chain.ForkingPoint.Set(forkingPoint) c.Add(chain) @@ -76,11 +75,8 @@ func (c *Chains) Fork(forkingPoint *Commitment) *Chain { } func (c *Chains) initMainChain() { - c.protocol.LogTrace("initializing main chain") - - mainChain := NewChain(c) + mainChain := newChain(c) mainChain.RequestBlocks.Set(true) - mainChain.SpawnedEngine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { c.protocol.Events.Engine.LinkTo(newEngine.Events) }) c.Main.Set(mainChain) @@ -88,32 +84,26 @@ func (c *Chains) initMainChain() { } func (c *Chains) initChainSwitching() { - c.HeaviestClaimed.OnUpdate(func(prevHeaviestChain *Chain, heaviestChain *Chain) { - if prevHeaviestChain != nil { - prevHeaviestChain.RequestAttestations.Set(false) - } + // only switch to the heaviest chain if the latest produced commitment is enough slots away from the forking point. + chainSwitchingCondition := func(heavierChain *Chain, latestProducedCommitment *Commitment) bool { + forkingPoint := heavierChain.ForkingPoint.Get() - if !heaviestChain.RequestBlocks.Get() { - heaviestChain.RequestAttestations.Set(true) - } - }) + return forkingPoint != nil && latestProducedCommitment != nil && (latestProducedCommitment.ID().Slot()-forkingPoint.ID().Slot()) > c.protocol.Options.ChainSwitchingThreshold + } - c.HeaviestAttested.OnUpdate(func(_ *Chain, heaviestAttestedChain *Chain) { - heaviestAttestedChain.RequestAttestations.Set(false) - heaviestAttestedChain.RequestBlocks.Set(true) + c.HeaviestClaimed.WithNonEmptyValue(func(heaviestClaimed *Chain) (teardown func()) { + return enable(heaviestClaimed.RequestAttestations) }) - c.HeaviestVerified.OnUpdate(func(_ *Chain, heaviestVerifiedChain *Chain) { - heaviestVerifiedChain.LatestProducedCommitment.OnUpdate(func(_ *Commitment, latestVerifiedCommitment *Commitment) { - forkingPoint := heaviestVerifiedChain.ForkingPoint.Get() - if forkingPoint == nil || latestVerifiedCommitment == nil { - return - } + c.HeaviestAttested.WithNonEmptyValue(func(heaviestAttested *Chain) (teardown func()) { + return enable(heaviestAttested.RequestBlocks) + }) - distanceFromForkingPoint := latestVerifiedCommitment.ID().Slot() - forkingPoint.ID().Slot() - if distanceFromForkingPoint > c.protocol.Options.ChainSwitchingThreshold { - c.Main.Set(heaviestVerifiedChain) - } + c.HeaviestVerified.WithNonEmptyValue(func(heaviestVerified *Chain) (teardown func()) { + return heaviestVerified.LatestProducedCommitment.OnUpdateOnce(func(_ *Commitment, latestProducedCommitment *Commitment) { + c.Main.Set(heaviestVerified) + }, func(_ *Commitment, latestProducedCommitment *Commitment) bool { + return chainSwitchingCondition(heaviestVerified, latestProducedCommitment) }) }) } @@ -173,3 +163,11 @@ func (c *Chains) publishEngineCommitments(chain *Chain) (unsubscribe func()) { } }) } + +func enable(variable reactive.Variable[bool]) (unset func()) { + variable.Set(true) + + return func() { + variable.Set(false) + } +} diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index b343d6728..f9a8278af 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -147,9 +147,9 @@ func (c *Commitment) initBehavior(chains *Chains) (self *Commitment) { return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified }, chain.SpawnedEngine, chain.WarpSyncMode, parent.IsVerified, c.IsVerified)), - c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, verifyAttestations bool, parentIsAttested bool, isAttested bool) bool { - return verifyAttestations && parentIsAttested && !isAttested - }, chain.RequestAttestations, parent.IsAttested, c.IsAttested)), + c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, verifyAttestations bool, requestBlocks bool, parentIsAttested bool, isAttested bool) bool { + return verifyAttestations && !requestBlocks && parentIsAttested && !isAttested + }, chain.RequestAttestations, chain.RequestBlocks, parent.IsAttested, c.IsAttested)), ) }), ) diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index c76dd85b1..1cc20026a 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -190,10 +190,10 @@ func (e *Engines) loadEngineInstanceWithStorage(engineAlias string, storage *sto } func (e *Engines) syncMainEngineFromMainChain() (unsubscribe func()) { - return e.protocol.Chains.Main.OnUpdateWithContext(func(_ *Chain, mainChain *Chain, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { - unsubscribeOnUpdate(func() func() { - return e.Main.InheritFrom(mainChain.SpawnedEngine) - }) + return e.protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (teardown func()) { + return e.Main.DeriveValueFrom(reactive.NewDerivedVariable(func(currentMainEngine *engine.Engine, newMainEngine *engine.Engine) *engine.Engine { + return lo.Cond(newMainEngine == nil, currentMainEngine, newMainEngine) + }, mainChain.SpawnedEngine)) }) } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 2cf63907a..5212064bb 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -8,6 +8,7 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/ds/reactive" + "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/module" @@ -35,8 +36,6 @@ type Protocol struct { Engines *Engines Options *Options - *APIProvider - reactive.EvictionState[iotago.SlotIndex] *module.ReactiveModule } @@ -59,13 +58,20 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.Commitments = newCommitments(p) p.Chains = newChains(p) p.Engines = NewEngines(p) - p.APIProvider = NewAPIProvider(p) p.Commitments.Root.OnUpdate(func(_ *Commitment, rootCommitment *Commitment) { // TODO: DECIDE ON DATA AVAILABILITY TIMESPAN / EVICTION STRATEGY //p.Evict(rootCommitment.Slot() - 1) }) + stopEvents := p.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (teardown func()) { + p.Events.Engine.LinkTo(mainEngine.Events) + + return func() { + p.Events.Engine.LinkTo(nil) + } + }) + stopClock := lo.Batch( p.Network.OnBlockReceived(func(block *model.Block, src peer.ID) { p.Clock.Set(block.ProtocolBlock().Header.IssuingTime) @@ -94,6 +100,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E ) p.Shutdown.OnTrigger(func() { + stopEvents() stopClock() unsubscribeFromNetwork() @@ -138,6 +145,40 @@ func (p *Protocol) Run(ctx context.Context) error { return ctx.Err() } +// APIForVersion returns the API for the given version. +func (p *Protocol) APIForVersion(version iotago.Version) (api iotago.API, err error) { + if mainEngineInstance := p.Engines.Main.Get(); mainEngineInstance != nil { + return mainEngineInstance.APIForVersion(version) + } + + return nil, ierrors.New("no engine instance available") +} + +// APIForSlot returns the API for the given slot. +func (p *Protocol) APIForSlot(slot iotago.SlotIndex) iotago.API { + return p.Engines.Main.Get().APIForSlot(slot) +} + +// APIForEpoch returns the API for the given epoch. +func (p *Protocol) APIForEpoch(epoch iotago.EpochIndex) iotago.API { + return p.Engines.Main.Get().APIForEpoch(epoch) +} + +// APIForTime returns the API for the given time. +func (p *Protocol) APIForTime(t time.Time) iotago.API { + return p.Engines.Main.Get().APIForTime(t) +} + +// CommittedAPI returns the API for the committed state. +func (p *Protocol) CommittedAPI() iotago.API { + return p.Engines.Main.Get().CommittedAPI() +} + +// LatestAPI returns the latest API. +func (p *Protocol) LatestAPI() iotago.API { + return p.Engines.Main.Get().LatestAPI() +} + func maxTimeBeforeWallClock(currentValue time.Time, newValue time.Time) time.Time { if newValue.Before(currentValue) || newValue.After(time.Now()) { return currentValue diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 52ff77761..55c2819e9 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -44,10 +44,8 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) protocol.Chains.WithElements(func(chain *Chain) func() { - return chain.SpawnedEngine.OnUpdate(func(_ *engine.Engine, engine *engine.Engine) { - unsubscribe := engine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook - - engine.Shutdown.OnTrigger(unsubscribe) + return chain.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { + return spawnedEngine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook }) }) From 9ad22fe2822bef64a9f437600ace0808f1a5b087 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 23 Nov 2023 03:48:29 +0100 Subject: [PATCH 269/356] Feat: continued to cleanup --- go.mod | 28 +++++------ go.sum | 56 ++++++++++----------- pkg/protocol/chain.go | 6 ++- pkg/protocol/chains.go | 81 ++++-------------------------- pkg/protocol/commitments.go | 44 ++++++++++++++++ pkg/tests/protocol_startup_test.go | 2 + pkg/testsuite/storage_settings.go | 5 ++ tools/gendoc/go.mod | 28 +++++------ tools/gendoc/go.sum | 56 ++++++++++----------- tools/genesis-snapshot/go.mod | 24 ++++----- tools/genesis-snapshot/go.sum | 48 +++++++++--------- 11 files changed, 185 insertions(+), 193 deletions(-) diff --git a/go.mod b/go.mod index 5136d493e..3aa742a50 100644 --- a/go.mod +++ b/go.mod @@ -10,20 +10,20 @@ require ( github.com/google/uuid v1.4.0 github.com/gorilla/websocket v1.5.1 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 - github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 - github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 - github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 + github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 + github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 github.com/iotaledger/iota.go/v4 v4.0.0-20231122091223-371a164a92e5 diff --git a/go.sum b/go.sum index 6ea27b08d..a43d85fa2 100644 --- a/go.sum +++ b/go.sum @@ -275,34 +275,34 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 h1:/bPkeopkkxvxYnq2+rwmhmwy9BllRE5UqA9Cp+PimGQ= -github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8 h1:IXAjdd6aUNXKXdgFsW5tDFft7lRCefraDSar5YqOu+M= -github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 h1:yiD0GFjG/YmdZW6wRmBC3ptIB3w3rVgQ4UDb90r23vI= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 h1:M1LrOy5jMCzy+32FacXefYD/Q4ubkkZU4PVXY3G2pu0= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 h1:Yo+YCBbjuOu0J0KmIqV50KRXFGi8v/HAKuLYr+2E9r4= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 h1:VhjAt9Thwsd1biYGIRTfH+akYvCpUpl425f6u23wu5U= -github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 h1:ICQ5vZlL7ZlR/BQTPGkuaOrNGLS0d8hc2RlcJm3wivM= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 h1:dCOgLYm2W9TUoQLWcImFG38kk0lRYjVHGsP5n7iZkBE= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 h1:O1cXMY+n5gMA9X3c+jjOrv6AADEpi4ts/ETQVPGBHIY= -github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 h1:dQeW6RJz3RJ+WMCUVjCrEVp8OtzU6TVhV9mxn6Hr478= -github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8 h1:6kbSEaFTZ+8wwektMJ58na39kAiTloBLRRrjOh2pcRE= -github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 h1:TYBWMTGE0Oka/DF2QIUYMURvA+cnVPyvFxChFLTREdU= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 h1:PNRe2VbUzI7CCKf8aCxb1t0P08zqlD0BBtrBZ9D/YlY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 h1:O8zvNJCJ+AQJgMbpdDKMCVdYKmDTh6RxOtLZHYfPtSc= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 h1:yfGbgazGwZ59ACKk9aYLXpQD7jNDHmRQ1B3aZG9zsHY= +github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098 h1:rC0Fd4wJz9wB7OPtYEU0ZfwiBEctChcB0KqFg9gt1xI= +github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 h1:qxgLKgxHgVK4hnYmSJ4sad9Megu07/qlUROSxqEkmoE= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 h1:MW2KjFqXYboYLc6y3JLNy0uzmnTlDqAxbomtn+Cd0Es= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 h1:XNJJU0BII9R5LxvVc67BouXb6yraiJD7kd69PyMwvvQ= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 h1:+rUcppWrtqptiWheawy5E4UfvScYgGojDESsfxxbPQY= +github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 h1:SkvEubdroIfhD4OcdKbZP5yWJ0KJnxhmsk/USyTwnRA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 h1:IsOh3IxafdS2LVS11d8WFajfLF5MfkLwkWONnusvbyk= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 h1:J6IdJ/1iO3DHr0KyuOaXYAmg83vRG8IKYws77nDgPlE= +github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 h1:mVCpy1+fRJRiA9lrjY1NetZtFORnU85v2QNu1xSPnqk= +github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098 h1:qnHzUcXPAsHD3OM+iMbXtYdBSMLz6GU/L8sbEaYbusM= +github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 h1:Ul7ZjFSaUJWEHy33CB/H9ZrLQTSBoMl3l1qZXECnQXw= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 h1:V4gok4YLmPzDIjndGxDkjHfnRsq3/nG6qE296X+R3Xg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 h1:Hc4pGSuFy038DyShYZLZoIvEnWmSLzQCT/7Gu+pd2bI= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 h1:hAVWoyAF4FE+1gUd2IqvTBDTnQ4Z0GKE6qc8qw9QPqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180/go.mod h1:iFiY6UukYeL8D3N1mtg4jh/9lxTBhzG0QgtD+w0gpps= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 h1:bYGO8jXNXJNMGPG9etGW7WXfLbRU9ofx1xdd29/sS9M= diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 44e2cfffd..a1972125a 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -204,6 +204,10 @@ func (c *Chain) initLogging(chains *Chains) (self *Chain) { func (c *Chain) initBehavior(chains *Chains) (self *Chain) { teardownBehavior := lo.Batch( c.Parent.WithNonEmptyValue(func(parent *Chain) (teardown func()) { + if parent == c { + c.LogError("WHAT IS GOING ON?!?") + } + parent.Children.Add(c) return func() { @@ -245,7 +249,7 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { } return forkingPoint.Parent.WithValue(func(parentCommitment *Commitment) (teardown func()) { - if parentCommitment == nil { + if parentCommitment == nil || parentCommitment.IsRoot.Get() { c.Parent.Set(nil) return func() {} diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 88b307c7a..7aee3b9ae 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -4,9 +4,6 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/iota-core/pkg/model" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - iotago "github.com/iotaledger/iota.go/v4" ) // Chains represents the set of chains that are managed by the protocol. @@ -51,8 +48,6 @@ func newChains(protocol *Protocol) *Chains { c.WithElements(func(chain *Chain) (teardown func()) { return lo.Batch( - c.publishEngineCommitments(chain), - trackHeaviestChain(c.HeaviestVerified, func(chain *Chain) reactive.Variable[uint64] { return chain.VerifiedWeight }, chain), trackHeaviestChain(c.HeaviestAttested, func(chain *Chain) reactive.Variable[uint64] { return chain.AttestedWeight }, chain), trackHeaviestChain(c.HeaviestClaimed, func(chain *Chain) reactive.Variable[uint64] { return chain.ClaimedWeight }, chain), @@ -84,13 +79,6 @@ func (c *Chains) initMainChain() { } func (c *Chains) initChainSwitching() { - // only switch to the heaviest chain if the latest produced commitment is enough slots away from the forking point. - chainSwitchingCondition := func(heavierChain *Chain, latestProducedCommitment *Commitment) bool { - forkingPoint := heavierChain.ForkingPoint.Get() - - return forkingPoint != nil && latestProducedCommitment != nil && (latestProducedCommitment.ID().Slot()-forkingPoint.ID().Slot()) > c.protocol.Options.ChainSwitchingThreshold - } - c.HeaviestClaimed.WithNonEmptyValue(func(heaviestClaimed *Chain) (teardown func()) { return enable(heaviestClaimed.RequestAttestations) }) @@ -99,68 +87,17 @@ func (c *Chains) initChainSwitching() { return enable(heaviestAttested.RequestBlocks) }) - c.HeaviestVerified.WithNonEmptyValue(func(heaviestVerified *Chain) (teardown func()) { - return heaviestVerified.LatestProducedCommitment.OnUpdateOnce(func(_ *Commitment, latestProducedCommitment *Commitment) { - c.Main.Set(heaviestVerified) - }, func(_ *Commitment, latestProducedCommitment *Commitment) bool { - return chainSwitchingCondition(heaviestVerified, latestProducedCommitment) - }) - }) -} - -func (c *Chains) publishEngineCommitments(chain *Chain) (unsubscribe func()) { - return chain.SpawnedEngine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnUpdate func(subscriptionFactory func() (unsubscribe func()))) { - if engine != nil { - var latestPublishedSlot iotago.SlotIndex - - publishCommitment := func(commitment *model.Commitment) (publishedCommitment *Commitment, published bool) { - publishedCommitment, published, err := c.protocol.Commitments.Publish(commitment) - if err != nil { - panic(err) // this can never happen, but we panic to get a stack trace if it ever does - } + c.HeaviestVerified.WithNonEmptyValue(func(heavierChain *Chain) (teardown func()) { + // only switch to the heaviest chain if the latest produced commitment is enough slots away from the forking point. + chainSwitchingCondition := func(_ *Commitment, latestProducedCommitment *Commitment) bool { + forkingPoint := heavierChain.ForkingPoint.Get() - publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) - publishedCommitment.IsAttested.Set(true) - publishedCommitment.IsVerified.Set(true) - - latestPublishedSlot = commitment.Slot() - - if publishedCommitment.IsSolid.Get() { - publishedCommitment.setChain(chain) - } - - return publishedCommitment, published - } - - unsubscribeOnUpdate(func() (unsubscribe func()) { - return engine.Ledger.HookInitialized(func() { - unsubscribeOnUpdate(func() (unsubscribe func()) { - if forkingPoint := chain.ForkingPoint.Get(); forkingPoint == nil { - // assign root commitment to main chain - rootCommitment := c.protocol.Commitments.Root.Get() - rootCommitment.setChain(chain) - - chain.ForkingPoint.Set(rootCommitment) - - latestPublishedSlot = rootCommitment.Slot() - } else { - latestPublishedSlot = forkingPoint.Slot() - 1 - } - - return engine.LatestCommitment.OnUpdate(func(_ *model.Commitment, latestCommitment *model.Commitment) { - for latestPublishedSlot < latestCommitment.Slot() { - commitmentToPublish, err := engine.Storage.Commitments().Load(latestPublishedSlot + 1) - if err != nil { - panic(err) // this should never happen, but we panic to get a stack trace if it does - } - - publishCommitment(commitmentToPublish) - } - }) - }) - }) - }) + return forkingPoint != nil && latestProducedCommitment != nil && (latestProducedCommitment.ID().Slot()-forkingPoint.ID().Slot()) > c.protocol.Options.ChainSwitchingThreshold } + + return heavierChain.LatestProducedCommitment.OnUpdateOnce(func(_ *Commitment, latestProducedCommitment *Commitment) { + c.Main.Set(heavierChain) + }, chainSwitchingCondition) }) } diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 0f653c97c..7089b2495 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -45,6 +45,8 @@ func newCommitments(protocol *Protocol) *Commitments { }) }) }) + + protocol.Chains.WithElements(c.publishEngineCommitments) }) return c @@ -144,3 +146,45 @@ func (c *Commitments) setupCommitment(commitment *Commitment, slotEvictedEvent r }) } } + +func (c *Commitments) publishCommitment(chain *Chain, commitment *model.Commitment) (publishedCommitment *Commitment, published bool) { + publishedCommitment, published, err := c.Publish(commitment) + if err != nil { + panic(err) // this can never happen, but we panic to get a stack trace if it ever does + } + + publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) + publishedCommitment.IsAttested.Set(true) + publishedCommitment.IsVerified.Set(true) + + if publishedCommitment.IsSolid.Get() { + publishedCommitment.setChain(chain) + } + + return publishedCommitment, published +} + +func (c *Commitments) publishEngineCommitments(chain *Chain) (unsubscribe func()) { + return chain.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { + return spawnedEngine.Initialized.WithNonEmptyValue(func(_ bool) (teardown func()) { + forkingPoint, forkingPointUpdated := chain.ForkingPoint.DefaultTo(c.protocol.Commitments.Root.Get()) + latestPublishedSlot := forkingPoint.Slot() - 1 + + if forkingPointUpdated { + forkingPoint.setChain(chain) + + latestPublishedSlot++ + } + + return spawnedEngine.LatestCommitment.OnUpdate(func(_ *model.Commitment, latestCommitment *model.Commitment) { + for ; latestPublishedSlot < latestCommitment.Slot(); latestPublishedSlot++ { + if commitmentToPublish, err := spawnedEngine.Storage.Commitments().Load(latestPublishedSlot + 1); err != nil { + spawnedEngine.LogError("failed to load commitment to publish from engine", "slot", latestPublishedSlot+1, "err", err) + } else { + c.publishCommitment(chain, commitmentToPublish) + } + } + }) + }) + }) +} diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index fb8eacb4b..e93d4ab05 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -351,6 +351,8 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { slot7Commitment := lo.PanicOnErr(nodeA.Protocol.Engines.Main.Get().Storage.Commitments().Load(7)) + fmt.Println("expecting commitment", slot7Commitment.ID()) + ts.AssertNodeState(ts.Nodes("nodeC-restarted", "nodeD"), testsuite.WithSnapshotImported(true), testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 6ee042ee5..0a03bebaa 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -1,6 +1,8 @@ package testsuite import ( + "fmt" + "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/iota-core/pkg/testsuite/mock" iotago "github.com/iotaledger/iota.go/v4" @@ -124,7 +126,10 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { actualChainID := node.Protocol.Chains.Main.Get().ForkingPoint.Get().ID() + if expectedChainID != actualChainID { + fmt.Println(expectedChainID, actualChainID) + return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Slot(), actualChainID, actualChainID.Slot()) } diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index a58dad25e..275c091eb 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -56,19 +56,19 @@ require ( github.com/huin/goupnp v1.3.0 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231122091223-371a164a92e5 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 7b85ad836..7d82d157b 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -277,36 +277,36 @@ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJ github.com/ianlancetaylor/demangle v0.0.0-20210905161508-09a460cdf81d/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 h1:/bPkeopkkxvxYnq2+rwmhmwy9BllRE5UqA9Cp+PimGQ= -github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8 h1:IXAjdd6aUNXKXdgFsW5tDFft7lRCefraDSar5YqOu+M= -github.com/iotaledger/hive.go/app v0.0.0-20231122031042-a244728002d8/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 h1:yfGbgazGwZ59ACKk9aYLXpQD7jNDHmRQ1B3aZG9zsHY= +github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098 h1:rC0Fd4wJz9wB7OPtYEU0ZfwiBEctChcB0KqFg9gt1xI= +github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 h1:yiD0GFjG/YmdZW6wRmBC3ptIB3w3rVgQ4UDb90r23vI= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 h1:M1LrOy5jMCzy+32FacXefYD/Q4ubkkZU4PVXY3G2pu0= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 h1:Yo+YCBbjuOu0J0KmIqV50KRXFGi8v/HAKuLYr+2E9r4= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 h1:VhjAt9Thwsd1biYGIRTfH+akYvCpUpl425f6u23wu5U= -github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 h1:ICQ5vZlL7ZlR/BQTPGkuaOrNGLS0d8hc2RlcJm3wivM= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 h1:dCOgLYm2W9TUoQLWcImFG38kk0lRYjVHGsP5n7iZkBE= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 h1:O1cXMY+n5gMA9X3c+jjOrv6AADEpi4ts/ETQVPGBHIY= -github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 h1:dQeW6RJz3RJ+WMCUVjCrEVp8OtzU6TVhV9mxn6Hr478= -github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8 h1:6kbSEaFTZ+8wwektMJ58na39kAiTloBLRRrjOh2pcRE= -github.com/iotaledger/hive.go/logger v0.0.0-20231122031042-a244728002d8/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 h1:TYBWMTGE0Oka/DF2QIUYMURvA+cnVPyvFxChFLTREdU= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 h1:PNRe2VbUzI7CCKf8aCxb1t0P08zqlD0BBtrBZ9D/YlY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 h1:O8zvNJCJ+AQJgMbpdDKMCVdYKmDTh6RxOtLZHYfPtSc= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 h1:qxgLKgxHgVK4hnYmSJ4sad9Megu07/qlUROSxqEkmoE= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 h1:MW2KjFqXYboYLc6y3JLNy0uzmnTlDqAxbomtn+Cd0Es= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 h1:XNJJU0BII9R5LxvVc67BouXb6yraiJD7kd69PyMwvvQ= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 h1:+rUcppWrtqptiWheawy5E4UfvScYgGojDESsfxxbPQY= +github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 h1:SkvEubdroIfhD4OcdKbZP5yWJ0KJnxhmsk/USyTwnRA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 h1:IsOh3IxafdS2LVS11d8WFajfLF5MfkLwkWONnusvbyk= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 h1:J6IdJ/1iO3DHr0KyuOaXYAmg83vRG8IKYws77nDgPlE= +github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 h1:mVCpy1+fRJRiA9lrjY1NetZtFORnU85v2QNu1xSPnqk= +github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098 h1:qnHzUcXPAsHD3OM+iMbXtYdBSMLz6GU/L8sbEaYbusM= +github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 h1:Ul7ZjFSaUJWEHy33CB/H9ZrLQTSBoMl3l1qZXECnQXw= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 h1:V4gok4YLmPzDIjndGxDkjHfnRsq3/nG6qE296X+R3Xg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 h1:Hc4pGSuFy038DyShYZLZoIvEnWmSLzQCT/7Gu+pd2bI= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 h1:hAVWoyAF4FE+1gUd2IqvTBDTnQ4Z0GKE6qc8qw9QPqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180/go.mod h1:iFiY6UukYeL8D3N1mtg4jh/9lxTBhzG0QgtD+w0gpps= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 h1:bYGO8jXNXJNMGPG9etGW7WXfLbRU9ofx1xdd29/sS9M= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index c3c9bec05..3c4edac7c 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 - github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 + github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231122091223-371a164a92e5 github.com/mr-tron/base58 v1.2.0 @@ -26,14 +26,14 @@ require ( github.com/holiman/uint256 v1.2.3 // indirect github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect - github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 // indirect + github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 87a4b30b7..4c8de8374 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -28,30 +28,30 @@ github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJ github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PTNgli6EbS4tV9qu3QAm/kBU3XaYZV2xdzys= github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= -github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8 h1:/bPkeopkkxvxYnq2+rwmhmwy9BllRE5UqA9Cp+PimGQ= -github.com/iotaledger/hive.go/ads v0.0.0-20231122031042-a244728002d8/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8 h1:yiD0GFjG/YmdZW6wRmBC3ptIB3w3rVgQ4UDb90r23vI= -github.com/iotaledger/hive.go/constraints v0.0.0-20231122031042-a244728002d8/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8 h1:M1LrOy5jMCzy+32FacXefYD/Q4ubkkZU4PVXY3G2pu0= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231122031042-a244728002d8/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8 h1:Yo+YCBbjuOu0J0KmIqV50KRXFGi8v/HAKuLYr+2E9r4= -github.com/iotaledger/hive.go/crypto v0.0.0-20231122031042-a244728002d8/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8 h1:VhjAt9Thwsd1biYGIRTfH+akYvCpUpl425f6u23wu5U= -github.com/iotaledger/hive.go/ds v0.0.0-20231122031042-a244728002d8/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8 h1:ICQ5vZlL7ZlR/BQTPGkuaOrNGLS0d8hc2RlcJm3wivM= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231122031042-a244728002d8/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8 h1:dCOgLYm2W9TUoQLWcImFG38kk0lRYjVHGsP5n7iZkBE= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231122031042-a244728002d8/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8 h1:O1cXMY+n5gMA9X3c+jjOrv6AADEpi4ts/ETQVPGBHIY= -github.com/iotaledger/hive.go/lo v0.0.0-20231122031042-a244728002d8/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8 h1:dQeW6RJz3RJ+WMCUVjCrEVp8OtzU6TVhV9mxn6Hr478= -github.com/iotaledger/hive.go/log v0.0.0-20231122031042-a244728002d8/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8 h1:TYBWMTGE0Oka/DF2QIUYMURvA+cnVPyvFxChFLTREdU= -github.com/iotaledger/hive.go/runtime v0.0.0-20231122031042-a244728002d8/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8 h1:PNRe2VbUzI7CCKf8aCxb1t0P08zqlD0BBtrBZ9D/YlY= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231122031042-a244728002d8/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8 h1:O8zvNJCJ+AQJgMbpdDKMCVdYKmDTh6RxOtLZHYfPtSc= -github.com/iotaledger/hive.go/stringify v0.0.0-20231122031042-a244728002d8/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 h1:yfGbgazGwZ59ACKk9aYLXpQD7jNDHmRQ1B3aZG9zsHY= +github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 h1:qxgLKgxHgVK4hnYmSJ4sad9Megu07/qlUROSxqEkmoE= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 h1:MW2KjFqXYboYLc6y3JLNy0uzmnTlDqAxbomtn+Cd0Es= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 h1:XNJJU0BII9R5LxvVc67BouXb6yraiJD7kd69PyMwvvQ= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 h1:+rUcppWrtqptiWheawy5E4UfvScYgGojDESsfxxbPQY= +github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 h1:SkvEubdroIfhD4OcdKbZP5yWJ0KJnxhmsk/USyTwnRA= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 h1:IsOh3IxafdS2LVS11d8WFajfLF5MfkLwkWONnusvbyk= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 h1:J6IdJ/1iO3DHr0KyuOaXYAmg83vRG8IKYws77nDgPlE= +github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 h1:mVCpy1+fRJRiA9lrjY1NetZtFORnU85v2QNu1xSPnqk= +github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 h1:Ul7ZjFSaUJWEHy33CB/H9ZrLQTSBoMl3l1qZXECnQXw= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 h1:V4gok4YLmPzDIjndGxDkjHfnRsq3/nG6qE296X+R3Xg= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 h1:Hc4pGSuFy038DyShYZLZoIvEnWmSLzQCT/7Gu+pd2bI= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231122091223-371a164a92e5 h1:MGz9hwBkVOzBS9/MwveX0t8POWamXPN398CKcJhfQKs= github.com/iotaledger/iota.go/v4 v4.0.0-20231122091223-371a164a92e5/go.mod h1:aO+5iL0vTNwNfE4QMGHVIufGziSI1wTvwJY1ipSMgCk= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= From 69761534fb109cdd8d3243aee82a3f1388eb7e6b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 23 Nov 2023 04:00:04 +0100 Subject: [PATCH 270/356] Refactor: removed unused code --- pkg/protocol/chain.go | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index a1972125a..44e2cfffd 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -204,10 +204,6 @@ func (c *Chain) initLogging(chains *Chains) (self *Chain) { func (c *Chain) initBehavior(chains *Chains) (self *Chain) { teardownBehavior := lo.Batch( c.Parent.WithNonEmptyValue(func(parent *Chain) (teardown func()) { - if parent == c { - c.LogError("WHAT IS GOING ON?!?") - } - parent.Children.Add(c) return func() { @@ -249,7 +245,7 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { } return forkingPoint.Parent.WithValue(func(parentCommitment *Commitment) (teardown func()) { - if parentCommitment == nil || parentCommitment.IsRoot.Get() { + if parentCommitment == nil { c.Parent.Set(nil) return func() {} From f141e0ef1170d463220faaaafbe1d2db7dcd7e80 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 23 Nov 2023 06:35:30 +0100 Subject: [PATCH 271/356] Refactor: more cleanup --- pkg/protocol/chain.go | 17 +---- pkg/protocol/chains.go | 128 ++++++++++++++++++++++--------------- pkg/protocol/commitment.go | 2 +- 3 files changed, 82 insertions(+), 65 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 44e2cfffd..9399444b2 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -1,8 +1,6 @@ package protocol import ( - "time" - "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/ds/reactive" @@ -47,9 +45,6 @@ type Chain struct { // latest verified commitment. VerifiedWeight reactive.Variable[uint64] - // LatestNetworkSlot contains the latest network slot. - LatestNetworkSlot reactive.Variable[iotago.SlotIndex] - // WarpSyncMode contains a flag that indicates whether this chain is in warp sync mode. WarpSyncMode reactive.Variable[bool] @@ -95,7 +90,6 @@ func newChain(chains *Chains) *Chain { AttestedWeight: reactive.NewVariable[uint64](), VerifiedWeight: reactive.NewVariable[uint64](), WarpSyncMode: reactive.NewVariable[bool]().Init(true), - LatestNetworkSlot: reactive.NewVariable[iotago.SlotIndex](), WarpSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), RequestAttestations: reactive.NewVariable[bool](), @@ -174,11 +168,10 @@ func (c *Chain) LatestEngine() *engine.Engine { // initLogging initializes the logging of changes to the properties of this chain. func (c *Chain) initLogging(chains *Chains) (self *Chain) { var shutdownLogger func() - c.Logger, shutdownLogger = chains.protocol.NewEntityLogger("Chain") + c.Logger, shutdownLogger = chains.NewEntityLogger("") teardownLogging := lo.Batch( c.WarpSyncMode.LogUpdates(c, log.LevelTrace, "WarpSyncMode"), - c.LatestNetworkSlot.LogUpdates(c, log.LevelTrace, "LatestNetworkSlot"), c.WarpSyncThreshold.LogUpdates(c, log.LevelTrace, "WarpSyncThreshold"), c.OutOfSyncThreshold.LogUpdates(c, log.LevelTrace, "OutOfSyncThreshold"), c.ForkingPoint.LogUpdates(c, log.LevelTrace, "ForkingPoint", (*Commitment).LogName), @@ -213,10 +206,6 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { c.SpawnedEngine.WithNonEmptyValue(func(engine *engine.Engine) (teardown func()) { return lo.Batch( - c.LatestNetworkSlot.DeriveValueFrom(reactive.NewDerivedVariable(func(latestNetworkSlot iotago.SlotIndex, latestNetworkTime time.Time) iotago.SlotIndex { - return engine.LatestAPI().TimeProvider().SlotFromTime(latestNetworkTime) - }, chains.protocol.Clock)), - c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestNetworkSlot iotago.SlotIndex) iotago.SlotIndex { warpSyncOffset := engine.LatestAPI().ProtocolParameters().MaxCommittableAge() if warpSyncOffset >= latestNetworkSlot { @@ -224,7 +213,7 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { } return latestNetworkSlot - warpSyncOffset - }, c.LatestNetworkSlot)), + }, chains.LatestSlot)), c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestNetworkSlot iotago.SlotIndex) iotago.SlotIndex { outOfSyncOffset := 2 * engine.LatestAPI().ProtocolParameters().MaxCommittableAge() @@ -233,7 +222,7 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { } return latestNetworkSlot - outOfSyncOffset - }, c.LatestNetworkSlot)), + }, chains.LatestSlot)), ) }), diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 7aee3b9ae..68ad08e02 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -1,9 +1,13 @@ package protocol import ( + "time" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/iota-core/pkg/protocol/engine" + iotago "github.com/iotaledger/iota.go/v4" ) // Chains represents the set of chains that are managed by the protocol. @@ -16,92 +20,116 @@ type Chains struct { HeaviestAttested reactive.Variable[*Chain] HeaviestVerified reactive.Variable[*Chain] + LatestSlot reactive.Variable[iotago.SlotIndex] + protocol *Protocol + + // Logger embeds a logger that can be used to log messages emitted by this chain. + log.Logger } func newChains(protocol *Protocol) *Chains { - c := &Chains{ + return (&Chains{ Set: reactive.NewSet[*Chain](), Main: reactive.NewVariable[*Chain](), HeaviestClaimed: reactive.NewVariable[*Chain](), HeaviestAttested: reactive.NewVariable[*Chain](), HeaviestVerified: reactive.NewVariable[*Chain](), + LatestSlot: reactive.NewVariable[iotago.SlotIndex](), protocol: protocol, - } + }).initLogging(protocol).initBehavior(protocol) +} - c.Main.LogUpdates(c.protocol, log.LevelTrace, "Main", (*Chain).LogName) - c.HeaviestClaimed.LogUpdates(c.protocol, log.LevelTrace, "HeaviestClaimed", (*Chain).LogName) - c.HeaviestAttested.LogUpdates(c.protocol, log.LevelTrace, "HeaviestAttested", (*Chain).LogName) +func (c *Chains) Fork(forkingPoint *Commitment) *Chain { + chain := newChain(c) + chain.ForkingPoint.Set(forkingPoint) + + c.Add(chain) + + return chain +} + +func (c *Chains) initLogging(protocol *Protocol) (self *Chains) { + var shutdownLogger func() + c.Logger, shutdownLogger = protocol.NewChildLogger("Chains") + + teardownLogging := lo.Batch( + c.Main.LogUpdates(protocol, log.LevelTrace, "Main", (*Chain).LogName), + c.HeaviestClaimed.LogUpdates(c, log.LevelTrace, "HeaviestClaimed", (*Chain).LogName), + c.HeaviestAttested.LogUpdates(c, log.LevelTrace, "HeaviestAttested", (*Chain).LogName), + c.HeaviestVerified.LogUpdates(c, log.LevelTrace, "HeaviestVerified", (*Chain).LogName), + c.LatestSlot.LogUpdates(c, log.LevelTrace, "LatestSlot"), + + shutdownLogger, + ) + + protocol.Shutdown.OnTrigger(teardownLogging) + + return c +} +func (c *Chains) initBehavior(protocol *Protocol) (self *Chains) { trackHeaviestChain := func(candidateVar reactive.Variable[*Chain], weightVar func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { return weightVar(candidate).OnUpdate(func(_ uint64, newWeight uint64) { // if the weight of the candidate is higher than the current main chain if mainChain := c.Main.Get(); mainChain == nil || newWeight > mainChain.VerifiedWeight.Get() { // try to set the candidate as the new heaviest chain candidateVar.Compute(func(currentCandidate *Chain) *Chain { - // only set the candidate as the heaviest chain if it is still the heaviest chain (double locking) + // only set the candidate as the heaviest chain if it is still the heaviest chain (double-checked locking) return lo.Cond(currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newWeight > weightVar(currentCandidate).Get(), candidate, currentCandidate) }) } }, true) } - c.WithElements(func(chain *Chain) (teardown func()) { - return lo.Batch( - trackHeaviestChain(c.HeaviestVerified, func(chain *Chain) reactive.Variable[uint64] { return chain.VerifiedWeight }, chain), - trackHeaviestChain(c.HeaviestAttested, func(chain *Chain) reactive.Variable[uint64] { return chain.AttestedWeight }, chain), - trackHeaviestChain(c.HeaviestClaimed, func(chain *Chain) reactive.Variable[uint64] { return chain.ClaimedWeight }, chain), - ) - }) + _ = lo.Batch( + c.HeaviestClaimed.WithNonEmptyValue(func(heaviestClaimed *Chain) (teardown func()) { + return toggleTrue(heaviestClaimed.RequestAttestations) + }), - c.initChainSwitching() - c.initMainChain() + c.HeaviestAttested.WithNonEmptyValue(func(heaviestAttested *Chain) (teardown func()) { + return toggleTrue(heaviestAttested.RequestBlocks) + }), - return c -} + c.HeaviestVerified.WithNonEmptyValue(func(heavierChain *Chain) (teardown func()) { + // only switch to the heaviest chain if the latest produced commitment is enough slots away from the forking point. + chainSwitchingCondition := func(_ *Commitment, latestProducedCommitment *Commitment) bool { + forkingPoint := heavierChain.ForkingPoint.Get() -func (c *Chains) Fork(forkingPoint *Commitment) *Chain { - chain := newChain(c) - chain.ForkingPoint.Set(forkingPoint) + return forkingPoint != nil && latestProducedCommitment != nil && (latestProducedCommitment.ID().Slot()-forkingPoint.ID().Slot()) > protocol.Options.ChainSwitchingThreshold + } - c.Add(chain) + return heavierChain.LatestProducedCommitment.OnUpdateOnce(func(_ *Commitment, latestProducedCommitment *Commitment) { + c.Main.Set(heavierChain) + }, chainSwitchingCondition) + }), + + c.WithElements(func(chain *Chain) (teardown func()) { + return lo.Batch( + trackHeaviestChain(c.HeaviestClaimed, func(chain *Chain) reactive.Variable[uint64] { return chain.ClaimedWeight }, chain), + trackHeaviestChain(c.HeaviestVerified, func(chain *Chain) reactive.Variable[uint64] { return chain.VerifiedWeight }, chain), + trackHeaviestChain(c.HeaviestAttested, func(chain *Chain) reactive.Variable[uint64] { return chain.AttestedWeight }, chain), + ) + }), + + protocol.Constructed.WithNonEmptyValue(func(_ bool) (teardown func()) { + return protocol.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (teardown func()) { + return c.LatestSlot.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestNetworkTime time.Time) iotago.SlotIndex { + return mainEngine.LatestAPI().TimeProvider().SlotFromTime(latestNetworkTime) + }, protocol.Clock)) + }) + }), + ) - return chain -} - -func (c *Chains) initMainChain() { mainChain := newChain(c) mainChain.RequestBlocks.Set(true) - c.Main.Set(mainChain) - c.Add(mainChain) -} - -func (c *Chains) initChainSwitching() { - c.HeaviestClaimed.WithNonEmptyValue(func(heaviestClaimed *Chain) (teardown func()) { - return enable(heaviestClaimed.RequestAttestations) - }) - c.HeaviestAttested.WithNonEmptyValue(func(heaviestAttested *Chain) (teardown func()) { - return enable(heaviestAttested.RequestBlocks) - }) - - c.HeaviestVerified.WithNonEmptyValue(func(heavierChain *Chain) (teardown func()) { - // only switch to the heaviest chain if the latest produced commitment is enough slots away from the forking point. - chainSwitchingCondition := func(_ *Commitment, latestProducedCommitment *Commitment) bool { - forkingPoint := heavierChain.ForkingPoint.Get() - - return forkingPoint != nil && latestProducedCommitment != nil && (latestProducedCommitment.ID().Slot()-forkingPoint.ID().Slot()) > c.protocol.Options.ChainSwitchingThreshold - } - - return heavierChain.LatestProducedCommitment.OnUpdateOnce(func(_ *Commitment, latestProducedCommitment *Commitment) { - c.Main.Set(heavierChain) - }, chainSwitchingCondition) - }) + return c } -func enable(variable reactive.Variable[bool]) (unset func()) { +func toggleTrue(variable reactive.Variable[bool]) (unset func()) { variable.Set(true) return func() { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index f9a8278af..283ed38dd 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -68,7 +68,7 @@ func (c *Commitment) SpawnedEngine() *engine.Engine { func (c *Commitment) initLogging(chains *Chains) (self *Commitment) { var shutdownLogger func() - c.Logger, shutdownLogger = chains.protocol.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot())) + c.Logger, shutdownLogger = chains.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot())) teardownLogging := lo.Batch( c.Parent.LogUpdates(c, log.LevelTrace, "Parent", (*Commitment).LogName), From 367ea7386054e0b76ec07f91dd0c8de1a7345e3e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 23 Nov 2023 07:24:30 +0100 Subject: [PATCH 272/356] Refactor: chains almost done --- pkg/protocol/chain.go | 4 ++-- pkg/protocol/chains.go | 32 ++++++++++++------------------- pkg/protocol/protocol.go | 41 ++++++++++++++++++++-------------------- 3 files changed, 34 insertions(+), 43 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 9399444b2..23157d5dc 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -213,7 +213,7 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { } return latestNetworkSlot - warpSyncOffset - }, chains.LatestSlot)), + }, chains.protocol.LatestSeenSlot)), c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestNetworkSlot iotago.SlotIndex) iotago.SlotIndex { outOfSyncOffset := 2 * engine.LatestAPI().ProtocolParameters().MaxCommittableAge() @@ -222,7 +222,7 @@ func (c *Chain) initBehavior(chains *Chains) (self *Chain) { } return latestNetworkSlot - outOfSyncOffset - }, chains.LatestSlot)), + }, chains.protocol.LatestSeenSlot)), ) }), diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 68ad08e02..9dbac685a 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -1,13 +1,9 @@ package protocol import ( - "time" - "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" - "github.com/iotaledger/iota-core/pkg/protocol/engine" - iotago "github.com/iotaledger/iota.go/v4" ) // Chains represents the set of chains that are managed by the protocol. @@ -20,8 +16,6 @@ type Chains struct { HeaviestAttested reactive.Variable[*Chain] HeaviestVerified reactive.Variable[*Chain] - LatestSlot reactive.Variable[iotago.SlotIndex] - protocol *Protocol // Logger embeds a logger that can be used to log messages emitted by this chain. @@ -35,7 +29,6 @@ func newChains(protocol *Protocol) *Chains { HeaviestClaimed: reactive.NewVariable[*Chain](), HeaviestAttested: reactive.NewVariable[*Chain](), HeaviestVerified: reactive.NewVariable[*Chain](), - LatestSlot: reactive.NewVariable[iotago.SlotIndex](), protocol: protocol, }).initLogging(protocol).initBehavior(protocol) } @@ -58,7 +51,6 @@ func (c *Chains) initLogging(protocol *Protocol) (self *Chains) { c.HeaviestClaimed.LogUpdates(c, log.LevelTrace, "HeaviestClaimed", (*Chain).LogName), c.HeaviestAttested.LogUpdates(c, log.LevelTrace, "HeaviestAttested", (*Chain).LogName), c.HeaviestVerified.LogUpdates(c, log.LevelTrace, "HeaviestVerified", (*Chain).LogName), - c.LatestSlot.LogUpdates(c, log.LevelTrace, "LatestSlot"), shutdownLogger, ) @@ -69,6 +61,11 @@ func (c *Chains) initLogging(protocol *Protocol) (self *Chains) { } func (c *Chains) initBehavior(protocol *Protocol) (self *Chains) { + mainChain := newChain(c) + mainChain.RequestBlocks.Set(true) + + c.Add(mainChain) + trackHeaviestChain := func(candidateVar reactive.Variable[*Chain], weightVar func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { return weightVar(candidate).OnUpdate(func(_ uint64, newWeight uint64) { // if the weight of the candidate is higher than the current main chain @@ -82,7 +79,9 @@ func (c *Chains) initBehavior(protocol *Protocol) (self *Chains) { }, true) } - _ = lo.Batch( + c.Main.Set(mainChain) + + teardownBehavior := lo.Batch( c.HeaviestClaimed.WithNonEmptyValue(func(heaviestClaimed *Chain) (teardown func()) { return toggleTrue(heaviestClaimed.RequestAttestations) }), @@ -112,19 +111,12 @@ func (c *Chains) initBehavior(protocol *Protocol) (self *Chains) { ) }), - protocol.Constructed.WithNonEmptyValue(func(_ bool) (teardown func()) { - return protocol.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (teardown func()) { - return c.LatestSlot.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestNetworkTime time.Time) iotago.SlotIndex { - return mainEngine.LatestAPI().TimeProvider().SlotFromTime(latestNetworkTime) - }, protocol.Clock)) - }) - }), + func() { + c.Main.Set(nil) + }, ) - mainChain := newChain(c) - mainChain.RequestBlocks.Set(true) - c.Main.Set(mainChain) - c.Add(mainChain) + c.protocol.Shutdown.OnTrigger(teardownBehavior) return c } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 5212064bb..614cc469a 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -1,6 +1,7 @@ package protocol import ( + "cmp" "context" "sync" "time" @@ -25,7 +26,7 @@ import ( type Protocol struct { Events *Events Workers *workerpool.Group - Clock reactive.Variable[time.Time] + LatestSeenSlot reactive.Variable[iotago.SlotIndex] Network *core.Protocol Commitments *Commitments Chains *Chains @@ -45,7 +46,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E return options.Apply(&Protocol{ Events: NewEvents(), Workers: workers, - Clock: reactive.NewVariable[time.Time](maxTimeBeforeWallClock), + LatestSeenSlot: reactive.NewVariable[iotago.SlotIndex](increasing[iotago.SlotIndex]), Options: NewDefaultOptions(), ReactiveModule: module.NewReactiveModule(logger), EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), @@ -72,19 +73,21 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E } }) - stopClock := lo.Batch( - p.Network.OnBlockReceived(func(block *model.Block, src peer.ID) { - p.Clock.Set(block.ProtocolBlock().Header.IssuingTime) - }), - - p.Chains.WithElements(func(chain *Chain) (teardown func()) { - return chain.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { - return chain.LatestProducedCommitment.OnUpdate(func(_ *Commitment, latestCommitment *Commitment) { - p.Clock.Set(spawnedEngine.LatestAPI().TimeProvider().SlotEndTime(latestCommitment.Slot())) + unsubscribeLatestSeenSlot := p.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (teardown func()) { + return lo.Batch( + p.Network.OnBlockReceived(func(block *model.Block, src peer.ID) { + p.LatestSeenSlot.Set(mainEngine.LatestAPI().TimeProvider().SlotFromTime(block.ProtocolBlock().Header.IssuingTime)) + }), + + p.Chains.WithElements(func(chain *Chain) (teardown func()) { + return chain.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { + return chain.LatestProducedCommitment.OnUpdate(func(_ *Commitment, latestCommitment *Commitment) { + p.LatestSeenSlot.Set(latestCommitment.Slot()) + }) }) - }) - }), - ) + }), + ) + }) p.Initialized.OnTrigger(func() { unsubscribeFromNetwork := lo.Batch( @@ -101,7 +104,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.Shutdown.OnTrigger(func() { stopEvents() - stopClock() + unsubscribeLatestSeenSlot() unsubscribeFromNetwork() p.BlocksProtocol.Shutdown() @@ -179,10 +182,6 @@ func (p *Protocol) LatestAPI() iotago.API { return p.Engines.Main.Get().LatestAPI() } -func maxTimeBeforeWallClock(currentValue time.Time, newValue time.Time) time.Time { - if newValue.Before(currentValue) || newValue.After(time.Now()) { - return currentValue - } - - return newValue +func increasing[T cmp.Ordered](currentValue T, newValue T) T { + return max(currentValue, newValue) } From 415a555ffac5428e1913d3a7e31da8f973cab620 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 23 Nov 2023 17:00:09 +0100 Subject: [PATCH 273/356] Feat: chain is close to optimal code structure --- components/metrics/metrics_commitments.go | 4 +- go.mod | 26 +-- go.sum | 52 +++--- pkg/protocol/chain.go | 200 ++++++++++++++-------- pkg/protocol/chains.go | 151 ++++++++-------- pkg/protocol/commitment.go | 2 +- pkg/testsuite/mock/node.go | 6 +- tools/gendoc/go.mod | 26 +-- tools/gendoc/go.sum | 52 +++--- tools/genesis-snapshot/go.mod | 22 +-- tools/genesis-snapshot/go.sum | 44 ++--- 11 files changed, 321 insertions(+), 264 deletions(-) diff --git a/components/metrics/metrics_commitments.go b/components/metrics/metrics_commitments.go index 634be489b..f45cfdeb1 100644 --- a/components/metrics/metrics_commitments.go +++ b/components/metrics/metrics_commitments.go @@ -47,8 +47,8 @@ var CommitmentsMetrics = collector.NewCollection(commitmentsNamespace, collector.WithType(collector.Counter), collector.WithHelp("Number of forks seen by the node."), collector.WithInitFunc(func() { - deps.Protocol.Chains.HeaviestVerified.OnUpdate(func(oldChain *protocol.Chain, _ *protocol.Chain) { - if oldChain != nil { + deps.Protocol.Chains.HeaviestVerifiedCandidate.OnUpdate(func(prevHeaviestVerifiedCandidate *protocol.Chain, _ *protocol.Chain) { + if prevHeaviestVerifiedCandidate != nil { Component.WorkerPool.Submit(func() { deps.Collector.Increment(commitmentsNamespace, forksCount) }) } }) diff --git a/go.mod b/go.mod index 3aa742a50..9c68f38e6 100644 --- a/go.mod +++ b/go.mod @@ -11,19 +11,19 @@ require ( github.com/gorilla/websocket v1.5.1 github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0 github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 - github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 - github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/app v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/constraints v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/crypto v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/ds v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/kvstore v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/lo v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/log v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/logger v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/runtime v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/stringify v0.0.0-20231123125248-3ca2c0a88408 github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 github.com/iotaledger/iota.go/v4 v4.0.0-20231122091223-371a164a92e5 diff --git a/go.sum b/go.sum index a43d85fa2..6a6fe6f39 100644 --- a/go.sum +++ b/go.sum @@ -277,32 +277,32 @@ github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PT github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 h1:yfGbgazGwZ59ACKk9aYLXpQD7jNDHmRQ1B3aZG9zsHY= github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098 h1:rC0Fd4wJz9wB7OPtYEU0ZfwiBEctChcB0KqFg9gt1xI= -github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= -github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 h1:qxgLKgxHgVK4hnYmSJ4sad9Megu07/qlUROSxqEkmoE= -github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 h1:MW2KjFqXYboYLc6y3JLNy0uzmnTlDqAxbomtn+Cd0Es= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 h1:XNJJU0BII9R5LxvVc67BouXb6yraiJD7kd69PyMwvvQ= -github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 h1:+rUcppWrtqptiWheawy5E4UfvScYgGojDESsfxxbPQY= -github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 h1:SkvEubdroIfhD4OcdKbZP5yWJ0KJnxhmsk/USyTwnRA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 h1:IsOh3IxafdS2LVS11d8WFajfLF5MfkLwkWONnusvbyk= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 h1:J6IdJ/1iO3DHr0KyuOaXYAmg83vRG8IKYws77nDgPlE= -github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 h1:mVCpy1+fRJRiA9lrjY1NetZtFORnU85v2QNu1xSPnqk= -github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098 h1:qnHzUcXPAsHD3OM+iMbXtYdBSMLz6GU/L8sbEaYbusM= -github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 h1:Ul7ZjFSaUJWEHy33CB/H9ZrLQTSBoMl3l1qZXECnQXw= -github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 h1:V4gok4YLmPzDIjndGxDkjHfnRsq3/nG6qE296X+R3Xg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 h1:Hc4pGSuFy038DyShYZLZoIvEnWmSLzQCT/7Gu+pd2bI= -github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/app v0.0.0-20231123125248-3ca2c0a88408 h1:SpgVs+CHoIe87hXi5mro6iX1jcwbPd7ApLqcfpDGayU= +github.com/iotaledger/hive.go/app v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123125248-3ca2c0a88408 h1:zRBIgum2cKNLCo/JQCyGW/M+RaH+yBeXTXu0lALoQrY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123125248-3ca2c0a88408 h1:u5Fo72MvE30SHPyPFz12lLkrbIZlBNfi7S7rkyKgsJE= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123125248-3ca2c0a88408/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123125248-3ca2c0a88408 h1:+MTGr3BmpMejEefkPVHD/GSaatk0c7XD+Zfn/HigF1k= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231123125248-3ca2c0a88408 h1:wcpfTw2Q3SJI6IqhDfI+KmbgKtIbIxF4kSZqkkXoj9g= +github.com/iotaledger/hive.go/ds v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123125248-3ca2c0a88408 h1:tjSsoeJEFAL/vU18MMgx+phsOLrSJbDDXQuCVPKgMYk= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123125248-3ca2c0a88408 h1:VEzYAiVOE1bWrWTHpdJJd+nHPXDDYq8h69Kq9lu5KRI= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231123125248-3ca2c0a88408 h1:Sgjd8AUa4BTPSnMWRUerGARRvhW0V4OyMveQI1BVAPk= +github.com/iotaledger/hive.go/lo v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231123125248-3ca2c0a88408 h1:GjOc2QJJx8gp9Fy3p/X3YxW6Qlalj5NQDBVRlqCDJrw= +github.com/iotaledger/hive.go/log v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231123125248-3ca2c0a88408 h1:4qjWpF1W+bZ4iNoOH2ocYnhh75KXNrlz7Kn6MLKgtv0= +github.com/iotaledger/hive.go/logger v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123125248-3ca2c0a88408 h1:ItsiUvFw/93A3I/4wUIrdS37sE0X/3SG8+2591Is5sk= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123125248-3ca2c0a88408 h1:9bi4QUR32kaAyxSubeZnCFHdRJtZiiH5+HdAC8/NzeE= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123125248-3ca2c0a88408/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123125248-3ca2c0a88408 h1:beShThnlxLDBeaSD7lgvdCXuzJ3reBoiDGfZr+rWN44= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 h1:hAVWoyAF4FE+1gUd2IqvTBDTnQ4Z0GKE6qc8qw9QPqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180/go.mod h1:iFiY6UukYeL8D3N1mtg4jh/9lxTBhzG0QgtD+w0gpps= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 h1:bYGO8jXNXJNMGPG9etGW7WXfLbRU9ofx1xdd29/sS9M= diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 23157d5dc..189845201 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -78,8 +78,8 @@ type Chain struct { } // newChain creates a new chain instance. -func newChain(chains *Chains) *Chain { - return (&Chain{ +func newChain(logger log.Logger, shutdownLogger func(), latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex]) *Chain { + c := &Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), Parent: reactive.NewVariable[*Chain](), Children: reactive.NewSet[*Chain](), @@ -98,7 +98,16 @@ func newChain(chains *Chains) *Chain { IsEvicted: reactive.NewEvent(), commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), - }).initLogging(chains).initBehavior(chains) + } + + shutdown := lo.Batch( + c.initLogger(logger, shutdownLogger), + c.initDerivedProperties(latestSeenSlot), + ) + + c.IsEvicted.OnTrigger(shutdown) + + return c } // DispatchBlock dispatches the given block to the chain and its children. @@ -165,12 +174,11 @@ func (c *Chain) LatestEngine() *engine.Engine { return currentEngine } -// initLogging initializes the logging of changes to the properties of this chain. -func (c *Chain) initLogging(chains *Chains) (self *Chain) { - var shutdownLogger func() - c.Logger, shutdownLogger = chains.NewEntityLogger("") +// initLogger initializes the Logger of this chain. +func (c *Chain) initLogger(logger log.Logger, shutdownLogger func()) (teardown func()) { + c.Logger = logger - teardownLogging := lo.Batch( + return lo.Batch( c.WarpSyncMode.LogUpdates(c, log.LevelTrace, "WarpSyncMode"), c.WarpSyncThreshold.LogUpdates(c, log.LevelTrace, "WarpSyncThreshold"), c.OutOfSyncThreshold.LogUpdates(c, log.LevelTrace, "OutOfSyncThreshold"), @@ -187,94 +195,126 @@ func (c *Chain) initLogging(chains *Chains) (self *Chain) { shutdownLogger, ) +} - c.IsEvicted.OnTrigger(teardownLogging) +// initDerivedProperties initializes the behavior of this chain by setting up the relations between its properties. +func (c *Chain) initDerivedProperties(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex]) (teardown func()) { + return lo.Batch( + c.deriveClaimedWeight(), + c.deriveVerifiedWeight(), + c.deriveLatestAttestedWeight(), + c.deriveWarpSyncMode(), - return c -} + c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (teardown func()) { + return c.deriveParent(forkingPoint) + }), -// initBehavior initializes the behavior of this chain by setting up the relations between its properties. -func (c *Chain) initBehavior(chains *Chains) (self *Chain) { - teardownBehavior := lo.Batch( c.Parent.WithNonEmptyValue(func(parent *Chain) (teardown func()) { - parent.Children.Add(c) - - return func() { - parent.Children.Delete(c) - } + return parent.deriveChildren(c) }), - c.SpawnedEngine.WithNonEmptyValue(func(engine *engine.Engine) (teardown func()) { + c.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { return lo.Batch( - c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestNetworkSlot iotago.SlotIndex) iotago.SlotIndex { - warpSyncOffset := engine.LatestAPI().ProtocolParameters().MaxCommittableAge() - if warpSyncOffset >= latestNetworkSlot { - return 0 - } + c.deriveWarpSyncThreshold(latestSeenSlot, spawnedEngine), + c.deriveOutOfSyncThreshold(latestSeenSlot, spawnedEngine), + ) + }), + ) +} - return latestNetworkSlot - warpSyncOffset - }, chains.protocol.LatestSeenSlot)), +// deriveWarpSyncMode defines how a chain determines whether it is in warp sync mode or not. +func (c *Chain) deriveWarpSyncMode() func() { + return c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestProducedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + // if we have no latest produced commitment, then the engine is not yet initialized and warp sync is disabled + if latestProducedCommitment == nil { + return false + } - c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestNetworkSlot iotago.SlotIndex) iotago.SlotIndex { - outOfSyncOffset := 2 * engine.LatestAPI().ProtocolParameters().MaxCommittableAge() - if outOfSyncOffset >= latestNetworkSlot { - return 0 - } + // if warp sync mode is enabled, keep it enabled until we are no longer below the warp sync threshold + if warpSyncMode { + return latestProducedCommitment.ID().Slot() < warpSyncThreshold + } - return latestNetworkSlot - outOfSyncOffset - }, chains.protocol.LatestSeenSlot)), - ) - }), + // if warp sync mode is disabled, enable it only if we fall below the out of sync threshold + return latestProducedCommitment.ID().Slot() < outOfSyncThreshold + }, c.LatestProducedCommitment, c.WarpSyncThreshold, c.OutOfSyncThreshold, c.WarpSyncMode.Get())) +} - c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (teardown func()) { - if forkingPoint == nil { - c.Parent.Set(nil) +// the AttestedWeight is defined slightly different from the ClaimedWeight and VerifiedWeight, because it is not +// derived from a static value in the commitment but a dynamic value that is derived from the received +// attestations (which may change over time). +func (c *Chain) deriveLatestAttestedWeight() func() { + return c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (teardown func()) { + return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) + }) +} - return func() {} - } +func (c *Chain) deriveVerifiedWeight() func() { + return c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestProducedCommitment *Commitment) uint64 { + if latestProducedCommitment == nil { + return 0 + } - return forkingPoint.Parent.WithValue(func(parentCommitment *Commitment) (teardown func()) { - if parentCommitment == nil { - c.Parent.Set(nil) + return latestProducedCommitment.CumulativeWeight() + }, c.LatestProducedCommitment)) +} - return func() {} - } +func (c *Chain) deriveClaimedWeight() (teardown func()) { + return c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { + if latestCommitment == nil { + return 0 + } - return c.Parent.InheritFrom(parentCommitment.Chain) - }) - }), + return latestCommitment.CumulativeWeight() + }, c.LatestCommitment)) +} - c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { - if latestCommitment == nil { - return 0 - } +func (c *Chain) deriveChildren(child *Chain) func() { + c.Children.Add(child) - return latestCommitment.CumulativeWeight() - }, c.LatestCommitment)), + return func() { + c.Children.Delete(child) + } +} - c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestProducedCommitment *Commitment) uint64 { - if latestProducedCommitment == nil { - return 0 - } +func (c *Chain) deriveParent(forkingPoint *Commitment) func() { + if forkingPoint == nil { + c.Parent.Set(nil) - return latestProducedCommitment.CumulativeWeight() - }, c.LatestProducedCommitment)), + return nil + } - // the AttestedWeight is defined slightly different from the ClaimedWeight and VerifiedWeight, because it is not - // derived from a static value in the commitment but a dynamic value that is derived from the received - // attestations (which may change over time). - c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (teardown func()) { - return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) - }), + return forkingPoint.Parent.WithValue(func(parentCommitment *Commitment) (teardown func()) { + if parentCommitment == nil { + c.Parent.Set(nil) - c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSync bool, latestProducedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - return latestProducedCommitment != nil && lo.Cond(warpSync, latestProducedCommitment.ID().Slot() < warpSyncThreshold, latestProducedCommitment.ID().Slot() < outOfSyncThreshold) - }, c.LatestProducedCommitment, c.WarpSyncThreshold, c.OutOfSyncThreshold, c.WarpSyncMode.Get())), - ) + return nil + } - c.IsEvicted.OnTrigger(teardownBehavior) + return c.Parent.InheritFrom(parentCommitment.Chain) + }) +} - return c +func (c *Chain) deriveOutOfSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], spawnedEngine *engine.Engine) func() { + return c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { + outOfSyncOffset := 2 * spawnedEngine.LatestAPI().ProtocolParameters().MaxCommittableAge() + if outOfSyncOffset >= latestSeenSlot { + return 0 + } + + return latestSeenSlot - outOfSyncOffset + }, latestSeenSlot)) +} + +func (c *Chain) deriveWarpSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], spawnedEngine *engine.Engine) func() { + return c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { + warpSyncOffset := spawnedEngine.LatestAPI().ProtocolParameters().MaxCommittableAge() + if warpSyncOffset >= latestSeenSlot { + return 0 + } + + return latestSeenSlot - warpSyncOffset + }, latestSeenSlot)) } // registerCommitment registers the given commitment with this chain. @@ -321,3 +361,17 @@ func (c *Chain) registerCommitment(newCommitment *Commitment) (unregister func() c.LatestProducedCommitment.Compute(resetToParent) } } + +// claimedWeightVariable is a getter for the ClaimedWeight variable of this chain, which is internally used to be able +// to "address" the variable across multiple chains in a generic way. +func (c *Chain) claimedWeightVariable() reactive.Variable[uint64] { + return c.ClaimedWeight +} + +func (c *Chain) verifiedWeightVariable() reactive.Variable[uint64] { + return c.VerifiedWeight +} + +func (c *Chain) attestedWeightVariable() reactive.Variable[uint64] { + return c.AttestedWeight +} diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 9dbac685a..34ddc1028 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -4,17 +4,23 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" + iotago "github.com/iotaledger/iota.go/v4" ) -// Chains represents the set of chains that are managed by the protocol. +// Chains is a subcomponent of the protocol that manages the chains and the corresponding chain switching logic, and it +// exposes these chains as a reactive set together with endpoints for the main chain and the heaviest candidates. type Chains struct { // Set contains all chains that are managed by the protocol. reactive.Set[*Chain] - Main reactive.Variable[*Chain] - HeaviestClaimed reactive.Variable[*Chain] - HeaviestAttested reactive.Variable[*Chain] - HeaviestVerified reactive.Variable[*Chain] + // Main is a reactive variable that contains the main chain. + Main reactive.Variable[*Chain] + + // HeaviestClaimedCandidate is a reactive variable that contains the candidate chain with the heaviest claimed + // weight. + HeaviestClaimedCandidate reactive.Variable[*Chain] + HeaviestAttestedCandidate reactive.Variable[*Chain] + HeaviestVerifiedCandidate reactive.Variable[*Chain] protocol *Protocol @@ -24,107 +30,104 @@ type Chains struct { func newChains(protocol *Protocol) *Chains { return (&Chains{ - Set: reactive.NewSet[*Chain](), - Main: reactive.NewVariable[*Chain](), - HeaviestClaimed: reactive.NewVariable[*Chain](), - HeaviestAttested: reactive.NewVariable[*Chain](), - HeaviestVerified: reactive.NewVariable[*Chain](), - protocol: protocol, - }).initLogging(protocol).initBehavior(protocol) + Set: reactive.NewSet[*Chain](), + Main: reactive.NewVariable[*Chain](), + HeaviestClaimedCandidate: reactive.NewVariable[*Chain](), + HeaviestAttestedCandidate: reactive.NewVariable[*Chain](), + HeaviestVerifiedCandidate: reactive.NewVariable[*Chain](), + protocol: protocol, + }).init(protocol) } -func (c *Chains) Fork(forkingPoint *Commitment) *Chain { - chain := newChain(c) - chain.ForkingPoint.Set(forkingPoint) +func (c *Chains) init(protocol *Protocol) (self *Chains) { + shutdown := lo.Batch( + c.initLogging(protocol.NewChildLogger("Chains")), + c.initMainChain(), + c.initChainSwitching(protocol.Options.ChainSwitchingThreshold), + ) - c.Add(chain) + c.protocol.Shutdown.OnTrigger(shutdown) - return chain + return c } -func (c *Chains) initLogging(protocol *Protocol) (self *Chains) { - var shutdownLogger func() - c.Logger, shutdownLogger = protocol.NewChildLogger("Chains") +func (c *Chains) initLogging(logger log.Logger, shutdownLogger func()) (teardown func()) { + c.Logger = logger - teardownLogging := lo.Batch( - c.Main.LogUpdates(protocol, log.LevelTrace, "Main", (*Chain).LogName), - c.HeaviestClaimed.LogUpdates(c, log.LevelTrace, "HeaviestClaimed", (*Chain).LogName), - c.HeaviestAttested.LogUpdates(c, log.LevelTrace, "HeaviestAttested", (*Chain).LogName), - c.HeaviestVerified.LogUpdates(c, log.LevelTrace, "HeaviestVerified", (*Chain).LogName), + return lo.Batch( + c.Main.LogUpdates(c, log.LevelTrace, "Main", (*Chain).LogName), + c.HeaviestClaimedCandidate.LogUpdates(c, log.LevelTrace, "HeaviestClaimedCandidate", (*Chain).LogName), + c.HeaviestAttestedCandidate.LogUpdates(c, log.LevelTrace, "HeaviestAttestedCandidate", (*Chain).LogName), + c.HeaviestVerifiedCandidate.LogUpdates(c, log.LevelTrace, "HeaviestVerifiedCandidate", (*Chain).LogName), shutdownLogger, ) - - protocol.Shutdown.OnTrigger(teardownLogging) - - return c } -func (c *Chains) initBehavior(protocol *Protocol) (self *Chains) { - mainChain := newChain(c) +func (c *Chains) initMainChain() (teardown func()) { + chainLogger, shutdownChainLogger := c.NewEntityLogger("") + + mainChain := newChain(chainLogger, shutdownChainLogger, c.protocol.LatestSeenSlot) mainChain.RequestBlocks.Set(true) c.Add(mainChain) - trackHeaviestChain := func(candidateVar reactive.Variable[*Chain], weightVar func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { - return weightVar(candidate).OnUpdate(func(_ uint64, newWeight uint64) { - // if the weight of the candidate is higher than the current main chain - if mainChain := c.Main.Get(); mainChain == nil || newWeight > mainChain.VerifiedWeight.Get() { - // try to set the candidate as the new heaviest chain - candidateVar.Compute(func(currentCandidate *Chain) *Chain { - // only set the candidate as the heaviest chain if it is still the heaviest chain (double-checked locking) - return lo.Cond(currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newWeight > weightVar(currentCandidate).Get(), candidate, currentCandidate) - }) - } - }, true) - } + return c.Main.ToggleValue(mainChain) +} - c.Main.Set(mainChain) +func (c *Chains) initChainSwitching(chainSwitchingThreshold iotago.SlotIndex) (teardown func()) { + return lo.Batch( + c.WithElements(func(candidateChain *Chain) (teardown func()) { + return lo.Batch( + c.trackHeaviestCandidate(c.HeaviestClaimedCandidate, (*Chain).claimedWeightVariable, candidateChain), + c.trackHeaviestCandidate(c.HeaviestVerifiedCandidate, (*Chain).verifiedWeightVariable, candidateChain), + c.trackHeaviestCandidate(c.HeaviestAttestedCandidate, (*Chain).attestedWeightVariable, candidateChain), + ) + }), - teardownBehavior := lo.Batch( - c.HeaviestClaimed.WithNonEmptyValue(func(heaviestClaimed *Chain) (teardown func()) { - return toggleTrue(heaviestClaimed.RequestAttestations) + c.HeaviestClaimedCandidate.WithNonEmptyValue(func(heaviestClaimedCandidate *Chain) (teardown func()) { + return heaviestClaimedCandidate.RequestAttestations.ToggleValue(true) }), - c.HeaviestAttested.WithNonEmptyValue(func(heaviestAttested *Chain) (teardown func()) { - return toggleTrue(heaviestAttested.RequestBlocks) + c.HeaviestAttestedCandidate.WithNonEmptyValue(func(heaviestAttestedCandidate *Chain) (teardown func()) { + return heaviestAttestedCandidate.RequestBlocks.ToggleValue(true) }), - c.HeaviestVerified.WithNonEmptyValue(func(heavierChain *Chain) (teardown func()) { + c.HeaviestVerifiedCandidate.WithNonEmptyValue(func(heaviestVerifiedCandidate *Chain) (teardown func()) { // only switch to the heaviest chain if the latest produced commitment is enough slots away from the forking point. chainSwitchingCondition := func(_ *Commitment, latestProducedCommitment *Commitment) bool { - forkingPoint := heavierChain.ForkingPoint.Get() + forkingPoint := heaviestVerifiedCandidate.ForkingPoint.Get() - return forkingPoint != nil && latestProducedCommitment != nil && (latestProducedCommitment.ID().Slot()-forkingPoint.ID().Slot()) > protocol.Options.ChainSwitchingThreshold + return forkingPoint != nil && latestProducedCommitment != nil && (latestProducedCommitment.ID().Slot()-forkingPoint.ID().Slot()) > chainSwitchingThreshold } - return heavierChain.LatestProducedCommitment.OnUpdateOnce(func(_ *Commitment, latestProducedCommitment *Commitment) { - c.Main.Set(heavierChain) + return heaviestVerifiedCandidate.LatestProducedCommitment.OnUpdateOnce(func(_ *Commitment, latestProducedCommitment *Commitment) { + c.Main.Set(heaviestVerifiedCandidate) }, chainSwitchingCondition) }), - - c.WithElements(func(chain *Chain) (teardown func()) { - return lo.Batch( - trackHeaviestChain(c.HeaviestClaimed, func(chain *Chain) reactive.Variable[uint64] { return chain.ClaimedWeight }, chain), - trackHeaviestChain(c.HeaviestVerified, func(chain *Chain) reactive.Variable[uint64] { return chain.VerifiedWeight }, chain), - trackHeaviestChain(c.HeaviestAttested, func(chain *Chain) reactive.Variable[uint64] { return chain.AttestedWeight }, chain), - ) - }), - - func() { - c.Main.Set(nil) - }, ) +} - c.protocol.Shutdown.OnTrigger(teardownBehavior) - - return c +func (c *Chains) trackHeaviestCandidate(candidateVar reactive.Variable[*Chain], weightVar func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { + return weightVar(candidate).OnUpdate(func(_ uint64, newWeight uint64) { + // if the weight of the candidate is higher than the current main chain + if mainChain := c.Main.Get(); mainChain == nil || newWeight > mainChain.VerifiedWeight.Get() { + // try to set the candidate as the new heaviest chain + candidateVar.Compute(func(currentCandidate *Chain) *Chain { + // only set the candidate as the heaviest chain if it is still the heaviest chain (double-checked locking) + return lo.Cond(currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newWeight > weightVar(currentCandidate).Get(), candidate, currentCandidate) + }) + } + }, true) } -func toggleTrue(variable reactive.Variable[bool]) (unset func()) { - variable.Set(true) +func (c *Chains) forkChain(forkingPoint *Commitment) *Chain { + chainLogger, shutdownChainLogger := c.NewEntityLogger("") + + chain := newChain(chainLogger, shutdownChainLogger, c.protocol.LatestSeenSlot) + chain.ForkingPoint.Set(forkingPoint) - return func() { - variable.Set(false) - } + c.Add(chain) + + return chain } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 283ed38dd..3f39ca5e3 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -114,7 +114,7 @@ func (c *Commitment) initBehavior(chains *Chains) (self *Commitment) { if c != mainChild { if chain == nil { - chain = chains.Fork(c) + chain = chains.forkChain(c) } return chain diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 4070d62fe..4f9b4eea7 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -157,11 +157,11 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto } func (n *Node) hookEvents() { - n.Protocol.Chains.HeaviestAttested.OnUpdate(func(prevHeaviestAttestedChain *protocol.Chain, heaviestAttestedChain *protocol.Chain) { - if prevHeaviestAttestedChain != nil { + n.Protocol.Chains.HeaviestAttestedCandidate.OnUpdate(func(prevHeaviestAttestedCandidate *protocol.Chain, heaviestAttestedCandidate *protocol.Chain) { + if prevHeaviestAttestedCandidate != nil { n.forkDetectedCount.Add(1) - heaviestAttestedChain.SpawnedEngine.OnUpdate(func(prevEngine *engine.Engine, newEngine *engine.Engine) { + heaviestAttestedCandidate.SpawnedEngine.OnUpdate(func(prevEngine *engine.Engine, newEngine *engine.Engine) { n.candidateEngineActivatedCount.Add(1) }) } diff --git a/tools/gendoc/go.mod b/tools/gendoc/go.mod index 275c091eb..75ffebd87 100644 --- a/tools/gendoc/go.mod +++ b/tools/gendoc/go.mod @@ -5,7 +5,7 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/app v0.0.0-20231123125248-3ca2c0a88408 github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 ) @@ -57,18 +57,18 @@ require ( github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/crypto v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/ierrors v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/lo v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/logger v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/runtime v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231123125248-3ca2c0a88408 // indirect github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 // indirect github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 // indirect github.com/iotaledger/iota.go/v4 v4.0.0-20231122091223-371a164a92e5 // indirect diff --git a/tools/gendoc/go.sum b/tools/gendoc/go.sum index 7d82d157b..19774c1ed 100644 --- a/tools/gendoc/go.sum +++ b/tools/gendoc/go.sum @@ -279,34 +279,34 @@ github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PT github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 h1:yfGbgazGwZ59ACKk9aYLXpQD7jNDHmRQ1B3aZG9zsHY= github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098 h1:rC0Fd4wJz9wB7OPtYEU0ZfwiBEctChcB0KqFg9gt1xI= -github.com/iotaledger/hive.go/app v0.0.0-20231123022750-daace4282098/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= +github.com/iotaledger/hive.go/app v0.0.0-20231123125248-3ca2c0a88408 h1:SpgVs+CHoIe87hXi5mro6iX1jcwbPd7ApLqcfpDGayU= +github.com/iotaledger/hive.go/app v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:+riYmeLApkLlj4+EpuJpEJAsj/KGfD7cqLGy7oTsPOM= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3 h1:4aVJTc0KS77uEw0Tny4r0n1ORwcbAQDECaCclgf/6lE= github.com/iotaledger/hive.go/apputils v0.0.0-20230829152614-7afc7a4d89b3/go.mod h1:TZeAqieDu+xDOZp2e9+S+8pZp1PrfgcwLUnxmd8IgLU= -github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 h1:qxgLKgxHgVK4hnYmSJ4sad9Megu07/qlUROSxqEkmoE= -github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 h1:MW2KjFqXYboYLc6y3JLNy0uzmnTlDqAxbomtn+Cd0Es= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 h1:XNJJU0BII9R5LxvVc67BouXb6yraiJD7kd69PyMwvvQ= -github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 h1:+rUcppWrtqptiWheawy5E4UfvScYgGojDESsfxxbPQY= -github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 h1:SkvEubdroIfhD4OcdKbZP5yWJ0KJnxhmsk/USyTwnRA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 h1:IsOh3IxafdS2LVS11d8WFajfLF5MfkLwkWONnusvbyk= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 h1:J6IdJ/1iO3DHr0KyuOaXYAmg83vRG8IKYws77nDgPlE= -github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 h1:mVCpy1+fRJRiA9lrjY1NetZtFORnU85v2QNu1xSPnqk= -github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098 h1:qnHzUcXPAsHD3OM+iMbXtYdBSMLz6GU/L8sbEaYbusM= -github.com/iotaledger/hive.go/logger v0.0.0-20231123022750-daace4282098/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= -github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 h1:Ul7ZjFSaUJWEHy33CB/H9ZrLQTSBoMl3l1qZXECnQXw= -github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 h1:V4gok4YLmPzDIjndGxDkjHfnRsq3/nG6qE296X+R3Xg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 h1:Hc4pGSuFy038DyShYZLZoIvEnWmSLzQCT/7Gu+pd2bI= -github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123125248-3ca2c0a88408 h1:zRBIgum2cKNLCo/JQCyGW/M+RaH+yBeXTXu0lALoQrY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123125248-3ca2c0a88408 h1:u5Fo72MvE30SHPyPFz12lLkrbIZlBNfi7S7rkyKgsJE= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123125248-3ca2c0a88408/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123125248-3ca2c0a88408 h1:+MTGr3BmpMejEefkPVHD/GSaatk0c7XD+Zfn/HigF1k= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231123125248-3ca2c0a88408 h1:wcpfTw2Q3SJI6IqhDfI+KmbgKtIbIxF4kSZqkkXoj9g= +github.com/iotaledger/hive.go/ds v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123125248-3ca2c0a88408 h1:tjSsoeJEFAL/vU18MMgx+phsOLrSJbDDXQuCVPKgMYk= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123125248-3ca2c0a88408 h1:VEzYAiVOE1bWrWTHpdJJd+nHPXDDYq8h69Kq9lu5KRI= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231123125248-3ca2c0a88408 h1:Sgjd8AUa4BTPSnMWRUerGARRvhW0V4OyMveQI1BVAPk= +github.com/iotaledger/hive.go/lo v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231123125248-3ca2c0a88408 h1:GjOc2QJJx8gp9Fy3p/X3YxW6Qlalj5NQDBVRlqCDJrw= +github.com/iotaledger/hive.go/log v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/logger v0.0.0-20231123125248-3ca2c0a88408 h1:4qjWpF1W+bZ4iNoOH2ocYnhh75KXNrlz7Kn6MLKgtv0= +github.com/iotaledger/hive.go/logger v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:w1psHM2MuKsen1WdsPKrpqElYH7ZOQ+YdQIgJZg4HTo= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123125248-3ca2c0a88408 h1:ItsiUvFw/93A3I/4wUIrdS37sE0X/3SG8+2591Is5sk= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123125248-3ca2c0a88408 h1:9bi4QUR32kaAyxSubeZnCFHdRJtZiiH5+HdAC8/NzeE= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123125248-3ca2c0a88408/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123125248-3ca2c0a88408 h1:beShThnlxLDBeaSD7lgvdCXuzJ3reBoiDGfZr+rWN44= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180 h1:hAVWoyAF4FE+1gUd2IqvTBDTnQ4Z0GKE6qc8qw9QPqg= github.com/iotaledger/inx-app v1.0.0-rc.3.0.20231121121055-b13a176c5180/go.mod h1:iFiY6UukYeL8D3N1mtg4jh/9lxTBhzG0QgtD+w0gpps= github.com/iotaledger/inx/go v1.0.0-rc.2.0.20231120082637-ccd5b8465251 h1:bYGO8jXNXJNMGPG9etGW7WXfLbRU9ofx1xdd29/sS9M= diff --git a/tools/genesis-snapshot/go.mod b/tools/genesis-snapshot/go.mod index 3c4edac7c..b3d4f8f47 100644 --- a/tools/genesis-snapshot/go.mod +++ b/tools/genesis-snapshot/go.mod @@ -5,10 +5,10 @@ go 1.21 replace github.com/iotaledger/iota-core => ../../ require ( - github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 - github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 + github.com/iotaledger/hive.go/crypto v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/ierrors v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/lo v0.0.0-20231123125248-3ca2c0a88408 + github.com/iotaledger/hive.go/runtime v0.0.0-20231123125248-3ca2c0a88408 github.com/iotaledger/iota-core v0.0.0-00010101000000-000000000000 github.com/iotaledger/iota.go/v4 v4.0.0-20231122091223-371a164a92e5 github.com/mr-tron/base58 v1.2.0 @@ -27,13 +27,13 @@ require ( github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 // indirect github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 // indirect - github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 // indirect + github.com/iotaledger/hive.go/constraints v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/ds v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/kvstore v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/log v0.0.0-20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123125248-3ca2c0a88408 // indirect + github.com/iotaledger/hive.go/stringify v0.0.0-20231123125248-3ca2c0a88408 // indirect github.com/ipfs/go-cid v0.4.1 // indirect github.com/klauspost/cpuid/v2 v2.2.5 // indirect github.com/kr/text v0.2.0 // indirect diff --git a/tools/genesis-snapshot/go.sum b/tools/genesis-snapshot/go.sum index 4c8de8374..74cc346eb 100644 --- a/tools/genesis-snapshot/go.sum +++ b/tools/genesis-snapshot/go.sum @@ -30,28 +30,28 @@ github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7 h1:dTrD7X2PT github.com/iotaledger/grocksdb v1.7.5-0.20230220105546-5162e18885c7/go.mod h1:ZRdPu684P0fQ1z8sXz4dj9H5LWHhz4a9oCtvjunkSrw= github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098 h1:yfGbgazGwZ59ACKk9aYLXpQD7jNDHmRQ1B3aZG9zsHY= github.com/iotaledger/hive.go/ads v0.0.0-20231123022750-daace4282098/go.mod h1:gbUvr01B5ha530GnNm8K2OsHXOd2BtzBYOMxyTX3iDg= -github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098 h1:qxgLKgxHgVK4hnYmSJ4sad9Megu07/qlUROSxqEkmoE= -github.com/iotaledger/hive.go/constraints v0.0.0-20231123022750-daace4282098/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098 h1:MW2KjFqXYboYLc6y3JLNy0uzmnTlDqAxbomtn+Cd0Es= -github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123022750-daace4282098/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= -github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098 h1:XNJJU0BII9R5LxvVc67BouXb6yraiJD7kd69PyMwvvQ= -github.com/iotaledger/hive.go/crypto v0.0.0-20231123022750-daace4282098/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= -github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098 h1:+rUcppWrtqptiWheawy5E4UfvScYgGojDESsfxxbPQY= -github.com/iotaledger/hive.go/ds v0.0.0-20231123022750-daace4282098/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098 h1:SkvEubdroIfhD4OcdKbZP5yWJ0KJnxhmsk/USyTwnRA= -github.com/iotaledger/hive.go/ierrors v0.0.0-20231123022750-daace4282098/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098 h1:IsOh3IxafdS2LVS11d8WFajfLF5MfkLwkWONnusvbyk= -github.com/iotaledger/hive.go/kvstore v0.0.0-20231123022750-daace4282098/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= -github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098 h1:J6IdJ/1iO3DHr0KyuOaXYAmg83vRG8IKYws77nDgPlE= -github.com/iotaledger/hive.go/lo v0.0.0-20231123022750-daace4282098/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= -github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098 h1:mVCpy1+fRJRiA9lrjY1NetZtFORnU85v2QNu1xSPnqk= -github.com/iotaledger/hive.go/log v0.0.0-20231123022750-daace4282098/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= -github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098 h1:Ul7ZjFSaUJWEHy33CB/H9ZrLQTSBoMl3l1qZXECnQXw= -github.com/iotaledger/hive.go/runtime v0.0.0-20231123022750-daace4282098/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098 h1:V4gok4YLmPzDIjndGxDkjHfnRsq3/nG6qE296X+R3Xg= -github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123022750-daace4282098/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= -github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098 h1:Hc4pGSuFy038DyShYZLZoIvEnWmSLzQCT/7Gu+pd2bI= -github.com/iotaledger/hive.go/stringify v0.0.0-20231123022750-daace4282098/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123125248-3ca2c0a88408 h1:zRBIgum2cKNLCo/JQCyGW/M+RaH+yBeXTXu0lALoQrY= +github.com/iotaledger/hive.go/constraints v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:dOBOM2s4se3HcWefPe8sQLUalGXJ8yVXw58oK8jke3s= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123125248-3ca2c0a88408 h1:u5Fo72MvE30SHPyPFz12lLkrbIZlBNfi7S7rkyKgsJE= +github.com/iotaledger/hive.go/core v1.0.0-rc.3.0.20231123125248-3ca2c0a88408/go.mod h1:CdixkrB7VdQzEDlVuwsxPtsiJL/WXrQgz3PELIqlLko= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123125248-3ca2c0a88408 h1:+MTGr3BmpMejEefkPVHD/GSaatk0c7XD+Zfn/HigF1k= +github.com/iotaledger/hive.go/crypto v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:OQ9EVTTQT1mkO/16BgwSIyQlAhEg+Cptud/yutevWsI= +github.com/iotaledger/hive.go/ds v0.0.0-20231123125248-3ca2c0a88408 h1:wcpfTw2Q3SJI6IqhDfI+KmbgKtIbIxF4kSZqkkXoj9g= +github.com/iotaledger/hive.go/ds v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:JE8cbZSvzbB5TrwXibg6M0B7ck35YxF30ItHBzQRlgc= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123125248-3ca2c0a88408 h1:tjSsoeJEFAL/vU18MMgx+phsOLrSJbDDXQuCVPKgMYk= +github.com/iotaledger/hive.go/ierrors v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:HcE8B5lP96enc/OALTb2/rIIi+yOLouRoHOKRclKmC8= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123125248-3ca2c0a88408 h1:VEzYAiVOE1bWrWTHpdJJd+nHPXDDYq8h69Kq9lu5KRI= +github.com/iotaledger/hive.go/kvstore v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:ytfKoHr/nF8u0y0G4mamfG0yjFtJiJVk0kgjnPOtsSY= +github.com/iotaledger/hive.go/lo v0.0.0-20231123125248-3ca2c0a88408 h1:Sgjd8AUa4BTPSnMWRUerGARRvhW0V4OyMveQI1BVAPk= +github.com/iotaledger/hive.go/lo v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:6Ee7i6b4tuTHuRYnPP8VUb0wr9XFI5qlqtnttBd9jRg= +github.com/iotaledger/hive.go/log v0.0.0-20231123125248-3ca2c0a88408 h1:GjOc2QJJx8gp9Fy3p/X3YxW6Qlalj5NQDBVRlqCDJrw= +github.com/iotaledger/hive.go/log v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:vzO4/wRkEJDEZb/9fD10oKU9k1bj4qLir2Uhl5U1FkM= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123125248-3ca2c0a88408 h1:ItsiUvFw/93A3I/4wUIrdS37sE0X/3SG8+2591Is5sk= +github.com/iotaledger/hive.go/runtime v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:DrZPvUvLarK8C2qb+3H2vdypp/MuhpQmB3iMJbDCr/Q= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123125248-3ca2c0a88408 h1:9bi4QUR32kaAyxSubeZnCFHdRJtZiiH5+HdAC8/NzeE= +github.com/iotaledger/hive.go/serializer/v2 v2.0.0-rc.1.0.20231123125248-3ca2c0a88408/go.mod h1:FoH3T6yKlZJp8xm8K+zsQiibSynp32v21CpWx8xkek8= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123125248-3ca2c0a88408 h1:beShThnlxLDBeaSD7lgvdCXuzJ3reBoiDGfZr+rWN44= +github.com/iotaledger/hive.go/stringify v0.0.0-20231123125248-3ca2c0a88408/go.mod h1:FTo/UWzNYgnQ082GI9QVM9HFDERqf9rw9RivNpqrnTs= github.com/iotaledger/iota.go/v4 v4.0.0-20231122091223-371a164a92e5 h1:MGz9hwBkVOzBS9/MwveX0t8POWamXPN398CKcJhfQKs= github.com/iotaledger/iota.go/v4 v4.0.0-20231122091223-371a164a92e5/go.mod h1:aO+5iL0vTNwNfE4QMGHVIufGziSI1wTvwJY1ipSMgCk= github.com/ipfs/go-cid v0.4.1 h1:A/T3qGvxi4kpKWWcPC/PgbvDA2bjVLO7n4UeVwnbs/s= From 86a829ba90683487de2e638b933b410b98b3126a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 24 Nov 2023 14:20:14 +0100 Subject: [PATCH 274/356] Feat: finished cleaning up chain.go and chains.go --- pkg/protocol/chain.go | 224 ++++++++++++++++++------------------- pkg/protocol/chains.go | 126 ++++++++++++--------- pkg/protocol/commitment.go | 7 +- pkg/protocol/protocol.go | 19 ---- 4 files changed, 190 insertions(+), 186 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 189845201..e00f12e0e 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -17,11 +17,11 @@ type Chain struct { // ForkingPoint contains the first commitment of this chain. ForkingPoint reactive.Variable[*Commitment] - // Parent contains the chain that this chain forked from. - Parent reactive.Variable[*Chain] + // ParentChain contains the chain that this chain forked from. + ParentChain reactive.Variable[*Chain] - // Children contains the set of all chains that forked from this chain. - Children reactive.Set[*Chain] + // ChildChains contains the set of all chains that forked from this chain. + ChildChains reactive.Set[*Chain] // LatestCommitment contains the latest commitment of this chain. LatestCommitment reactive.Variable[*Commitment] @@ -78,11 +78,11 @@ type Chain struct { } // newChain creates a new chain instance. -func newChain(logger log.Logger, shutdownLogger func(), latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex]) *Chain { +func newChain(chains *Chains) *Chain { c := &Chain{ ForkingPoint: reactive.NewVariable[*Commitment](), - Parent: reactive.NewVariable[*Chain](), - Children: reactive.NewSet[*Chain](), + ParentChain: reactive.NewVariable[*Chain](), + ChildChains: reactive.NewSet[*Chain](), LatestCommitment: reactive.NewVariable[*Commitment](), LatestAttestedCommitment: reactive.NewVariable[*Commitment](), LatestProducedCommitment: reactive.NewVariable[*Commitment](), @@ -101,8 +101,8 @@ func newChain(logger log.Logger, shutdownLogger func(), latestSeenSlot reactive. } shutdown := lo.Batch( - c.initLogger(logger, shutdownLogger), - c.initDerivedProperties(latestSeenSlot), + c.initLogger(chains.NewEntityLogger("")), + c.initDerivedProperties(chains.LatestSeenSlot), ) c.IsEvicted.OnTrigger(shutdown) @@ -110,34 +110,16 @@ func newChain(logger log.Logger, shutdownLogger func(), latestSeenSlot reactive. return c } -// DispatchBlock dispatches the given block to the chain and its children. +// DispatchBlock dispatches the given block to the chain and its children (it is allowed to call this method on a nil +// receiver, in which case it will be a no-op with a return value of false). func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (dispatched bool) { - // allow to call this method on a nil chain to avoid nil checks in the caller when dispatching to unsolid chains if c == nil { return false } - // first try to dispatch to our chain - if spawnedEngine := c.SpawnedEngine.Get(); spawnedEngine != nil { - // only dispatch blocks that are for slots larger than the latest commitment - if targetSlot := spawnedEngine.APIForTime(block.ProtocolBlock().Header.IssuingTime).TimeProvider().SlotFromTime(block.ProtocolBlock().Header.IssuingTime); targetSlot > spawnedEngine.LatestCommitment.Get().Slot() { - // if we are in warp sync mode, then we only accept blocks that are part of the blocks to warp sync. - if dispatched = !c.WarpSyncMode.Get(); !dispatched { - if targetCommitment, targetCommitmentExists := c.Commitment(targetSlot); targetCommitmentExists { - if blocksToWarpSync := targetCommitment.BlocksToWarpSync.Get(); blocksToWarpSync != nil && blocksToWarpSync.Has(block.ID()) { - dispatched = true - } - } - } + dispatched = c.dispatchBlockToSpawnedEngine(block, src) - if dispatched { - spawnedEngine.ProcessBlockFromPeer(block, src) - } - } - } - - // then try to dispatch to our children - for _, childChain := range c.Children.ToSlice() { + for _, childChain := range c.ChildChains.ToSlice() { dispatched = childChain.DispatchBlock(block, src) || dispatched } @@ -153,7 +135,7 @@ func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exist case slot > forkingPoint.Slot(): return currentChain.commitments.Get(slot) default: - currentChain = c.Parent.Get() + currentChain = c.ParentChain.Get() } } @@ -163,12 +145,10 @@ func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exist // LatestEngine returns the latest engine instance that was spawned by the chain itself or one of its ancestors. func (c *Chain) LatestEngine() *engine.Engine { currentChain, currentEngine := c, c.SpawnedEngine.Get() - for currentEngine == nil { - if currentChain = c.Parent.Get(); currentChain == nil { + for ; currentEngine == nil; currentEngine = currentChain.SpawnedEngine.Get() { + if currentChain = c.ParentChain.Get(); currentChain == nil { return nil } - - currentEngine = currentChain.SpawnedEngine.Get() } return currentEngine @@ -206,11 +186,11 @@ func (c *Chain) initDerivedProperties(latestSeenSlot reactive.ReadableVariable[i c.deriveWarpSyncMode(), c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (teardown func()) { - return c.deriveParent(forkingPoint) + return c.deriveParentChain(forkingPoint) }), - c.Parent.WithNonEmptyValue(func(parent *Chain) (teardown func()) { - return parent.deriveChildren(c) + c.ParentChain.WithNonEmptyValue(func(parentChain *Chain) (teardown func()) { + return parentChain.deriveChildChains(c) }), c.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { @@ -240,15 +220,29 @@ func (c *Chain) deriveWarpSyncMode() func() { }, c.LatestProducedCommitment, c.WarpSyncThreshold, c.OutOfSyncThreshold, c.WarpSyncMode.Get())) } -// the AttestedWeight is defined slightly different from the ClaimedWeight and VerifiedWeight, because it is not -// derived from a static value in the commitment but a dynamic value that is derived from the received -// attestations (which may change over time). +// deriveClaimedWeight defines how a chain determines its claimed weight (by setting the cumulative weight of the +// latest commitment). +func (c *Chain) deriveClaimedWeight() (teardown func()) { + return c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { + if latestCommitment == nil { + return 0 + } + + return latestCommitment.CumulativeWeight() + }, c.LatestCommitment)) +} + +// deriveLatestAttestedWeight defines how a chain determines its attested weight (by inheriting the cumulative attested +// weight of the latest attested commitment). It uses inheritance instead of simply setting the value as the cumulative +// attested weight can change over time depending on the attestations that are received. func (c *Chain) deriveLatestAttestedWeight() func() { return c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (teardown func()) { return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) }) } +// deriveVerifiedWeight defines how a chain determines its verified weight (by setting the cumulative weight of the +// latest produced commitment). func (c *Chain) deriveVerifiedWeight() func() { return c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestProducedCommitment *Commitment) uint64 { if latestProducedCommitment == nil { @@ -259,119 +253,121 @@ func (c *Chain) deriveVerifiedWeight() func() { }, c.LatestProducedCommitment)) } -func (c *Chain) deriveClaimedWeight() (teardown func()) { - return c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { - if latestCommitment == nil { - return 0 - } - - return latestCommitment.CumulativeWeight() - }, c.LatestCommitment)) -} - -func (c *Chain) deriveChildren(child *Chain) func() { - c.Children.Add(child) +// deriveChildChains defines how a chain determines its ChildChains (by adding each child to the set). +func (c *Chain) deriveChildChains(child *Chain) func() { + c.ChildChains.Add(child) return func() { - c.Children.Delete(child) + c.ChildChains.Delete(child) } } -func (c *Chain) deriveParent(forkingPoint *Commitment) func() { - if forkingPoint == nil { - c.Parent.Set(nil) - - return nil - } +// deriveParentChain defines how a chain determines its parent chain from its forking point (it inherits the Chain from +// the parent commitment of the forking point or nil if either of them is still unknown). +func (c *Chain) deriveParentChain(forkingPoint *Commitment) (teardown func()) { + if forkingPoint != nil { + return forkingPoint.Parent.WithValue(func(parentCommitment *Commitment) (teardown func()) { + if parentCommitment != nil { + return c.ParentChain.InheritFrom(parentCommitment.Chain) + } - return forkingPoint.Parent.WithValue(func(parentCommitment *Commitment) (teardown func()) { - if parentCommitment == nil { - c.Parent.Set(nil) + c.ParentChain.Set(nil) return nil - } + }) + } - return c.Parent.InheritFrom(parentCommitment.Chain) - }) + c.ParentChain.Set(nil) + + return nil } +// deriveOutOfSyncThreshold defines how a chain determines its "out of sync" threshold (the latest seen slot minus 2 +// times the max committable age or 0 if this would cause an overflow to the negative numbers). func (c *Chain) deriveOutOfSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], spawnedEngine *engine.Engine) func() { return c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - outOfSyncOffset := 2 * spawnedEngine.LatestAPI().ProtocolParameters().MaxCommittableAge() - if outOfSyncOffset >= latestSeenSlot { - return 0 + if outOfSyncOffset := 2 * spawnedEngine.LatestAPI().ProtocolParameters().MaxCommittableAge(); outOfSyncOffset < latestSeenSlot { + return latestSeenSlot - outOfSyncOffset } - return latestSeenSlot - outOfSyncOffset + return 0 }, latestSeenSlot)) } +// deriveWarpSyncThreshold defines how a chain determines its warp sync threshold (the latest seen slot minus the max +// committable age or 0 if this would cause an overflow to the negative numbers). func (c *Chain) deriveWarpSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], spawnedEngine *engine.Engine) func() { return c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - warpSyncOffset := spawnedEngine.LatestAPI().ProtocolParameters().MaxCommittableAge() - if warpSyncOffset >= latestSeenSlot { - return 0 + if warpSyncOffset := spawnedEngine.LatestAPI().ProtocolParameters().MaxCommittableAge(); warpSyncOffset < latestSeenSlot { + return latestSeenSlot - warpSyncOffset } - return latestSeenSlot - warpSyncOffset + return 0 }, latestSeenSlot)) } -// registerCommitment registers the given commitment with this chain. -func (c *Chain) registerCommitment(newCommitment *Commitment) (unregister func()) { - // if a commitment for this slot already exists, then this is a newly forked commitment, that only got associated - // with this chain because it temporarily inherited it through its parent before forking (ignore it). - if c.commitments.Compute(newCommitment.Slot(), func(currentCommitment *Commitment, exists bool) *Commitment { - return lo.Cond(exists, currentCommitment, newCommitment) - }) != newCommitment { - return func() {} - } +// addCommitment adds the given commitment to this chain. +func (c *Chain) addCommitment(newCommitment *Commitment) (teardown func()) { + c.commitments.Set(newCommitment.Slot(), newCommitment) - // maxCommitment returns the Commitment object with the higher slot. - maxCommitment := func(other *Commitment) *Commitment { - if newCommitment == nil || other != nil && other.Slot() >= newCommitment.Slot() { - return other - } + c.LatestCommitment.Set(newCommitment) - return newCommitment - } - - c.LatestCommitment.Compute(maxCommitment) - - unsubscribe := lo.Batch( - newCommitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Compute(maxCommitment) }), - newCommitment.IsVerified.OnTrigger(func() { c.LatestProducedCommitment.Compute(maxCommitment) }), + return lo.Batch( + newCommitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Set(newCommitment) }), + newCommitment.IsVerified.OnTrigger(func() { c.LatestProducedCommitment.Set(newCommitment) }), ) +} - return func() { - unsubscribe() - - c.commitments.Delete(newCommitment.Slot()) +// dispatchBlockToSpawnedEngine dispatches the given block to the spawned engine of this chain (if it exists). +func (c *Chain) dispatchBlockToSpawnedEngine(block *model.Block, src peer.ID) (dispatched bool) { + // abort if we do not have a spawned engine + spawnedEngine := c.SpawnedEngine.Get() + if spawnedEngine == nil { + return false + } - resetToParent := func(latestCommitment *Commitment) *Commitment { - if latestCommitment == nil || newCommitment.Slot() < latestCommitment.Slot() { - return latestCommitment - } + // abort if the target slot is below the latest commitment + issuingTime := block.ProtocolBlock().Header.IssuingTime + targetSlot := spawnedEngine.APIForTime(issuingTime).TimeProvider().SlotFromTime(issuingTime) + if targetSlot <= spawnedEngine.LatestCommitment.Get().Slot() { + return false + } - return newCommitment.Parent.Get() + // perform additional checks if we are in warp sync mode (only let blocks pass that we requested) + if c.WarpSyncMode.Get() { + // abort if the target commitment does not exist + targetCommitment, targetCommitmentExists := c.Commitment(targetSlot) + if !targetCommitmentExists { + return false } - c.LatestCommitment.Compute(resetToParent) - c.LatestAttestedCommitment.Compute(resetToParent) - c.LatestProducedCommitment.Compute(resetToParent) + // abort if the block is not part of the blocks to warp sync + blocksToWarpSync := targetCommitment.BlocksToWarpSync.Get() + if blocksToWarpSync == nil || !blocksToWarpSync.Has(block.ID()) { + return false + } } + + // dispatch the block to the spawned engine if all previous checks passed + spawnedEngine.ProcessBlockFromPeer(block, src) + + return true } -// claimedWeightVariable is a getter for the ClaimedWeight variable of this chain, which is internally used to be able -// to "address" the variable across multiple chains in a generic way. -func (c *Chain) claimedWeightVariable() reactive.Variable[uint64] { +// claimedWeight is a getter for the ClaimedWeight variable of this chain, which is internally used to be able to +// "address" the variable across multiple chains in a generic way. +func (c *Chain) claimedWeight() reactive.Variable[uint64] { return c.ClaimedWeight } -func (c *Chain) verifiedWeightVariable() reactive.Variable[uint64] { +// verifiedWeight is a getter for the VerifiedWeight variable of this chain, which is internally used to be able to +// "address" the variable across multiple chains in a generic way. +func (c *Chain) verifiedWeight() reactive.Variable[uint64] { return c.VerifiedWeight } -func (c *Chain) attestedWeightVariable() reactive.Variable[uint64] { +// attestedWeight is a getter for the AttestedWeight variable of this chain, which is internally used to be able to +// "address" the variable across multiple chains in a generic way. +func (c *Chain) attestedWeight() reactive.Variable[uint64] { return c.AttestedWeight } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 34ddc1028..13d07102f 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -1,57 +1,68 @@ package protocol import ( + "github.com/libp2p/go-libp2p/core/peer" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" + "github.com/iotaledger/iota-core/pkg/model" + "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" ) -// Chains is a subcomponent of the protocol that manages the chains and the corresponding chain switching logic, and it -// exposes these chains as a reactive set together with endpoints for the main chain and the heaviest candidates. +// Chains is a subcomponent of the protocol that exposes the chains that are managed by the protocol and that implements +// the chain switching logic. type Chains struct { - // Set contains all chains that are managed by the protocol. + // Set contains all non-evicted chains that are managed by the protocol. reactive.Set[*Chain] - // Main is a reactive variable that contains the main chain. + // Main contains the main chain. Main reactive.Variable[*Chain] - // HeaviestClaimedCandidate is a reactive variable that contains the candidate chain with the heaviest claimed - // weight. - HeaviestClaimedCandidate reactive.Variable[*Chain] + // HeaviestClaimedCandidate contains the candidate chain with the heaviest claimed weight. + HeaviestClaimedCandidate reactive.Variable[*Chain] + + // HeaviestAttestedCandidate contains the candidate chain with the heaviest attested weight. HeaviestAttestedCandidate reactive.Variable[*Chain] + + // HeaviestVerifiedCandidate contains the candidate chain with the heaviest verified weight. HeaviestVerifiedCandidate reactive.Variable[*Chain] - protocol *Protocol + // LatestSeenSlot contains the latest slot that was seen by any of the chains. + LatestSeenSlot reactive.Variable[iotago.SlotIndex] - // Logger embeds a logger that can be used to log messages emitted by this chain. + // Logger contains a reference to the logger that is used by this component. log.Logger } +// newChains creates a new chains instance for the given protocol. func newChains(protocol *Protocol) *Chains { - return (&Chains{ + c := &Chains{ Set: reactive.NewSet[*Chain](), Main: reactive.NewVariable[*Chain](), HeaviestClaimedCandidate: reactive.NewVariable[*Chain](), HeaviestAttestedCandidate: reactive.NewVariable[*Chain](), HeaviestVerifiedCandidate: reactive.NewVariable[*Chain](), - protocol: protocol, - }).init(protocol) -} + LatestSeenSlot: reactive.NewVariable[iotago.SlotIndex](increasing[iotago.SlotIndex]), + } -func (c *Chains) init(protocol *Protocol) (self *Chains) { shutdown := lo.Batch( - c.initLogging(protocol.NewChildLogger("Chains")), - c.initMainChain(), + c.initLogger(protocol.NewChildLogger("Chains")), c.initChainSwitching(protocol.Options.ChainSwitchingThreshold), + + protocol.Constructed.WithNonEmptyValue(func(_ bool) (teardown func()) { + return c.deriveLatestSeenSlot(protocol) + }), ) - c.protocol.Shutdown.OnTrigger(shutdown) + protocol.Shutdown.OnTrigger(shutdown) return c } -func (c *Chains) initLogging(logger log.Logger, shutdownLogger func()) (teardown func()) { +// initLogger initializes the logger for this component. +func (c *Chains) initLogger(logger log.Logger, shutdownLogger func()) (teardown func()) { c.Logger = logger return lo.Batch( @@ -64,27 +75,14 @@ func (c *Chains) initLogging(logger log.Logger, shutdownLogger func()) (teardown ) } -func (c *Chains) initMainChain() (teardown func()) { - chainLogger, shutdownChainLogger := c.NewEntityLogger("") - - mainChain := newChain(chainLogger, shutdownChainLogger, c.protocol.LatestSeenSlot) +// initChainSwitching initializes the chain switching logic. +func (c *Chains) initChainSwitching(chainSwitchingThreshold iotago.SlotIndex) (teardown func()) { + mainChain := c.newChain() mainChain.RequestBlocks.Set(true) - c.Add(mainChain) - - return c.Main.ToggleValue(mainChain) -} + c.Main.Set(mainChain) -func (c *Chains) initChainSwitching(chainSwitchingThreshold iotago.SlotIndex) (teardown func()) { return lo.Batch( - c.WithElements(func(candidateChain *Chain) (teardown func()) { - return lo.Batch( - c.trackHeaviestCandidate(c.HeaviestClaimedCandidate, (*Chain).claimedWeightVariable, candidateChain), - c.trackHeaviestCandidate(c.HeaviestVerifiedCandidate, (*Chain).verifiedWeightVariable, candidateChain), - c.trackHeaviestCandidate(c.HeaviestAttestedCandidate, (*Chain).attestedWeightVariable, candidateChain), - ) - }), - c.HeaviestClaimedCandidate.WithNonEmptyValue(func(heaviestClaimedCandidate *Chain) (teardown func()) { return heaviestClaimedCandidate.RequestAttestations.ToggleValue(true) }), @@ -105,29 +103,57 @@ func (c *Chains) initChainSwitching(chainSwitchingThreshold iotago.SlotIndex) (t c.Main.Set(heaviestVerifiedCandidate) }, chainSwitchingCondition) }), + + c.WithElements(func(candidateChain *Chain) (teardown func()) { + return lo.Batch( + c.initHeaviestCandidateTracking(c.HeaviestClaimedCandidate, (*Chain).claimedWeight, candidateChain), + c.initHeaviestCandidateTracking(c.HeaviestVerifiedCandidate, (*Chain).verifiedWeight, candidateChain), + c.initHeaviestCandidateTracking(c.HeaviestAttestedCandidate, (*Chain).attestedWeight, candidateChain), + ) + }), ) } -func (c *Chains) trackHeaviestCandidate(candidateVar reactive.Variable[*Chain], weightVar func(*Chain) reactive.Variable[uint64], candidate *Chain) (unsubscribe func()) { - return weightVar(candidate).OnUpdate(func(_ uint64, newWeight uint64) { - // if the weight of the candidate is higher than the current main chain - if mainChain := c.Main.Get(); mainChain == nil || newWeight > mainChain.VerifiedWeight.Get() { - // try to set the candidate as the new heaviest chain - candidateVar.Compute(func(currentCandidate *Chain) *Chain { - // only set the candidate as the heaviest chain if it is still the heaviest chain (double-checked locking) - return lo.Cond(currentCandidate == nil || currentCandidate.IsEvicted.WasTriggered() || newWeight > weightVar(currentCandidate).Get(), candidate, currentCandidate) - }) +// initHeaviestCandidateTracking initializes the tracking of the heaviest candidates according to the given parameters. +func (c *Chains) initHeaviestCandidateTracking(candidateVar reactive.Variable[*Chain], weightVar func(*Chain) reactive.Variable[uint64], newCandidate *Chain) (unsubscribe func()) { + return weightVar(newCandidate).OnUpdate(func(_ uint64, newWeight uint64) { + // abort if the candidate is not heavier than the main chain. + if mainChain := c.Main.Get(); mainChain != nil && newWeight <= mainChain.VerifiedWeight.Get() { + return } + + // atomically replace the existing candidate if the new one is heavier. + candidateVar.Compute(func(currentCandidate *Chain) *Chain { + if currentCandidate != nil && !currentCandidate.IsEvicted.WasTriggered() && newWeight <= weightVar(currentCandidate).Get() { + return currentCandidate + } + + return newCandidate + }) }, true) } -func (c *Chains) forkChain(forkingPoint *Commitment) *Chain { - chainLogger, shutdownChainLogger := c.NewEntityLogger("") - - chain := newChain(chainLogger, shutdownChainLogger, c.protocol.LatestSeenSlot) - chain.ForkingPoint.Set(forkingPoint) +// deriveLatestSeenSlot derives the latest seen slot from the protocol. +func (c *Chains) deriveLatestSeenSlot(protocol *Protocol) func() { + return protocol.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (teardown func()) { + return lo.Batch( + mainEngine.Initialized.OnTrigger(func() { + c.LatestSeenSlot.Set(mainEngine.LatestCommitment.Get().Slot()) + }), + + protocol.Network.OnBlockReceived(func(block *model.Block, src peer.ID) { + c.LatestSeenSlot.Set(mainEngine.LatestAPI().TimeProvider().SlotFromTime(block.ProtocolBlock().Header.IssuingTime)) + }), + ) + }) +} - c.Add(chain) +// newChain creates a new chain instance and adds it to the set of chains. +func (c *Chains) newChain() *Chain { + chain := newChain(c) + if c.Add(chain) { + chain.IsEvicted.OnTrigger(func() { c.Delete(chain) }) + } return chain } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 3f39ca5e3..9d7508f29 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -72,7 +72,7 @@ func (c *Commitment) initLogging(chains *Chains) (self *Commitment) { teardownLogging := lo.Batch( c.Parent.LogUpdates(c, log.LevelTrace, "Parent", (*Commitment).LogName), - // c.Children.LogUpdates(c, log.LevelTrace, "Children", (*Commitment).LogName), + // c.ChildChains.LogUpdates(c, log.LevelTrace, "ChildChains", (*Commitment).LogName), c.MainChild.LogUpdates(c, log.LevelTrace, "MainChild", (*Commitment).LogName), c.Chain.LogUpdates(c, log.LevelTrace, "Chain", (*Chain).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), @@ -114,7 +114,8 @@ func (c *Commitment) initBehavior(chains *Chains) (self *Commitment) { if c != mainChild { if chain == nil { - chain = chains.forkChain(c) + chain = chains.newChain() + chain.ForkingPoint.Set(c) } return chain @@ -156,7 +157,7 @@ func (c *Commitment) initBehavior(chains *Chains) (self *Commitment) { }), c.Chain.WithNonEmptyValue(func(chain *Chain) func() { - return chain.registerCommitment(c) + return chain.addCommitment(c) }), ) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 614cc469a..aa83bbe50 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -26,7 +26,6 @@ import ( type Protocol struct { Events *Events Workers *workerpool.Group - LatestSeenSlot reactive.Variable[iotago.SlotIndex] Network *core.Protocol Commitments *Commitments Chains *Chains @@ -46,7 +45,6 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E return options.Apply(&Protocol{ Events: NewEvents(), Workers: workers, - LatestSeenSlot: reactive.NewVariable[iotago.SlotIndex](increasing[iotago.SlotIndex]), Options: NewDefaultOptions(), ReactiveModule: module.NewReactiveModule(logger), EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), @@ -73,22 +71,6 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E } }) - unsubscribeLatestSeenSlot := p.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (teardown func()) { - return lo.Batch( - p.Network.OnBlockReceived(func(block *model.Block, src peer.ID) { - p.LatestSeenSlot.Set(mainEngine.LatestAPI().TimeProvider().SlotFromTime(block.ProtocolBlock().Header.IssuingTime)) - }), - - p.Chains.WithElements(func(chain *Chain) (teardown func()) { - return chain.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { - return chain.LatestProducedCommitment.OnUpdate(func(_ *Commitment, latestCommitment *Commitment) { - p.LatestSeenSlot.Set(latestCommitment.Slot()) - }) - }) - }), - ) - }) - p.Initialized.OnTrigger(func() { unsubscribeFromNetwork := lo.Batch( p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), @@ -104,7 +86,6 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.Shutdown.OnTrigger(func() { stopEvents() - unsubscribeLatestSeenSlot() unsubscribeFromNetwork() p.BlocksProtocol.Shutdown() From f6a597819eae25e57fb44b711652b8ba3bce9072 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 24 Nov 2023 16:05:23 +0100 Subject: [PATCH 275/356] Refactor: started chaning commitment to new style --- pkg/protocol/commitment.go | 165 +++++++++++++++++++++++-------------- 1 file changed, 101 insertions(+), 64 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 9d7508f29..8503acde1 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -13,6 +13,8 @@ import ( ) type Commitment struct { + *model.Commitment + Parent reactive.Variable[*Commitment] Children reactive.Set[*Commitment] MainChild reactive.Variable[*Commitment] @@ -31,12 +33,11 @@ type Commitment struct { ReplayDroppedBlocks reactive.Variable[bool] IsEvicted reactive.Event - *model.Commitment log.Logger } func NewCommitment(commitment *model.Commitment, chains *Chains) *Commitment { - return (&Commitment{ + c := &Commitment{ Commitment: commitment, Parent: reactive.NewVariable[*Commitment](), Children: reactive.NewSet[*Commitment](), @@ -55,7 +56,16 @@ func NewCommitment(commitment *model.Commitment, chains *Chains) *Commitment { IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), ReplayDroppedBlocks: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), - }).initLogging(chains).initBehavior(chains) + } + + shutdown := lo.Batch( + c.initLogger(chains.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot()))), + c.initDerivedProperties(chains), + ) + + c.IsEvicted.OnTrigger(shutdown) + + return c } func (c *Commitment) SpawnedEngine() *engine.Engine { @@ -66,13 +76,11 @@ func (c *Commitment) SpawnedEngine() *engine.Engine { return nil } -func (c *Commitment) initLogging(chains *Chains) (self *Commitment) { - var shutdownLogger func() - c.Logger, shutdownLogger = chains.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot())) +func (c *Commitment) initLogger(logger log.Logger, shutdownLogger func()) (teardown func()) { + c.Logger = logger - teardownLogging := lo.Batch( + return lo.Batch( c.Parent.LogUpdates(c, log.LevelTrace, "Parent", (*Commitment).LogName), - // c.ChildChains.LogUpdates(c, log.LevelTrace, "ChildChains", (*Commitment).LogName), c.MainChild.LogUpdates(c, log.LevelTrace, "MainChild", (*Commitment).LogName), c.Chain.LogUpdates(c, log.LevelTrace, "Chain", (*Chain).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), @@ -89,84 +97,53 @@ func (c *Commitment) initLogging(chains *Chains) (self *Commitment) { shutdownLogger, ) - - c.IsEvicted.OnTrigger(teardownLogging) - - return c } -func (c *Commitment) initBehavior(chains *Chains) (self *Commitment) { - teardownBehavior := lo.Batch( - c.IsSolid.InheritFrom(c.IsRoot), - c.IsAttested.InheritFrom(c.IsRoot), - c.IsVerified.InheritFrom(c.IsRoot), +func (c *Commitment) initDerivedProperties(chains *Chains) (teardown func()) { + return lo.Batch( + c.deriveRootProperties(), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { + // the weight can be fixed as soon as the parent is known (as it only relies on static information from the + // parent commitment) c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) return lo.Batch( - parent.registerChild(c), - - c.Chain.DeriveValueFrom(reactive.NewDerivedVariable3(func(chain *Chain, isRoot bool, mainChild *Commitment, parentChain *Chain) *Chain { - if isRoot { - return chain - } - - if c != mainChild { - if chain == nil { - chain = chains.newChain() - chain.ForkingPoint.Set(c) - } - - return chain - } - - if chain != nil && chain != parentChain { - chain.IsEvicted.Trigger() - } - - return parentChain - }, c.IsRoot, parent.MainChild, parent.Chain, c.Chain.Get())), - - c.CumulativeAttestedWeight.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ uint64, parentCumulativeAttestedWeight uint64, attestedWeight uint64) uint64 { - return parentCumulativeAttestedWeight + attestedWeight - }, parent.CumulativeAttestedWeight, c.AttestedWeight)), + parent.deriveChildren(c), - c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, parentAboveLatestVerifiedCommitment bool, parentIsVerified bool, isVerified bool) bool { - return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) - }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)), - - c.IsSolid.InheritFrom(parent.IsSolid), + c.deriveIsSolid(parent), + c.deriveChain(chains, parent), + c.deriveCumulativeAttestedWeight(parent), + c.deriveIsAboveLatestVerifiedCommitment(parent), c.Chain.WithNonEmptyValue(func(chain *Chain) func() { return lo.Batch( - c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, spawnedEngine *engine.Engine, warpSyncing bool, isAboveLatestVerifiedCommitment bool) bool { - return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment - }, chain.SpawnedEngine, chain.WarpSyncMode, c.IsAboveLatestVerifiedCommitment)), - - c.RequestBlocksToWarpSync.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync bool, parentIsVerified bool, isVerified bool) bool { - return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified - }, chain.SpawnedEngine, chain.WarpSyncMode, parent.IsVerified, c.IsVerified)), - - c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, verifyAttestations bool, requestBlocks bool, parentIsAttested bool, isAttested bool) bool { - return verifyAttestations && !requestBlocks && parentIsAttested && !isAttested - }, chain.RequestAttestations, chain.RequestBlocks, parent.IsAttested, c.IsAttested)), + c.deriveRequestBlocksToWarpSync(chain, parent), + c.deriveRequestAttestations(chain, parent), ) }), ) }), c.Chain.WithNonEmptyValue(func(chain *Chain) func() { - return chain.addCommitment(c) + return lo.Batch( + chain.addCommitment(c), + + c.deriveReplayDroppedBlocks(chain), + ) }), ) +} - c.IsEvicted.OnTrigger(teardownBehavior) - - return c +func (c *Commitment) deriveRootProperties() (teardown func()) { + return lo.Batch( + c.IsSolid.InheritFrom(c.IsRoot), + c.IsAttested.InheritFrom(c.IsRoot), + c.IsVerified.InheritFrom(c.IsRoot), + ) } -func (c *Commitment) registerChild(child *Commitment) (unregisterChild func()) { +func (c *Commitment) deriveChildren(child *Commitment) (unregisterChild func()) { c.MainChild.Compute(func(mainChild *Commitment) *Commitment { if !c.Children.Add(child) || mainChild != nil { return mainChild @@ -186,6 +163,66 @@ func (c *Commitment) registerChild(child *Commitment) (unregisterChild func()) { } } +func (c *Commitment) deriveIsSolid(parent *Commitment) func() { + return c.IsSolid.InheritFrom(parent.IsSolid) +} + +func (c *Commitment) deriveChain(chains *Chains, parent *Commitment) func() { + return c.Chain.DeriveValueFrom(reactive.NewDerivedVariable3(func(currentChain *Chain, isRoot bool, mainChild *Commitment, parentChain *Chain) *Chain { + // do not adjust the chain of the root commitment (it is initially set from the outside) + if isRoot { + return currentChain + } + + // if we are not the main child of our parent, we create and return a new chain + if c != mainChild { + if currentChain == nil { + currentChain = chains.newChain() + currentChain.ForkingPoint.Set(c) + } + + return currentChain + } + + // if we are the main child of our parent, and we + if currentChain != nil && currentChain != parentChain { + currentChain.IsEvicted.Trigger() + } + + return parentChain + }, c.IsRoot, parent.MainChild, parent.Chain, c.Chain.Get())) +} + +func (c *Commitment) deriveCumulativeAttestedWeight(parent *Commitment) func() { + return c.CumulativeAttestedWeight.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ uint64, parentCumulativeAttestedWeight uint64, attestedWeight uint64) uint64 { + return parentCumulativeAttestedWeight + attestedWeight + }, parent.CumulativeAttestedWeight, c.AttestedWeight)) +} + +func (c *Commitment) deriveIsAboveLatestVerifiedCommitment(parent *Commitment) func() { + return c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, parentAboveLatestVerifiedCommitment bool, parentIsVerified bool, isVerified bool) bool { + return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) + }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)) +} + +func (c *Commitment) deriveRequestBlocksToWarpSync(chain *Chain, parent *Commitment) func() { + return c.RequestBlocksToWarpSync.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync bool, parentIsVerified bool, isVerified bool) bool { + return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified + }, chain.SpawnedEngine, chain.WarpSyncMode, parent.IsVerified, c.IsVerified)) +} + +func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) func() { + return c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, verifyAttestations bool, requestBlocks bool, parentIsAttested bool, isAttested bool) bool { + return verifyAttestations && !requestBlocks && parentIsAttested && !isAttested + }, chain.RequestAttestations, chain.RequestBlocks, parent.IsAttested, c.IsAttested)) +} + +func (c *Commitment) deriveReplayDroppedBlocks(chain *Chain) func() { + return c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, spawnedEngine *engine.Engine, warpSyncing bool, isAboveLatestVerifiedCommitment bool) bool { + return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment + }, chain.SpawnedEngine, chain.WarpSyncMode, c.IsAboveLatestVerifiedCommitment)) +} + func (c *Commitment) setChain(targetChain *Chain) { if currentChain := c.Chain.Get(); currentChain != targetChain { if currentChain == nil { // the root commitment doesn't inherit a chain from its parents From ff6cf4b2245b3e17984fe561f4a9c8338d04386a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sat, 25 Nov 2023 04:32:01 +0100 Subject: [PATCH 276/356] Feat: started cleaning up commitments --- pkg/protocol/chain.go | 23 ++++- pkg/protocol/commitment.go | 119 +++++++++++++++++++------- pkg/protocol/commitments.go | 97 +++++++++++---------- pkg/protocol/protocol_attestations.go | 18 ++-- pkg/protocol/protocol_warp_sync.go | 12 +-- 5 files changed, 178 insertions(+), 91 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index e00f12e0e..000085d73 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -110,6 +110,27 @@ func newChain(chains *Chains) *Chain { return c } +func (c *Chain) withInitializedEngine(callback func(spawnedEngine *engine.Engine) (teardown func())) (teardown func()) { + return c.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { + return spawnedEngine.Initialized.WithNonEmptyValue(func(_ bool) (teardown func()) { + return callback(spawnedEngine) + }) + }) +} + +// LastCommonSlot returns the slot of the last commitment that is common to this chain and its parent chain. +func (c *Chain) LastCommonSlot() iotago.SlotIndex { + if forkingPoint := c.ForkingPoint.Get(); forkingPoint != nil { + if isRoot := forkingPoint.IsRoot.Get(); isRoot { + return forkingPoint.Slot() + } + + return forkingPoint.Slot() - 1 + } + + panic("chain has no forking point") +} + // DispatchBlock dispatches the given block to the chain and its children (it is allowed to call this method on a nil // receiver, in which case it will be a no-op with a return value of false). func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (dispatched bool) { @@ -170,7 +191,7 @@ func (c *Chain) initLogger(logger log.Logger, shutdownLogger func()) (teardown f c.LatestProducedCommitment.LogUpdates(c, log.LevelDebug, "LatestProducedCommitment", (*Commitment).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), c.RequestBlocks.LogUpdates(c, log.LevelDebug, "RequestBlocks"), - c.SpawnedEngine.LogUpdates(c, log.LevelTrace, "SpawnedEngine", (*engine.Engine).LogName), + c.SpawnedEngine.LogUpdates(c, log.LevelTrace, "TargetEngine", (*engine.Engine).LogName), c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), shutdownLogger, diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 8503acde1..5071268de 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -12,31 +12,74 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) +// Commitment represents a commitment to a specific ledger state at a specific point in time that is part of a chain of +// commitments produced by the nodes in the network. type Commitment struct { + // Commitment contains the underlying model.Commitment that is represented by this Commitment. *model.Commitment - Parent reactive.Variable[*Commitment] - Children reactive.Set[*Commitment] - MainChild reactive.Variable[*Commitment] - Chain reactive.Variable[*Chain] - RequestAttestations reactive.Variable[bool] - RequestBlocksToWarpSync reactive.Variable[bool] - BlocksToWarpSync reactive.Variable[ds.Set[iotago.BlockID]] - Weight reactive.Variable[uint64] - AttestedWeight reactive.Variable[uint64] - CumulativeAttestedWeight reactive.Variable[uint64] - IsRoot reactive.Event - IsSolid reactive.Event - IsAttested reactive.Event - IsVerified reactive.Event + // Parent contains the Commitment that is referenced as a parent in this Commitment. + Parent reactive.Variable[*Commitment] + + // Children contains the Commitments that reference this Commitment as a parent. + Children reactive.Set[*Commitment] + + // MainChild contains the Commitment that is the main child of this Commitment (continues the chain). + MainChild reactive.Variable[*Commitment] + + // Chain contains the Chain that this Commitment is part of. + Chain reactive.Variable[*Chain] + + // RequestAttestations contains a flag indicating if the node should request attestations for this Commitment. + RequestAttestations reactive.Variable[bool] + + // WarpSyncBlocks contains a flag indicating if the node should request the blocks of this Commitment using warp + // sync. + WarpSyncBlocks reactive.Variable[bool] + + // BlocksToWarpSync contains the set of blocks that should be requested using warp sync. + BlocksToWarpSync reactive.Variable[ds.Set[iotago.BlockID]] + + // Weight contains the weight of this Commitment (the difference between the cumulative weight of this Commitment + // and its parent). + Weight reactive.Variable[uint64] + + // AttestedWeight contains the weight of the Commitment that was attested by other nodes. + AttestedWeight reactive.Variable[uint64] + + // CumulativeAttestedWeight contains the cumulative weight of all attested Commitments up to this point. + CumulativeAttestedWeight reactive.Variable[uint64] + + // IsRoot contains a flag indicating if this Commitment is the root of the Chain. + IsRoot reactive.Event + + // IsSolid contains a flag indicating if this Commitment is solid (all referenced blocks in its past are known). + IsSolid reactive.Event + + // IsAttested contains a flag indicating if we have received attestations for this Commitment. + IsAttested reactive.Event + + // IsVerified contains a flag indicating if this Commitment is verified (we produced this Commitment ourselves by + // booking all the contained blocks and transactions). + IsVerified reactive.Event + + // IsAboveLatestVerifiedCommitment contains a flag indicating if this Commitment is above the latest verified + // Commitment. IsAboveLatestVerifiedCommitment reactive.Variable[bool] - ReplayDroppedBlocks reactive.Variable[bool] - IsEvicted reactive.Event + // ReplayDroppedBlocks contains a flag indicating if we should replay the blocks that were dropped while the + //Commitment was pending. + ReplayDroppedBlocks reactive.Variable[bool] + + // IsEvicted contains a flag indicating if this Commitment was evicted from the Protocol. + IsEvicted reactive.Event + + // Logger embeds a logger that can be used to log messages emitted by this Commitment. log.Logger } -func NewCommitment(commitment *model.Commitment, chains *Chains) *Commitment { +// NewCommitment creates a new Commitment from the given model.Commitment. +func newCommitment(commitment *model.Commitment, chains *Chains) *Commitment { c := &Commitment{ Commitment: commitment, Parent: reactive.NewVariable[*Commitment](), @@ -44,7 +87,7 @@ func NewCommitment(commitment *model.Commitment, chains *Chains) *Commitment { MainChild: reactive.NewVariable[*Commitment](), Chain: reactive.NewVariable[*Chain](), RequestAttestations: reactive.NewVariable[bool](), - RequestBlocksToWarpSync: reactive.NewVariable[bool](), + WarpSyncBlocks: reactive.NewVariable[bool](), BlocksToWarpSync: reactive.NewVariable[ds.Set[iotago.BlockID]](), Weight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](func(currentValue uint64, newValue uint64) uint64 { return max(currentValue, newValue) }), @@ -68,7 +111,8 @@ func NewCommitment(commitment *model.Commitment, chains *Chains) *Commitment { return c } -func (c *Commitment) SpawnedEngine() *engine.Engine { +// TargetEngine returns the engine that is responsible for booking the blocks of this Commitment. +func (c *Commitment) TargetEngine() *engine.Engine { if chain := c.Chain.Get(); chain != nil { return chain.SpawnedEngine.Get() } @@ -76,6 +120,7 @@ func (c *Commitment) SpawnedEngine() *engine.Engine { return nil } +// initLogger initializes the Logger of this Commitment. func (c *Commitment) initLogger(logger log.Logger, shutdownLogger func()) (teardown func()) { c.Logger = logger @@ -84,7 +129,7 @@ func (c *Commitment) initLogger(logger log.Logger, shutdownLogger func()) (teard c.MainChild.LogUpdates(c, log.LevelTrace, "MainChild", (*Commitment).LogName), c.Chain.LogUpdates(c, log.LevelTrace, "Chain", (*Chain).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), - c.RequestBlocksToWarpSync.LogUpdates(c, log.LevelTrace, "RequestBlocksToWarpSync"), + c.WarpSyncBlocks.LogUpdates(c, log.LevelTrace, "WarpSyncBlocks"), c.Weight.LogUpdates(c, log.LevelTrace, "Weight"), c.AttestedWeight.LogUpdates(c, log.LevelTrace, "AttestedWeight"), c.CumulativeAttestedWeight.LogUpdates(c, log.LevelTrace, "CumulativeAttestedWeight"), @@ -99,6 +144,7 @@ func (c *Commitment) initLogger(logger log.Logger, shutdownLogger func()) (teard ) } +// initDerivedProperties initializes the behavior of this Commitment by setting up the relations between its properties. func (c *Commitment) initDerivedProperties(chains *Chains) (teardown func()) { return lo.Batch( c.deriveRootProperties(), @@ -118,8 +164,8 @@ func (c *Commitment) initDerivedProperties(chains *Chains) (teardown func()) { c.Chain.WithNonEmptyValue(func(chain *Chain) func() { return lo.Batch( - c.deriveRequestBlocksToWarpSync(chain, parent), c.deriveRequestAttestations(chain, parent), + c.deriveWarpSyncBlocks(chain, parent), ) }), ) @@ -135,6 +181,7 @@ func (c *Commitment) initDerivedProperties(chains *Chains) (teardown func()) { ) } +// deriveRootProperties derives the properties that are supposed to be set for the root Commitment. func (c *Commitment) deriveRootProperties() (teardown func()) { return lo.Batch( c.IsSolid.InheritFrom(c.IsRoot), @@ -143,6 +190,7 @@ func (c *Commitment) deriveRootProperties() (teardown func()) { ) } +// deriveChildren derives the children of this Commitment by adding the given child to the Children set. func (c *Commitment) deriveChildren(child *Commitment) (unregisterChild func()) { c.MainChild.Compute(func(mainChild *Commitment) *Commitment { if !c.Children.Add(child) || mainChild != nil { @@ -163,13 +211,16 @@ func (c *Commitment) deriveChildren(child *Commitment) (unregisterChild func()) } } +// deriveIsSolid derives the IsSolid flag of this Commitment which is set to true if the parent is known and solid. func (c *Commitment) deriveIsSolid(parent *Commitment) func() { return c.IsSolid.InheritFrom(parent.IsSolid) } +// deriveChain derives the Chain of this Commitment which is either inherited from the parent if we are the main child +// or a newly created chain. func (c *Commitment) deriveChain(chains *Chains, parent *Commitment) func() { return c.Chain.DeriveValueFrom(reactive.NewDerivedVariable3(func(currentChain *Chain, isRoot bool, mainChild *Commitment, parentChain *Chain) *Chain { - // do not adjust the chain of the root commitment (it is initially set from the outside) + // do not adjust the chain of the root commitment (it is set from the outside) if isRoot { return currentChain } @@ -193,37 +244,47 @@ func (c *Commitment) deriveChain(chains *Chains, parent *Commitment) func() { }, c.IsRoot, parent.MainChild, parent.Chain, c.Chain.Get())) } +// deriveCumulativeAttestedWeight derives the CumulativeAttestedWeight of this Commitment which is the sum of the +// parent's CumulativeAttestedWeight and the AttestedWeight of this Commitment. func (c *Commitment) deriveCumulativeAttestedWeight(parent *Commitment) func() { return c.CumulativeAttestedWeight.DeriveValueFrom(reactive.NewDerivedVariable2(func(_ uint64, parentCumulativeAttestedWeight uint64, attestedWeight uint64) uint64 { return parentCumulativeAttestedWeight + attestedWeight }, parent.CumulativeAttestedWeight, c.AttestedWeight)) } +// deriveIsAboveLatestVerifiedCommitment derives the IsAboveLatestVerifiedCommitment flag of this Commitment which is +// true if the parent is already above the latest verified Commitment or if the parent is verified and we are not. func (c *Commitment) deriveIsAboveLatestVerifiedCommitment(parent *Commitment) func() { return c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, parentAboveLatestVerifiedCommitment bool, parentIsVerified bool, isVerified bool) bool { return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)) } -func (c *Commitment) deriveRequestBlocksToWarpSync(chain *Chain, parent *Commitment) func() { - return c.RequestBlocksToWarpSync.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync bool, parentIsVerified bool, isVerified bool) bool { - return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified - }, chain.SpawnedEngine, chain.WarpSyncMode, parent.IsVerified, c.IsVerified)) -} - +// deriveRequestAttestations derives the RequestAttestations flag of this Commitment which is true if our Chain is +// requesting attestations, and we are the directly above the latest attested Commitment. func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) func() { return c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, verifyAttestations bool, requestBlocks bool, parentIsAttested bool, isAttested bool) bool { return verifyAttestations && !requestBlocks && parentIsAttested && !isAttested }, chain.RequestAttestations, chain.RequestBlocks, parent.IsAttested, c.IsAttested)) } +// deriveWarpSyncBlocks derives the WarpSyncBlocks flag of this Commitment which is true if our Chain is requesting +// warp sync, and we are the directly above the latest verified Commitment. +func (c *Commitment) deriveWarpSyncBlocks(chain *Chain, parent *Commitment) func() { + return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync bool, parentIsVerified bool, isVerified bool) bool { + return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified + }, chain.SpawnedEngine, chain.WarpSyncMode, parent.IsVerified, c.IsVerified)) +} + +// deriveReplayDroppedBlocks derives the ReplayDroppedBlocks flag of this Commitment which is true if our Chain has an +// engine, is no longer requesting warp sync, and we are above the latest verified Commitment. func (c *Commitment) deriveReplayDroppedBlocks(chain *Chain) func() { return c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, spawnedEngine *engine.Engine, warpSyncing bool, isAboveLatestVerifiedCommitment bool) bool { return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment }, chain.SpawnedEngine, chain.WarpSyncMode, c.IsAboveLatestVerifiedCommitment)) } -func (c *Commitment) setChain(targetChain *Chain) { +func (c *Commitment) forceChain(targetChain *Chain) { if currentChain := c.Chain.Get(); currentChain != targetChain { if currentChain == nil { // the root commitment doesn't inherit a chain from its parents c.Chain.Set(targetChain) diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 7089b2495..65d8a62eb 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -5,6 +5,7 @@ import ( "github.com/iotaledger/hive.go/ds/shrinkingmap" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/core/promise" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" @@ -18,6 +19,8 @@ type Commitments struct { protocol *Protocol commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] + + log.Logger } func newCommitments(protocol *Protocol) *Commitments { @@ -28,25 +31,18 @@ func newCommitments(protocol *Protocol) *Commitments { commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), } - protocol.Constructed.OnTrigger(func() { - protocol.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (teardown func()) { - return mainEngine.RootCommitment.OnUpdate(func(_ *model.Commitment, newRootCommitmentModel *model.Commitment) { - c.Root.Compute(func(currentRootCommitment *Commitment) *Commitment { - newRootCommitment, _, err := protocol.Commitments.Publish(newRootCommitmentModel) - if err != nil { - protocol.LogError("failed to publish new root commitment", "id", newRootCommitmentModel.ID(), "error", err) - - return currentRootCommitment - } - - newRootCommitment.IsRoot.Set(true) - - return newRootCommitment + protocol.Constructed.WithNonEmptyValue(func(_ bool) (teardown func()) { + return lo.Batch( + protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (teardown func()) { + return mainChain.withInitializedEngine(func(mainEngine *engine.Engine) (teardown func()) { + return mainEngine.RootCommitment.OnUpdate(func(_ *model.Commitment, newRootCommitment *model.Commitment) { + c.publishRootCommitment(mainChain, newRootCommitment) + }) }) - }) - }) + }), - protocol.Chains.WithElements(c.publishEngineCommitments) + protocol.Chains.WithElements(c.publishEngineCommitments), + ) }) return c @@ -58,7 +54,7 @@ func (c *Commitments) Publish(commitment *model.Commitment) (commitmentMetadata return nil, false, ierrors.Wrapf(request.Err(), "failed to request commitment %s", commitment.ID()) } - publishedCommitmentMetadata := NewCommitment(commitment, c.protocol.Chains) + publishedCommitmentMetadata := newCommitment(commitment, c.protocol.Chains) request.Resolve(publishedCommitmentMetadata).OnSuccess(func(resolvedMetadata *Commitment) { commitmentMetadata = resolvedMetadata }) @@ -147,44 +143,47 @@ func (c *Commitments) setupCommitment(commitment *Commitment, slotEvictedEvent r } } -func (c *Commitments) publishCommitment(chain *Chain, commitment *model.Commitment) (publishedCommitment *Commitment, published bool) { - publishedCommitment, published, err := c.Publish(commitment) - if err != nil { - panic(err) // this can never happen, but we panic to get a stack trace if it ever does - } +func (c *Commitments) publishRootCommitment(mainChain *Chain, newRootCommitment *model.Commitment) { + c.Root.Compute(func(currentRootCommitment *Commitment) *Commitment { + publishedRootCommitment, _, err := c.Publish(newRootCommitment) + if err != nil { + c.LogError("failed to publish new root commitment", "id", newRootCommitment.ID(), "error", err) - publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) - publishedCommitment.IsAttested.Set(true) - publishedCommitment.IsVerified.Set(true) + return currentRootCommitment + } - if publishedCommitment.IsSolid.Get() { - publishedCommitment.setChain(chain) - } + publishedRootCommitment.IsRoot.Set(true) + publishedRootCommitment.forceChain(mainChain) - return publishedCommitment, published + mainChain.ForkingPoint.DefaultTo(publishedRootCommitment) + + return publishedRootCommitment + }) } func (c *Commitments) publishEngineCommitments(chain *Chain) (unsubscribe func()) { - return chain.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { - return spawnedEngine.Initialized.WithNonEmptyValue(func(_ bool) (teardown func()) { - forkingPoint, forkingPointUpdated := chain.ForkingPoint.DefaultTo(c.protocol.Commitments.Root.Get()) - latestPublishedSlot := forkingPoint.Slot() - 1 - - if forkingPointUpdated { - forkingPoint.setChain(chain) - - latestPublishedSlot++ - } - - return spawnedEngine.LatestCommitment.OnUpdate(func(_ *model.Commitment, latestCommitment *model.Commitment) { - for ; latestPublishedSlot < latestCommitment.Slot(); latestPublishedSlot++ { - if commitmentToPublish, err := spawnedEngine.Storage.Commitments().Load(latestPublishedSlot + 1); err != nil { - spawnedEngine.LogError("failed to load commitment to publish from engine", "slot", latestPublishedSlot+1, "err", err) - } else { - c.publishCommitment(chain, commitmentToPublish) - } + return chain.withInitializedEngine(func(spawnedEngine *engine.Engine) (teardown func()) { + return spawnedEngine.LatestCommitment.OnUpdate(func(_ *model.Commitment, latestCommitment *model.Commitment) { + for latestPublishedSlot := chain.LastCommonSlot(); latestPublishedSlot < latestCommitment.Slot(); latestPublishedSlot++ { + if commitmentToPublish, err := spawnedEngine.Storage.Commitments().Load(latestPublishedSlot + 1); err != nil { + spawnedEngine.LogError("failed to load commitment to publish from engine", "slot", latestPublishedSlot+1, "err", err) + } else { + c.publishEngineCommitment(chain, commitmentToPublish) } - }) + } }) }) } + +func (c *Commitments) publishEngineCommitment(chain *Chain, commitment *model.Commitment) { + publishedCommitment, _, err := c.Publish(commitment) + if err != nil { + panic(err) // this can never happen, but we panic to get a stack trace if it ever does + } + + publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) + publishedCommitment.IsAttested.Set(true) + publishedCommitment.IsVerified.Set(true) + + publishedCommitment.forceChain(chain) +} diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 1a8831b41..8f17e2564 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -128,20 +128,20 @@ func (a *AttestationsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, return } - spawnedEngine := commitment.SpawnedEngine() - if spawnedEngine == nil { + targetEngine := commitment.TargetEngine() + if targetEngine == nil { a.LogTrace("request for chain without engine", "chain", chain.LogName(), "fromPeer", from) return } - if spawnedEngine.Storage.Settings().LatestCommitment().Slot() < commitmentID.Slot() { + if targetEngine.Storage.Settings().LatestCommitment().Slot() < commitmentID.Slot() { a.LogTrace("requested commitment not verified", "commitment", commitment.LogName(), "fromPeer", from) return } - commitmentModel, err := spawnedEngine.Storage.Commitments().Load(commitmentID.Slot()) + commitmentModel, err := targetEngine.Storage.Commitments().Load(commitmentID.Slot()) if err != nil { if !ierrors.Is(err, kvstore.ErrKeyNotFound) { a.LogError("failed to load requested commitment from engine", "commitment", commitment.LogName(), "fromPeer", from, "err", err) @@ -158,14 +158,14 @@ func (a *AttestationsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, return } - attestations, err := spawnedEngine.Attestations.Get(commitmentID.Slot()) + attestations, err := targetEngine.Attestations.Get(commitmentID.Slot()) if err != nil { a.LogError("failed to load requested attestations", "commitment", commitment.LogName(), "fromPeer", from) return } - rootsStorage, err := spawnedEngine.Storage.Roots(commitmentID.Slot()) + rootsStorage, err := targetEngine.Storage.Roots(commitmentID.Slot()) if err != nil { a.LogError("failed to load roots storage for requested attestations", "commitment", commitment.LogName(), "fromPeer", from) @@ -204,6 +204,12 @@ func (a *AttestationsProtocol) setupCommitmentVerifier(chain *Chain) (teardown f return nil } + if forkingPoint.IsRoot.Get() { + a.LogTrace("skipping commitment verifier setup for main chain", "chain", chain.LogName()) + + return nil + } + parentOfForkingPoint := forkingPoint.Parent.Get() if parentOfForkingPoint == nil { a.LogError("failed to retrieve parent of forking point", "chain", chain.LogName()) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index f83df9720..25e9074ce 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -37,7 +37,7 @@ func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { protocol.Constructed.OnTrigger(func() { c.protocol.Commitments.WithElements(func(commitment *Commitment) (teardown func()) { - return commitment.RequestBlocksToWarpSync.OnUpdate(func(_ bool, warpSyncBlocks bool) { + return commitment.WarpSyncBlocks.OnUpdate(func(_ bool, warpSyncBlocks bool) { if warpSyncBlocks { c.ticker.StartTicker(commitment.ID()) } else { @@ -94,7 +94,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } - targetEngine := commitment.SpawnedEngine() + targetEngine := commitment.TargetEngine() if targetEngine == nil { w.LogDebug("failed to get target engine for response", "commitment", commitment.LogName()) @@ -102,7 +102,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } commitment.BlocksToWarpSync.Compute(func(blocksToWarpSync ds.Set[iotago.BlockID]) ds.Set[iotago.BlockID] { - if blocksToWarpSync != nil || !commitment.RequestBlocksToWarpSync.Get() { + if blocksToWarpSync != nil || !commitment.WarpSyncBlocks.Get() { w.LogTrace("response for already synced commitment", "commitment", commitment.LogName(), "fromPeer", from) return blocksToWarpSync @@ -263,14 +263,14 @@ func (w *WarpSyncProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from return } - engineInstance := commitment.SpawnedEngine() - if engineInstance == nil { + targetEngine := commitment.TargetEngine() + if targetEngine == nil { w.LogTrace("warp-sync request for chain without engine", "chain", chain.LogName(), "fromPeer", from) return } - committedSlot, err := engineInstance.CommittedSlot(commitmentID) + committedSlot, err := targetEngine.CommittedSlot(commitmentID) if err != nil { w.LogTrace("warp-sync request for uncommitted slot", "chain", chain.LogName(), "commitment", commitment.LogName(), "fromPeer", from) From ce4e08f74ba23fe90a11c03a63c5771455447615 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 26 Nov 2023 03:32:50 +0100 Subject: [PATCH 277/356] Refactor: refactor commitments prior to commenting --- pkg/protocol/chain.go | 49 +++--- pkg/protocol/chains.go | 14 ++ pkg/protocol/commitment.go | 33 ++-- pkg/protocol/commitments.go | 228 +++++++++++++++------------ pkg/protocol/engines.go | 6 +- pkg/protocol/protocol_blocks.go | 8 +- pkg/protocol/protocol_commitments.go | 9 ++ pkg/testsuite/mock/node.go | 4 +- 8 files changed, 202 insertions(+), 149 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 000085d73..b466021b1 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -30,7 +30,7 @@ type Chain struct { LatestAttestedCommitment reactive.Variable[*Commitment] // LatestProducedCommitment contains the latest commitment of this chain that we produced ourselves by booking the - // corresponding blocks in the SpawnedEngine. + // corresponding blocks in the Engine. LatestProducedCommitment reactive.Variable[*Commitment] // ClaimedWeight contains the claimed weight of this chain which is derived from the cumulative weight of the @@ -61,11 +61,11 @@ type Chain struct { RequestAttestations reactive.Variable[bool] // RequestBlocks contains a flag that indicates whether this chain should verify the state by requesting blocks and - // processing them in its SpawnedEngine. + // processing them in its Engine. RequestBlocks reactive.Variable[bool] - // SpawnedEngine contains the engine that is used to process blocks for this chain. - SpawnedEngine reactive.Variable[*engine.Engine] + // Engine contains the engine instance that is used to process blocks for this chain. + Engine reactive.Variable[*engine.Engine] // IsEvicted contains a flag that indicates whether this chain was evicted. IsEvicted reactive.Event @@ -94,7 +94,7 @@ func newChain(chains *Chains) *Chain { OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), RequestAttestations: reactive.NewVariable[bool](), RequestBlocks: reactive.NewVariable[bool](), - SpawnedEngine: reactive.NewVariable[*engine.Engine](), + Engine: reactive.NewVariable[*engine.Engine](), IsEvicted: reactive.NewEvent(), commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), @@ -110,10 +110,11 @@ func newChain(chains *Chains) *Chain { return c } -func (c *Chain) withInitializedEngine(callback func(spawnedEngine *engine.Engine) (teardown func())) (teardown func()) { - return c.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { - return spawnedEngine.Initialized.WithNonEmptyValue(func(_ bool) (teardown func()) { - return callback(spawnedEngine) +// WithInitializedEngine calls the given callback once the Engine of this chain is initialized. +func (c *Chain) WithInitializedEngine(callback func(engineInstance *engine.Engine) (teardown func())) (teardown func()) { + return c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (teardown func()) { + return engineInstance.Initialized.WithNonEmptyValue(func(_ bool) (teardown func()) { + return callback(engineInstance) }) }) } @@ -165,8 +166,8 @@ func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exist // LatestEngine returns the latest engine instance that was spawned by the chain itself or one of its ancestors. func (c *Chain) LatestEngine() *engine.Engine { - currentChain, currentEngine := c, c.SpawnedEngine.Get() - for ; currentEngine == nil; currentEngine = currentChain.SpawnedEngine.Get() { + currentChain, currentEngine := c, c.Engine.Get() + for ; currentEngine == nil; currentEngine = currentChain.Engine.Get() { if currentChain = c.ParentChain.Get(); currentChain == nil { return nil } @@ -191,7 +192,7 @@ func (c *Chain) initLogger(logger log.Logger, shutdownLogger func()) (teardown f c.LatestProducedCommitment.LogUpdates(c, log.LevelDebug, "LatestProducedCommitment", (*Commitment).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), c.RequestBlocks.LogUpdates(c, log.LevelDebug, "RequestBlocks"), - c.SpawnedEngine.LogUpdates(c, log.LevelTrace, "TargetEngine", (*engine.Engine).LogName), + c.Engine.LogUpdates(c, log.LevelTrace, "Engine", (*engine.Engine).LogName), c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), shutdownLogger, @@ -214,10 +215,10 @@ func (c *Chain) initDerivedProperties(latestSeenSlot reactive.ReadableVariable[i return parentChain.deriveChildChains(c) }), - c.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { + c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (teardown func()) { return lo.Batch( - c.deriveWarpSyncThreshold(latestSeenSlot, spawnedEngine), - c.deriveOutOfSyncThreshold(latestSeenSlot, spawnedEngine), + c.deriveWarpSyncThreshold(latestSeenSlot, engineInstance), + c.deriveOutOfSyncThreshold(latestSeenSlot, engineInstance), ) }), ) @@ -305,9 +306,9 @@ func (c *Chain) deriveParentChain(forkingPoint *Commitment) (teardown func()) { // deriveOutOfSyncThreshold defines how a chain determines its "out of sync" threshold (the latest seen slot minus 2 // times the max committable age or 0 if this would cause an overflow to the negative numbers). -func (c *Chain) deriveOutOfSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], spawnedEngine *engine.Engine) func() { +func (c *Chain) deriveOutOfSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], engineInstance *engine.Engine) func() { return c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - if outOfSyncOffset := 2 * spawnedEngine.LatestAPI().ProtocolParameters().MaxCommittableAge(); outOfSyncOffset < latestSeenSlot { + if outOfSyncOffset := 2 * engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge(); outOfSyncOffset < latestSeenSlot { return latestSeenSlot - outOfSyncOffset } @@ -317,9 +318,9 @@ func (c *Chain) deriveOutOfSyncThreshold(latestSeenSlot reactive.ReadableVariabl // deriveWarpSyncThreshold defines how a chain determines its warp sync threshold (the latest seen slot minus the max // committable age or 0 if this would cause an overflow to the negative numbers). -func (c *Chain) deriveWarpSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], spawnedEngine *engine.Engine) func() { +func (c *Chain) deriveWarpSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], engineInstance *engine.Engine) func() { return c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - if warpSyncOffset := spawnedEngine.LatestAPI().ProtocolParameters().MaxCommittableAge(); warpSyncOffset < latestSeenSlot { + if warpSyncOffset := engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge(); warpSyncOffset < latestSeenSlot { return latestSeenSlot - warpSyncOffset } @@ -342,15 +343,15 @@ func (c *Chain) addCommitment(newCommitment *Commitment) (teardown func()) { // dispatchBlockToSpawnedEngine dispatches the given block to the spawned engine of this chain (if it exists). func (c *Chain) dispatchBlockToSpawnedEngine(block *model.Block, src peer.ID) (dispatched bool) { // abort if we do not have a spawned engine - spawnedEngine := c.SpawnedEngine.Get() - if spawnedEngine == nil { + engineInstance := c.Engine.Get() + if engineInstance == nil { return false } // abort if the target slot is below the latest commitment issuingTime := block.ProtocolBlock().Header.IssuingTime - targetSlot := spawnedEngine.APIForTime(issuingTime).TimeProvider().SlotFromTime(issuingTime) - if targetSlot <= spawnedEngine.LatestCommitment.Get().Slot() { + targetSlot := engineInstance.APIForTime(issuingTime).TimeProvider().SlotFromTime(issuingTime) + if targetSlot <= engineInstance.LatestCommitment.Get().Slot() { return false } @@ -370,7 +371,7 @@ func (c *Chain) dispatchBlockToSpawnedEngine(block *model.Block, src peer.ID) (d } // dispatch the block to the spawned engine if all previous checks passed - spawnedEngine.ProcessBlockFromPeer(block, src) + engineInstance.ProcessBlockFromPeer(block, src) return true } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 13d07102f..eaf609d11 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -32,6 +32,9 @@ type Chains struct { // LatestSeenSlot contains the latest slot that was seen by any of the chains. LatestSeenSlot reactive.Variable[iotago.SlotIndex] + // protocol contains a reference to the Protocol instance that this component belongs to. + protocol *Protocol + // Logger contains a reference to the logger that is used by this component. log.Logger } @@ -45,6 +48,7 @@ func newChains(protocol *Protocol) *Chains { HeaviestAttestedCandidate: reactive.NewVariable[*Chain](), HeaviestVerifiedCandidate: reactive.NewVariable[*Chain](), LatestSeenSlot: reactive.NewVariable[iotago.SlotIndex](increasing[iotago.SlotIndex]), + protocol: protocol, } shutdown := lo.Batch( @@ -61,6 +65,16 @@ func newChains(protocol *Protocol) *Chains { return c } +// WithInitializedEngines is a reactive selector that executes the given callback for each managed chain that +// initialized its engine. +func (c *Chains) WithInitializedEngines(callback func(chain *Chain, engine *engine.Engine) (teardown func())) (teardown func()) { + return c.WithElements(func(chain *Chain) (teardown func()) { + return chain.WithInitializedEngine(func(engine *engine.Engine) (teardown func()) { + return callback(chain, engine) + }) + }) +} + // initLogger initializes the logger for this component. func (c *Chains) initLogger(logger log.Logger, shutdownLogger func()) (teardown func()) { c.Logger = logger diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 5071268de..630ebe5d8 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -79,7 +79,7 @@ type Commitment struct { } // NewCommitment creates a new Commitment from the given model.Commitment. -func newCommitment(commitment *model.Commitment, chains *Chains) *Commitment { +func newCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment { c := &Commitment{ Commitment: commitment, Parent: reactive.NewVariable[*Commitment](), @@ -102,8 +102,8 @@ func newCommitment(commitment *model.Commitment, chains *Chains) *Commitment { } shutdown := lo.Batch( - c.initLogger(chains.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot()))), - c.initDerivedProperties(chains), + c.initLogger(protocol.Commitments.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot()))), + c.initDerivedProperties(protocol.Chains), ) c.IsEvicted.OnTrigger(shutdown) @@ -114,7 +114,7 @@ func newCommitment(commitment *model.Commitment, chains *Chains) *Commitment { // TargetEngine returns the engine that is responsible for booking the blocks of this Commitment. func (c *Commitment) TargetEngine() *engine.Engine { if chain := c.Chain.Get(); chain != nil { - return chain.SpawnedEngine.Get() + return chain.Engine.Get() } return nil @@ -148,6 +148,7 @@ func (c *Commitment) initLogger(logger log.Logger, shutdownLogger func()) (teard func (c *Commitment) initDerivedProperties(chains *Chains) (teardown func()) { return lo.Batch( c.deriveRootProperties(), + c.deriveIsAttested(), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { // the weight can be fixed as soon as the parent is known (as it only relies on static information from the @@ -157,6 +158,7 @@ func (c *Commitment) initDerivedProperties(chains *Chains) (teardown func()) { return lo.Batch( parent.deriveChildren(c), + c.deriveIsAttested(), c.deriveIsSolid(parent), c.deriveChain(chains, parent), c.deriveCumulativeAttestedWeight(parent), @@ -190,6 +192,11 @@ func (c *Commitment) deriveRootProperties() (teardown func()) { ) } +// deriveIsAttested derives the IsAttested flag by forcing it to true once the Commitment is marked as verified. +func (c *Commitment) deriveIsAttested() (teardown func()) { + return c.IsAttested.InheritFrom(c.IsVerified) +} + // deriveChildren derives the children of this Commitment by adding the given child to the Children set. func (c *Commitment) deriveChildren(child *Commitment) (unregisterChild func()) { c.MainChild.Compute(func(mainChild *Commitment) *Commitment { @@ -271,24 +278,24 @@ func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) // deriveWarpSyncBlocks derives the WarpSyncBlocks flag of this Commitment which is true if our Chain is requesting // warp sync, and we are the directly above the latest verified Commitment. func (c *Commitment) deriveWarpSyncBlocks(chain *Chain, parent *Commitment) func() { - return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, spawnedEngine *engine.Engine, warpSync bool, parentIsVerified bool, isVerified bool) bool { - return spawnedEngine != nil && warpSync && parentIsVerified && !isVerified - }, chain.SpawnedEngine, chain.WarpSyncMode, parent.IsVerified, c.IsVerified)) + return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSync bool, parentIsVerified bool, isVerified bool) bool { + return engineInstance != nil && warpSync && parentIsVerified && !isVerified + }, chain.Engine, chain.WarpSyncMode, parent.IsVerified, c.IsVerified)) } // deriveReplayDroppedBlocks derives the ReplayDroppedBlocks flag of this Commitment which is true if our Chain has an // engine, is no longer requesting warp sync, and we are above the latest verified Commitment. func (c *Commitment) deriveReplayDroppedBlocks(chain *Chain) func() { - return c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, spawnedEngine *engine.Engine, warpSyncing bool, isAboveLatestVerifiedCommitment bool) bool { - return spawnedEngine != nil && !warpSyncing && isAboveLatestVerifiedCommitment - }, chain.SpawnedEngine, chain.WarpSyncMode, c.IsAboveLatestVerifiedCommitment)) + return c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, engineInstance *engine.Engine, warpSyncing bool, isAboveLatestVerifiedCommitment bool) bool { + return engineInstance != nil && !warpSyncing && isAboveLatestVerifiedCommitment + }, chain.Engine, chain.WarpSyncMode, c.IsAboveLatestVerifiedCommitment)) } +// forceChain forces the Chain of this Commitment to the given Chain by promoting it to the main child of its parent if +// the parent is on the target Chain. func (c *Commitment) forceChain(targetChain *Chain) { if currentChain := c.Chain.Get(); currentChain != targetChain { - if currentChain == nil { // the root commitment doesn't inherit a chain from its parents - c.Chain.Set(targetChain) - } else if parent := c.Parent.Get(); parent.Chain.Get() == targetChain { + if parent := c.Parent.Get(); parent.Chain.Get() == targetChain { parent.MainChild.Set(c) } } diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 65d8a62eb..0b6647ece 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -12,68 +12,65 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) +// Commitments is a subcomponent of the protocol that exposes the commitments that are managed by the protocol and that +// are either published from the network or created by an engine of the node. type Commitments struct { + // Set contains all non-evicted commitments that are managed by the protocol. reactive.Set[*Commitment] + // Root contains the root commitment. Root reactive.Variable[*Commitment] - protocol *Protocol - commitments *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] + // protocol contains a reference to the Protocol instance that this component belongs to. + protocol *Protocol + // cachedRequests contains all cached requests for commitments that are currently relevant. + cachedRequests *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] + + // Logger contains a reference to the logger that is used by this component. log.Logger } +// newCommitments creates a new commitments instance for the given protocol. func newCommitments(protocol *Protocol) *Commitments { c := &Commitments{ - Set: reactive.NewSet[*Commitment](), - Root: reactive.NewVariable[*Commitment](), - protocol: protocol, - commitments: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + Set: reactive.NewSet[*Commitment](), + Root: reactive.NewVariable[*Commitment](), + protocol: protocol, + cachedRequests: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), } - protocol.Constructed.WithNonEmptyValue(func(_ bool) (teardown func()) { - return lo.Batch( - protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (teardown func()) { - return mainChain.withInitializedEngine(func(mainEngine *engine.Engine) (teardown func()) { - return mainEngine.RootCommitment.OnUpdate(func(_ *model.Commitment, newRootCommitment *model.Commitment) { - c.publishRootCommitment(mainChain, newRootCommitment) - }) - }) - }), + shutdown := lo.Batch( + c.initLogger(protocol.NewChildLogger("Commitments")), + c.initEngineCommitmentSynchronization(protocol), + ) - protocol.Chains.WithElements(c.publishEngineCommitments), - ) - }) + protocol.Shutdown.OnTrigger(shutdown) return c } +// Publish publishes the given commitment model to the collection and returns the corresponding Commitment singleton +// that holds the metadata. func (c *Commitments) Publish(commitment *model.Commitment) (commitmentMetadata *Commitment, published bool, err error) { - request := c.requestCommitment(commitment.ID(), false) - if request.WasRejected() { - return nil, false, ierrors.Wrapf(request.Err(), "failed to request commitment %s", commitment.ID()) + // create cached request + cachedRequest := c.createCachedRequest(commitment.ID(), false) + if cachedRequest.WasRejected() { + return nil, false, ierrors.Wrapf(cachedRequest.Err(), "failed to request commitment %s", commitment.ID()) } - publishedCommitmentMetadata := newCommitment(commitment, c.protocol.Chains) - request.Resolve(publishedCommitmentMetadata).OnSuccess(func(resolvedMetadata *Commitment) { + publishedCommitmentMetadata := newCommitment(commitment, c.protocol) + cachedRequest.Resolve(publishedCommitmentMetadata).OnSuccess(func(resolvedMetadata *Commitment) { commitmentMetadata = resolvedMetadata }) - if published = commitmentMetadata == publishedCommitmentMetadata; published { - commitmentMetadata.LogDebug("created", "id", commitment.ID()) - - if c.Add(commitmentMetadata) { - commitmentMetadata.IsEvicted.OnTrigger(func() { c.Delete(commitmentMetadata) }) - } - } - return commitmentMetadata, commitmentMetadata == publishedCommitmentMetadata, nil } func (c *Commitments) Get(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { - commitmentRequest, exists := c.commitments.Get(commitmentID) + commitmentRequest, exists := c.cachedRequests.Get(commitmentID) if !exists && lo.First(requestMissing) { - if commitmentRequest = c.requestCommitment(commitmentID, true); commitmentRequest.WasRejected() { + if commitmentRequest = c.createCachedRequest(commitmentID, true); commitmentRequest.WasRejected() { return nil, ierrors.Wrapf(commitmentRequest.Err(), "failed to request commitment %s", commitmentID) } } @@ -89,101 +86,126 @@ func (c *Commitments) Get(commitmentID iotago.CommitmentID, requestMissing ...bo return commitmentRequest.Result(), nil } -func (c *Commitments) requestCommitment(commitmentID iotago.CommitmentID, requestFromPeers bool, optSuccessCallbacks ...func(metadata *Commitment)) (commitmentRequest *promise.Promise[*Commitment]) { - slotEvicted := c.protocol.EvictionEvent(commitmentID.Index()) - if slotEvicted.WasTriggered() && c.protocol.LastEvictedSlot().Get() != 0 { - forkingPoint := c.protocol.Chains.Main.Get().ForkingPoint.Get() +func (c *Commitments) initLogger(logger log.Logger, shutdownLogger func()) (teardown func()) { + c.Logger = logger + + return lo.Batch( + c.Root.LogUpdates(c, log.LevelTrace, "Root", (*Commitment).LogName), + + shutdownLogger, + ) +} - if forkingPoint == nil || commitmentID != forkingPoint.ID() { - return promise.New[*Commitment]().Reject(ErrorSlotEvicted) +func (c *Commitments) initEngineCommitmentSynchronization(protocol *Protocol) func() { + return protocol.Constructed.WithNonEmptyValue(func(_ bool) (teardown func()) { + return lo.Batch( + protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (teardown func()) { + return mainChain.WithInitializedEngine(func(mainEngine *engine.Engine) (teardown func()) { + return c.publishRootCommitment(mainChain, mainEngine) + }) + }), + + protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (teardown func()) { + return c.publishEngineCommitments(chain, engine) + }), + ) + }) +} + +func (c *Commitments) publishRootCommitment(mainChain *Chain, mainEngine *engine.Engine) func() { + return mainEngine.RootCommitment.OnUpdate(func(_ *model.Commitment, newRootCommitmentModel *model.Commitment) { + newRootCommitment, published, err := c.Publish(newRootCommitmentModel) + if err != nil { + c.LogError("failed to publish new root commitment", "id", newRootCommitmentModel.ID(), "error", err) + + return } - for _, successCallback := range optSuccessCallbacks { - successCallback(forkingPoint) + newRootCommitment.IsRoot.Set(true) + if published { + newRootCommitment.Chain.Set(mainChain) } - return promise.New[*Commitment]().Resolve(forkingPoint) - } + // TODO: SET HERE AND FIX BUG + mainChain.ForkingPoint.DefaultTo(newRootCommitment) - commitmentRequest, requestCreated := c.commitments.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) - if requestCreated { - if requestFromPeers { - c.protocol.CommitmentsProtocol.ticker.StartTicker(commitmentID) + c.Root.Set(newRootCommitment) + }) +} - commitmentRequest.OnComplete(func() { - c.protocol.CommitmentsProtocol.ticker.StopTicker(commitmentID) - }) - } +func (c *Commitments) publishEngineCommitments(chain *Chain, engine *engine.Engine) (teardown func()) { + return engine.LatestCommitment.OnUpdate(func(_ *model.Commitment, latestCommitment *model.Commitment) { + for latestPublishedSlot := chain.LastCommonSlot(); latestPublishedSlot < latestCommitment.Slot(); latestPublishedSlot++ { + modelToPublish, err := engine.Storage.Commitments().Load(latestPublishedSlot + 1) + if err != nil { + c.LogError("failed to load commitment to publish from engine", "slot", latestPublishedSlot+1, "err", err) - commitmentRequest.OnSuccess(func(commitment *Commitment) { - c.setupCommitment(commitment, slotEvicted) - }) + return + } - slotEvicted.OnTrigger(func() { c.commitments.Delete(commitmentID) }) - } + publishedCommitment, _, err := c.Publish(modelToPublish) + if err != nil { + c.LogError("failed to publish commitment from engine", "engine", engine.LogName(), "commitment", modelToPublish, "err", err) - for _, successCallback := range optSuccessCallbacks { - commitmentRequest.OnSuccess(successCallback) - } + return + } - return commitmentRequest + publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) + publishedCommitment.IsVerified.Set(true) + publishedCommitment.forceChain(chain) + } + }) } -func (c *Commitments) setupCommitment(commitment *Commitment, slotEvictedEvent reactive.Event) { - c.requestCommitment(commitment.PreviousCommitmentID(), true, lo.Void(commitment.Parent.Set)).OnError(func(err error) { - c.protocol.LogDebug("failed to request previous commitment", "prevId", commitment.PreviousCommitmentID(), "error", err) - }) +func (c *Commitments) createCachedRequest(commitmentID iotago.CommitmentID, requestFromPeers bool) (commitmentRequest *promise.Promise[*Commitment]) { + // handle evicted slots + slotEvicted := c.protocol.EvictionEvent(commitmentID.Index()) + if slotEvicted.WasTriggered() && c.protocol.LastEvictedSlot().Get() != 0 { + return promise.New[*Commitment]().Reject(ErrorSlotEvicted) + } - if c.Add(commitment) { - slotEvictedEvent.OnTrigger(func() { - commitment.IsEvicted.Trigger() + // attempt to create a request and abort if it already exists + commitmentRequest, requestCreated := c.cachedRequests.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) + if !requestCreated { + return commitmentRequest + } - c.Delete(commitment) - }) + // start ticker if necessary + if requestFromPeers { + c.protocol.CommitmentsProtocol.StartTicker(commitmentRequest, commitmentID) } -} -func (c *Commitments) publishRootCommitment(mainChain *Chain, newRootCommitment *model.Commitment) { - c.Root.Compute(func(currentRootCommitment *Commitment) *Commitment { - publishedRootCommitment, _, err := c.Publish(newRootCommitment) - if err != nil { - c.LogError("failed to publish new root commitment", "id", newRootCommitment.ID(), "error", err) + // handle successful requests + commitmentRequest.OnSuccess(func(commitment *Commitment) { + commitment.LogDebug("created", "id", commitment.ID()) - return currentRootCommitment - } + // solidify the parent of the commitment + c.createCachedRequest(commitment.PreviousCommitmentID(), true).OnSuccess(func(parent *Commitment) { + commitment.Parent.Set(parent) + }) - publishedRootCommitment.IsRoot.Set(true) - publishedRootCommitment.forceChain(mainChain) + // add commitment to the set + c.Add(commitment) - mainChain.ForkingPoint.DefaultTo(publishedRootCommitment) + // tear down the commitment once the slot is evicted + slotEvicted.OnTrigger(func() { + c.Delete(commitment) - return publishedRootCommitment + commitment.IsEvicted.Trigger() + }) }) -} -func (c *Commitments) publishEngineCommitments(chain *Chain) (unsubscribe func()) { - return chain.withInitializedEngine(func(spawnedEngine *engine.Engine) (teardown func()) { - return spawnedEngine.LatestCommitment.OnUpdate(func(_ *model.Commitment, latestCommitment *model.Commitment) { - for latestPublishedSlot := chain.LastCommonSlot(); latestPublishedSlot < latestCommitment.Slot(); latestPublishedSlot++ { - if commitmentToPublish, err := spawnedEngine.Storage.Commitments().Load(latestPublishedSlot + 1); err != nil { - spawnedEngine.LogError("failed to load commitment to publish from engine", "slot", latestPublishedSlot+1, "err", err) - } else { - c.publishEngineCommitment(chain, commitmentToPublish) - } - } - }) + // handle failed requests + commitmentRequest.OnError(func(err error) { + c.LogDebug("request failed", "commitmentID", commitmentID, "error", err) }) -} -func (c *Commitments) publishEngineCommitment(chain *Chain, commitment *model.Commitment) { - publishedCommitment, _, err := c.Publish(commitment) - if err != nil { - panic(err) // this can never happen, but we panic to get a stack trace if it ever does - } + // tear down the request once the slot is evicted + slotEvicted.OnTrigger(func() { + c.cachedRequests.Delete(commitmentID) - publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) - publishedCommitment.IsAttested.Set(true) - publishedCommitment.IsVerified.Set(true) + commitmentRequest.Reject(ErrorSlotEvicted) + }) - publishedCommitment.forceChain(chain) + return commitmentRequest } diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 1cc20026a..81b2f0d64 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -193,7 +193,7 @@ func (e *Engines) syncMainEngineFromMainChain() (unsubscribe func()) { return e.protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (teardown func()) { return e.Main.DeriveValueFrom(reactive.NewDerivedVariable(func(currentMainEngine *engine.Engine, newMainEngine *engine.Engine) *engine.Engine { return lo.Cond(newMainEngine == nil, currentMainEngine, newMainEngine) - }, mainChain.SpawnedEngine)) + }, mainChain.Engine)) }) } @@ -212,7 +212,7 @@ func (e *Engines) injectEngineInstances() (unsubscribe func()) { return chain.RequestBlocks.OnUpdate(func(_ bool, instantiate bool) { e.worker.Submit(func() { if !instantiate { - chain.SpawnedEngine.Set(nil) + chain.Engine.Set(nil) return } @@ -228,7 +228,7 @@ func (e *Engines) injectEngineInstances() (unsubscribe func()) { } else { e.protocol.Network.OnShutdown(func() { newEngine.Shutdown.Trigger() }) - chain.SpawnedEngine.Set(newEngine) + chain.Engine.Set(newEngine) } }) }) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 55c2819e9..7c44ad59b 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -44,12 +44,12 @@ func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) protocol.Chains.WithElements(func(chain *Chain) func() { - return chain.SpawnedEngine.WithNonEmptyValue(func(spawnedEngine *engine.Engine) (teardown func()) { - return spawnedEngine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook + return chain.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (teardown func()) { + return engineInstance.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook }) }) - protocol.Chains.Main.Get().SpawnedEngine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { + protocol.Chains.Main.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { if engine != nil { unsubscribeOnEngineChange(func() (unsubscribe func()) { return lo.Batch( @@ -82,7 +82,7 @@ func (b *BlocksProtocol) SendResponse(block *model.Block) { func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { b.workerPool.Submit(func() { - commitmentRequest := b.protocol.Commitments.requestCommitment(block.ProtocolBlock().Header.SlotCommitmentID, true) + commitmentRequest := b.protocol.Commitments.createCachedRequest(block.ProtocolBlock().Header.SlotCommitmentID, true) if commitmentRequest.WasRejected() { b.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID(), "err", commitmentRequest.Err()) diff --git a/pkg/protocol/protocol_commitments.go b/pkg/protocol/protocol_commitments.go index cbd8010bb..1755980b9 100644 --- a/pkg/protocol/protocol_commitments.go +++ b/pkg/protocol/protocol_commitments.go @@ -8,6 +8,7 @@ import ( "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/core/promise" "github.com/iotaledger/iota-core/pkg/model" iotago "github.com/iotaledger/iota.go/v4" ) @@ -33,6 +34,14 @@ func NewCommitmentsProtocol(protocol *Protocol) *CommitmentsProtocol { return c } +func (c *CommitmentsProtocol) StartTicker(request *promise.Promise[*Commitment], commitmentID iotago.CommitmentID) { + c.ticker.StartTicker(commitmentID) + + request.OnComplete(func() { + c.ticker.StopTicker(commitmentID) + }) +} + func (c *CommitmentsProtocol) SendRequest(commitmentID iotago.CommitmentID) { c.workerPool.Submit(func() { c.protocol.Network.RequestSlotCommitment(commitmentID) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 4f9b4eea7..4cf668c68 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -161,7 +161,7 @@ func (n *Node) hookEvents() { if prevHeaviestAttestedCandidate != nil { n.forkDetectedCount.Add(1) - heaviestAttestedCandidate.SpawnedEngine.OnUpdate(func(prevEngine *engine.Engine, newEngine *engine.Engine) { + heaviestAttestedCandidate.Engine.OnUpdate(func(prevEngine *engine.Engine, newEngine *engine.Engine) { n.candidateEngineActivatedCount.Add(1) }) } @@ -183,7 +183,7 @@ func (n *Node) hookEvents() { func (n *Node) hookLogging(failOnBlockFiltered bool) { n.Protocol.Chains.WithElements(func(chain *protocol.Chain) (teardown func()) { - return chain.SpawnedEngine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { + return chain.Engine.OnUpdate(func(_ *engine.Engine, newEngine *engine.Engine) { if newEngine != nil { n.attachEngineLogs(failOnBlockFiltered, newEngine) } From 91f08e9f6390b0d9868f912daaa2fd23d595b06a Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 26 Nov 2023 20:33:10 +0100 Subject: [PATCH 278/356] Refactor: refactored commitments --- pkg/protocol/chain.go | 20 ++-- pkg/protocol/commitment.go | 69 +++++------ pkg/protocol/commitments.go | 157 ++++++++++++++------------ pkg/protocol/protocol_attestations.go | 2 +- pkg/protocol/protocol_blocks.go | 10 +- pkg/protocol/protocol_commitments.go | 6 +- pkg/tests/protocol_startup_test.go | 2 - pkg/testsuite/chainmanager.go | 3 - 8 files changed, 132 insertions(+), 137 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index b466021b1..7f13811e0 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -70,6 +70,9 @@ type Chain struct { // IsEvicted contains a flag that indicates whether this chain was evicted. IsEvicted reactive.Event + // chains contains a reference to the Chains instance that this chain belongs to. + chains *Chains + // commitments contains the commitments that make up this chain. commitments *shrinkingmap.ShrinkingMap[iotago.SlotIndex, *Commitment] @@ -97,12 +100,13 @@ func newChain(chains *Chains) *Chain { Engine: reactive.NewVariable[*engine.Engine](), IsEvicted: reactive.NewEvent(), + chains: chains, commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), } shutdown := lo.Batch( - c.initLogger(chains.NewEntityLogger("")), - c.initDerivedProperties(chains.LatestSeenSlot), + c.initLogger(), + c.initDerivedProperties(), ) c.IsEvicted.OnTrigger(shutdown) @@ -177,8 +181,8 @@ func (c *Chain) LatestEngine() *engine.Engine { } // initLogger initializes the Logger of this chain. -func (c *Chain) initLogger(logger log.Logger, shutdownLogger func()) (teardown func()) { - c.Logger = logger +func (c *Chain) initLogger() (teardown func()) { + c.Logger, teardown = c.chains.NewEntityLogger("") return lo.Batch( c.WarpSyncMode.LogUpdates(c, log.LevelTrace, "WarpSyncMode"), @@ -195,12 +199,12 @@ func (c *Chain) initLogger(logger log.Logger, shutdownLogger func()) (teardown f c.Engine.LogUpdates(c, log.LevelTrace, "Engine", (*engine.Engine).LogName), c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), - shutdownLogger, + teardown, ) } // initDerivedProperties initializes the behavior of this chain by setting up the relations between its properties. -func (c *Chain) initDerivedProperties(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex]) (teardown func()) { +func (c *Chain) initDerivedProperties() (teardown func()) { return lo.Batch( c.deriveClaimedWeight(), c.deriveVerifiedWeight(), @@ -217,8 +221,8 @@ func (c *Chain) initDerivedProperties(latestSeenSlot reactive.ReadableVariable[i c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (teardown func()) { return lo.Batch( - c.deriveWarpSyncThreshold(latestSeenSlot, engineInstance), - c.deriveOutOfSyncThreshold(latestSeenSlot, engineInstance), + c.deriveWarpSyncThreshold(c.chains.LatestSeenSlot, engineInstance), + c.deriveOutOfSyncThreshold(c.chains.LatestSeenSlot, engineInstance), ) }), ) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 630ebe5d8..3e6cc0c77 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -53,9 +53,6 @@ type Commitment struct { // IsRoot contains a flag indicating if this Commitment is the root of the Chain. IsRoot reactive.Event - // IsSolid contains a flag indicating if this Commitment is solid (all referenced blocks in its past are known). - IsSolid reactive.Event - // IsAttested contains a flag indicating if we have received attestations for this Commitment. IsAttested reactive.Event @@ -74,14 +71,17 @@ type Commitment struct { // IsEvicted contains a flag indicating if this Commitment was evicted from the Protocol. IsEvicted reactive.Event + // commitments contains a reference to the Commitments instance that this Commitment belongs to. + commitments *Commitments + // Logger embeds a logger that can be used to log messages emitted by this Commitment. log.Logger } // NewCommitment creates a new Commitment from the given model.Commitment. -func newCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment { +func newCommitment(commitments *Commitments, model *model.Commitment) *Commitment { c := &Commitment{ - Commitment: commitment, + Commitment: model, Parent: reactive.NewVariable[*Commitment](), Children: reactive.NewSet[*Commitment](), MainChild: reactive.NewVariable[*Commitment](), @@ -93,17 +93,17 @@ func newCommitment(commitment *model.Commitment, protocol *Protocol) *Commitment AttestedWeight: reactive.NewVariable[uint64](func(currentValue uint64, newValue uint64) uint64 { return max(currentValue, newValue) }), CumulativeAttestedWeight: reactive.NewVariable[uint64](), IsRoot: reactive.NewEvent(), - IsSolid: reactive.NewEvent(), IsAttested: reactive.NewEvent(), IsVerified: reactive.NewEvent(), IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), ReplayDroppedBlocks: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), + commitments: commitments, } shutdown := lo.Batch( - c.initLogger(protocol.Commitments.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot()))), - c.initDerivedProperties(protocol.Chains), + c.initLogger(), + c.initDerivedProperties(), ) c.IsEvicted.OnTrigger(shutdown) @@ -121,8 +121,8 @@ func (c *Commitment) TargetEngine() *engine.Engine { } // initLogger initializes the Logger of this Commitment. -func (c *Commitment) initLogger(logger log.Logger, shutdownLogger func()) (teardown func()) { - c.Logger = logger +func (c *Commitment) initLogger() (teardown func()) { + c.Logger, teardown = c.commitments.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot())) return lo.Batch( c.Parent.LogUpdates(c, log.LevelTrace, "Parent", (*Commitment).LogName), @@ -134,33 +134,33 @@ func (c *Commitment) initLogger(logger log.Logger, shutdownLogger func()) (teard c.AttestedWeight.LogUpdates(c, log.LevelTrace, "AttestedWeight"), c.CumulativeAttestedWeight.LogUpdates(c, log.LevelTrace, "CumulativeAttestedWeight"), c.IsRoot.LogUpdates(c, log.LevelTrace, "IsRoot"), - c.IsSolid.LogUpdates(c, log.LevelTrace, "IsSolid"), c.IsAttested.LogUpdates(c, log.LevelTrace, "IsAttested"), c.IsVerified.LogUpdates(c, log.LevelTrace, "IsVerified"), c.ReplayDroppedBlocks.LogUpdates(c, log.LevelTrace, "ReplayDroppedBlocks"), c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), - shutdownLogger, + teardown, ) } // initDerivedProperties initializes the behavior of this Commitment by setting up the relations between its properties. -func (c *Commitment) initDerivedProperties(chains *Chains) (teardown func()) { +func (c *Commitment) initDerivedProperties() (teardown func()) { return lo.Batch( - c.deriveRootProperties(), - c.deriveIsAttested(), + // mark commitments that are marked as root as verified + c.IsVerified.InheritFrom(c.IsRoot), + + // mark commitments that are marked as verified as attested + c.IsAttested.InheritFrom(c.IsVerified), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { - // the weight can be fixed as soon as the parent is known (as it only relies on static information from the - // parent commitment) + // the weight can be fixed as a one time operation (as it only relies on static information from the parent + // commitment) c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) return lo.Batch( parent.deriveChildren(c), - c.deriveIsAttested(), - c.deriveIsSolid(parent), - c.deriveChain(chains, parent), + c.deriveChain(parent), c.deriveCumulativeAttestedWeight(parent), c.deriveIsAboveLatestVerifiedCommitment(parent), @@ -183,20 +183,6 @@ func (c *Commitment) initDerivedProperties(chains *Chains) (teardown func()) { ) } -// deriveRootProperties derives the properties that are supposed to be set for the root Commitment. -func (c *Commitment) deriveRootProperties() (teardown func()) { - return lo.Batch( - c.IsSolid.InheritFrom(c.IsRoot), - c.IsAttested.InheritFrom(c.IsRoot), - c.IsVerified.InheritFrom(c.IsRoot), - ) -} - -// deriveIsAttested derives the IsAttested flag by forcing it to true once the Commitment is marked as verified. -func (c *Commitment) deriveIsAttested() (teardown func()) { - return c.IsAttested.InheritFrom(c.IsVerified) -} - // deriveChildren derives the children of this Commitment by adding the given child to the Children set. func (c *Commitment) deriveChildren(child *Commitment) (unregisterChild func()) { c.MainChild.Compute(func(mainChild *Commitment) *Commitment { @@ -218,31 +204,28 @@ func (c *Commitment) deriveChildren(child *Commitment) (unregisterChild func()) } } -// deriveIsSolid derives the IsSolid flag of this Commitment which is set to true if the parent is known and solid. -func (c *Commitment) deriveIsSolid(parent *Commitment) func() { - return c.IsSolid.InheritFrom(parent.IsSolid) -} - // deriveChain derives the Chain of this Commitment which is either inherited from the parent if we are the main child // or a newly created chain. -func (c *Commitment) deriveChain(chains *Chains, parent *Commitment) func() { +func (c *Commitment) deriveChain(parent *Commitment) func() { return c.Chain.DeriveValueFrom(reactive.NewDerivedVariable3(func(currentChain *Chain, isRoot bool, mainChild *Commitment, parentChain *Chain) *Chain { // do not adjust the chain of the root commitment (it is set from the outside) if isRoot { return currentChain } - // if we are not the main child of our parent, we create and return a new chain + // if we are not the main child of our parent, we spawn a new chain if c != mainChild { if currentChain == nil { - currentChain = chains.newChain() + currentChain = c.commitments.protocol.Chains.newChain() currentChain.ForkingPoint.Set(c) } return currentChain } - // if we are the main child of our parent, and we + // if we are the main child of our parent, and our chain is not the parent chain (that we are supposed to + // inherit), then we evict our current chain (we will spawn a new one if we ever change back to not being the + // main child) if currentChain != nil && currentChain != parentChain { currentChain.IsEvicted.Trigger() } diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 0b6647ece..0461970ee 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -24,8 +24,9 @@ type Commitments struct { // protocol contains a reference to the Protocol instance that this component belongs to. protocol *Protocol - // cachedRequests contains all cached requests for commitments that are currently relevant. - cachedRequests *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] + // commitmentPromises contains Promise instances for all non-evicted commitments that were accessed by the Protocol. + // It acts as a cache and a way to address commitments generically even if they are still unsolid. + commitmentPromises *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] // Logger contains a reference to the logger that is used by this component. log.Logger @@ -34,10 +35,10 @@ type Commitments struct { // newCommitments creates a new commitments instance for the given protocol. func newCommitments(protocol *Protocol) *Commitments { c := &Commitments{ - Set: reactive.NewSet[*Commitment](), - Root: reactive.NewVariable[*Commitment](), - protocol: protocol, - cachedRequests: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + Set: reactive.NewSet[*Commitment](), + Root: reactive.NewVariable[*Commitment](), + protocol: protocol, + commitmentPromises: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), } shutdown := lo.Batch( @@ -50,27 +51,10 @@ func newCommitments(protocol *Protocol) *Commitments { return c } -// Publish publishes the given commitment model to the collection and returns the corresponding Commitment singleton -// that holds the metadata. -func (c *Commitments) Publish(commitment *model.Commitment) (commitmentMetadata *Commitment, published bool, err error) { - // create cached request - cachedRequest := c.createCachedRequest(commitment.ID(), false) - if cachedRequest.WasRejected() { - return nil, false, ierrors.Wrapf(cachedRequest.Err(), "failed to request commitment %s", commitment.ID()) - } - - publishedCommitmentMetadata := newCommitment(commitment, c.protocol) - cachedRequest.Resolve(publishedCommitmentMetadata).OnSuccess(func(resolvedMetadata *Commitment) { - commitmentMetadata = resolvedMetadata - }) - - return commitmentMetadata, commitmentMetadata == publishedCommitmentMetadata, nil -} - -func (c *Commitments) Get(commitmentID iotago.CommitmentID, requestMissing ...bool) (commitment *Commitment, err error) { - commitmentRequest, exists := c.cachedRequests.Get(commitmentID) - if !exists && lo.First(requestMissing) { - if commitmentRequest = c.createCachedRequest(commitmentID, true); commitmentRequest.WasRejected() { +func (c *Commitments) Get(commitmentID iotago.CommitmentID, requestIfMissing ...bool) (commitment *Commitment, err error) { + commitmentRequest, exists := c.commitmentPromises.Get(commitmentID) + if !exists && lo.First(requestIfMissing) { + if commitmentRequest = c.Promise(commitmentID, true); commitmentRequest.WasRejected() { return nil, ierrors.Wrapf(commitmentRequest.Err(), "failed to request commitment %s", commitmentID) } } @@ -86,6 +70,67 @@ func (c *Commitments) Get(commitmentID iotago.CommitmentID, requestMissing ...bo return commitmentRequest.Result(), nil } +func (c *Commitments) Promise(commitmentID iotago.CommitmentID, requestIfMissing ...bool) (commitmentPromise *promise.Promise[*Commitment]) { + // handle evicted slots + slotEvicted := c.protocol.EvictionEvent(commitmentID.Index()) + if slotEvicted.WasTriggered() && c.protocol.LastEvictedSlot().Get() != 0 { + return promise.New[*Commitment]().Reject(ErrorSlotEvicted) + } + + // create a new promise or return the existing one + commitmentPromise, promiseCreated := c.commitmentPromises.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) + if !promiseCreated { + return commitmentPromise + } + + // start ticker if requested + if lo.First(requestIfMissing) { + c.LogDebug("requesting commitment", "commitmentID", commitmentID) + c.protocol.CommitmentsProtocol.StartTicker(commitmentPromise, commitmentID) + } else { + c.LogDebug("NOT requesting commitment", "commitmentID", commitmentID) + } + + // handle successful resolutions + commitmentPromise.OnSuccess(func(commitment *Commitment) { + c.initCommitment(commitment, slotEvicted) + }) + + // handle failed resolutions + commitmentPromise.OnError(func(err error) { + c.LogDebug("request failed", "commitmentID", commitmentID, "error", err) + }) + + // tear down the promise once the slot is evicted + slotEvicted.OnTrigger(func() { + c.commitmentPromises.Delete(commitmentID) + + commitmentPromise.Reject(ErrorSlotEvicted) + }) + + return commitmentPromise +} + +// Resolve publishes the given commitment model to the collection and returns the corresponding Commitment singleton +// that holds the metadata. +func (c *Commitments) Resolve(commitmentModel *model.Commitment) (publishedCommitment *Commitment, published bool, err error) { + // retrieve promise and abort if it was already rejected + commitmentPromise := c.Promise(commitmentModel.ID()) + if commitmentPromise.WasRejected() { + return nil, false, ierrors.Wrapf(commitmentPromise.Err(), "failed to request commitment %s", commitmentModel.ID()) + } + + // otherwise try to resolve it and determine if we were the goroutine that resolved it + publishedCommitment = newCommitment(c, commitmentModel) + commitmentPromise.Resolve(publishedCommitment).OnSuccess(func(resolvedCommitment *Commitment) { + if published = resolvedCommitment == publishedCommitment; !published { + publishedCommitment = resolvedCommitment + } + }) + + return publishedCommitment, published, nil +} + func (c *Commitments) initLogger(logger log.Logger, shutdownLogger func()) (teardown func()) { c.Logger = logger @@ -114,7 +159,7 @@ func (c *Commitments) initEngineCommitmentSynchronization(protocol *Protocol) fu func (c *Commitments) publishRootCommitment(mainChain *Chain, mainEngine *engine.Engine) func() { return mainEngine.RootCommitment.OnUpdate(func(_ *model.Commitment, newRootCommitmentModel *model.Commitment) { - newRootCommitment, published, err := c.Publish(newRootCommitmentModel) + newRootCommitment, published, err := c.Resolve(newRootCommitmentModel) if err != nil { c.LogError("failed to publish new root commitment", "id", newRootCommitmentModel.ID(), "error", err) @@ -143,7 +188,7 @@ func (c *Commitments) publishEngineCommitments(chain *Chain, engine *engine.Engi return } - publishedCommitment, _, err := c.Publish(modelToPublish) + publishedCommitment, _, err := c.Resolve(modelToPublish) if err != nil { c.LogError("failed to publish commitment from engine", "engine", engine.LogName(), "commitment", modelToPublish, "err", err) @@ -157,55 +202,21 @@ func (c *Commitments) publishEngineCommitments(chain *Chain, engine *engine.Engi }) } -func (c *Commitments) createCachedRequest(commitmentID iotago.CommitmentID, requestFromPeers bool) (commitmentRequest *promise.Promise[*Commitment]) { - // handle evicted slots - slotEvicted := c.protocol.EvictionEvent(commitmentID.Index()) - if slotEvicted.WasTriggered() && c.protocol.LastEvictedSlot().Get() != 0 { - return promise.New[*Commitment]().Reject(ErrorSlotEvicted) - } - - // attempt to create a request and abort if it already exists - commitmentRequest, requestCreated := c.cachedRequests.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) - if !requestCreated { - return commitmentRequest - } - - // start ticker if necessary - if requestFromPeers { - c.protocol.CommitmentsProtocol.StartTicker(commitmentRequest, commitmentID) - } - - // handle successful requests - commitmentRequest.OnSuccess(func(commitment *Commitment) { - commitment.LogDebug("created", "id", commitment.ID()) +func (c *Commitments) initCommitment(commitment *Commitment, slotEvicted reactive.Event) { + commitment.LogDebug("created", "id", commitment.ID()) - // solidify the parent of the commitment - c.createCachedRequest(commitment.PreviousCommitmentID(), true).OnSuccess(func(parent *Commitment) { - commitment.Parent.Set(parent) - }) - - // add commitment to the set - c.Add(commitment) - - // tear down the commitment once the slot is evicted - slotEvicted.OnTrigger(func() { - c.Delete(commitment) - - commitment.IsEvicted.Trigger() - }) + // solidify the parent of the commitment + c.Promise(commitment.PreviousCommitmentID(), true).OnSuccess(func(parent *Commitment) { + commitment.Parent.Set(parent) }) - // handle failed requests - commitmentRequest.OnError(func(err error) { - c.LogDebug("request failed", "commitmentID", commitmentID, "error", err) - }) + // add commitment to the set + c.Add(commitment) - // tear down the request once the slot is evicted + // tear down the commitment once the slot is evicted slotEvicted.OnTrigger(func() { - c.cachedRequests.Delete(commitmentID) + c.Delete(commitment) - commitmentRequest.Reject(ErrorSlotEvicted) + commitment.IsEvicted.Trigger() }) - - return commitmentRequest } diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 8f17e2564..6c9a60f33 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -62,7 +62,7 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { a.workerPool.Submit(func() { - commitment, _, err := a.protocol.Commitments.Publish(commitmentModel) + commitment, _, err := a.protocol.Commitments.Resolve(commitmentModel) if err != nil { a.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", from, "error", err) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 7c44ad59b..7f7eeb6e6 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -4,6 +4,7 @@ import ( "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/ds/types" + "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/workerpool" @@ -82,14 +83,15 @@ func (b *BlocksProtocol) SendResponse(block *model.Block) { func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { b.workerPool.Submit(func() { - commitmentRequest := b.protocol.Commitments.createCachedRequest(block.ProtocolBlock().Header.SlotCommitmentID, true) - if commitmentRequest.WasRejected() { - b.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID(), "err", commitmentRequest.Err()) + // abort if the commitment belongs to an evicted slot + commitment, err := b.protocol.Commitments.Get(block.ProtocolBlock().Header.SlotCommitmentID, true) + if err != nil && ierrors.Is(ErrorSlotEvicted, err) { + b.LogError("dropped block referencing unsolidifiable commitment", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID(), "err", err) return } - commitment := commitmentRequest.Result() + // add the block to the dropped blocks buffer if we could not dispatch it to the chain if commitment == nil || !commitment.Chain.Get().DispatchBlock(block, from) { if !b.droppedBlocksBuffer.Add(block.ProtocolBlock().Header.SlotCommitmentID, types.NewTuple(block, from)) { b.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID()) diff --git a/pkg/protocol/protocol_commitments.go b/pkg/protocol/protocol_commitments.go index 1755980b9..7546ebe14 100644 --- a/pkg/protocol/protocol_commitments.go +++ b/pkg/protocol/protocol_commitments.go @@ -34,10 +34,10 @@ func NewCommitmentsProtocol(protocol *Protocol) *CommitmentsProtocol { return c } -func (c *CommitmentsProtocol) StartTicker(request *promise.Promise[*Commitment], commitmentID iotago.CommitmentID) { +func (c *CommitmentsProtocol) StartTicker(commitmentPromise *promise.Promise[*Commitment], commitmentID iotago.CommitmentID) { c.ticker.StartTicker(commitmentID) - request.OnComplete(func() { + commitmentPromise.OnComplete(func() { c.ticker.StopTicker(commitmentID) }) } @@ -60,7 +60,7 @@ func (c *CommitmentsProtocol) SendResponse(commitment *Commitment, to peer.ID) { func (c *CommitmentsProtocol) ProcessResponse(commitmentModel *model.Commitment, from peer.ID) { c.workerPool.Submit(func() { - if commitment, published, err := c.protocol.Commitments.Publish(commitmentModel); err != nil { + if commitment, published, err := c.protocol.Commitments.Resolve(commitmentModel); err != nil { c.LogError("failed to process commitment", "fromPeer", from, "err", err) } else if published { c.LogTrace("received response", "commitment", commitment.LogName(), "fromPeer", from) diff --git a/pkg/tests/protocol_startup_test.go b/pkg/tests/protocol_startup_test.go index 340ca5090..380ce963d 100644 --- a/pkg/tests/protocol_startup_test.go +++ b/pkg/tests/protocol_startup_test.go @@ -351,8 +351,6 @@ func Test_StartNodeFromSnapshotAndDisk(t *testing.T) { slot7Commitment := lo.PanicOnErr(nodeA.Protocol.Engines.Main.Get().Storage.Commitments().Load(7)) - fmt.Println("expecting commitment", slot7Commitment.ID()) - ts.AssertNodeState(ts.Nodes("nodeC-restarted", "nodeD"), testsuite.WithSnapshotImported(true), testsuite.WithProtocolParameters(ts.API.ProtocolParameters()), diff --git a/pkg/testsuite/chainmanager.go b/pkg/testsuite/chainmanager.go index 0954d7f46..2f9b02101 100644 --- a/pkg/testsuite/chainmanager.go +++ b/pkg/testsuite/chainmanager.go @@ -21,9 +21,6 @@ func (t *TestSuite) AssertChainManagerIsSolid(nodes ...*mock.Node) { if latestCommitment.ID() != latestChainCommitment.ID() { return ierrors.Errorf("AssertChainManagerIsSolid: %s: latest commitment is not equal, expected %s, got %s", node.Name, latestCommitment.ID(), latestChainCommitment.ID()) } - if !latestChainCommitment.IsSolid.WasTriggered() { - return ierrors.Errorf("AssertChainManagerIsSolid: %s: is not solid", node.Name) - } return nil }) From 381fefea2864319dacdacc37f3cd1155a8886826 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 27 Nov 2023 01:44:45 +0100 Subject: [PATCH 279/356] Feat: finished cleaning up commitment.go and commitments.go --- pkg/protocol/chain.go | 10 +- pkg/protocol/chains.go | 4 +- pkg/protocol/commitment.go | 8 +- pkg/protocol/commitments.go | 202 ++++++++++++++------------ pkg/protocol/engines.go | 4 +- pkg/protocol/protocol_attestations.go | 2 +- pkg/protocol/protocol_commitments.go | 2 +- 7 files changed, 127 insertions(+), 105 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 7f13811e0..2a5f9c912 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -60,9 +60,9 @@ type Chain struct { // requesting attestations. RequestAttestations reactive.Variable[bool] - // RequestBlocks contains a flag that indicates whether this chain should verify the state by requesting blocks and - // processing them in its Engine. - RequestBlocks reactive.Variable[bool] + // StartEngine contains a flag that indicates whether this chain should verify the state by processing blocks in an + // engine. + StartEngine reactive.Variable[bool] // Engine contains the engine instance that is used to process blocks for this chain. Engine reactive.Variable[*engine.Engine] @@ -96,7 +96,7 @@ func newChain(chains *Chains) *Chain { WarpSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), RequestAttestations: reactive.NewVariable[bool](), - RequestBlocks: reactive.NewVariable[bool](), + StartEngine: reactive.NewVariable[bool](), Engine: reactive.NewVariable[*engine.Engine](), IsEvicted: reactive.NewEvent(), @@ -195,7 +195,7 @@ func (c *Chain) initLogger() (teardown func()) { c.LatestCommitment.LogUpdates(c, log.LevelTrace, "LatestCommitment", (*Commitment).LogName), c.LatestProducedCommitment.LogUpdates(c, log.LevelDebug, "LatestProducedCommitment", (*Commitment).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), - c.RequestBlocks.LogUpdates(c, log.LevelDebug, "RequestBlocks"), + c.StartEngine.LogUpdates(c, log.LevelDebug, "StartEngine"), c.Engine.LogUpdates(c, log.LevelTrace, "Engine", (*engine.Engine).LogName), c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index eaf609d11..80e2c5c63 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -92,7 +92,7 @@ func (c *Chains) initLogger(logger log.Logger, shutdownLogger func()) (teardown // initChainSwitching initializes the chain switching logic. func (c *Chains) initChainSwitching(chainSwitchingThreshold iotago.SlotIndex) (teardown func()) { mainChain := c.newChain() - mainChain.RequestBlocks.Set(true) + mainChain.StartEngine.Set(true) c.Main.Set(mainChain) @@ -102,7 +102,7 @@ func (c *Chains) initChainSwitching(chainSwitchingThreshold iotago.SlotIndex) (t }), c.HeaviestAttestedCandidate.WithNonEmptyValue(func(heaviestAttestedCandidate *Chain) (teardown func()) { - return heaviestAttestedCandidate.RequestBlocks.ToggleValue(true) + return heaviestAttestedCandidate.StartEngine.ToggleValue(true) }), c.HeaviestVerifiedCandidate.WithNonEmptyValue(func(heaviestVerifiedCandidate *Chain) (teardown func()) { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 3e6cc0c77..fc8f0a151 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -251,11 +251,11 @@ func (c *Commitment) deriveIsAboveLatestVerifiedCommitment(parent *Commitment) f } // deriveRequestAttestations derives the RequestAttestations flag of this Commitment which is true if our Chain is -// requesting attestations, and we are the directly above the latest attested Commitment. +// requesting attestations (while not having an engine), and we are the directly above the latest attested Commitment. func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) func() { - return c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, verifyAttestations bool, requestBlocks bool, parentIsAttested bool, isAttested bool) bool { - return verifyAttestations && !requestBlocks && parentIsAttested && !isAttested - }, chain.RequestAttestations, chain.RequestBlocks, parent.IsAttested, c.IsAttested)) + return c.RequestAttestations.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, startEngine bool, verifyAttestations bool, parentIsAttested bool, isAttested bool) bool { + return !startEngine && verifyAttestations && parentIsAttested && !isAttested + }, chain.StartEngine, chain.RequestAttestations, parent.IsAttested, c.IsAttested)) } // deriveWarpSyncBlocks derives the WarpSyncBlocks flag of this Commitment which is true if our Chain is requesting diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 0461970ee..09688e207 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -24,9 +24,9 @@ type Commitments struct { // protocol contains a reference to the Protocol instance that this component belongs to. protocol *Protocol - // commitmentPromises contains Promise instances for all non-evicted commitments that were accessed by the Protocol. + // cachedRequests contains Promise instances for all non-evicted commitments that were requested by the Protocol. // It acts as a cache and a way to address commitments generically even if they are still unsolid. - commitmentPromises *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] + cachedRequests *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *promise.Promise[*Commitment]] // Logger contains a reference to the logger that is used by this component. log.Logger @@ -35,15 +35,15 @@ type Commitments struct { // newCommitments creates a new commitments instance for the given protocol. func newCommitments(protocol *Protocol) *Commitments { c := &Commitments{ - Set: reactive.NewSet[*Commitment](), - Root: reactive.NewVariable[*Commitment](), - protocol: protocol, - commitmentPromises: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), + Set: reactive.NewSet[*Commitment](), + Root: reactive.NewVariable[*Commitment](), + protocol: protocol, + cachedRequests: shrinkingmap.New[iotago.CommitmentID, *promise.Promise[*Commitment]](), } shutdown := lo.Batch( - c.initLogger(protocol.NewChildLogger("Commitments")), - c.initEngineCommitmentSynchronization(protocol), + c.initLogger(), + c.initEngineCommitmentSynchronization(), ) protocol.Shutdown.OnTrigger(shutdown) @@ -51,115 +51,58 @@ func newCommitments(protocol *Protocol) *Commitments { return c } +// Get returns the Commitment for the given commitmentID. If the Commitment is not available yet, it will return an +// ErrorCommitmentNotFound. It is possible to trigger a request for the Commitment by passing true as the second +// argument. func (c *Commitments) Get(commitmentID iotago.CommitmentID, requestIfMissing ...bool) (commitment *Commitment, err error) { - commitmentRequest, exists := c.commitmentPromises.Get(commitmentID) + cachedRequest, exists := c.cachedRequests.Get(commitmentID) if !exists && lo.First(requestIfMissing) { - if commitmentRequest = c.Promise(commitmentID, true); commitmentRequest.WasRejected() { - return nil, ierrors.Wrapf(commitmentRequest.Err(), "failed to request commitment %s", commitmentID) + if cachedRequest = c.cachedRequest(commitmentID, true); cachedRequest.WasRejected() { + return nil, ierrors.Wrapf(cachedRequest.Err(), "failed to request commitment %s", commitmentID) } } - if commitmentRequest == nil || !commitmentRequest.WasCompleted() { + if cachedRequest == nil || !cachedRequest.WasCompleted() { return nil, ErrorCommitmentNotFound } - if commitmentRequest.WasRejected() { - return nil, commitmentRequest.Err() - } - - return commitmentRequest.Result(), nil + return cachedRequest.Result(), cachedRequest.Err() } -func (c *Commitments) Promise(commitmentID iotago.CommitmentID, requestIfMissing ...bool) (commitmentPromise *promise.Promise[*Commitment]) { - // handle evicted slots - slotEvicted := c.protocol.EvictionEvent(commitmentID.Index()) - if slotEvicted.WasTriggered() && c.protocol.LastEvictedSlot().Get() != 0 { - return promise.New[*Commitment]().Reject(ErrorSlotEvicted) - } - - // create a new promise or return the existing one - commitmentPromise, promiseCreated := c.commitmentPromises.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) - if !promiseCreated { - return commitmentPromise - } - - // start ticker if requested - if lo.First(requestIfMissing) { - c.LogDebug("requesting commitment", "commitmentID", commitmentID) - c.protocol.CommitmentsProtocol.StartTicker(commitmentPromise, commitmentID) - } else { - c.LogDebug("NOT requesting commitment", "commitmentID", commitmentID) - } - - // handle successful resolutions - commitmentPromise.OnSuccess(func(commitment *Commitment) { - c.initCommitment(commitment, slotEvicted) - }) - - // handle failed resolutions - commitmentPromise.OnError(func(err error) { - c.LogDebug("request failed", "commitmentID", commitmentID, "error", err) - }) - - // tear down the promise once the slot is evicted - slotEvicted.OnTrigger(func() { - c.commitmentPromises.Delete(commitmentID) - - commitmentPromise.Reject(ErrorSlotEvicted) - }) - - return commitmentPromise -} - -// Resolve publishes the given commitment model to the collection and returns the corresponding Commitment singleton -// that holds the metadata. -func (c *Commitments) Resolve(commitmentModel *model.Commitment) (publishedCommitment *Commitment, published bool, err error) { - // retrieve promise and abort if it was already rejected - commitmentPromise := c.Promise(commitmentModel.ID()) - if commitmentPromise.WasRejected() { - return nil, false, ierrors.Wrapf(commitmentPromise.Err(), "failed to request commitment %s", commitmentModel.ID()) - } - - // otherwise try to resolve it and determine if we were the goroutine that resolved it - publishedCommitment = newCommitment(c, commitmentModel) - commitmentPromise.Resolve(publishedCommitment).OnSuccess(func(resolvedCommitment *Commitment) { - if published = resolvedCommitment == publishedCommitment; !published { - publishedCommitment = resolvedCommitment - } - }) - - return publishedCommitment, published, nil -} - -func (c *Commitments) initLogger(logger log.Logger, shutdownLogger func()) (teardown func()) { - c.Logger = logger +// initLogger initializes the logger for this component. +func (c *Commitments) initLogger() (teardown func()) { + c.Logger, teardown = c.protocol.NewChildLogger("Commitments") return lo.Batch( c.Root.LogUpdates(c, log.LevelTrace, "Root", (*Commitment).LogName), - shutdownLogger, + teardown, ) } -func (c *Commitments) initEngineCommitmentSynchronization(protocol *Protocol) func() { - return protocol.Constructed.WithNonEmptyValue(func(_ bool) (teardown func()) { +// initEngineCommitmentSynchronization initializes the synchronization of commitments that are published by the engines. +func (c *Commitments) initEngineCommitmentSynchronization() func() { + return c.protocol.Constructed.WithNonEmptyValue(func(_ bool) (teardown func()) { return lo.Batch( - protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (teardown func()) { + // advance the root commitment of the main chain + c.protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (teardown func()) { return mainChain.WithInitializedEngine(func(mainEngine *engine.Engine) (teardown func()) { return c.publishRootCommitment(mainChain, mainEngine) }) }), - protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (teardown func()) { + // publish the commitments that are produced by the engines + c.protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (teardown func()) { return c.publishEngineCommitments(chain, engine) }), ) }) } +// publishRootCommitment publishes the root commitment of the main engine. func (c *Commitments) publishRootCommitment(mainChain *Chain, mainEngine *engine.Engine) func() { return mainEngine.RootCommitment.OnUpdate(func(_ *model.Commitment, newRootCommitmentModel *model.Commitment) { - newRootCommitment, published, err := c.Resolve(newRootCommitmentModel) + newRootCommitment, published, err := c.publishCommitmentModel(newRootCommitmentModel) if err != nil { c.LogError("failed to publish new root commitment", "id", newRootCommitmentModel.ID(), "error", err) @@ -178,23 +121,39 @@ func (c *Commitments) publishRootCommitment(mainChain *Chain, mainEngine *engine }) } +// publishEngineCommitments publishes the commitments of the given engine to its chain. func (c *Commitments) publishEngineCommitments(chain *Chain, engine *engine.Engine) (teardown func()) { + latestPublishedSlot := chain.LastCommonSlot() + return engine.LatestCommitment.OnUpdate(func(_ *model.Commitment, latestCommitment *model.Commitment) { - for latestPublishedSlot := chain.LastCommonSlot(); latestPublishedSlot < latestCommitment.Slot(); latestPublishedSlot++ { - modelToPublish, err := engine.Storage.Commitments().Load(latestPublishedSlot + 1) + loadModel := func(slot iotago.SlotIndex) (*model.Commitment, error) { + // prevent disk access if possible + if slot == latestCommitment.Slot() { + return latestCommitment, nil + } + + return engine.Storage.Commitments().Load(slot) + } + + for ; latestPublishedSlot < latestCommitment.Slot(); latestPublishedSlot++ { + // retrieve the model to publish + modelToPublish, err := loadModel(latestPublishedSlot + 1) if err != nil { c.LogError("failed to load commitment to publish from engine", "slot", latestPublishedSlot+1, "err", err) return } - publishedCommitment, _, err := c.Resolve(modelToPublish) + // publish the model + publishedCommitment, _, err := c.publishCommitmentModel(modelToPublish) if err != nil { c.LogError("failed to publish commitment from engine", "engine", engine.LogName(), "commitment", modelToPublish, "err", err) return } + // mark it as produced by ourselves and force it to be on the right chain (in case our chain produced a + // different commitment than the one we erroneously expected it to be - we always trust our engine most). publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) publishedCommitment.IsVerified.Set(true) publishedCommitment.forceChain(chain) @@ -202,11 +161,74 @@ func (c *Commitments) publishEngineCommitments(chain *Chain, engine *engine.Engi }) } +// publishCommitmentModel publishes the given commitment model as a Commitment instance. If the Commitment was already +// published, it will return the existing Commitment instance. Otherwise, it will create a new Commitment instance and +// resolve the Promise that was created for it. +func (c *Commitments) publishCommitmentModel(model *model.Commitment) (commitment *Commitment, published bool, err error) { + // retrieve promise and abort if it was already rejected + cachedRequest := c.cachedRequest(model.ID()) + if cachedRequest.WasRejected() { + return nil, false, ierrors.Wrapf(cachedRequest.Err(), "failed to request commitment %s", model.ID()) + } + + // otherwise try to provideCommitment it and determine if we were the goroutine that resolved it + commitment = newCommitment(c, model) + cachedRequest.Resolve(commitment).OnSuccess(func(resolvedCommitment *Commitment) { + if published = resolvedCommitment == commitment; !published { + commitment = resolvedCommitment + } + }) + + return commitment, published, nil +} + +// cachedRequest returns a singleton Promise for the given commitmentID. If the Promise does not exist yet, it will be +// created and optionally requested from the network if missing. Once the promise is resolved, the Commitment is +// initialized and provided to the consumers. +func (c *Commitments) cachedRequest(commitmentID iotago.CommitmentID, requestIfMissing ...bool) *promise.Promise[*Commitment] { + // handle evicted slots + slotEvicted := c.protocol.EvictionEvent(commitmentID.Index()) + if slotEvicted.WasTriggered() && c.protocol.LastEvictedSlot().Get() != 0 { + return promise.New[*Commitment]().Reject(ErrorSlotEvicted) + } + + // create a new promise or return the existing one + commitmentPromise, promiseCreated := c.cachedRequests.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) + if !promiseCreated { + return commitmentPromise + } + + // start ticker if requested + if lo.First(requestIfMissing) { + c.protocol.CommitmentsProtocol.StartTicker(commitmentPromise, commitmentID) + } + + // handle successful resolutions + commitmentPromise.OnSuccess(func(commitment *Commitment) { + c.initCommitment(commitment, slotEvicted) + }) + + // handle failed resolutions + commitmentPromise.OnError(func(err error) { + c.LogDebug("request failed", "commitmentID", commitmentID, "error", err) + }) + + // tear down the promise once the slot is evicted + slotEvicted.OnTrigger(func() { + c.cachedRequests.Delete(commitmentID) + + commitmentPromise.Reject(ErrorSlotEvicted) + }) + + return commitmentPromise +} + +// initCommitment initializes the given commitment. func (c *Commitments) initCommitment(commitment *Commitment, slotEvicted reactive.Event) { commitment.LogDebug("created", "id", commitment.ID()) // solidify the parent of the commitment - c.Promise(commitment.PreviousCommitmentID(), true).OnSuccess(func(parent *Commitment) { + c.cachedRequest(commitment.PreviousCommitmentID(), true).OnSuccess(func(parent *Commitment) { commitment.Parent.Set(parent) }) diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 81b2f0d64..1a6c028b3 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -209,9 +209,9 @@ func (e *Engines) syncMainEngineInfoFile() (unsubscribe func()) { func (e *Engines) injectEngineInstances() (unsubscribe func()) { return e.protocol.Chains.WithElements(func(chain *Chain) (teardown func()) { - return chain.RequestBlocks.OnUpdate(func(_ bool, instantiate bool) { + return chain.StartEngine.OnUpdate(func(_ bool, startEngine bool) { e.worker.Submit(func() { - if !instantiate { + if !startEngine { chain.Engine.Set(nil) return diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 6c9a60f33..3253db61b 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -62,7 +62,7 @@ func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { a.workerPool.Submit(func() { - commitment, _, err := a.protocol.Commitments.Resolve(commitmentModel) + commitment, _, err := a.protocol.Commitments.publishCommitmentModel(commitmentModel) if err != nil { a.LogDebug("failed to publish commitment when processing attestations", "commitmentID", commitmentModel.ID(), "peer", from, "error", err) diff --git a/pkg/protocol/protocol_commitments.go b/pkg/protocol/protocol_commitments.go index 7546ebe14..e78d49f6e 100644 --- a/pkg/protocol/protocol_commitments.go +++ b/pkg/protocol/protocol_commitments.go @@ -60,7 +60,7 @@ func (c *CommitmentsProtocol) SendResponse(commitment *Commitment, to peer.ID) { func (c *CommitmentsProtocol) ProcessResponse(commitmentModel *model.Commitment, from peer.ID) { c.workerPool.Submit(func() { - if commitment, published, err := c.protocol.Commitments.Resolve(commitmentModel); err != nil { + if commitment, published, err := c.protocol.Commitments.publishCommitmentModel(commitmentModel); err != nil { c.LogError("failed to process commitment", "fromPeer", from, "err", err) } else if published { c.LogTrace("received response", "commitment", commitment.LogName(), "fromPeer", from) From a108d77ef19febd12b7a35431ddeb75c3eb15322 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 27 Nov 2023 03:23:22 +0100 Subject: [PATCH 280/356] Refactor: extended comments --- pkg/protocol/commitments.go | 14 ++-- pkg/protocol/errors.go | 5 +- pkg/protocol/events.go | 5 ++ pkg/protocol/options.go | 106 ++++++++++++++++++++++----- pkg/protocol/protocol_commitments.go | 2 +- 5 files changed, 104 insertions(+), 28 deletions(-) diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 09688e207..bc806ddb3 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -193,23 +193,23 @@ func (c *Commitments) cachedRequest(commitmentID iotago.CommitmentID, requestIfM } // create a new promise or return the existing one - commitmentPromise, promiseCreated := c.cachedRequests.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) + cachedRequest, promiseCreated := c.cachedRequests.GetOrCreate(commitmentID, lo.NoVariadic(promise.New[*Commitment])) if !promiseCreated { - return commitmentPromise + return cachedRequest } // start ticker if requested if lo.First(requestIfMissing) { - c.protocol.CommitmentsProtocol.StartTicker(commitmentPromise, commitmentID) + c.protocol.CommitmentsProtocol.StartTicker(cachedRequest, commitmentID) } // handle successful resolutions - commitmentPromise.OnSuccess(func(commitment *Commitment) { + cachedRequest.OnSuccess(func(commitment *Commitment) { c.initCommitment(commitment, slotEvicted) }) // handle failed resolutions - commitmentPromise.OnError(func(err error) { + cachedRequest.OnError(func(err error) { c.LogDebug("request failed", "commitmentID", commitmentID, "error", err) }) @@ -217,10 +217,10 @@ func (c *Commitments) cachedRequest(commitmentID iotago.CommitmentID, requestIfM slotEvicted.OnTrigger(func() { c.cachedRequests.Delete(commitmentID) - commitmentPromise.Reject(ErrorSlotEvicted) + cachedRequest.Reject(ErrorSlotEvicted) }) - return commitmentPromise + return cachedRequest } // initCommitment initializes the given commitment. diff --git a/pkg/protocol/errors.go b/pkg/protocol/errors.go index 0c7191795..e534d02b8 100644 --- a/pkg/protocol/errors.go +++ b/pkg/protocol/errors.go @@ -5,6 +5,9 @@ import ( ) var ( + // ErrorCommitmentNotFound is returned for requests for commitments that are not available yet. ErrorCommitmentNotFound = ierrors.New("commitment not found") - ErrorSlotEvicted = ierrors.New("slot evicted") + + // ErrorSlotEvicted is returned for requests for commitments that belong to evicted slots. + ErrorSlotEvicted = ierrors.New("slot evicted") ) diff --git a/pkg/protocol/events.go b/pkg/protocol/events.go index 231c12aeb..098c143a7 100644 --- a/pkg/protocol/events.go +++ b/pkg/protocol/events.go @@ -2,10 +2,15 @@ package protocol import "github.com/iotaledger/iota-core/pkg/protocol/engine" +// Events exposes the Events of the main engine of the protocol at a single endpoint. +// +// TODO: It should be replaced with reactive calls to the corresponding events and be deleted but we can do this in a +// later PR (to minimize the code changes to review). type Events struct { Engine *engine.Events } +// NewEvents creates a new Events instance. func NewEvents() *Events { return &Events{ Engine: engine.NewEvents(), diff --git a/pkg/protocol/options.go b/pkg/protocol/options.go index f0fcfb74b..00e5de12f 100644 --- a/pkg/protocol/options.go +++ b/pkg/protocol/options.go @@ -1,6 +1,7 @@ package protocol import ( + "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/iota-core/pkg/protocol/engine" @@ -42,33 +43,79 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) +// Options contains the options for the Protocol. type Options struct { - BaseDirectory string - SnapshotPath string + // BaseDirectory is the directory where the protocol will store its data. + BaseDirectory string + + // SnapshotPath is the path to the snapshot file that should be used to initialize the protocol. + SnapshotPath string + + // ChainSwitchingThreshold is the threshold that defines how far away a heavier chain needs to be from its forking + // point to be considered for switching. ChainSwitchingThreshold iotago.SlotIndex - EngineOptions []options.Option[engine.Engine] + // EngineOptions contains the options for the Engines. + EngineOptions []options.Option[engine.Engine] + + // StorageOptions contains the options for the Storage. StorageOptions []options.Option[storage.Storage] - FilterProvider module.Provider[*engine.Engine, filter.Filter] - CommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] - BlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] - TipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] - TipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] - BookerProvider module.Provider[*engine.Engine, booker.Booker] - ClockProvider module.Provider[*engine.Engine, clock.Clock] - BlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] - SlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] - SybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] - NotarizationProvider module.Provider[*engine.Engine, notarization.Notarization] - AttestationProvider module.Provider[*engine.Engine, attestation.Attestations] - SyncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager] - LedgerProvider module.Provider[*engine.Engine, ledger.Ledger] - RetainerProvider module.Provider[*engine.Engine, retainer.Retainer] - SchedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] + CommitmentRequesterOptions []options.Option[eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID]] + + // FilterProvider contains the provider for the Filter engine modules. + FilterProvider module.Provider[*engine.Engine, filter.Filter] + + // CommitmentFilterProvider contains the provider for the CommitmentFilter engine modules. + CommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter] + + // BlockDAGProvider contains the provider for the BlockDAG engine modules. + BlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG] + + // TipManagerProvider contains the provider for the TipManager engine modules. + TipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager] + + // TipSelectionProvider contains the provider for the TipSelection engine modules. + TipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection] + + // BookerProvider contains the provider for the Booker engine modules. + BookerProvider module.Provider[*engine.Engine, booker.Booker] + + // ClockProvider contains the provider for the Clock engine modules. + ClockProvider module.Provider[*engine.Engine, clock.Clock] + + // BlockGadgetProvider contains the provider for the BlockGadget engine modules. + BlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget] + + // SlotGadgetProvider contains the provider for the SlotGadget engine modules. + SlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget] + + // SybilProtectionProvider contains the provider for the SybilProtection engine modules. + SybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection] + + // NotarizationProvider contains the provider for the Notarization engine modules. + NotarizationProvider module.Provider[*engine.Engine, notarization.Notarization] + + // AttestationProvider contains the provider for the Attestation engine modules. + AttestationProvider module.Provider[*engine.Engine, attestation.Attestations] + + // SyncManagerProvider contains the provider for the SyncManager engine modules. + SyncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager] + + // LedgerProvider contains the provider for the Ledger engine modules. + LedgerProvider module.Provider[*engine.Engine, ledger.Ledger] + + // RetainerProvider contains the provider for the Retainer engine modules. + RetainerProvider module.Provider[*engine.Engine, retainer.Retainer] + + // SchedulerProvider contains the provider for the Scheduler engine modules. + SchedulerProvider module.Provider[*engine.Engine, scheduler.Scheduler] + + // UpgradeOrchestratorProvider contains the provider for the UpgradeOrchestrator engine modules. UpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator] } +// NewDefaultOptions creates new default options instance for the Protocol. func NewDefaultOptions() *Options { return &Options{ BaseDirectory: "", @@ -94,126 +141,147 @@ func NewDefaultOptions() *Options { } } +// WithBaseDirectory is an option for the Protocol that allows to set the base directory. func WithBaseDirectory(baseDirectory string) options.Option[Protocol] { return func(p *Protocol) { p.Options.BaseDirectory = baseDirectory } } +// WithSnapshotPath is an option for the Protocol that allows to set the snapshot path. func WithSnapshotPath(snapshot string) options.Option[Protocol] { return func(p *Protocol) { p.Options.SnapshotPath = snapshot } } +// WithChainSwitchingThreshold is an option for the Protocol that allows to set the chain switching threshold. func WithChainSwitchingThreshold(threshold iotago.SlotIndex) options.Option[Protocol] { return func(p *Protocol) { p.Options.ChainSwitchingThreshold = threshold } } +// WithFilterProvider is an option for the Protocol that allows to set the FilterProvider. func WithFilterProvider(optsFilterProvider module.Provider[*engine.Engine, filter.Filter]) options.Option[Protocol] { return func(p *Protocol) { p.Options.FilterProvider = optsFilterProvider } } +// WithCommitmentFilterProvider is an option for the Protocol that allows to set the CommitmentFilterProvider. func WithCommitmentFilterProvider(optsCommitmentFilterProvider module.Provider[*engine.Engine, commitmentfilter.CommitmentFilter]) options.Option[Protocol] { return func(p *Protocol) { p.Options.CommitmentFilterProvider = optsCommitmentFilterProvider } } +// WithBlockDAGProvider is an option for the Protocol that allows to set the BlockDAGProvider. func WithBlockDAGProvider(optsBlockDAGProvider module.Provider[*engine.Engine, blockdag.BlockDAG]) options.Option[Protocol] { return func(p *Protocol) { p.Options.BlockDAGProvider = optsBlockDAGProvider } } +// WithTipManagerProvider is an option for the Protocol that allows to set the TipManagerProvider. func WithTipManagerProvider(optsTipManagerProvider module.Provider[*engine.Engine, tipmanager.TipManager]) options.Option[Protocol] { return func(p *Protocol) { p.Options.TipManagerProvider = optsTipManagerProvider } } +// WithTipSelectionProvider is an option for the Protocol that allows to set the TipSelectionProvider. func WithTipSelectionProvider(optsTipSelectionProvider module.Provider[*engine.Engine, tipselection.TipSelection]) options.Option[Protocol] { return func(p *Protocol) { p.Options.TipSelectionProvider = optsTipSelectionProvider } } +// WithBookerProvider is an option for the Protocol that allows to set the BookerProvider. func WithBookerProvider(optsBookerProvider module.Provider[*engine.Engine, booker.Booker]) options.Option[Protocol] { return func(p *Protocol) { p.Options.BookerProvider = optsBookerProvider } } +// WithClockProvider is an option for the Protocol that allows to set the ClockProvider. func WithClockProvider(optsClockProvider module.Provider[*engine.Engine, clock.Clock]) options.Option[Protocol] { return func(p *Protocol) { p.Options.ClockProvider = optsClockProvider } } +// WithSybilProtectionProvider is an option for the Protocol that allows to set the SybilProtectionProvider. func WithSybilProtectionProvider(optsSybilProtectionProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection]) options.Option[Protocol] { return func(p *Protocol) { p.Options.SybilProtectionProvider = optsSybilProtectionProvider } } +// WithBlockGadgetProvider is an option for the Protocol that allows to set the BlockGadgetProvider. func WithBlockGadgetProvider(optsBlockGadgetProvider module.Provider[*engine.Engine, blockgadget.Gadget]) options.Option[Protocol] { return func(p *Protocol) { p.Options.BlockGadgetProvider = optsBlockGadgetProvider } } +// WithSlotGadgetProvider is an option for the Protocol that allows to set the SlotGadgetProvider. func WithSlotGadgetProvider(optsSlotGadgetProvider module.Provider[*engine.Engine, slotgadget.Gadget]) options.Option[Protocol] { return func(p *Protocol) { p.Options.SlotGadgetProvider = optsSlotGadgetProvider } } +// WithEpochGadgetProvider is an option for the Protocol that allows to set the EpochGadgetProvider. func WithEpochGadgetProvider(optsEpochGadgetProvider module.Provider[*engine.Engine, sybilprotection.SybilProtection]) options.Option[Protocol] { return func(p *Protocol) { p.Options.SybilProtectionProvider = optsEpochGadgetProvider } } +// WithNotarizationProvider is an option for the Protocol that allows to set the NotarizationProvider. func WithNotarizationProvider(optsNotarizationProvider module.Provider[*engine.Engine, notarization.Notarization]) options.Option[Protocol] { return func(p *Protocol) { p.Options.NotarizationProvider = optsNotarizationProvider } } +// WithAttestationProvider is an option for the Protocol that allows to set the AttestationProvider. func WithAttestationProvider(optsAttestationProvider module.Provider[*engine.Engine, attestation.Attestations]) options.Option[Protocol] { return func(p *Protocol) { p.Options.AttestationProvider = optsAttestationProvider } } +// WithLedgerProvider is an option for the Protocol that allows to set the LedgerProvider. func WithLedgerProvider(optsLedgerProvider module.Provider[*engine.Engine, ledger.Ledger]) options.Option[Protocol] { return func(p *Protocol) { p.Options.LedgerProvider = optsLedgerProvider } } +// WithUpgradeOrchestratorProvider is an option for the Protocol that allows to set the UpgradeOrchestratorProvider. func WithUpgradeOrchestratorProvider(optsUpgradeOrchestratorProvider module.Provider[*engine.Engine, upgrade.Orchestrator]) options.Option[Protocol] { return func(p *Protocol) { p.Options.UpgradeOrchestratorProvider = optsUpgradeOrchestratorProvider } } +// WithSyncManagerProvider is an option for the Protocol that allows to set the SyncManagerProvider. func WithSyncManagerProvider(optsSyncManagerProvider module.Provider[*engine.Engine, syncmanager.SyncManager]) options.Option[Protocol] { return func(p *Protocol) { p.Options.SyncManagerProvider = optsSyncManagerProvider } } +// WithEngineOptions is an option for the Protocol that allows to set the EngineOptions. func WithEngineOptions(opts ...options.Option[engine.Engine]) options.Option[Protocol] { return func(p *Protocol) { p.Options.EngineOptions = append(p.Options.EngineOptions, opts...) } } +// WithStorageOptions is an option for the Protocol that allows to set the StorageOptions. func WithStorageOptions(opts ...options.Option[storage.Storage]) options.Option[Protocol] { return func(p *Protocol) { p.Options.StorageOptions = append(p.Options.StorageOptions, opts...) diff --git a/pkg/protocol/protocol_commitments.go b/pkg/protocol/protocol_commitments.go index e78d49f6e..8a4083b76 100644 --- a/pkg/protocol/protocol_commitments.go +++ b/pkg/protocol/protocol_commitments.go @@ -26,7 +26,7 @@ func NewCommitmentsProtocol(protocol *Protocol) *CommitmentsProtocol { Logger: lo.Return1(protocol.Logger.NewChildLogger("Commitments")), protocol: protocol, workerPool: protocol.Workers.CreatePool("Commitments"), - ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](protocol.Options.CommitmentRequesterOptions...), } c.ticker.Events.Tick.Hook(c.SendRequest) From 22a5fcae898f56b148b37c08f8fd217f00ed2048 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 27 Nov 2023 05:38:17 +0100 Subject: [PATCH 281/356] Feat: cleaned up protocol.go, options.go, events.go, errors.go --- pkg/protocol/chains.go | 7 + pkg/protocol/engines.go | 2 +- pkg/protocol/protocol.go | 178 ++++++++++++++++---------- pkg/protocol/protocol_attestations.go | 2 +- pkg/protocol/protocol_blocks.go | 2 +- pkg/protocol/protocol_commitments.go | 2 +- pkg/protocol/protocol_warp_sync.go | 2 +- 7 files changed, 125 insertions(+), 70 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 80e2c5c63..37dbe7848 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -1,6 +1,8 @@ package protocol import ( + "cmp" + "github.com/libp2p/go-libp2p/core/peer" "github.com/iotaledger/hive.go/ds/reactive" @@ -171,3 +173,8 @@ func (c *Chains) newChain() *Chain { return chain } + +// increasing is a generic function that returns the maximum of the two given values. +func increasing[T cmp.Ordered](currentValue T, newValue T) T { + return max(currentValue, newValue) +} diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 1a6c028b3..622b6f0ab 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -31,7 +31,7 @@ type Engines struct { *module.ReactiveModule } -func NewEngines(protocol *Protocol) *Engines { +func newEngines(protocol *Protocol) *Engines { e := &Engines{ Main: reactive.NewVariable[*engine.Engine](), ReactiveModule: protocol.NewReactiveSubModule("Engines"), diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index aa83bbe50..f753a754f 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -1,7 +1,6 @@ package protocol import ( - "cmp" "context" "sync" "time" @@ -22,25 +21,50 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) -// Protocol implements the meta-protocol that is responsible for syncing with the heaviest chain. +// Protocol is an implementation of the IOTA core protocol. type Protocol struct { - Events *Events - Workers *workerpool.Group - Network *core.Protocol - Commitments *Commitments - Chains *Chains - BlocksProtocol *BlocksProtocol - CommitmentsProtocol *CommitmentsProtocol + // Events contains a centralized access point for all events that are triggered by the main engine of the protocol. + Events *Events + + // Workers contains the worker pools that are used by the protocol. + Workers *workerpool.Group + + // Network contains the network endpoint of the protocol. + Network *core.Protocol + + // Commitments contains the commitments that are managed by the protocol. + Commitments *Commitments + + // Chains contains the chains that are managed by the protocol. + Chains *Chains + + // BlocksProtocol contains the subcomponent that is responsible for handling block requests and responses. + BlocksProtocol *BlocksProtocol + + // CommitmentsProtocol contains the subcomponent that is responsible for handling commitment requests and responses. + CommitmentsProtocol *CommitmentsProtocol + + // AttestationsProtocol contains the subcomponent that is responsible for handling attestation requests and + // responses. AttestationsProtocol *AttestationsProtocol - WarpSyncProtocol *WarpSyncProtocol - Engines *Engines - Options *Options + // WarpSyncProtocol contains the subcomponent that is responsible for handling warp sync requests and responses. + WarpSyncProtocol *WarpSyncProtocol + + // Engines contains the engines that are managed by the protocol. + Engines *Engines + + // Options contains the options that were used to create the protocol. + Options *Options + + // EvictionState contains the eviction state of the protocol. reactive.EvictionState[iotago.SlotIndex] + + // ReactiveModule embeds the reactive module logic of the protocol. *module.ReactiveModule } -// New creates a new protocol instance. +// New creates a new protocol instance from the given parameters. func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.Endpoint, opts ...options.Option[Protocol]) *Protocol { return options.Apply(&Protocol{ Events: NewEvents(), @@ -49,63 +73,23 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E ReactiveModule: module.NewReactiveModule(logger), EvictionState: reactive.NewEvictionState[iotago.SlotIndex](), }, opts, func(p *Protocol) { - p.Network = core.NewProtocol(networkEndpoint, workers.CreatePool("NetworkProtocol"), p) - p.BlocksProtocol = NewBlocksProtocol(p) - p.CommitmentsProtocol = NewCommitmentsProtocol(p) - p.AttestationsProtocol = NewAttestationsProtocol(p) - p.WarpSyncProtocol = NewWarpSyncProtocol(p) - p.Commitments = newCommitments(p) - p.Chains = newChains(p) - p.Engines = NewEngines(p) - - p.Commitments.Root.OnUpdate(func(_ *Commitment, rootCommitment *Commitment) { - // TODO: DECIDE ON DATA AVAILABILITY TIMESPAN / EVICTION STRATEGY - //p.Evict(rootCommitment.Slot() - 1) - }) - - stopEvents := p.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (teardown func()) { - p.Events.Engine.LinkTo(mainEngine.Events) - - return func() { - p.Events.Engine.LinkTo(nil) - } - }) + shutdownSubComponents := p.initSubcomponents(networkEndpoint) p.Initialized.OnTrigger(func() { - unsubscribeFromNetwork := lo.Batch( - p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), - p.Network.OnBlockReceived(p.BlocksProtocol.ProcessResponse), - p.Network.OnBlockRequestReceived(p.BlocksProtocol.ProcessRequest), - p.Network.OnCommitmentReceived(p.CommitmentsProtocol.ProcessResponse), - p.Network.OnCommitmentRequestReceived(p.CommitmentsProtocol.ProcessRequest), - p.Network.OnAttestationsReceived(p.AttestationsProtocol.ProcessResponse), - p.Network.OnAttestationsRequestReceived(p.AttestationsProtocol.ProcessRequest), - p.Network.OnWarpSyncResponseReceived(p.WarpSyncProtocol.ProcessResponse), - p.Network.OnWarpSyncRequestReceived(p.WarpSyncProtocol.ProcessRequest), + shutdown := lo.Batch( + p.initEviction(), + p.initGlobalEventsRedirection(), + p.initNetwork(), + + shutdownSubComponents, ) - p.Shutdown.OnTrigger(func() { - stopEvents() - unsubscribeFromNetwork() - - p.BlocksProtocol.Shutdown() - p.CommitmentsProtocol.Shutdown() - p.AttestationsProtocol.Shutdown() - p.WarpSyncProtocol.Shutdown() - p.Network.Shutdown() - p.Engines.Shutdown.Trigger() - }) + p.Shutdown.OnTrigger(shutdown) }) p.Constructed.Trigger() - // wait for the main engine to be initialized - var waitInitialized sync.WaitGroup - waitInitialized.Add(1) - p.Engines.Main.OnUpdateOnce(func(_ *engine.Engine, engine *engine.Engine) { - engine.Initialized.OnTrigger(waitInitialized.Done) - }) - waitInitialized.Wait() + p.waitMainEngineInitialized() }) } @@ -123,7 +107,6 @@ func (p *Protocol) Run(ctx context.Context) error { <-ctx.Done() p.Shutdown.Trigger() - p.Workers.Shutdown() p.Stopped.Trigger() return ctx.Err() @@ -163,6 +146,71 @@ func (p *Protocol) LatestAPI() iotago.API { return p.Engines.Main.Get().LatestAPI() } -func increasing[T cmp.Ordered](currentValue T, newValue T) T { - return max(currentValue, newValue) +// initSubcomponents initializes the subcomponents of the protocol and returns a function that shuts them down. +func (p *Protocol) initSubcomponents(networkEndpoint network.Endpoint) (shutdown func()) { + p.Network = core.NewProtocol(networkEndpoint, p.Workers.CreatePool("NetworkProtocol"), p) + p.BlocksProtocol = newBlocksProtocol(p) + p.CommitmentsProtocol = newCommitmentsProtocol(p) + p.AttestationsProtocol = newAttestationsProtocol(p) + p.WarpSyncProtocol = newWarpSyncProtocol(p) + p.Commitments = newCommitments(p) + p.Chains = newChains(p) + p.Engines = newEngines(p) + + return func() { + p.BlocksProtocol.Shutdown() + p.CommitmentsProtocol.Shutdown() + p.AttestationsProtocol.Shutdown() + p.WarpSyncProtocol.Shutdown() + p.Network.Shutdown() + p.Workers.Shutdown() + p.Engines.Shutdown.Trigger() + } +} + +// initEviction initializes the eviction of old data when the engine advances and returns a function that shuts it down. +func (p *Protocol) initEviction() (shutdown func()) { + return p.Commitments.Root.OnUpdate(func(_ *Commitment, rootCommitment *Commitment) { + // TODO: DECIDE ON DATA AVAILABILITY TIMESPAN / EVICTION STRATEGY + // p.Evict(rootCommitment.Slot() - 1) + }) +} + +// initGlobalEventsRedirection initializes the global events redirection of the protocol and returns a function that +// shuts it down. +func (p *Protocol) initGlobalEventsRedirection() (shutdown func()) { + return p.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (shutdown func()) { + p.Events.Engine.LinkTo(mainEngine.Events) + + return func() { + p.Events.Engine.LinkTo(nil) + } + }) +} + +// initNetwork initializes the network of the protocol and returns a function that shuts it down. +func (p *Protocol) initNetwork() (shutdown func()) { + return lo.Batch( + p.Network.OnError(func(err error, peer peer.ID) { p.LogError("network error", "peer", peer, "error", err) }), + p.Network.OnBlockReceived(p.BlocksProtocol.ProcessResponse), + p.Network.OnBlockRequestReceived(p.BlocksProtocol.ProcessRequest), + p.Network.OnCommitmentReceived(p.CommitmentsProtocol.ProcessResponse), + p.Network.OnCommitmentRequestReceived(p.CommitmentsProtocol.ProcessRequest), + p.Network.OnAttestationsReceived(p.AttestationsProtocol.ProcessResponse), + p.Network.OnAttestationsRequestReceived(p.AttestationsProtocol.ProcessRequest), + p.Network.OnWarpSyncResponseReceived(p.WarpSyncProtocol.ProcessResponse), + p.Network.OnWarpSyncRequestReceived(p.WarpSyncProtocol.ProcessRequest), + ) +} + +// waitMainEngineInitialized waits until the main engine is initialized. +func (p *Protocol) waitMainEngineInitialized() { + var waitInitialized sync.WaitGroup + + waitInitialized.Add(1) + p.Engines.Main.OnUpdateOnce(func(_ *engine.Engine, engine *engine.Engine) { + engine.Initialized.OnTrigger(waitInitialized.Done) + }) + + waitInitialized.Wait() } diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 3253db61b..a76a22597 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -24,7 +24,7 @@ type AttestationsProtocol struct { log.Logger } -func NewAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { +func newAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { a := &AttestationsProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("Attestations")), protocol: protocol, diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 7f7eeb6e6..db9e276ba 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -23,7 +23,7 @@ type BlocksProtocol struct { log.Logger } -func NewBlocksProtocol(protocol *Protocol) *BlocksProtocol { +func newBlocksProtocol(protocol *Protocol) *BlocksProtocol { b := &BlocksProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("Blocks")), protocol: protocol, diff --git a/pkg/protocol/protocol_commitments.go b/pkg/protocol/protocol_commitments.go index 8a4083b76..66fd1aa9a 100644 --- a/pkg/protocol/protocol_commitments.go +++ b/pkg/protocol/protocol_commitments.go @@ -21,7 +21,7 @@ type CommitmentsProtocol struct { log.Logger } -func NewCommitmentsProtocol(protocol *Protocol) *CommitmentsProtocol { +func newCommitmentsProtocol(protocol *Protocol) *CommitmentsProtocol { c := &CommitmentsProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("Commitments")), protocol: protocol, diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 25e9074ce..40f75d8a2 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -25,7 +25,7 @@ type WarpSyncProtocol struct { log.Logger } -func NewWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { +func newWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { c := &WarpSyncProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("WarpSync")), protocol: protocol, From ec1b453e75f499fb1f3587b434e1be3ed71837fd Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 27 Nov 2023 06:24:04 +0100 Subject: [PATCH 282/356] Feat: DONE? --- pkg/protocol/commitment_verifier.go | 11 ++++++-- pkg/protocol/engines.go | 36 +++++++++++++++++++++------ pkg/protocol/protocol_attestations.go | 24 +++++++++++++++--- pkg/protocol/protocol_blocks.go | 18 ++++++++++++-- pkg/protocol/protocol_commitments.go | 19 ++++++++++++-- pkg/protocol/protocol_warp_sync.go | 17 +++++++++++-- 6 files changed, 105 insertions(+), 20 deletions(-) diff --git a/pkg/protocol/commitment_verifier.go b/pkg/protocol/commitment_verifier.go index eb1015f15..d5c93f1ae 100644 --- a/pkg/protocol/commitment_verifier.go +++ b/pkg/protocol/commitment_verifier.go @@ -13,12 +13,17 @@ import ( "github.com/iotaledger/iota.go/v4/merklehasher" ) +// CommitmentVerifier is a helper to verify the attestations of a commitment. type CommitmentVerifier struct { - engine *engine.Engine + // engine contains a reference to the engine instance that is used to verify the attestations. + engine *engine.Engine + + // validatorAccountsAtFork contains the accounts of the validators at the forking point. validatorAccountsAtFork map[iotago.AccountID]*accounts.AccountData } -func NewCommitmentVerifier(mainEngine *engine.Engine, lastCommonCommitmentBeforeFork *model.Commitment) (*CommitmentVerifier, error) { +// newCommitmentVerifier creates a new CommitmentVerifier instance. +func newCommitmentVerifier(mainEngine *engine.Engine, lastCommonCommitmentBeforeFork *model.Commitment) (*CommitmentVerifier, error) { committeeAtForkingPoint, exists := mainEngine.SybilProtection.SeatManager().CommitteeInSlot(lastCommonCommitmentBeforeFork.Slot()) if !exists { return nil, ierrors.Errorf("committee in slot %d does not exist", lastCommonCommitmentBeforeFork.Slot()) @@ -36,6 +41,7 @@ func NewCommitmentVerifier(mainEngine *engine.Engine, lastCommonCommitmentBefore }, nil } +// verifyCommitment verifies the given commitment and returns the blockIDs and cumulative weight of the attestations. func (c *CommitmentVerifier) verifyCommitment(commitment *Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier]) (blockIDsFromAttestations iotago.BlockIDs, cumulativeWeight uint64, err error) { tree := ads.NewMap[iotago.Identifier](mapdb.NewMapDB(), iotago.Identifier.Bytes, iotago.IdentifierFromBytes, iotago.AccountID.Bytes, iotago.AccountIDFromBytes, (*iotago.Attestation).Bytes, iotago.AttestationFromBytes(c.engine)) @@ -61,6 +67,7 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *Commitment, attestatio return blockIDs, seatCount, nil } +// verifyAttestations verifies the given attestations and returns the blockIDs and cumulative weight of the attestations. func (c *CommitmentVerifier) verifyAttestations(attestations []*iotago.Attestation) (iotago.BlockIDs, uint64, error) { visitedIdentities := ds.NewSet[iotago.AccountID]() var blockIDs iotago.BlockIDs diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 622b6f0ab..c27a8555b 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -21,16 +21,25 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) +// Engines is a subcomponent of the protocol that exposes the engines that are managed by the protocol. type Engines struct { + // Main contains the main engine. Main reactive.Variable[*engine.Engine] - protocol *Protocol - worker *workerpool.WorkerPool + // protocol contains a reference to the Protocol instance that this component belongs to. + protocol *Protocol + + // worker contains the worker pool that is used to process changes to the engine instances asynchronously. + worker *workerpool.WorkerPool + + // directory contains the directory that is used to store the engine instances on disk. directory *utils.Directory + // ReactiveModule embeds a reactive module that provides default API for logging and lifecycle management. *module.ReactiveModule } +// newEngines creates a new Engines instance. func newEngines(protocol *Protocol) *Engines { e := &Engines{ Main: reactive.NewVariable[*engine.Engine](), @@ -41,15 +50,14 @@ func newEngines(protocol *Protocol) *Engines { } protocol.Constructed.OnTrigger(func() { - unsubscribe := lo.Batch( + shutdown := lo.Batch( e.syncMainEngineFromMainChain(), e.syncMainEngineInfoFile(), e.injectEngineInstances(), ) e.Shutdown.OnTrigger(func() { - unsubscribe() - + shutdown() e.worker.Shutdown().ShutdownComplete.Wait() e.Stopped.Trigger() @@ -63,6 +71,7 @@ func newEngines(protocol *Protocol) *Engines { return e } +// LoadMainEngine loads the main engine from disk or creates a new one if no engine exists. func (e *Engines) LoadMainEngine(snapshotPath string) (*engine.Engine, error) { info := &engineInfo{} if err := ioutils.ReadJSONFromFile(e.infoFilePath(), info); err != nil && !ierrors.Is(err, os.ErrNotExist) { @@ -93,6 +102,7 @@ func (e *Engines) LoadMainEngine(snapshotPath string) (*engine.Engine, error) { return e.Main.Get(), nil } +// ForkAtSlot creates a new engine instance that forks from the main engine at the given slot. func (e *Engines) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error) { newEngineAlias := lo.PanicOnErr(uuid.NewUUID()).String() errorHandler := func(err error) { @@ -152,6 +162,7 @@ func (e *Engines) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error) { return candidateEngine, nil } +// CleanupCandidates removes all engine instances that are not the main engine. func (e *Engines) CleanupCandidates() error { activeDir := filepath.Base(e.Main.Get().Storage.Directory()) @@ -171,10 +182,12 @@ func (e *Engines) CleanupCandidates() error { return nil } +// infoFilePath returns the path to the engine info file. func (e *Engines) infoFilePath() string { return e.directory.Path(engineInfoFile) } +// loadEngineInstanceFromSnapshot loads an engine instance from a snapshot. func (e *Engines) loadEngineInstanceFromSnapshot(engineAlias string, snapshotPath string) *engine.Engine { errorHandler := func(err error) { e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) @@ -185,11 +198,13 @@ func (e *Engines) loadEngineInstanceFromSnapshot(engineAlias string, snapshotPat return e.loadEngineInstanceWithStorage(engineAlias, storage.Create(e.directory.Path(engineAlias), DatabaseVersion, errorHandler, e.protocol.Options.StorageOptions...)) } +// loadEngineInstanceWithStorage loads an engine instance with the given storage. func (e *Engines) loadEngineInstanceWithStorage(engineAlias string, storage *storage.Storage) *engine.Engine { return engine.New(e.protocol.Logger, e.protocol.Workers.CreateGroup(engineAlias), storage, e.protocol.Options.FilterProvider, e.protocol.Options.CommitmentFilterProvider, e.protocol.Options.BlockDAGProvider, e.protocol.Options.BookerProvider, e.protocol.Options.ClockProvider, e.protocol.Options.BlockGadgetProvider, e.protocol.Options.SlotGadgetProvider, e.protocol.Options.SybilProtectionProvider, e.protocol.Options.NotarizationProvider, e.protocol.Options.AttestationProvider, e.protocol.Options.LedgerProvider, e.protocol.Options.SchedulerProvider, e.protocol.Options.TipManagerProvider, e.protocol.Options.TipSelectionProvider, e.protocol.Options.RetainerProvider, e.protocol.Options.UpgradeOrchestratorProvider, e.protocol.Options.SyncManagerProvider, e.protocol.Options.EngineOptions...) } -func (e *Engines) syncMainEngineFromMainChain() (unsubscribe func()) { +// syncMainEngineFromMainChain syncs the main engine from the main chain. +func (e *Engines) syncMainEngineFromMainChain() (shutdown func()) { return e.protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (teardown func()) { return e.Main.DeriveValueFrom(reactive.NewDerivedVariable(func(currentMainEngine *engine.Engine, newMainEngine *engine.Engine) *engine.Engine { return lo.Cond(newMainEngine == nil, currentMainEngine, newMainEngine) @@ -197,7 +212,8 @@ func (e *Engines) syncMainEngineFromMainChain() (unsubscribe func()) { }) } -func (e *Engines) syncMainEngineInfoFile() (unsubscribe func()) { +// syncMainEngineInfoFile syncs the engine info file with the main engine. +func (e *Engines) syncMainEngineInfoFile() (shutdown func()) { return e.Main.OnUpdate(func(_ *engine.Engine, mainEngine *engine.Engine) { if mainEngine != nil { if err := ioutils.WriteJSONToFile(e.infoFilePath(), &engineInfo{Name: filepath.Base(mainEngine.Storage.Directory())}, 0o644); err != nil { @@ -207,7 +223,8 @@ func (e *Engines) syncMainEngineInfoFile() (unsubscribe func()) { }) } -func (e *Engines) injectEngineInstances() (unsubscribe func()) { +// injectEngineInstances injects engine instances into the chains (when requested). +func (e *Engines) injectEngineInstances() (shutdown func()) { return e.protocol.Chains.WithElements(func(chain *Chain) (teardown func()) { return chain.StartEngine.OnUpdate(func(_ bool, startEngine bool) { e.worker.Submit(func() { @@ -235,8 +252,11 @@ func (e *Engines) injectEngineInstances() (unsubscribe func()) { }) } +// engineInfoFile is the name of the engine info file. const engineInfoFile = "info" +// engineInfo is the structure of the engine info file. type engineInfo struct { + // Name contains the name of the engine. Name string `json:"name"` } diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index a76a22597..b41b08afc 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -15,15 +15,26 @@ import ( "github.com/iotaledger/iota.go/v4/merklehasher" ) +// AttestationsProtocol is a subcomponent of the protocol that is responsible for handling attestation requests and +// responses. type AttestationsProtocol struct { - protocol *Protocol - workerPool *workerpool.WorkerPool - ticker *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + // protocol contains a reference to the Protocol instance that this component belongs to. + protocol *Protocol + + // workerPool contains the worker pool that is used to process attestation requests and responses asynchronously. + workerPool *workerpool.WorkerPool + + // ticker contains the ticker that is used to send attestation requests. + ticker *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + + // commitmentVerifiers contains the commitment verifiers that are used to verify received attestations. commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] + // Logger embeds a logger that can be used to log messages emitted by this chain. log.Logger } +// newAttestationsProtocol creates a new attestation protocol instance for the given protocol. func newAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { a := &AttestationsProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("Attestations")), @@ -60,6 +71,7 @@ func newAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { return a } +// ProcessResponse processes the given attestation response. func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment, attestations []*iotago.Attestation, merkleProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { a.workerPool.Submit(func() { commitment, _, err := a.protocol.Commitments.publishCommitmentModel(commitmentModel) @@ -108,6 +120,7 @@ func (a *AttestationsProtocol) ProcessResponse(commitmentModel *model.Commitment }) } +// ProcessRequest processes the given attestation request. func (a *AttestationsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { a.workerPool.Submit(func() { commitment, err := a.protocol.Commitments.Get(commitmentID, false) @@ -191,11 +204,13 @@ func (a *AttestationsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, }) } +// Shutdown shuts down the attestation protocol. func (a *AttestationsProtocol) Shutdown() { a.ticker.Shutdown() a.workerPool.Shutdown().ShutdownComplete.Wait() } +// setupCommitmentVerifier sets up the commitment verifier for the given chain. func (a *AttestationsProtocol) setupCommitmentVerifier(chain *Chain) (teardown func()) { forkingPoint := chain.ForkingPoint.Get() if forkingPoint == nil { @@ -218,7 +233,7 @@ func (a *AttestationsProtocol) setupCommitmentVerifier(chain *Chain) (teardown f } a.commitmentVerifiers.GetOrCreate(forkingPoint.ID(), func() (commitmentVerifier *CommitmentVerifier) { - commitmentVerifier, err := NewCommitmentVerifier(forkingPoint.Chain.Get().LatestEngine(), parentOfForkingPoint.Commitment) + commitmentVerifier, err := newCommitmentVerifier(forkingPoint.Chain.Get().LatestEngine(), parentOfForkingPoint.Commitment) if err != nil { a.LogError("failed to create commitment verifier", "chain", chain.LogName(), "error", err) } @@ -231,6 +246,7 @@ func (a *AttestationsProtocol) setupCommitmentVerifier(chain *Chain) (teardown f } } +// sendRequest sends an attestation request for the given commitment ID. func (a *AttestationsProtocol) sendRequest(commitmentID iotago.CommitmentID) { a.workerPool.Submit(func() { if commitment, err := a.protocol.Commitments.Get(commitmentID, false); err == nil { diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index db9e276ba..b6fcb3489 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -15,14 +15,23 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) +// BlocksProtocol is a subcomponent of the protocol that is responsible for handling block requests and responses. type BlocksProtocol struct { - protocol *Protocol - workerPool *workerpool.WorkerPool + // protocol contains a reference to the Protocol instance that this component belongs to. + protocol *Protocol + + // workerPool contains the worker pool that is used to process block requests and responses asynchronously. + workerPool *workerpool.WorkerPool + + // droppedBlocksBuffer contains a buffer for dropped blocks that reference unsolid commitments that can be replayed + // at a later point in time (to make tests more reliable as we have no continuous activity). droppedBlocksBuffer *buffer.UnsolidCommitmentBuffer[*types.Tuple[*model.Block, peer.ID]] + // Logger embeds a logger that can be used to log messages emitted by this chain. log.Logger } +// newBlocksProtocol creates a new blocks protocol instance for the given protocol. func newBlocksProtocol(protocol *Protocol) *BlocksProtocol { b := &BlocksProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("Blocks")), @@ -65,6 +74,7 @@ func newBlocksProtocol(protocol *Protocol) *BlocksProtocol { return b } +// SendRequest sends a request for the given block to all peers. func (b *BlocksProtocol) SendRequest(blockID iotago.BlockID) { b.workerPool.Submit(func() { b.protocol.Network.RequestBlock(blockID) @@ -73,6 +83,7 @@ func (b *BlocksProtocol) SendRequest(blockID iotago.BlockID) { }) } +// SendResponse sends the given block to all peers. func (b *BlocksProtocol) SendResponse(block *model.Block) { b.workerPool.Submit(func() { b.protocol.Network.SendBlock(block) @@ -81,6 +92,7 @@ func (b *BlocksProtocol) SendResponse(block *model.Block) { }) } +// ProcessResponse processes the given block response. func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { b.workerPool.Submit(func() { // abort if the commitment belongs to an evicted slot @@ -106,6 +118,7 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { }) } +// ProcessRequest processes the given block request. func (b *BlocksProtocol) ProcessRequest(blockID iotago.BlockID, from peer.ID) { b.workerPool.Submit(func() { block, exists := b.protocol.Engines.Main.Get().Block(blockID) @@ -143,6 +156,7 @@ func (b *BlocksProtocol) ProcessRequest(blockID iotago.BlockID, from peer.ID) { }) } +// Shutdown shuts down the blocks protocol and waits for all pending requests to be finished. func (b *BlocksProtocol) Shutdown() { b.workerPool.Shutdown().ShutdownComplete.Wait() } diff --git a/pkg/protocol/protocol_commitments.go b/pkg/protocol/protocol_commitments.go index 66fd1aa9a..4d735c022 100644 --- a/pkg/protocol/protocol_commitments.go +++ b/pkg/protocol/protocol_commitments.go @@ -13,14 +13,23 @@ import ( iotago "github.com/iotaledger/iota.go/v4" ) +// CommitmentsProtocol is a subcomponent of the protocol that is responsible for handling commitment requests and +// responses. type CommitmentsProtocol struct { - protocol *Protocol + // protocol contains a reference to the Protocol instance that this component belongs to. + protocol *Protocol + + // workerPool contains the worker pool that is used to process commitment requests and responses asynchronously. workerPool *workerpool.WorkerPool - ticker *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + // ticker contains the ticker that is used to send commitment requests. + ticker *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + + // Logger embeds a logger that can be used to log messages emitted by this chain. log.Logger } +// newCommitmentsProtocol creates a new commitment protocol instance for the given protocol. func newCommitmentsProtocol(protocol *Protocol) *CommitmentsProtocol { c := &CommitmentsProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("Commitments")), @@ -34,6 +43,7 @@ func newCommitmentsProtocol(protocol *Protocol) *CommitmentsProtocol { return c } +// StartTicker starts the ticker for the given commitment. func (c *CommitmentsProtocol) StartTicker(commitmentPromise *promise.Promise[*Commitment], commitmentID iotago.CommitmentID) { c.ticker.StartTicker(commitmentID) @@ -42,6 +52,7 @@ func (c *CommitmentsProtocol) StartTicker(commitmentPromise *promise.Promise[*Co }) } +// SendRequest sends a commitment request for the given commitment ID to all peers. func (c *CommitmentsProtocol) SendRequest(commitmentID iotago.CommitmentID) { c.workerPool.Submit(func() { c.protocol.Network.RequestSlotCommitment(commitmentID) @@ -50,6 +61,7 @@ func (c *CommitmentsProtocol) SendRequest(commitmentID iotago.CommitmentID) { }) } +// SendResponse sends a commitment response for the given commitment to the given peer. func (c *CommitmentsProtocol) SendResponse(commitment *Commitment, to peer.ID) { c.workerPool.Submit(func() { c.protocol.Network.SendSlotCommitment(commitment.Commitment, to) @@ -58,6 +70,7 @@ func (c *CommitmentsProtocol) SendResponse(commitment *Commitment, to peer.ID) { }) } +// ProcessResponse processes the given commitment response. func (c *CommitmentsProtocol) ProcessResponse(commitmentModel *model.Commitment, from peer.ID) { c.workerPool.Submit(func() { if commitment, published, err := c.protocol.Commitments.publishCommitmentModel(commitmentModel); err != nil { @@ -68,6 +81,7 @@ func (c *CommitmentsProtocol) ProcessResponse(commitmentModel *model.Commitment, }) } +// ProcessRequest processes the given commitment request. func (c *CommitmentsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { c.workerPool.Submit(func() { commitment, err := c.protocol.Commitments.Get(commitmentID) @@ -83,6 +97,7 @@ func (c *CommitmentsProtocol) ProcessRequest(commitmentID iotago.CommitmentID, f }) } +// Shutdown shuts down the commitment protocol and waits for all pending requests to be processed. func (c *CommitmentsProtocol) Shutdown() { c.ticker.Shutdown() c.workerPool.Shutdown().ShutdownComplete.Wait() diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 40f75d8a2..56b348cc1 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -17,14 +17,22 @@ import ( "github.com/iotaledger/iota.go/v4/merklehasher" ) +// WarpSyncProtocol is a subcomponent of the protocol that is responsible for handling warp sync requests and responses. type WarpSyncProtocol struct { - protocol *Protocol + // protocol contains a reference to the Protocol instance that this component belongs to. + protocol *Protocol + + // workerPool contains the worker pool that is used to process warp sync requests and responses asynchronously. workerPool *workerpool.WorkerPool - ticker *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + // ticker contains the ticker that is used to send warp sync requests. + ticker *eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID] + + // Logger embeds a logger that can be used to log messages emitted by this chain. log.Logger } +// newWarpSyncProtocol creates a new warp sync protocol instance for the given protocol. func newWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { c := &WarpSyncProtocol{ Logger: lo.Return1(protocol.Logger.NewChildLogger("WarpSync")), @@ -50,6 +58,7 @@ func newWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { return c } +// SendRequest sends a warp sync request for the given commitment ID to all peers. func (w *WarpSyncProtocol) SendRequest(commitmentID iotago.CommitmentID) { w.workerPool.Submit(func() { if commitment, err := w.protocol.Commitments.Get(commitmentID, false); err == nil { @@ -60,6 +69,7 @@ func (w *WarpSyncProtocol) SendRequest(commitmentID iotago.CommitmentID) { }) } +// SendResponse sends a warp sync response for the given commitment ID to the given peer. func (w *WarpSyncProtocol) SendResponse(commitment *Commitment, blockIDsBySlotCommitment map[iotago.CommitmentID]iotago.BlockIDs, roots *iotago.Roots, transactionIDs iotago.TransactionIDs, to peer.ID) { w.workerPool.Submit(func() { w.protocol.Network.SendWarpSyncResponse(commitment.ID(), blockIDsBySlotCommitment, roots.TangleProof(), transactionIDs, roots.MutationProof(), to) @@ -68,6 +78,7 @@ func (w *WarpSyncProtocol) SendResponse(commitment *Commitment, blockIDsBySlotCo }) } +// ProcessResponse processes the given warp sync response. func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blockIDsBySlotCommitment map[iotago.CommitmentID]iotago.BlockIDs, proof *merklehasher.Proof[iotago.Identifier], transactionIDs iotago.TransactionIDs, mutationProof *merklehasher.Proof[iotago.Identifier], from peer.ID) { w.workerPool.Submit(func() { commitment, err := w.protocol.Commitments.Get(commitmentID) @@ -243,6 +254,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo }) } +// ProcessRequest processes the given warp sync request. func (w *WarpSyncProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from peer.ID) { w.workerPool.Submit(func() { commitment, err := w.protocol.Commitments.Get(commitmentID) @@ -302,6 +314,7 @@ func (w *WarpSyncProtocol) ProcessRequest(commitmentID iotago.CommitmentID, from }) } +// Shutdown shuts down the warp sync protocol. func (w *WarpSyncProtocol) Shutdown() { w.ticker.Shutdown() w.workerPool.Shutdown().ShutdownComplete.Wait() From 0d02a0150ac0b6c5b389c42fd83fa7d749f8c586 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 27 Nov 2023 06:41:20 +0100 Subject: [PATCH 283/356] Fix: fix naming issues --- pkg/protocol/chain.go | 33 ++++++++++++++------------- pkg/protocol/chains.go | 22 +++++++++--------- pkg/protocol/commitment.go | 8 +++---- pkg/protocol/commitments.go | 18 +++++++-------- pkg/protocol/engines.go | 4 ++-- pkg/protocol/protocol_attestations.go | 8 +++---- pkg/protocol/protocol_blocks.go | 4 ++-- pkg/protocol/protocol_warp_sync.go | 2 +- 8 files changed, 50 insertions(+), 49 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 2a5f9c912..8e48e1613 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -114,10 +114,11 @@ func newChain(chains *Chains) *Chain { return c } -// WithInitializedEngine calls the given callback once the Engine of this chain is initialized. -func (c *Chain) WithInitializedEngine(callback func(engineInstance *engine.Engine) (teardown func())) (teardown func()) { - return c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (teardown func()) { - return engineInstance.Initialized.WithNonEmptyValue(func(_ bool) (teardown func()) { +// WithInitializedEngine is a reactive selector that executes the given callback once an Engine for this chain was +// initialized. +func (c *Chain) WithInitializedEngine(callback func(engineInstance *engine.Engine) (shutdown func())) (shutdown func()) { + return c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { + return engineInstance.Initialized.WithNonEmptyValue(func(_ bool) (shutdown func()) { return callback(engineInstance) }) }) @@ -181,8 +182,8 @@ func (c *Chain) LatestEngine() *engine.Engine { } // initLogger initializes the Logger of this chain. -func (c *Chain) initLogger() (teardown func()) { - c.Logger, teardown = c.chains.NewEntityLogger("") +func (c *Chain) initLogger() (shutdown func()) { + c.Logger, shutdown = c.chains.NewEntityLogger("") return lo.Batch( c.WarpSyncMode.LogUpdates(c, log.LevelTrace, "WarpSyncMode"), @@ -199,27 +200,27 @@ func (c *Chain) initLogger() (teardown func()) { c.Engine.LogUpdates(c, log.LevelTrace, "Engine", (*engine.Engine).LogName), c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), - teardown, + shutdown, ) } // initDerivedProperties initializes the behavior of this chain by setting up the relations between its properties. -func (c *Chain) initDerivedProperties() (teardown func()) { +func (c *Chain) initDerivedProperties() (shutdown func()) { return lo.Batch( c.deriveClaimedWeight(), c.deriveVerifiedWeight(), c.deriveLatestAttestedWeight(), c.deriveWarpSyncMode(), - c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (teardown func()) { + c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (shutdown func()) { return c.deriveParentChain(forkingPoint) }), - c.ParentChain.WithNonEmptyValue(func(parentChain *Chain) (teardown func()) { + c.ParentChain.WithNonEmptyValue(func(parentChain *Chain) (shutdown func()) { return parentChain.deriveChildChains(c) }), - c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (teardown func()) { + c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { return lo.Batch( c.deriveWarpSyncThreshold(c.chains.LatestSeenSlot, engineInstance), c.deriveOutOfSyncThreshold(c.chains.LatestSeenSlot, engineInstance), @@ -248,7 +249,7 @@ func (c *Chain) deriveWarpSyncMode() func() { // deriveClaimedWeight defines how a chain determines its claimed weight (by setting the cumulative weight of the // latest commitment). -func (c *Chain) deriveClaimedWeight() (teardown func()) { +func (c *Chain) deriveClaimedWeight() (shutdown func()) { return c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { if latestCommitment == nil { return 0 @@ -262,7 +263,7 @@ func (c *Chain) deriveClaimedWeight() (teardown func()) { // weight of the latest attested commitment). It uses inheritance instead of simply setting the value as the cumulative // attested weight can change over time depending on the attestations that are received. func (c *Chain) deriveLatestAttestedWeight() func() { - return c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (teardown func()) { + return c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (shutdown func()) { return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) }) } @@ -290,9 +291,9 @@ func (c *Chain) deriveChildChains(child *Chain) func() { // deriveParentChain defines how a chain determines its parent chain from its forking point (it inherits the Chain from // the parent commitment of the forking point or nil if either of them is still unknown). -func (c *Chain) deriveParentChain(forkingPoint *Commitment) (teardown func()) { +func (c *Chain) deriveParentChain(forkingPoint *Commitment) (shutdown func()) { if forkingPoint != nil { - return forkingPoint.Parent.WithValue(func(parentCommitment *Commitment) (teardown func()) { + return forkingPoint.Parent.WithValue(func(parentCommitment *Commitment) (shutdown func()) { if parentCommitment != nil { return c.ParentChain.InheritFrom(parentCommitment.Chain) } @@ -333,7 +334,7 @@ func (c *Chain) deriveWarpSyncThreshold(latestSeenSlot reactive.ReadableVariable } // addCommitment adds the given commitment to this chain. -func (c *Chain) addCommitment(newCommitment *Commitment) (teardown func()) { +func (c *Chain) addCommitment(newCommitment *Commitment) (shutdown func()) { c.commitments.Set(newCommitment.Slot(), newCommitment) c.LatestCommitment.Set(newCommitment) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 37dbe7848..26b8ac15b 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -57,7 +57,7 @@ func newChains(protocol *Protocol) *Chains { c.initLogger(protocol.NewChildLogger("Chains")), c.initChainSwitching(protocol.Options.ChainSwitchingThreshold), - protocol.Constructed.WithNonEmptyValue(func(_ bool) (teardown func()) { + protocol.Constructed.WithNonEmptyValue(func(_ bool) (shutdown func()) { return c.deriveLatestSeenSlot(protocol) }), ) @@ -69,16 +69,16 @@ func newChains(protocol *Protocol) *Chains { // WithInitializedEngines is a reactive selector that executes the given callback for each managed chain that // initialized its engine. -func (c *Chains) WithInitializedEngines(callback func(chain *Chain, engine *engine.Engine) (teardown func())) (teardown func()) { - return c.WithElements(func(chain *Chain) (teardown func()) { - return chain.WithInitializedEngine(func(engine *engine.Engine) (teardown func()) { +func (c *Chains) WithInitializedEngines(callback func(chain *Chain, engine *engine.Engine) (shutdown func())) (shutdown func()) { + return c.WithElements(func(chain *Chain) (shutdown func()) { + return chain.WithInitializedEngine(func(engine *engine.Engine) (shutdown func()) { return callback(chain, engine) }) }) } // initLogger initializes the logger for this component. -func (c *Chains) initLogger(logger log.Logger, shutdownLogger func()) (teardown func()) { +func (c *Chains) initLogger(logger log.Logger, shutdownLogger func()) (shutdown func()) { c.Logger = logger return lo.Batch( @@ -92,22 +92,22 @@ func (c *Chains) initLogger(logger log.Logger, shutdownLogger func()) (teardown } // initChainSwitching initializes the chain switching logic. -func (c *Chains) initChainSwitching(chainSwitchingThreshold iotago.SlotIndex) (teardown func()) { +func (c *Chains) initChainSwitching(chainSwitchingThreshold iotago.SlotIndex) (shutdown func()) { mainChain := c.newChain() mainChain.StartEngine.Set(true) c.Main.Set(mainChain) return lo.Batch( - c.HeaviestClaimedCandidate.WithNonEmptyValue(func(heaviestClaimedCandidate *Chain) (teardown func()) { + c.HeaviestClaimedCandidate.WithNonEmptyValue(func(heaviestClaimedCandidate *Chain) (shutdown func()) { return heaviestClaimedCandidate.RequestAttestations.ToggleValue(true) }), - c.HeaviestAttestedCandidate.WithNonEmptyValue(func(heaviestAttestedCandidate *Chain) (teardown func()) { + c.HeaviestAttestedCandidate.WithNonEmptyValue(func(heaviestAttestedCandidate *Chain) (shutdown func()) { return heaviestAttestedCandidate.StartEngine.ToggleValue(true) }), - c.HeaviestVerifiedCandidate.WithNonEmptyValue(func(heaviestVerifiedCandidate *Chain) (teardown func()) { + c.HeaviestVerifiedCandidate.WithNonEmptyValue(func(heaviestVerifiedCandidate *Chain) (shutdown func()) { // only switch to the heaviest chain if the latest produced commitment is enough slots away from the forking point. chainSwitchingCondition := func(_ *Commitment, latestProducedCommitment *Commitment) bool { forkingPoint := heaviestVerifiedCandidate.ForkingPoint.Get() @@ -120,7 +120,7 @@ func (c *Chains) initChainSwitching(chainSwitchingThreshold iotago.SlotIndex) (t }, chainSwitchingCondition) }), - c.WithElements(func(candidateChain *Chain) (teardown func()) { + c.WithElements(func(candidateChain *Chain) (shutdown func()) { return lo.Batch( c.initHeaviestCandidateTracking(c.HeaviestClaimedCandidate, (*Chain).claimedWeight, candidateChain), c.initHeaviestCandidateTracking(c.HeaviestVerifiedCandidate, (*Chain).verifiedWeight, candidateChain), @@ -151,7 +151,7 @@ func (c *Chains) initHeaviestCandidateTracking(candidateVar reactive.Variable[*C // deriveLatestSeenSlot derives the latest seen slot from the protocol. func (c *Chains) deriveLatestSeenSlot(protocol *Protocol) func() { - return protocol.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (teardown func()) { + return protocol.Engines.Main.WithNonEmptyValue(func(mainEngine *engine.Engine) (shutdown func()) { return lo.Batch( mainEngine.Initialized.OnTrigger(func() { c.LatestSeenSlot.Set(mainEngine.LatestCommitment.Get().Slot()) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index fc8f0a151..88f454b6c 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -121,8 +121,8 @@ func (c *Commitment) TargetEngine() *engine.Engine { } // initLogger initializes the Logger of this Commitment. -func (c *Commitment) initLogger() (teardown func()) { - c.Logger, teardown = c.commitments.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot())) +func (c *Commitment) initLogger() (shutdown func()) { + c.Logger, shutdown = c.commitments.NewEntityLogger(fmt.Sprintf("Slot%d.", c.Slot())) return lo.Batch( c.Parent.LogUpdates(c, log.LevelTrace, "Parent", (*Commitment).LogName), @@ -139,12 +139,12 @@ func (c *Commitment) initLogger() (teardown func()) { c.ReplayDroppedBlocks.LogUpdates(c, log.LevelTrace, "ReplayDroppedBlocks"), c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), - teardown, + shutdown, ) } // initDerivedProperties initializes the behavior of this Commitment by setting up the relations between its properties. -func (c *Commitment) initDerivedProperties() (teardown func()) { +func (c *Commitment) initDerivedProperties() (shutdown func()) { return lo.Batch( // mark commitments that are marked as root as verified c.IsVerified.InheritFrom(c.IsRoot), diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index bc806ddb3..857b1c00d 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -70,29 +70,29 @@ func (c *Commitments) Get(commitmentID iotago.CommitmentID, requestIfMissing ... } // initLogger initializes the logger for this component. -func (c *Commitments) initLogger() (teardown func()) { - c.Logger, teardown = c.protocol.NewChildLogger("Commitments") +func (c *Commitments) initLogger() (shutdown func()) { + c.Logger, shutdown = c.protocol.NewChildLogger("Commitments") return lo.Batch( c.Root.LogUpdates(c, log.LevelTrace, "Root", (*Commitment).LogName), - teardown, + shutdown, ) } // initEngineCommitmentSynchronization initializes the synchronization of commitments that are published by the engines. func (c *Commitments) initEngineCommitmentSynchronization() func() { - return c.protocol.Constructed.WithNonEmptyValue(func(_ bool) (teardown func()) { + return c.protocol.Constructed.WithNonEmptyValue(func(_ bool) (shutdown func()) { return lo.Batch( // advance the root commitment of the main chain - c.protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (teardown func()) { - return mainChain.WithInitializedEngine(func(mainEngine *engine.Engine) (teardown func()) { + c.protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (shutdown func()) { + return mainChain.WithInitializedEngine(func(mainEngine *engine.Engine) (shutdown func()) { return c.publishRootCommitment(mainChain, mainEngine) }) }), // publish the commitments that are produced by the engines - c.protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (teardown func()) { + c.protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (shutdown func()) { return c.publishEngineCommitments(chain, engine) }), ) @@ -114,7 +114,7 @@ func (c *Commitments) publishRootCommitment(mainChain *Chain, mainEngine *engine newRootCommitment.Chain.Set(mainChain) } - // TODO: SET HERE AND FIX BUG + // TODO: USE SET HERE (debug eviction issues) mainChain.ForkingPoint.DefaultTo(newRootCommitment) c.Root.Set(newRootCommitment) @@ -122,7 +122,7 @@ func (c *Commitments) publishRootCommitment(mainChain *Chain, mainEngine *engine } // publishEngineCommitments publishes the commitments of the given engine to its chain. -func (c *Commitments) publishEngineCommitments(chain *Chain, engine *engine.Engine) (teardown func()) { +func (c *Commitments) publishEngineCommitments(chain *Chain, engine *engine.Engine) (shutdown func()) { latestPublishedSlot := chain.LastCommonSlot() return engine.LatestCommitment.OnUpdate(func(_ *model.Commitment, latestCommitment *model.Commitment) { diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index c27a8555b..205b1c1c6 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -205,7 +205,7 @@ func (e *Engines) loadEngineInstanceWithStorage(engineAlias string, storage *sto // syncMainEngineFromMainChain syncs the main engine from the main chain. func (e *Engines) syncMainEngineFromMainChain() (shutdown func()) { - return e.protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (teardown func()) { + return e.protocol.Chains.Main.WithNonEmptyValue(func(mainChain *Chain) (shutdown func()) { return e.Main.DeriveValueFrom(reactive.NewDerivedVariable(func(currentMainEngine *engine.Engine, newMainEngine *engine.Engine) *engine.Engine { return lo.Cond(newMainEngine == nil, currentMainEngine, newMainEngine) }, mainChain.Engine)) @@ -225,7 +225,7 @@ func (e *Engines) syncMainEngineInfoFile() (shutdown func()) { // injectEngineInstances injects engine instances into the chains (when requested). func (e *Engines) injectEngineInstances() (shutdown func()) { - return e.protocol.Chains.WithElements(func(chain *Chain) (teardown func()) { + return e.protocol.Chains.WithElements(func(chain *Chain) (shutdown func()) { return chain.StartEngine.OnUpdate(func(_ bool, startEngine bool) { e.worker.Submit(func() { if !startEngine { diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index b41b08afc..819813758 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -47,13 +47,13 @@ func newAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { a.ticker.Events.Tick.Hook(a.sendRequest) protocol.Constructed.OnTrigger(func() { - protocol.Chains.WithElements(func(chain *Chain) (teardown func()) { - return chain.RequestAttestations.WithNonEmptyValue(func(requestAttestations bool) (teardown func()) { + protocol.Chains.WithElements(func(chain *Chain) (shutdown func()) { + return chain.RequestAttestations.WithNonEmptyValue(func(requestAttestations bool) (shutdown func()) { return a.setupCommitmentVerifier(chain) }) }) - protocol.Commitments.WithElements(func(commitment *Commitment) (teardown func()) { + protocol.Commitments.WithElements(func(commitment *Commitment) (shutdown func()) { return commitment.RequestAttestations.OnUpdate(func(_ bool, requestAttestations bool) { if requestAttestations { if commitment.CumulativeWeight() == 0 { @@ -211,7 +211,7 @@ func (a *AttestationsProtocol) Shutdown() { } // setupCommitmentVerifier sets up the commitment verifier for the given chain. -func (a *AttestationsProtocol) setupCommitmentVerifier(chain *Chain) (teardown func()) { +func (a *AttestationsProtocol) setupCommitmentVerifier(chain *Chain) (shutdown func()) { forkingPoint := chain.ForkingPoint.Get() if forkingPoint == nil { a.LogError("failed to retrieve forking point", "chain", chain.LogName()) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index b6fcb3489..b18983f3b 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -41,7 +41,7 @@ func newBlocksProtocol(protocol *Protocol) *BlocksProtocol { } protocol.Constructed.OnTrigger(func() { - protocol.Commitments.WithElements(func(commitment *Commitment) (teardown func()) { + protocol.Commitments.WithElements(func(commitment *Commitment) (shutdown func()) { return commitment.ReplayDroppedBlocks.OnUpdate(func(_ bool, replayBlocks bool) { if replayBlocks { for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { @@ -54,7 +54,7 @@ func newBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) protocol.Chains.WithElements(func(chain *Chain) func() { - return chain.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (teardown func()) { + return chain.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { return engineInstance.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook }) }) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 56b348cc1..6e96536bd 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -44,7 +44,7 @@ func newWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { c.ticker.Events.Tick.Hook(c.SendRequest) protocol.Constructed.OnTrigger(func() { - c.protocol.Commitments.WithElements(func(commitment *Commitment) (teardown func()) { + c.protocol.Commitments.WithElements(func(commitment *Commitment) (shutdown func()) { return commitment.WarpSyncBlocks.OnUpdate(func(_ bool, warpSyncBlocks bool) { if warpSyncBlocks { c.ticker.StartTicker(commitment.ID()) From ba0da469b8474ee2e89eb10367527ddda66e9d4b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 27 Nov 2023 11:54:53 +0100 Subject: [PATCH 284/356] Feat: enable engine logging --- pkg/testsuite/mock/node.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 4cf668c68..11c6205cd 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -111,7 +111,7 @@ func NewNode(t *testing.T, net *Network, partition string, name string, validato Workers: workerpool.NewGroup(name), logHandler: logHandler, - enableEngineLogging: false, + enableEngineLogging: true, attachedBlocks: make([]*blocks.Block, 0), } From b6878f45ebb5447e22a465c20a93c6f239cf49e5 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 27 Nov 2023 16:10:27 +0100 Subject: [PATCH 285/356] Fix: Fix WarpSync --- pkg/protocol/commitment.go | 15 ++++++++++++--- pkg/protocol/protocol_warp_sync.go | 4 ++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 88f454b6c..34f383ae0 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -56,6 +56,11 @@ type Commitment struct { // IsAttested contains a flag indicating if we have received attestations for this Commitment. IsAttested reactive.Event + // IsCommittable contains a flag indicating if this Commitment is committable (we have received all blocks and all attestations). + IsCommittable reactive.Event + + IsFullyBooked reactive.Event + // IsVerified contains a flag indicating if this Commitment is verified (we produced this Commitment ourselves by // booking all the contained blocks and transactions). IsVerified reactive.Event @@ -94,6 +99,7 @@ func newCommitment(commitments *Commitments, model *model.Commitment) *Commitmen CumulativeAttestedWeight: reactive.NewVariable[uint64](), IsRoot: reactive.NewEvent(), IsAttested: reactive.NewEvent(), + IsCommittable: reactive.NewEvent(), IsVerified: reactive.NewEvent(), IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), ReplayDroppedBlocks: reactive.NewVariable[bool](), @@ -152,6 +158,9 @@ func (c *Commitment) initDerivedProperties() (shutdown func()) { // mark commitments that are marked as verified as attested c.IsAttested.InheritFrom(c.IsVerified), + // mark commitments that are marked as verified as fully booked + c.IsFullyBooked.InheritFrom(c.IsVerified), + c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { // the weight can be fixed as a one time operation (as it only relies on static information from the parent // commitment) @@ -261,9 +270,9 @@ func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) // deriveWarpSyncBlocks derives the WarpSyncBlocks flag of this Commitment which is true if our Chain is requesting // warp sync, and we are the directly above the latest verified Commitment. func (c *Commitment) deriveWarpSyncBlocks(chain *Chain, parent *Commitment) func() { - return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSync bool, parentIsVerified bool, isVerified bool) bool { - return engineInstance != nil && warpSync && parentIsVerified && !isVerified - }, chain.Engine, chain.WarpSyncMode, parent.IsVerified, c.IsVerified)) + return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSync bool, parentIsFullyBooked bool, isFullyBooked bool) bool { + return engineInstance != nil && warpSync && parentIsFullyBooked && !isFullyBooked + }, chain.Engine, chain.WarpSyncMode, parent.IsFullyBooked, c.IsFullyBooked)) } // deriveReplayDroppedBlocks derives the ReplayDroppedBlocks flag of this Commitment which is true if our Chain has an diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 6e96536bd..bc40b06a4 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -187,7 +187,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } if totalBlocks == 0 { - forceCommitmentFunc() + commitment.IsCommittable.OnTrigger(forceCommitmentFunc) return blocksToWarpSync } @@ -218,7 +218,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } - forceCommitmentFunc() + commitment.IsCommittable.OnTrigger(forceCommitmentFunc) }) } } From 0539f3468a558d413d6943e0ded647eb7a13a9fc Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 27 Nov 2023 16:15:03 +0100 Subject: [PATCH 286/356] Feat: added more logic --- pkg/protocol/commitment.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 34f383ae0..6eab9e523 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -56,11 +56,11 @@ type Commitment struct { // IsAttested contains a flag indicating if we have received attestations for this Commitment. IsAttested reactive.Event + IsFullyBooked reactive.Event + // IsCommittable contains a flag indicating if this Commitment is committable (we have received all blocks and all attestations). IsCommittable reactive.Event - IsFullyBooked reactive.Event - // IsVerified contains a flag indicating if this Commitment is verified (we produced this Commitment ourselves by // booking all the contained blocks and transactions). IsVerified reactive.Event @@ -99,6 +99,7 @@ func newCommitment(commitments *Commitments, model *model.Commitment) *Commitmen CumulativeAttestedWeight: reactive.NewVariable[uint64](), IsRoot: reactive.NewEvent(), IsAttested: reactive.NewEvent(), + IsFullyBooked: reactive.NewEvent(), IsCommittable: reactive.NewEvent(), IsVerified: reactive.NewEvent(), IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), @@ -155,11 +156,10 @@ func (c *Commitment) initDerivedProperties() (shutdown func()) { // mark commitments that are marked as root as verified c.IsVerified.InheritFrom(c.IsRoot), - // mark commitments that are marked as verified as attested + // mark commitments that are marked as verified as attested, fully booked and committable c.IsAttested.InheritFrom(c.IsVerified), - - // mark commitments that are marked as verified as fully booked c.IsFullyBooked.InheritFrom(c.IsVerified), + c.IsCommittable.InheritFrom(c.IsVerified), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { // the weight can be fixed as a one time operation (as it only relies on static information from the parent From e82a4bed26fde181983ac88f0f2150a371acbce6 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 27 Nov 2023 16:24:01 +0100 Subject: [PATCH 287/356] Fix: fixed more code --- pkg/protocol/chain.go | 2 +- pkg/protocol/commitment.go | 21 +++++++++++---------- pkg/protocol/commitments.go | 2 +- pkg/protocol/protocol_warp_sync.go | 11 +++++------ 4 files changed, 18 insertions(+), 18 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 8e48e1613..40ddfe5a1 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -341,7 +341,7 @@ func (c *Chain) addCommitment(newCommitment *Commitment) (shutdown func()) { return lo.Batch( newCommitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Set(newCommitment) }), - newCommitment.IsVerified.OnTrigger(func() { c.LatestProducedCommitment.Set(newCommitment) }), + newCommitment.IsCommitted.OnTrigger(func() { c.LatestProducedCommitment.Set(newCommitment) }), ) } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 6eab9e523..290e03d4e 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -56,14 +56,15 @@ type Commitment struct { // IsAttested contains a flag indicating if we have received attestations for this Commitment. IsAttested reactive.Event + // IsFullyBooked contains a flag indicating if we have received all blocks for this Commitment. IsFullyBooked reactive.Event // IsCommittable contains a flag indicating if this Commitment is committable (we have received all blocks and all attestations). IsCommittable reactive.Event - // IsVerified contains a flag indicating if this Commitment is verified (we produced this Commitment ourselves by - // booking all the contained blocks and transactions). - IsVerified reactive.Event + // IsCommitted contains a flag indicating if we Commitment produced this Commitment ourselves by replaying all the + // blocks of the Commitment. + IsCommitted reactive.Event // IsAboveLatestVerifiedCommitment contains a flag indicating if this Commitment is above the latest verified // Commitment. @@ -101,7 +102,7 @@ func newCommitment(commitments *Commitments, model *model.Commitment) *Commitmen IsAttested: reactive.NewEvent(), IsFullyBooked: reactive.NewEvent(), IsCommittable: reactive.NewEvent(), - IsVerified: reactive.NewEvent(), + IsCommitted: reactive.NewEvent(), IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), ReplayDroppedBlocks: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), @@ -142,7 +143,7 @@ func (c *Commitment) initLogger() (shutdown func()) { c.CumulativeAttestedWeight.LogUpdates(c, log.LevelTrace, "CumulativeAttestedWeight"), c.IsRoot.LogUpdates(c, log.LevelTrace, "IsRoot"), c.IsAttested.LogUpdates(c, log.LevelTrace, "IsAttested"), - c.IsVerified.LogUpdates(c, log.LevelTrace, "IsVerified"), + c.IsCommitted.LogUpdates(c, log.LevelTrace, "IsCommitted"), c.ReplayDroppedBlocks.LogUpdates(c, log.LevelTrace, "ReplayDroppedBlocks"), c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), @@ -154,12 +155,12 @@ func (c *Commitment) initLogger() (shutdown func()) { func (c *Commitment) initDerivedProperties() (shutdown func()) { return lo.Batch( // mark commitments that are marked as root as verified - c.IsVerified.InheritFrom(c.IsRoot), + c.IsCommitted.InheritFrom(c.IsRoot), // mark commitments that are marked as verified as attested, fully booked and committable - c.IsAttested.InheritFrom(c.IsVerified), - c.IsFullyBooked.InheritFrom(c.IsVerified), - c.IsCommittable.InheritFrom(c.IsVerified), + c.IsAttested.InheritFrom(c.IsCommitted), + c.IsFullyBooked.InheritFrom(c.IsCommitted), + c.IsCommittable.InheritFrom(c.IsCommitted), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { // the weight can be fixed as a one time operation (as it only relies on static information from the parent @@ -256,7 +257,7 @@ func (c *Commitment) deriveCumulativeAttestedWeight(parent *Commitment) func() { func (c *Commitment) deriveIsAboveLatestVerifiedCommitment(parent *Commitment) func() { return c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, parentAboveLatestVerifiedCommitment bool, parentIsVerified bool, isVerified bool) bool { return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) - }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)) + }, parent.IsAboveLatestVerifiedCommitment, parent.IsCommitted, c.IsCommitted)) } // deriveRequestAttestations derives the RequestAttestations flag of this Commitment which is true if our Chain is diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 857b1c00d..4066fc01d 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -155,7 +155,7 @@ func (c *Commitments) publishEngineCommitments(chain *Chain, engine *engine.Engi // mark it as produced by ourselves and force it to be on the right chain (in case our chain produced a // different commitment than the one we erroneously expected it to be - we always trust our engine most). publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) - publishedCommitment.IsVerified.Set(true) + publishedCommitment.IsCommitted.Set(true) publishedCommitment.forceChain(chain) } }) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index bc40b06a4..812171483 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -186,8 +186,10 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } } + commitment.IsCommittable.OnTrigger(forceCommitmentFunc) + if totalBlocks == 0 { - commitment.IsCommittable.OnTrigger(forceCommitmentFunc) + commitment.IsFullyBooked.Set(true) return blocksToWarpSync } @@ -213,12 +215,9 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo targetEngine.BlockGadget.SetAccepted(block) block.Notarized().OnUpdate(func(_ bool, _ bool) { - // Wait for all blocks to be notarized before forcing the commitment of the slot. - if notarizedBlocks.Add(1) != totalBlocks { - return + if notarizedBlocks.Add(1) == totalBlocks { + commitment.IsFullyBooked.Set(true) } - - commitment.IsCommittable.OnTrigger(forceCommitmentFunc) }) } } From ab3fdec7a5299f22ed100728a34ba22efac0d154 Mon Sep 17 00:00:00 2001 From: Andrea V <1577639+karimodm@users.noreply.github.com> Date: Mon, 27 Nov 2023 16:48:25 +0100 Subject: [PATCH 288/356] Trigger Commitment's IsCommittable at - MCA + 1 --- pkg/protocol/commitment.go | 6 ++++-- pkg/protocol/protocol_warp_sync.go | 14 ++++++++++++-- 2 files changed, 16 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 290e03d4e..cd3fd8387 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -143,6 +143,8 @@ func (c *Commitment) initLogger() (shutdown func()) { c.CumulativeAttestedWeight.LogUpdates(c, log.LevelTrace, "CumulativeAttestedWeight"), c.IsRoot.LogUpdates(c, log.LevelTrace, "IsRoot"), c.IsAttested.LogUpdates(c, log.LevelTrace, "IsAttested"), + c.IsFullyBooked.LogUpdates(c, log.LevelTrace, "IsFullyBooked"), + c.IsCommittable.LogUpdates(c, log.LevelTrace, "IsCommittable"), c.IsCommitted.LogUpdates(c, log.LevelTrace, "IsCommitted"), c.ReplayDroppedBlocks.LogUpdates(c, log.LevelTrace, "ReplayDroppedBlocks"), c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), @@ -255,8 +257,8 @@ func (c *Commitment) deriveCumulativeAttestedWeight(parent *Commitment) func() { // deriveIsAboveLatestVerifiedCommitment derives the IsAboveLatestVerifiedCommitment flag of this Commitment which is // true if the parent is already above the latest verified Commitment or if the parent is verified and we are not. func (c *Commitment) deriveIsAboveLatestVerifiedCommitment(parent *Commitment) func() { - return c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, parentAboveLatestVerifiedCommitment bool, parentIsVerified bool, isVerified bool) bool { - return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) + return c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, parentAboveLatestVerifiedCommitment bool, parentIsCommitted bool, isCommitted bool) bool { + return parentAboveLatestVerifiedCommitment || (parentIsCommitted && !isCommitted) }, parent.IsAboveLatestVerifiedCommitment, parent.IsCommitted, c.IsCommitted)) } diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 812171483..005d62b2f 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -160,7 +160,8 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo if targetEngine.Workers.WaitChildren(); targetEngine.Storage.Settings().LatestCommitment().ID().Slot() > commitmentID.Slot() { return blocksToWarpSync } - targetEngine.Reset() + // TODO: reset the engine only once at the very beginning of the warp-sync process + // targetEngine.Reset() // Once all blocks are booked we // 1. Mark all transactions as accepted @@ -186,7 +187,16 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } } - commitment.IsCommittable.OnTrigger(forceCommitmentFunc) + commitment.IsFullyBooked.OnUpdateOnce(func(_ bool, _ bool) { + minimumCommittableAge := w.protocol.APIForSlot(commitmentID.Slot()).ProtocolParameters().MinCommittableAge() + if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - minimumCommittableAge + 1); exists { + committableCommitment.IsCommittable.Trigger() + } + }) + + commitment.IsCommittable.OnUpdateOnce(func(_ bool, _ bool) { + forceCommitmentFunc() + }) if totalBlocks == 0 { commitment.IsFullyBooked.Set(true) From 66807e05399d454a9e8ebfde82ebd440ac56b40c Mon Sep 17 00:00:00 2001 From: Andrea V <1577639+karimodm@users.noreply.github.com> Date: Mon, 27 Nov 2023 17:49:14 +0100 Subject: [PATCH 289/356] Deadlock fix --- pkg/protocol/protocol_warp_sync.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 005d62b2f..b51177dae 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -190,12 +190,12 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo commitment.IsFullyBooked.OnUpdateOnce(func(_ bool, _ bool) { minimumCommittableAge := w.protocol.APIForSlot(commitmentID.Slot()).ProtocolParameters().MinCommittableAge() if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - minimumCommittableAge + 1); exists { - committableCommitment.IsCommittable.Trigger() + committableCommitment.IsCommittable.Set(true) } }) commitment.IsCommittable.OnUpdateOnce(func(_ bool, _ bool) { - forceCommitmentFunc() + w.workerPool.Submit(forceCommitmentFunc) }) if totalBlocks == 0 { From d77b7cb61cb029c4c91d38e94c0d9f842cc934fb Mon Sep 17 00:00:00 2001 From: Andrea V <1577639+karimodm@users.noreply.github.com> Date: Tue, 28 Nov 2023 10:01:16 +0100 Subject: [PATCH 290/356] Fix race in notarization vs attestations --- pkg/protocol/engine/notarization/slotnotarization/manager.go | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/pkg/protocol/engine/notarization/slotnotarization/manager.go b/pkg/protocol/engine/notarization/slotnotarization/manager.go index 062300601..a9a39e2c2 100644 --- a/pkg/protocol/engine/notarization/slotnotarization/manager.go +++ b/pkg/protocol/engine/notarization/slotnotarization/manager.go @@ -43,7 +43,7 @@ type Manager struct { acceptedTimeFunc func() time.Time apiProvider iotago.APIProvider - commitmentMutex syncutils.Mutex + commitmentMutex syncutils.RWMutex log.Logger @@ -168,6 +168,9 @@ func (m *Manager) IsBootstrapped() bool { } func (m *Manager) notarizeAcceptedBlock(block *blocks.Block) (err error) { + m.commitmentMutex.RLock() + defer m.commitmentMutex.RUnlock() + if err = m.slotMutations.AddAcceptedBlock(block); err != nil { return ierrors.Wrap(err, "failed to add accepted block to slot mutations") } From e23b164fdeda245c0e531dd1bfc81d48cccbcb76 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 28 Nov 2023 12:06:54 +0100 Subject: [PATCH 291/356] Fix: MainEngine no longer registers as candidate --- pkg/protocol/chains.go | 2 +- pkg/protocol/engines.go | 1 - pkg/protocol/protocol.go | 3 ++- pkg/testsuite/mock/node.go | 4 ++-- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 26b8ac15b..2f0051148 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -134,7 +134,7 @@ func (c *Chains) initChainSwitching(chainSwitchingThreshold iotago.SlotIndex) (s func (c *Chains) initHeaviestCandidateTracking(candidateVar reactive.Variable[*Chain], weightVar func(*Chain) reactive.Variable[uint64], newCandidate *Chain) (unsubscribe func()) { return weightVar(newCandidate).OnUpdate(func(_ uint64, newWeight uint64) { // abort if the candidate is not heavier than the main chain. - if mainChain := c.Main.Get(); mainChain != nil && newWeight <= mainChain.VerifiedWeight.Get() { + if mainChain := c.Main.Get(); newCandidate == mainChain || newWeight <= mainChain.VerifiedWeight.Get() { return } diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 205b1c1c6..5c4b85c7e 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -58,7 +58,6 @@ func newEngines(protocol *Protocol) *Engines { e.Shutdown.OnTrigger(func() { shutdown() - e.worker.Shutdown().ShutdownComplete.Wait() e.Stopped.Trigger() }) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index f753a754f..7bef7c575 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -163,8 +163,9 @@ func (p *Protocol) initSubcomponents(networkEndpoint network.Endpoint) (shutdown p.AttestationsProtocol.Shutdown() p.WarpSyncProtocol.Shutdown() p.Network.Shutdown() - p.Workers.Shutdown() + p.Workers.WaitChildren() p.Engines.Shutdown.Trigger() + p.Workers.Shutdown() } } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 11c6205cd..f878a1203 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -157,8 +157,8 @@ func (n *Node) Initialize(failOnBlockFiltered bool, opts ...options.Option[proto } func (n *Node) hookEvents() { - n.Protocol.Chains.HeaviestAttestedCandidate.OnUpdate(func(prevHeaviestAttestedCandidate *protocol.Chain, heaviestAttestedCandidate *protocol.Chain) { - if prevHeaviestAttestedCandidate != nil { + n.Protocol.Chains.HeaviestAttestedCandidate.OnUpdate(func(_ *protocol.Chain, heaviestAttestedCandidate *protocol.Chain) { + if heaviestAttestedCandidate != nil { n.forkDetectedCount.Add(1) heaviestAttestedCandidate.Engine.OnUpdate(func(prevEngine *engine.Engine, newEngine *engine.Engine) { From 000355bab8e8618a98465f052234e342d1cccb01 Mon Sep 17 00:00:00 2001 From: Andrea V <1577639+karimodm@users.noreply.github.com> Date: Tue, 28 Nov 2023 12:09:16 +0100 Subject: [PATCH 292/356] Force accept and commit with MCA delay --- pkg/protocol/protocol_warp_sync.go | 60 ++++++++++++++---------------- 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index b51177dae..352358148 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -167,10 +167,24 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // 1. Mark all transactions as accepted // 2. Mark all blocks as accepted // 3. Force commitment of the slot - var bookedBlocks atomic.Uint32 - var notarizedBlocks atomic.Uint32 - forceCommitmentFunc := func() { + // 1. Mark all transactions as accepted + for _, transactionID := range transactionIDs { + targetEngine.Ledger.ConflictDAG().SetAccepted(transactionID) + } + + // 2. Mark all blocks as accepted + for _, blockIDs := range blockIDsBySlotCommitment { + for _, blockID := range blockIDs { + block, exists := targetEngine.BlockCache.Block(blockID) + if !exists { // this should never happen as we just booked these blocks in this slot. + continue + } + + targetEngine.BlockGadget.SetAccepted(block) + } + } + // 3. Force commitment of the slot producedCommitment, err := targetEngine.Notarization.ForceCommit(commitmentID.Slot()) if err != nil { @@ -188,6 +202,8 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } commitment.IsFullyBooked.OnUpdateOnce(func(_ bool, _ bool) { + // Let's assume that MCA is 5: when we want to book 15, we expect to have the commitment of 10 to load + // accounts from it, hence why we make committable the slot at - MCA + 1 with respect of the current slot. minimumCommittableAge := w.protocol.APIForSlot(commitmentID.Slot()).ProtocolParameters().MinCommittableAge() if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - minimumCommittableAge + 1); exists { committableCommitment.IsCommittable.Set(true) @@ -204,35 +220,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return blocksToWarpSync } - blockBookedFunc := func(_ bool, _ bool) { - if bookedBlocks.Add(1) != totalBlocks { - return - } - - // 1. Mark all transactions as accepted - for _, transactionID := range transactionIDs { - targetEngine.Ledger.ConflictDAG().SetAccepted(transactionID) - } - - // 2. Mark all blocks as accepted - for _, blockIDs := range blockIDsBySlotCommitment { - for _, blockID := range blockIDs { - block, exists := targetEngine.BlockCache.Block(blockID) - if !exists { // this should never happen as we just booked these blocks in this slot. - continue - } - - targetEngine.BlockGadget.SetAccepted(block) - - block.Notarized().OnUpdate(func(_ bool, _ bool) { - if notarizedBlocks.Add(1) == totalBlocks { - commitment.IsFullyBooked.Set(true) - } - }) - } - } - } - + var bookedBlocks atomic.Uint32 blocksToWarpSync = ds.NewSet[iotago.BlockID]() for slotCommitmentID, blockIDs := range blockIDsBySlotCommitment { for _, blockID := range blockIDs { @@ -252,7 +240,13 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // block cache and thus if not root blocks no block in the next slot can become solid. targetEngine.EvictionState.AddRootBlock(block.ID(), slotCommitmentID) - block.Booked().OnUpdate(blockBookedFunc) + block.Booked().OnUpdate(func(_ bool, _ bool) { + if bookedBlocks.Add(1) != totalBlocks { + return + } + + commitment.IsFullyBooked.Set(true) + }) } } From f7aca115d4bf8dc0aefecc33b76f72cb62ba86e4 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 28 Nov 2023 12:22:24 +0100 Subject: [PATCH 293/356] Refactor: disable engine logging --- pkg/testsuite/mock/node.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index f878a1203..7fec89e93 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -111,7 +111,7 @@ func NewNode(t *testing.T, net *Network, partition string, name string, validato Workers: workerpool.NewGroup(name), logHandler: logHandler, - enableEngineLogging: true, + enableEngineLogging: false, attachedBlocks: make([]*blocks.Block, 0), } From 58a9972665de5a38da25c4d0edcd2fbb61dde235 Mon Sep 17 00:00:00 2001 From: Andrea V <1577639+karimodm@users.noreply.github.com> Date: Tue, 28 Nov 2023 12:24:40 +0100 Subject: [PATCH 294/356] Add rootblocks only before force-accepting them --- pkg/protocol/protocol_warp_sync.go | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 352358148..237367fc9 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -174,13 +174,18 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } // 2. Mark all blocks as accepted - for _, blockIDs := range blockIDsBySlotCommitment { + for slotCommitmentID, blockIDs := range blockIDsBySlotCommitment { for _, blockID := range blockIDs { block, exists := targetEngine.BlockCache.Block(blockID) if !exists { // this should never happen as we just booked these blocks in this slot. continue } + // We need to make sure that we add all blocks as root blocks because we don't know which blocks are root blocks without + // blocks from future slots. We're committing the current slot which then leads to the eviction of the blocks from the + // block cache and thus if not root blocks no block in the next slot can become solid. + targetEngine.EvictionState.AddRootBlock(block.ID(), slotCommitmentID) + targetEngine.BlockGadget.SetAccepted(block) } } @@ -222,7 +227,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo var bookedBlocks atomic.Uint32 blocksToWarpSync = ds.NewSet[iotago.BlockID]() - for slotCommitmentID, blockIDs := range blockIDsBySlotCommitment { + for _, blockIDs := range blockIDsBySlotCommitment { for _, blockID := range blockIDs { blocksToWarpSync.Add(blockID) @@ -235,11 +240,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo continue } - // We need to make sure that we add all blocks as root blocks because we don't know which blocks are root blocks without - // blocks from future slots. We're committing the current slot which then leads to the eviction of the blocks from the - // block cache and thus if not root blocks no block in the next slot can become solid. - targetEngine.EvictionState.AddRootBlock(block.ID(), slotCommitmentID) - + // TODO: this will need to be changed to WeightPropagated before marking a block as actually booked. block.Booked().OnUpdate(func(_ bool, _ bool) { if bookedBlocks.Add(1) != totalBlocks { return From 9e9697c88b21c65cf1171ea4fd2c4ba916637619 Mon Sep 17 00:00:00 2001 From: Andrea V <1577639+karimodm@users.noreply.github.com> Date: Tue, 28 Nov 2023 13:22:24 +0100 Subject: [PATCH 295/356] Reset the Engine when WarpSyncMode turns true --- pkg/protocol/protocol_warp_sync.go | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 237367fc9..579858fe1 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -13,6 +13,7 @@ import ( "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/workerpool" + "github.com/iotaledger/iota-core/pkg/protocol/engine" iotago "github.com/iotaledger/iota.go/v4" "github.com/iotaledger/iota.go/v4/merklehasher" ) @@ -44,7 +45,14 @@ func newWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { c.ticker.Events.Tick.Hook(c.SendRequest) protocol.Constructed.OnTrigger(func() { - c.protocol.Commitments.WithElements(func(commitment *Commitment) (shutdown func()) { + protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (shutdown func()) { + return chain.WarpSyncMode.OnUpdate(func(_ bool, warpsyncMode bool) { + if warpsyncMode { + engine.Reset() + } + }) + }) + protocol.Commitments.WithElements(func(commitment *Commitment) (shutdown func()) { return commitment.WarpSyncBlocks.OnUpdate(func(_ bool, warpSyncBlocks bool) { if warpSyncBlocks { c.ticker.StartTicker(commitment.ID()) @@ -160,8 +168,6 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo if targetEngine.Workers.WaitChildren(); targetEngine.Storage.Settings().LatestCommitment().ID().Slot() > commitmentID.Slot() { return blocksToWarpSync } - // TODO: reset the engine only once at the very beginning of the warp-sync process - // targetEngine.Reset() // Once all blocks are booked we // 1. Mark all transactions as accepted From 51431c795b2fd4580778c811fa59ea0f3c2e7da3 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 28 Nov 2023 21:57:44 +0100 Subject: [PATCH 296/356] Fix: TestLossOfAcceptanceFromGenesis test fixed --- pkg/protocol/chain.go | 2 +- pkg/protocol/engine/blocks/block.go | 12 +-- pkg/protocol/engine/clock/blocktime/clock.go | 4 +- pkg/protocol/protocol_warp_sync.go | 81 +++++++++++++------- 4 files changed, 62 insertions(+), 37 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 40ddfe5a1..557f5d3e7 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -92,7 +92,7 @@ func newChain(chains *Chains) *Chain { ClaimedWeight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](), VerifiedWeight: reactive.NewVariable[uint64](), - WarpSyncMode: reactive.NewVariable[bool]().Init(true), + WarpSyncMode: reactive.NewVariable[bool](), WarpSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), RequestAttestations: reactive.NewVariable[bool](), diff --git a/pkg/protocol/engine/blocks/block.go b/pkg/protocol/engine/blocks/block.go index 88ce9192e..8085d4010 100644 --- a/pkg/protocol/engine/blocks/block.go +++ b/pkg/protocol/engine/blocks/block.go @@ -48,7 +48,7 @@ type Block struct { dropped bool // Notarization - notarized reactive.Variable[bool] + notarized reactive.Event mutex syncutils.RWMutex @@ -86,7 +86,7 @@ func NewBlock(data *model.Block) *Block { invalid: reactive.NewVariable[bool](), booked: reactive.NewVariable[bool](), accepted: reactive.NewVariable[bool](), - notarized: reactive.NewVariable[bool](), + notarized: reactive.NewEvent(), workScore: data.WorkScore(), } } @@ -109,7 +109,7 @@ func NewRootBlock(blockID iotago.BlockID, commitmentID iotago.CommitmentID, issu booked: reactive.NewVariable[bool](), preAccepted: true, accepted: reactive.NewVariable[bool](), - notarized: reactive.NewVariable[bool](), + notarized: reactive.NewEvent(), scheduled: true, } @@ -135,7 +135,7 @@ func NewMissingBlock(blockID iotago.BlockID) *Block { invalid: reactive.NewVariable[bool](), booked: reactive.NewVariable[bool](), accepted: reactive.NewVariable[bool](), - notarized: reactive.NewVariable[bool](), + notarized: reactive.NewEvent(), } } @@ -605,7 +605,7 @@ func (b *Block) SetPreConfirmed() (wasUpdated bool) { return wasUpdated } -func (b *Block) Notarized() reactive.Variable[bool] { +func (b *Block) Notarized() reactive.Event { return b.notarized } @@ -614,7 +614,7 @@ func (b *Block) IsNotarized() (isBooked bool) { } func (b *Block) SetNotarized() (wasUpdated bool) { - return !b.notarized.Set(true) + return b.notarized.Trigger() } func (b *Block) String() string { diff --git a/pkg/protocol/engine/clock/blocktime/clock.go b/pkg/protocol/engine/clock/blocktime/clock.go index 506387df0..51801187b 100644 --- a/pkg/protocol/engine/clock/blocktime/clock.go +++ b/pkg/protocol/engine/clock/blocktime/clock.go @@ -55,7 +55,9 @@ func NewProvider(opts ...options.Option[Clock]) module.Provider[*engine.Engine, asyncOpt := event.WithWorkerPool(c.workerPool) c.HookStopped(lo.Batch( e.Events.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - c.acceptedTime.Advance(block.IssuingTime()) + block.Notarized().OnTrigger(func() { + c.acceptedTime.Advance(block.IssuingTime()) + }) }, asyncOpt).Unhook, e.Events.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 579858fe1..e17a85d7d 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -8,6 +8,7 @@ import ( "github.com/iotaledger/hive.go/ads" "github.com/iotaledger/hive.go/core/eventticker" "github.com/iotaledger/hive.go/ds" + "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore/mapdb" "github.com/iotaledger/hive.go/lo" @@ -46,12 +47,14 @@ func newWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { protocol.Constructed.OnTrigger(func() { protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (shutdown func()) { - return chain.WarpSyncMode.OnUpdate(func(_ bool, warpsyncMode bool) { - if warpsyncMode { + return chain.WarpSyncMode.OnUpdate(func(_ bool, warpSyncMode bool) { + if warpSyncMode { + engine.Workers.WaitChildren() engine.Reset() } }) }) + protocol.Commitments.WithElements(func(commitment *Commitment) (shutdown func()) { return commitment.WarpSyncBlocks.OnUpdate(func(_ bool, warpSyncBlocks bool) { if warpSyncBlocks { @@ -165,7 +168,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } // make sure the engine is clean and requires a warp-sync before we start processing the blocks - if targetEngine.Workers.WaitChildren(); targetEngine.Storage.Settings().LatestCommitment().ID().Slot() > commitmentID.Slot() { + if targetEngine.Storage.Settings().LatestCommitment().ID().Slot() > commitmentID.Slot() { return blocksToWarpSync } @@ -174,42 +177,64 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // 2. Mark all blocks as accepted // 3. Force commitment of the slot forceCommitmentFunc := func() { + if !chain.WarpSyncMode.Get() { + return + } + + // 0. Prepare data flow + var ( + notarizedBlocksCount uint64 + allBlocksNotarized = reactive.NewEvent() + ) + // 1. Mark all transactions as accepted for _, transactionID := range transactionIDs { targetEngine.Ledger.ConflictDAG().SetAccepted(transactionID) } - // 2. Mark all blocks as accepted - for slotCommitmentID, blockIDs := range blockIDsBySlotCommitment { - for _, blockID := range blockIDs { - block, exists := targetEngine.BlockCache.Block(blockID) - if !exists { // this should never happen as we just booked these blocks in this slot. - continue + // 2. Mark all blocks as accepted and wait for them to be notarized + if totalBlocks == 0 { + allBlocksNotarized.Trigger() + } else { + for slotCommitmentID, blockIDs := range blockIDsBySlotCommitment { + for _, blockID := range blockIDs { + block, exists := targetEngine.BlockCache.Block(blockID) + if !exists { // this should never happen as we just booked these blocks in this slot. + continue + } + + // We need to make sure that we add all blocks as root blocks because we don't know which blocks are root blocks without + // blocks from future slots. We're committing the current slot which then leads to the eviction of the blocks from the + // block cache and thus if not root blocks no block in the next slot can become solid. + targetEngine.EvictionState.AddRootBlock(block.ID(), slotCommitmentID) + + targetEngine.BlockGadget.SetAccepted(block) + + block.Notarized().OnTrigger(func() { + if atomic.AddUint64(¬arizedBlocksCount, 1) == uint64(totalBlocks) { + allBlocksNotarized.Trigger() + } + }) } - - // We need to make sure that we add all blocks as root blocks because we don't know which blocks are root blocks without - // blocks from future slots. We're committing the current slot which then leads to the eviction of the blocks from the - // block cache and thus if not root blocks no block in the next slot can become solid. - targetEngine.EvictionState.AddRootBlock(block.ID(), slotCommitmentID) - - targetEngine.BlockGadget.SetAccepted(block) } } - // 3. Force commitment of the slot - producedCommitment, err := targetEngine.Notarization.ForceCommit(commitmentID.Slot()) - if err != nil { - w.protocol.LogError("failed to force commitment", "commitmentID", commitmentID, "err", err) + allBlocksNotarized.OnTrigger(func() { + // 3. Force commitment of the slot + producedCommitment, err := targetEngine.Notarization.ForceCommit(commitmentID.Slot()) + if err != nil { + w.protocol.LogError("failed to force commitment", "commitmentID", commitmentID, "err", err) - return - } + return + } - // 4. Verify that the produced commitment is the same as the initially requested one - if producedCommitment.ID() != commitmentID { - w.protocol.LogError("commitment does not match", "expectedCommitmentID", commitmentID, "producedCommitmentID", producedCommitment.ID()) + // 4. Verify that the produced commitment is the same as the initially requested one + if producedCommitment.ID() != commitmentID { + w.protocol.LogError("commitment does not match", "expectedCommitmentID", commitmentID, "producedCommitmentID", producedCommitment.ID()) - return - } + return + } + }) } commitment.IsFullyBooked.OnUpdateOnce(func(_ bool, _ bool) { @@ -237,8 +262,6 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo for _, blockID := range blockIDs { blocksToWarpSync.Add(blockID) - w.LogError("requesting block", "blockID", blockID) - block, _ := targetEngine.BlockDAG.GetOrRequestBlock(blockID) if block == nil { w.protocol.LogError("failed to request block", "blockID", blockID) From 407c833816016ad6d251a49ca339d89633944b41 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 29 Nov 2023 00:54:00 +0100 Subject: [PATCH 297/356] Refactor: enable engine logging --- pkg/testsuite/mock/node.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 82b033425..a3b6b8c56 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -111,7 +111,7 @@ func NewNode(t *testing.T, net *Network, partition string, name string, validato Workers: workerpool.NewGroup(name), logHandler: logHandler, - enableEngineLogging: false, + enableEngineLogging: true, attachedBlocks: make([]*blocks.Block, 0), } From b4d6346265ed7f23aa216576b3f36794887377ee Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 29 Nov 2023 01:55:21 +0100 Subject: [PATCH 298/356] Feat: increased timeout --- pkg/tests/loss_of_acceptance_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index 9ab862f80..acf2aa39c 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -32,7 +32,7 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { 5, ), ), - testsuite.WithWaitFor(15*time.Second), + testsuite.WithWaitFor(30*time.Second), ) defer ts.Shutdown() From e1bfcdfc32c312bba572e1691078191d1f911ed4 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 29 Nov 2023 03:09:03 +0100 Subject: [PATCH 299/356] Feat: extend waiting time? --- pkg/tests/loss_of_acceptance_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index acf2aa39c..eac280eef 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -173,6 +173,8 @@ func TestLossOfAcceptanceFromSnapshot(t *testing.T) { { ts.IssueBlocksAtSlots("", []iotago.SlotIndex{21, 22}, 2, "block0", ts.Nodes("node0-restarted"), true, nil) + time.Sleep(10 * time.Second) + ts.AssertEqualStoredCommitmentAtIndex(20, ts.Nodes()...) ts.AssertLatestCommitmentSlotIndex(20, ts.Nodes()...) } From 1e4b2f26633bed120ed1da300cb5fa6eab9f020b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 29 Nov 2023 10:59:21 +0100 Subject: [PATCH 300/356] Feat: Added PR for bundled changes while debugging --- pkg/tests/loss_of_acceptance_test.go | 2 +- pkg/testsuite/mock/node.go | 101 ++++++++++++++------------- 2 files changed, 52 insertions(+), 51 deletions(-) diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index eac280eef..3929165cc 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -127,7 +127,7 @@ func TestLossOfAcceptanceFromSnapshot(t *testing.T) { node2 := ts.AddNode("node2") ts.Run(true, nil) - node2.Protocol.SetLogLevel(log.LevelTrace) + node2.Protocol.SetLogLevel(log.LevelDebug) // Issue up to slot 10, committing slot 8. { diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index a3b6b8c56..5d6531796 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -191,11 +191,11 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { }) } -func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engine.Engine, engineName string) { +func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engine.Engine) { events := instance.Events events.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] BlockDAG.BlockAttached: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("BlockDAG.BlockAttached", "block", block.ID()) n.mutex.Lock() defer n.mutex.Unlock() @@ -203,78 +203,80 @@ func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engi }) events.BlockDAG.BlockSolid.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] BlockDAG.BlockSolid: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("BlockDAG.BlockSolid", "block", block.ID()) }) events.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { - fmt.Printf("%s > [%s] BlockDAG.BlockInvalid: %s - %s\n", n.Name, engineName, block.ID(), err) + instance.LogTrace("BlockDAG.BlockInvalid", "block", block.ID(), "err", err) }) events.BlockDAG.BlockMissing.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] BlockDAG.BlockMissing: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("BlockDAG.BlockMissing", "block", block.ID()) }) events.BlockDAG.MissingBlockAttached.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] BlockDAG.MissingBlockAttached: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("BlockDAG.MissingBlockAttached", "block", block.ID()) }) events.SeatManager.BlockProcessed.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] SybilProtection.BlockProcessed: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("SeatManager.BlockProcessed", "block", block.ID()) }) events.Booker.BlockBooked.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Booker.BlockBooked: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("Booker.BlockBooked", "block", block.ID()) }) events.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { - fmt.Printf("%s > [%s] Booker.BlockInvalid: %s - %s\n", n.Name, engineName, block.ID(), err.Error()) + instance.LogTrace("Booker.BlockInvalid", "block", block.ID(), "err", err) }) events.Booker.TransactionInvalid.Hook(func(metadata mempool.TransactionMetadata, err error) { - fmt.Printf("%s > [%s] Booker.TransactionInvalid: %s - %s\n", n.Name, engineName, metadata.ID(), err.Error()) + instance.LogTrace("Booker.TransactionInvalid", "tx", metadata.ID(), "err", err) }) events.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Scheduler.BlockScheduled: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("Scheduler.BlockScheduled", "block", block.ID()) }) events.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Scheduler.BlockEnqueued: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("Scheduler.BlockEnqueued", "block", block.ID()) }) events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Scheduler.BlockSkipped: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("Scheduler.BlockSkipped", "block", block.ID()) }) events.Scheduler.BlockDropped.Hook(func(block *blocks.Block, err error) { - fmt.Printf("%s > [%s] Scheduler.BlockDropped: %s - %s\n", n.Name, engineName, block.ID(), err.Error()) + instance.LogTrace("Scheduler.BlockDropped", "block", block.ID(), "err", err) }) events.Clock.AcceptedTimeUpdated.Hook(func(newTime time.Time) { - fmt.Printf("%s > [%s] Clock.AcceptedTimeUpdated: %s [Slot %d]\n", n.Name, engineName, newTime, instance.LatestAPI().TimeProvider().SlotFromTime(newTime)) + instance.LogTrace("Clock.AcceptedTimeUpdated", "time", newTime, "slot", instance.LatestAPI().TimeProvider().SlotFromTime(newTime)) }) events.Clock.ConfirmedTimeUpdated.Hook(func(newTime time.Time) { - fmt.Printf("%s > [%s] Clock.ConfirmedTimeUpdated: %s [Slot %d]\n", n.Name, engineName, newTime, instance.LatestAPI().TimeProvider().SlotFromTime(newTime)) + instance.LogTrace("Clock.ConfirmedTimeUpdated", "time", newTime, "slot", instance.LatestAPI().TimeProvider().SlotFromTime(newTime)) }) events.PreSolidFilter.BlockPreAllowed.Hook(func(block *model.Block) { - fmt.Printf("%s > [%s] PreSolidFilter.BlockPreAllowed: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("PreSolidFilter.BlockPreAllowed", "block", block.ID()) }) events.PreSolidFilter.BlockPreFiltered.Hook(func(event *presolidfilter.BlockPreFilteredEvent) { - fmt.Printf("%s > [%s] PreSolidFilter.BlockPreFiltered: %s - %s\n", n.Name, engineName, event.Block.ID(), event.Reason.Error()) + instance.LogTrace("PreSolidFilter.BlockPreFiltered", "block", event.Block.ID(), "err", event.Reason) + if failOnBlockFiltered { n.Testing.Fatal("no blocks should be prefiltered") } }) events.PostSolidFilter.BlockAllowed.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] PostSolidFilter.BlockAllowed: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("PostSolidFilter.BlockAllowed", "block", block.ID()) }) events.PostSolidFilter.BlockFiltered.Hook(func(event *postsolidfilter.BlockFilteredEvent) { - fmt.Printf("%s > [%s] PostSolidFilter.BlockFiltered: %s - %s\n", n.Name, engineName, event.Block.ID(), event.Reason.Error()) + instance.LogTrace("PostSolidFilter.BlockFiltered", "block", event.Block.ID(), "err", event.Reason) + if failOnBlockFiltered { n.Testing.Fatal("no blocks should be filtered") } @@ -285,11 +287,11 @@ func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engi }) events.BlockRequester.Tick.Hook(func(blockID iotago.BlockID) { - fmt.Printf("%s > [%s] BlockRequester.Tick: %s\n", n.Name, engineName, blockID) + instance.LogTrace("BlockRequester.Tick", "block", blockID) }) events.BlockProcessed.Hook(func(blockID iotago.BlockID) { - fmt.Printf("%s > [%s] Engine.BlockProcessed: %s\n", n.Name, engineName, blockID) + instance.LogTrace("BlockProcessed", "block", blockID) }) events.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { @@ -316,109 +318,108 @@ func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engi require.NoError(n.Testing, err) } - fmt.Printf("%s > [%s] NotarizationManager.SlotCommitted: %s %s Accepted Blocks: %s\n %s\n Attestations: %s\n", n.Name, engineName, details.Commitment.ID(), details.Commitment, acceptedBlocks, roots, attestationBlockIDs) + instance.LogTrace("NotarizationManager.SlotCommitted", "commitment", details.Commitment.ID(), "acceptedBlocks", acceptedBlocks, "roots", roots, "attestations", attestationBlockIDs) }) events.Notarization.LatestCommitmentUpdated.Hook(func(commitment *model.Commitment) { - fmt.Printf("%s > [%s] NotarizationManager.LatestCommitmentUpdated: %s\n", n.Name, engineName, commitment.ID()) + instance.LogTrace("NotarizationManager.LatestCommitmentUpdated", "commitment", commitment.ID()) }) events.BlockGadget.BlockPreAccepted.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Consensus.BlockGadget.BlockPreAccepted: %s %s\n", n.Name, engineName, block.ID(), block.ProtocolBlock().Header.SlotCommitmentID) + instance.LogTrace("BlockGadget.BlockPreAccepted", "block", block.ID(), "slotCommitmentID", block.ProtocolBlock().Header.SlotCommitmentID) }) events.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Consensus.BlockGadget.BlockAccepted: %s @ slot %s committing to %s\n", n.Name, engineName, block.ID(), block.ID().Slot(), block.ProtocolBlock().Header.SlotCommitmentID) + instance.LogTrace("BlockGadget.BlockAccepted", "block", block.ID(), "slotCommitmentID", block.ProtocolBlock().Header.SlotCommitmentID) }) events.BlockGadget.BlockPreConfirmed.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Consensus.BlockGadget.BlockPreConfirmed: %s %s\n", n.Name, engineName, block.ID(), block.ProtocolBlock().Header.SlotCommitmentID) + instance.LogTrace("BlockGadget.BlockPreConfirmed", "block", block.ID(), "slotCommitmentID", block.ProtocolBlock().Header.SlotCommitmentID) }) events.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Consensus.BlockGadget.BlockConfirmed: %s %s\n", n.Name, engineName, block.ID(), block.ProtocolBlock().Header.SlotCommitmentID) + instance.LogTrace("BlockGadget.BlockConfirmed", "block", block.ID(), "slotCommitmentID", block.ProtocolBlock().Header.SlotCommitmentID) }) events.SlotGadget.SlotFinalized.Hook(func(slot iotago.SlotIndex) { - fmt.Printf("%s > [%s] Consensus.SlotGadget.SlotFinalized: %s\n", n.Name, engineName, slot) + instance.LogTrace("SlotGadget.SlotFinalized", "slot", slot) }) events.SeatManager.OnlineCommitteeSeatAdded.Hook(func(seat account.SeatIndex, accountID iotago.AccountID) { - fmt.Printf("%s > [%s] SybilProtection.OnlineCommitteeSeatAdded: %d - %s\n", n.Name, engineName, seat, accountID) + instance.LogTrace("SybilProtection.OnlineCommitteeSeatAdded", "seat", seat, "accountID", accountID) }) events.SeatManager.OnlineCommitteeSeatRemoved.Hook(func(seat account.SeatIndex) { - fmt.Printf("%s > [%s] SybilProtection.OnlineCommitteeSeatRemoved: %d\n", n.Name, engineName, seat) + instance.LogTrace("SybilProtection.OnlineCommitteeSeatRemoved", "seat", seat) }) events.SybilProtection.CommitteeSelected.Hook(func(committee *account.Accounts, epoch iotago.EpochIndex) { - fmt.Printf("%s > [%s] SybilProtection.CommitteeSelected: epoch %d - %s\n", n.Name, engineName, epoch, committee.IDs()) + instance.LogTrace("SybilProtection.CommitteeSelected", "epoch", epoch, "committee", committee.IDs()) }) events.ConflictDAG.ConflictCreated.Hook(func(conflictID iotago.TransactionID) { - fmt.Printf("%s > [%s] ConflictDAG.ConflictCreated: %s\n", n.Name, engineName, conflictID) + instance.LogTrace("ConflictDAG.ConflictCreated", "conflictID", conflictID) }) events.ConflictDAG.ConflictEvicted.Hook(func(conflictID iotago.TransactionID) { - fmt.Printf("%s > [%s] ConflictDAG.ConflictEvicted: %s\n", n.Name, engineName, conflictID) + instance.LogTrace("ConflictDAG.ConflictEvicted", "conflictID", conflictID) }) + events.ConflictDAG.ConflictRejected.Hook(func(conflictID iotago.TransactionID) { - fmt.Printf("%s > [%s] ConflictDAG.ConflictRejected: %s\n", n.Name, engineName, conflictID) + instance.LogTrace("ConflictDAG.ConflictRejected", "conflictID", conflictID) }) events.ConflictDAG.ConflictAccepted.Hook(func(conflictID iotago.TransactionID) { - fmt.Printf("%s > [%s] ConflictDAG.ConflictAccepted: %s\n", n.Name, engineName, conflictID) + instance.LogTrace("ConflictDAG.ConflictAccepted", "conflictID", conflictID) }) instance.Ledger.OnTransactionAttached(func(transactionMetadata mempool.TransactionMetadata) { - fmt.Printf("%s > [%s] Ledger.TransactionAttached: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("Ledger.TransactionAttached", "tx", transactionMetadata.ID()) transactionMetadata.OnSolid(func() { - fmt.Printf("%s > [%s] MemPool.TransactionSolid: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionSolid", "tx", transactionMetadata.ID()) }) transactionMetadata.OnExecuted(func() { - fmt.Printf("%s > [%s] MemPool.TransactionExecuted: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionExecuted", "tx", transactionMetadata.ID()) }) transactionMetadata.OnBooked(func() { - fmt.Printf("%s > [%s] MemPool.TransactionBooked: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionBooked", "tx", transactionMetadata.ID()) }) transactionMetadata.OnConflicting(func() { - fmt.Printf("%s > [%s] MemPool.TransactionConflicting: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionConflicting", "tx", transactionMetadata.ID()) }) transactionMetadata.OnAccepted(func() { - fmt.Printf("%s > [%s] MemPool.TransactionAccepted: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionAccepted", "tx", transactionMetadata.ID()) }) transactionMetadata.OnRejected(func() { - fmt.Printf("%s > [%s] MemPool.TransactionRejected: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionRejected", "tx", transactionMetadata.ID()) }) transactionMetadata.OnInvalid(func(err error) { - fmt.Printf("%s > [%s] MemPool.TransactionInvalid(%s): %s\n", n.Name, engineName, err, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionInvalid", "tx", transactionMetadata.ID(), "err", err) }) transactionMetadata.OnOrphanedSlotUpdated(func(slot iotago.SlotIndex) { - fmt.Printf("%s > [%s] MemPool.TransactionOrphanedSlotUpdated in slot %d: %s\n", n.Name, engineName, slot, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionOrphanedSlotUpdated", "tx", transactionMetadata.ID(), "slot", slot) }) transactionMetadata.OnCommittedSlotUpdated(func(slot iotago.SlotIndex) { - fmt.Printf("%s > [%s] MemPool.TransactionCommittedSlotUpdated in slot %d: %s\n", n.Name, engineName, slot, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionCommittedSlotUpdated", "tx", transactionMetadata.ID(), "slot", slot) }) transactionMetadata.OnPending(func() { - fmt.Printf("%s > [%s] MemPool.TransactionPending: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionPending", "tx", transactionMetadata.ID()) }) }) } func (n *Node) attachEngineLogs(failOnBlockFiltered bool, instance *engine.Engine) { - engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.Engines.Main.Get() != instance, "Candidate", "Main"), instance.Name()[:8]) - - n.attachEngineLogsWithName(failOnBlockFiltered, instance, engineName) + n.attachEngineLogsWithName(failOnBlockFiltered, instance) } func (n *Node) Wait() { From a467a260c8004cf7425b873a4e596c40904c039f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Wed, 29 Nov 2023 11:20:02 +0100 Subject: [PATCH 301/356] Feat: added more logs --- pkg/protocol/protocol_blocks.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index b18983f3b..4550f9818 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -108,7 +108,7 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { if !b.droppedBlocksBuffer.Add(block.ProtocolBlock().Header.SlotCommitmentID, types.NewTuple(block, from)) { b.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID()) } else { - b.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID()) + b.LogDebug("dropped block referencing unsolid commitment added to dropped blocks buffer", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID()) } return From ed3888792cbee5123a8e61606ceb697510adad76 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 30 Nov 2023 00:09:37 +0100 Subject: [PATCH 302/356] Feat: added log output --- pkg/protocol/protocol_blocks.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 4550f9818..41a675a9f 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -112,9 +112,11 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { } return + } else if block.ProtocolBlock().Header.SlotCommitmentID.Slot() >= 19 { + b.LogError("received block", "blockID", block.ID(), "commitment", commitment.LogName()) + } else { + b.LogTrace("received block", "blockID", block.ID(), "commitment", commitment.LogName()) } - - b.LogTrace("received block", "blockID", block.ID(), "commitment", commitment.LogName()) }) } From 0db2bf006e7cc359b74adb4abfda4e0aa528d603 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 30 Nov 2023 09:38:55 +0100 Subject: [PATCH 303/356] Feat: changed some code --- pkg/protocol/protocol_blocks.go | 37 +++++++++++++++++----------- pkg/tests/loss_of_acceptance_test.go | 2 -- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 41a675a9f..1a2e948c6 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -53,22 +53,29 @@ func newBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) }) - protocol.Chains.WithElements(func(chain *Chain) func() { - return chain.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { - return engineInstance.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook - }) - }) - - protocol.Chains.Main.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { - if engine != nil { - unsubscribeOnEngineChange(func() (unsubscribe func()) { - return lo.Batch( - engine.Events.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, - engine.Events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, - ) - }) - } + //protocol.Chains.WithElements(func(chain *Chain) func() { + // return chain.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { + // return engineInstance.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook + // }) + //}) + + protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (shutdown func()) { + return lo.Batch( + engine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook, + engine.Events.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, + engine.Events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, + ) }) + //protocol.Chains.Main.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { + // if engine != nil { + // unsubscribeOnEngineChange(func() (unsubscribe func()) { + // return lo.Batch( + // engine.Events.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, + // engine.Events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, + // ) + // }) + // } + //}) }) return b diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index 3929165cc..c0d1d2420 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -173,8 +173,6 @@ func TestLossOfAcceptanceFromSnapshot(t *testing.T) { { ts.IssueBlocksAtSlots("", []iotago.SlotIndex{21, 22}, 2, "block0", ts.Nodes("node0-restarted"), true, nil) - time.Sleep(10 * time.Second) - ts.AssertEqualStoredCommitmentAtIndex(20, ts.Nodes()...) ts.AssertLatestCommitmentSlotIndex(20, ts.Nodes()...) } From 13cd73a53e62b61424b2a6428f2250b2ad622c37 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 30 Nov 2023 10:48:30 +0100 Subject: [PATCH 304/356] Feat: added log --- pkg/tests/loss_of_acceptance_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index c0d1d2420..d5afd8a66 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -171,6 +171,8 @@ func TestLossOfAcceptanceFromSnapshot(t *testing.T) { // Need to issue to slot 22 so that all other nodes can warp sync up to slot 19 and then commit slot 20 themselves. { + fmt.Println("ISSUE BLOCKS SO THAT NODES CAN WARP SYNC UP TO SLOT 19") + ts.IssueBlocksAtSlots("", []iotago.SlotIndex{21, 22}, 2, "block0", ts.Nodes("node0-restarted"), true, nil) ts.AssertEqualStoredCommitmentAtIndex(20, ts.Nodes()...) From 8f60e3de6b65295314e5abf7ecdbc05f48988088 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 30 Nov 2023 10:52:06 +0100 Subject: [PATCH 305/356] Feat: add logging --- pkg/protocol/protocol_blocks.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 1a2e948c6..4833486cd 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -45,7 +45,7 @@ func newBlocksProtocol(protocol *Protocol) *BlocksProtocol { return commitment.ReplayDroppedBlocks.OnUpdate(func(_ bool, replayBlocks bool) { if replayBlocks { for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { - b.LogTrace("replaying dropped block", "commitmentID", commitment.ID(), "blockID", droppedBlock.A.ID()) + b.LogError("replaying dropped block", "commitmentID", commitment.ID(), "blockID", droppedBlock.A.ID()) b.ProcessResponse(droppedBlock.A, droppedBlock.B) } From a52498764e14c006cf87628100b38045f5f90a53 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 30 Nov 2023 13:15:30 +0100 Subject: [PATCH 306/356] Feat: added logging --- pkg/tests/loss_of_acceptance_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index d5afd8a66..96609bcb6 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -127,7 +127,7 @@ func TestLossOfAcceptanceFromSnapshot(t *testing.T) { node2 := ts.AddNode("node2") ts.Run(true, nil) - node2.Protocol.SetLogLevel(log.LevelDebug) + node2.Protocol.SetLogLevel(log.LevelTrace) // Issue up to slot 10, committing slot 8. { From ff87a2e64754bab1758949513df16385fc05e271 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 30 Nov 2023 15:54:04 +0100 Subject: [PATCH 307/356] Feat: added solidity stuff to the logging - let's see --- .../engine/blockdag/inmemoryblockdag/blockdag.go | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go b/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go index 6a9c3cdf4..d7fb579c9 100644 --- a/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go +++ b/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go @@ -1,8 +1,10 @@ package inmemoryblockdag import ( + "fmt" "sync/atomic" + "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" @@ -74,6 +76,8 @@ func (b *BlockDAG) setupBlock(block *blocks.Block) { var unsolidParentsCount atomic.Int32 unsolidParentsCount.Store(int32(len(block.Parents()))) + unsolidParents := ds.NewSet[iotago.BlockID]() + block.ForEachParent(func(parent iotago.Parent) { parentBlock, exists := b.blockCache.Block(parent.ID) if !exists { @@ -82,7 +86,13 @@ func (b *BlockDAG) setupBlock(block *blocks.Block) { return } + unsolidParents.Add(parent.ID) + fmt.Println("unsolid Parents of ", block.ID(), unsolidParents) + parentBlock.Solid().OnUpdateOnce(func(_ bool, _ bool) { + unsolidParents.Delete(parent.ID) + fmt.Println("unsolid Parents of ", block.ID(), unsolidParents) + if unsolidParentsCount.Add(-1) == 0 { if block.SetSolid() { b.events.BlockSolid.Trigger(block) From 8b97187593daf890a630706e290f601d2e53142e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Thu, 30 Nov 2023 16:52:05 +0100 Subject: [PATCH 308/356] Feat: add logging --- pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go b/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go index d7fb579c9..7a2c1828f 100644 --- a/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go +++ b/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go @@ -93,8 +93,10 @@ func (b *BlockDAG) setupBlock(block *blocks.Block) { unsolidParents.Delete(parent.ID) fmt.Println("unsolid Parents of ", block.ID(), unsolidParents) - if unsolidParentsCount.Add(-1) == 0 { + if counter := unsolidParentsCount.Add(-1); counter == 0 { + fmt.Println("unsolid counter", counter) if block.SetSolid() { + fmt.Println("unsolid Trigger", counter) b.events.BlockSolid.Trigger(block) } } From aa6642ed8e03136b1bd1c2f1665d2997e9eaf949 Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Fri, 1 Dec 2023 13:51:22 +0800 Subject: [PATCH 309/356] Change warp sync to wait for WeightPropagated instead of Booked of blocks before commitment is triggered --- pkg/protocol/protocol_warp_sync.go | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 38e6b2244..844881d89 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -196,18 +196,13 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo if totalBlocks == 0 { allBlocksNotarized.Trigger() } else { - for slotCommitmentID, blockIDs := range blockIDsBySlotCommitment { + for _, blockIDs := range blockIDsBySlotCommitment { for _, blockID := range blockIDs { block, exists := targetEngine.BlockCache.Block(blockID) if !exists { // this should never happen as we just booked these blocks in this slot. continue } - // We need to make sure that we add all blocks as root blocks because we don't know which blocks are root blocks without - // blocks from future slots. We're committing the current slot which then leads to the eviction of the blocks from the - // block cache and thus if not root blocks no block in the next slot can become solid. - targetEngine.EvictionState.AddRootBlock(block.ID(), slotCommitmentID) - targetEngine.BlockGadget.SetAccepted(block) block.Notarized().OnTrigger(func() { @@ -234,6 +229,21 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } + + // TODO: maybe we don't need to set root blocks as we leave a window for warp sync now. + for slotCommitmentID, blockIDs := range blockIDsBySlotCommitment { + for _, blockID := range blockIDs { + block, exists := targetEngine.BlockCache.Block(blockID) + if !exists { // this should never happen as we just booked these blocks in this slot. + continue + } + + // We need to make sure that we add all blocks as root blocks because we don't know which blocks are root blocks without + // blocks from future slots. We're committing the current slot which then leads to the eviction of the blocks from the + // block cache and thus if not root blocks no block in the next slot can become solid. + targetEngine.EvictionState.AddRootBlock(block.ID(), slotCommitmentID) + } + } }) } @@ -241,7 +251,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // Let's assume that MCA is 5: when we want to book 15, we expect to have the commitment of 10 to load // accounts from it, hence why we make committable the slot at - MCA + 1 with respect of the current slot. minimumCommittableAge := w.protocol.APIForSlot(commitmentID.Slot()).ProtocolParameters().MinCommittableAge() - if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - minimumCommittableAge + 1); exists { + if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - minimumCommittableAge); exists { committableCommitment.IsCommittable.Set(true) } }) @@ -269,8 +279,9 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo continue } - // TODO: this will need to be changed to WeightPropagated before marking a block as actually booked. - block.Booked().OnUpdate(func(_ bool, _ bool) { + // We need to make sure that all blocks are fully booked and their weight propagated before we can + // move the window forward. This is in order to ensure that confirmation and finalization is correctly propagated. + block.WeightPropagated().OnUpdate(func(_ bool, _ bool) { if bookedBlocks.Add(1) != totalBlocks { return } From bb338aff99922a3fde7aa79398eaa06110b3b7d0 Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Fri, 1 Dec 2023 13:52:54 +0800 Subject: [PATCH 310/356] Adjust TestProtocol_EngineSwitching_CommitteeRotation to wait for the correct slot after node3 switched the engine --- pkg/tests/protocol_engine_switching_test.go | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pkg/tests/protocol_engine_switching_test.go b/pkg/tests/protocol_engine_switching_test.go index a6ab346f3..046ffbd99 100644 --- a/pkg/tests/protocol_engine_switching_test.go +++ b/pkg/tests/protocol_engine_switching_test.go @@ -377,7 +377,7 @@ func TestProtocol_EngineSwitching(t *testing.T) { func TestProtocol_EngineSwitching_CommitteeRotation(t *testing.T) { ts := testsuite.NewTestSuite(t, - testsuite.WithWaitFor(30*time.Second), + testsuite.WithWaitFor(15*time.Second), testsuite.WithProtocolParametersOptions( iotago.WithTimeProviderOptions( @@ -402,7 +402,7 @@ func TestProtocol_EngineSwitching_CommitteeRotation(t *testing.T) { node2 := ts.AddValidatorNode("node2") node3 := ts.AddValidatorNode("node3") - const expectedCommittedSlotAfterPartitionMerge = 19 + const expectedCommittedSlotAfterPartitionMerge = 18 nodesP1 := []*mock.Node{node0, node1, node2} nodesP2 := []*mock.Node{node3} @@ -605,6 +605,9 @@ func TestProtocol_EngineSwitching_CommitteeRotation(t *testing.T) { // Here we need to let enough time pass for the nodes to sync up the candidate engines and switch them ts.AssertMainEngineSwitchedCount(1, nodesP2...) + // Make sure that enough activity messages are issued so that a block in slot 21 gets accepted and triggers commitment of slot 18. + time.Sleep(3 * time.Second) + ctxP1Cancel() wg.Wait() } @@ -613,12 +616,10 @@ func TestProtocol_EngineSwitching_CommitteeRotation(t *testing.T) { // Those nodes should also have all the blocks from the target fork P1 and should not have blocks from P2. // This is to make sure that the storage was copied correctly during engine switching. ts.AssertBlocksExist(ts.BlocksWithPrefix("P0"), true, ts.Nodes()...) - ts.AssertBlocksExist(ts.BlocksWithPrefix("P1"), true, ts.Nodes()...) // not all blocks of slot 19 are available on node3 (buffer issue?) + ts.AssertBlocksExist(ts.BlocksWithPrefix("P1"), true, ts.Nodes()...) ts.AssertBlocksExist(ts.BlocksWithPrefix("P2"), false, ts.Nodes()...) - ts.AssertNodeState(ts.Nodes(), - testsuite.WithEqualStoredCommitmentAtIndex(expectedCommittedSlotAfterPartitionMerge), - ) + ts.AssertEqualStoredCommitmentAtIndex(expectedCommittedSlotAfterPartitionMerge, ts.Nodes()...) // Assert committee in epoch 1. ts.AssertSybilProtectionCandidates(0, ts.AccountsOfNodes("node1", "node2"), ts.Nodes()...) From aeb92580e279a9ec166da6da3ec86f99e919a5c7 Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Fri, 1 Dec 2023 13:59:13 +0800 Subject: [PATCH 311/356] Fix calculation of WarpSyncThreshold --- pkg/protocol/chain.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 557f5d3e7..01c88f98b 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -325,7 +325,12 @@ func (c *Chain) deriveOutOfSyncThreshold(latestSeenSlot reactive.ReadableVariabl // committable age or 0 if this would cause an overflow to the negative numbers). func (c *Chain) deriveWarpSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], engineInstance *engine.Engine) func() { return c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - if warpSyncOffset := engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge(); warpSyncOffset < latestSeenSlot { + // The offset needs to be always at least minCommittableAge as we measure whether to turn off WarpSyncMode + // against the LatestProducedCommitment. As such, we always need to warp sync at least a window of minCommittableAge slots, + // so that we can commit. + // For example assuming minCommittable=3: if we warpsync until slot 17, the highest commitment we can produce is 14. + warpSyncOffset := engineInstance.LatestAPI().ProtocolParameters().MinCommittableAge() + engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge() + if warpSyncOffset < latestSeenSlot { return latestSeenSlot - warpSyncOffset } From 62a9cb494857ec771f993b112f34aff1fd6988a2 Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Fri, 1 Dec 2023 13:59:43 +0800 Subject: [PATCH 312/356] WarpSyncMode should be enabled if latestProducedCommitment == nil --- pkg/protocol/chain.go | 5 ++++- pkg/protocol/engines.go | 3 +++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 01c88f98b..620903d3b 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -232,9 +232,12 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { // deriveWarpSyncMode defines how a chain determines whether it is in warp sync mode or not. func (c *Chain) deriveWarpSyncMode() func() { return c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestProducedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + c.Log("warp sync mode", log.LevelTrace, "warpSyncMode", warpSyncMode, "latestProducedCommitment", latestProducedCommitment, "warpSyncThreshold", warpSyncThreshold, "outOfSyncThreshold", outOfSyncThreshold) + + // TODO: we don't set a latestProducedCommitment when forking, and therefore it is always nil after an engine is forked // if we have no latest produced commitment, then the engine is not yet initialized and warp sync is disabled if latestProducedCommitment == nil { - return false + return true } // if warp sync mode is enabled, keep it enabled until we are no longer below the warp sync threshold diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 781dc0d32..e30cfe19f 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -9,6 +9,7 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" + "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/ioutils" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/workerpool" @@ -158,6 +159,8 @@ func (e *Engines) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error) { return nil, ierrors.Wrap(err, "error while rolling back attestations storage on candidate engine") } + e.Log("forked engine", log.LevelTrace, "name", newEngineAlias[0:8], "slot", slot) + return candidateEngine, nil } From 7243706c4cbec3ae6a77f4ccaa641c7b812d3fd5 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 1 Dec 2023 10:49:49 +0100 Subject: [PATCH 313/356] Feat: fixed some stuff --- pkg/protocol/chain.go | 14 ++++---------- pkg/protocol/chains.go | 4 ++-- pkg/protocol/commitment.go | 1 + pkg/protocol/protocol_attestations.go | 2 +- 4 files changed, 8 insertions(+), 13 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 620903d3b..8c26912dd 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -232,12 +232,10 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { // deriveWarpSyncMode defines how a chain determines whether it is in warp sync mode or not. func (c *Chain) deriveWarpSyncMode() func() { return c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestProducedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - c.Log("warp sync mode", log.LevelTrace, "warpSyncMode", warpSyncMode, "latestProducedCommitment", latestProducedCommitment, "warpSyncThreshold", warpSyncThreshold, "outOfSyncThreshold", outOfSyncThreshold) - - // TODO: we don't set a latestProducedCommitment when forking, and therefore it is always nil after an engine is forked - // if we have no latest produced commitment, then the engine is not yet initialized and warp sync is disabled + // latest produced commitment is nil if we have not produced any commitment yet (intermediary state during + // startup) if latestProducedCommitment == nil { - return true + return warpSyncMode } // if warp sync mode is enabled, keep it enabled until we are no longer below the warp sync threshold @@ -328,11 +326,7 @@ func (c *Chain) deriveOutOfSyncThreshold(latestSeenSlot reactive.ReadableVariabl // committable age or 0 if this would cause an overflow to the negative numbers). func (c *Chain) deriveWarpSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], engineInstance *engine.Engine) func() { return c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - // The offset needs to be always at least minCommittableAge as we measure whether to turn off WarpSyncMode - // against the LatestProducedCommitment. As such, we always need to warp sync at least a window of minCommittableAge slots, - // so that we can commit. - // For example assuming minCommittable=3: if we warpsync until slot 17, the highest commitment we can produce is 14. - warpSyncOffset := engineInstance.LatestAPI().ProtocolParameters().MinCommittableAge() + engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge() + warpSyncOffset := engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge() if warpSyncOffset < latestSeenSlot { return latestSeenSlot - warpSyncOffset } diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 2f0051148..d41c4ebab 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -31,7 +31,7 @@ type Chains struct { // HeaviestVerifiedCandidate contains the candidate chain with the heaviest verified weight. HeaviestVerifiedCandidate reactive.Variable[*Chain] - // LatestSeenSlot contains the latest slot that was seen by any of the chains. + // LatestSeenSlot contains the slot of the latest commitment of any received block. LatestSeenSlot reactive.Variable[iotago.SlotIndex] // protocol contains a reference to the Protocol instance that this component belongs to. @@ -158,7 +158,7 @@ func (c *Chains) deriveLatestSeenSlot(protocol *Protocol) func() { }), protocol.Network.OnBlockReceived(func(block *model.Block, src peer.ID) { - c.LatestSeenSlot.Set(mainEngine.LatestAPI().TimeProvider().SlotFromTime(block.ProtocolBlock().Header.IssuingTime)) + c.LatestSeenSlot.Set(block.ProtocolBlock().Header.SlotCommitmentID.Slot()) }), ) }) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index cd3fd8387..ca06a32ab 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -230,6 +230,7 @@ func (c *Commitment) deriveChain(parent *Commitment) func() { if currentChain == nil { currentChain = c.commitments.protocol.Chains.newChain() currentChain.ForkingPoint.Set(c) + currentChain.LatestProducedCommitment.Set(parent) } return currentChain diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index 819813758..f2c4c3153 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -30,7 +30,7 @@ type AttestationsProtocol struct { // commitmentVerifiers contains the commitment verifiers that are used to verify received attestations. commitmentVerifiers *shrinkingmap.ShrinkingMap[iotago.CommitmentID, *CommitmentVerifier] - // Logger embeds a logger that can be used to log messages emitted by this chain. + // Logger embeds a logger that can be used to log messages emitted by this component. log.Logger } From 32ebf8b507af13f68a0b802a0048bb5522349643 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 1 Dec 2023 13:22:15 +0100 Subject: [PATCH 314/356] Fix: fixed tests --- pkg/core/buffer/unsolid_commitment_buffer.go | 2 +- pkg/protocol/chain.go | 6 +- pkg/protocol/commitment.go | 1 + .../blockdag/inmemoryblockdag/blockdag.go | 14 +---- pkg/protocol/protocol_warp_sync.go | 2 +- pkg/testsuite/mock/node.go | 60 +++++++++++++++++-- 6 files changed, 62 insertions(+), 23 deletions(-) diff --git a/pkg/core/buffer/unsolid_commitment_buffer.go b/pkg/core/buffer/unsolid_commitment_buffer.go index 27df0dd51..a6417a4d7 100644 --- a/pkg/core/buffer/unsolid_commitment_buffer.go +++ b/pkg/core/buffer/unsolid_commitment_buffer.go @@ -51,7 +51,7 @@ func (u *UnsolidCommitmentBuffer[V]) Add(commitmentID iotago.CommitmentID, value u.mutex.RLock() defer u.mutex.RUnlock() - if commitmentID.Slot() <= u.lastEvictedSlot { + if u.lastEvictedSlot != 0 && commitmentID.Slot() <= u.lastEvictedSlot { return false } diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 8c26912dd..aeaa16c02 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -92,7 +92,7 @@ func newChain(chains *Chains) *Chain { ClaimedWeight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](), VerifiedWeight: reactive.NewVariable[uint64](), - WarpSyncMode: reactive.NewVariable[bool](), + WarpSyncMode: reactive.NewVariable[bool]().Init(true), WarpSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), RequestAttestations: reactive.NewVariable[bool](), @@ -326,9 +326,9 @@ func (c *Chain) deriveOutOfSyncThreshold(latestSeenSlot reactive.ReadableVariabl // committable age or 0 if this would cause an overflow to the negative numbers). func (c *Chain) deriveWarpSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], engineInstance *engine.Engine) func() { return c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - warpSyncOffset := engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge() + warpSyncOffset := engineInstance.LatestAPI().ProtocolParameters().MinCommittableAge() if warpSyncOffset < latestSeenSlot { - return latestSeenSlot - warpSyncOffset + return latestSeenSlot - warpSyncOffset + 1 } return 0 diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index ca06a32ab..d739bc43f 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -158,6 +158,7 @@ func (c *Commitment) initDerivedProperties() (shutdown func()) { return lo.Batch( // mark commitments that are marked as root as verified c.IsCommitted.InheritFrom(c.IsRoot), + c.IsAboveLatestVerifiedCommitment.InheritFrom(c.IsRoot), // mark commitments that are marked as verified as attested, fully booked and committable c.IsAttested.InheritFrom(c.IsCommitted), diff --git a/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go b/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go index 7a2c1828f..6a9c3cdf4 100644 --- a/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go +++ b/pkg/protocol/engine/blockdag/inmemoryblockdag/blockdag.go @@ -1,10 +1,8 @@ package inmemoryblockdag import ( - "fmt" "sync/atomic" - "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/runtime/event" "github.com/iotaledger/hive.go/runtime/module" @@ -76,8 +74,6 @@ func (b *BlockDAG) setupBlock(block *blocks.Block) { var unsolidParentsCount atomic.Int32 unsolidParentsCount.Store(int32(len(block.Parents()))) - unsolidParents := ds.NewSet[iotago.BlockID]() - block.ForEachParent(func(parent iotago.Parent) { parentBlock, exists := b.blockCache.Block(parent.ID) if !exists { @@ -86,17 +82,9 @@ func (b *BlockDAG) setupBlock(block *blocks.Block) { return } - unsolidParents.Add(parent.ID) - fmt.Println("unsolid Parents of ", block.ID(), unsolidParents) - parentBlock.Solid().OnUpdateOnce(func(_ bool, _ bool) { - unsolidParents.Delete(parent.ID) - fmt.Println("unsolid Parents of ", block.ID(), unsolidParents) - - if counter := unsolidParentsCount.Add(-1); counter == 0 { - fmt.Println("unsolid counter", counter) + if unsolidParentsCount.Add(-1) == 0 { if block.SetSolid() { - fmt.Println("unsolid Trigger", counter) b.events.BlockSolid.Trigger(block) } } diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 844881d89..fb6a3c111 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -251,7 +251,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // Let's assume that MCA is 5: when we want to book 15, we expect to have the commitment of 10 to load // accounts from it, hence why we make committable the slot at - MCA + 1 with respect of the current slot. minimumCommittableAge := w.protocol.APIForSlot(commitmentID.Slot()).ProtocolParameters().MinCommittableAge() - if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - minimumCommittableAge); exists { + if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - minimumCommittableAge + 1); exists { committableCommitment.IsCommittable.Set(true) } }) diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index 2d1ca30fc..b9031ee2e 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -45,6 +45,11 @@ func UnregisterIDAliases() { idAliases = make(map[peer.ID]string) } +type InvalidSignedTransactionEvent struct { + Metadata mempool.SignedTransactionMetadata + Error error +} + type Node struct { Testing *testing.T @@ -72,10 +77,11 @@ type Node struct { logHandler slog.Handler enableEngineLogging bool - mutex syncutils.RWMutex - attachedBlocks []*blocks.Block - currentSlot iotago.SlotIndex - filteredBlockEvents []*postsolidfilter.BlockFilteredEvent + mutex syncutils.RWMutex + attachedBlocks []*blocks.Block + currentSlot iotago.SlotIndex + filteredBlockEvents []*postsolidfilter.BlockFilteredEvent + invalidTransactionEvents map[iotago.SignedTransactionID]InvalidSignedTransactionEvent } func NewNode(t *testing.T, net *Network, partition string, name string, validator bool, logHandler slog.Handler) *Node { @@ -113,7 +119,8 @@ func NewNode(t *testing.T, net *Network, partition string, name string, validato logHandler: logHandler, enableEngineLogging: true, - attachedBlocks: make([]*blocks.Block, 0), + attachedBlocks: make([]*blocks.Block, 0), + invalidTransactionEvents: make(map[iotago.SignedTransactionID]InvalidSignedTransactionEvent), } } @@ -179,6 +186,33 @@ func (n *Node) hookEvents() { n.filteredBlockEvents = append(n.filteredBlockEvents, event) }) + + n.Protocol.Engines.Main.Get().Ledger.MemPool().OnSignedTransactionAttached( + func(signedTransactionMetadata mempool.SignedTransactionMetadata) { + signedTxID := signedTransactionMetadata.ID() + + signedTransactionMetadata.OnSignaturesInvalid(func(err error) { + n.mutex.Lock() + defer n.mutex.Unlock() + + n.invalidTransactionEvents[signedTxID] = InvalidSignedTransactionEvent{ + Metadata: signedTransactionMetadata, + Error: err, + } + }) + + transactionMetadata := signedTransactionMetadata.TransactionMetadata() + + transactionMetadata.OnInvalid(func(err error) { + n.mutex.Lock() + defer n.mutex.Unlock() + + n.invalidTransactionEvents[signedTxID] = InvalidSignedTransactionEvent{ + Metadata: signedTransactionMetadata, + Error: err, + } + }) + }) } func (n *Node) hookLogging(failOnBlockFiltered bool) { @@ -373,6 +407,14 @@ func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engi instance.LogTrace("ConflictDAG.SpendAccepted", "conflictID", conflictID) }) + instance.Ledger.MemPool().OnSignedTransactionAttached( + func(signedTransactionMetadata mempool.SignedTransactionMetadata) { + signedTransactionMetadata.OnSignaturesInvalid(func(err error) { + instance.LogTrace("MemPool.SignedTransactionSignaturesInvalid", "tx", signedTransactionMetadata.ID(), "err", err) + }) + }, + ) + instance.Ledger.OnTransactionAttached(func(transactionMetadata mempool.TransactionMetadata) { instance.LogTrace("Ledger.TransactionAttached", "tx", transactionMetadata.ID()) @@ -487,6 +529,14 @@ func (n *Node) MainEngineSwitchedCount() int { return int(n.mainEngineSwitchedCount.Load()) } +func (n *Node) TransactionFailure(txID iotago.SignedTransactionID) (InvalidSignedTransactionEvent, bool) { + n.mutex.RLock() + defer n.mutex.RUnlock() + event, exists := n.invalidTransactionEvents[txID] + + return event, exists +} + func (n *Node) AttachedBlocks() []*blocks.Block { n.mutex.RLock() defer n.mutex.RUnlock() From b3049b5f74f58fa254968ddb8febf6328b42df2c Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 1 Dec 2023 13:25:36 +0100 Subject: [PATCH 315/356] Refactor: reverted changes --- pkg/protocol/protocol_blocks.go | 26 ++++---------------------- 1 file changed, 4 insertions(+), 22 deletions(-) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 4833486cd..3afd74807 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -45,7 +45,7 @@ func newBlocksProtocol(protocol *Protocol) *BlocksProtocol { return commitment.ReplayDroppedBlocks.OnUpdate(func(_ bool, replayBlocks bool) { if replayBlocks { for _, droppedBlock := range b.droppedBlocksBuffer.GetValues(commitment.ID()) { - b.LogError("replaying dropped block", "commitmentID", commitment.ID(), "blockID", droppedBlock.A.ID()) + b.LogTrace("replaying dropped block", "commitmentID", commitment.ID(), "blockID", droppedBlock.A.ID()) b.ProcessResponse(droppedBlock.A, droppedBlock.B) } @@ -53,12 +53,6 @@ func newBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) }) - //protocol.Chains.WithElements(func(chain *Chain) func() { - // return chain.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { - // return engineInstance.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook - // }) - //}) - protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (shutdown func()) { return lo.Batch( engine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook, @@ -66,16 +60,6 @@ func newBlocksProtocol(protocol *Protocol) *BlocksProtocol { engine.Events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, ) }) - //protocol.Chains.Main.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { - // if engine != nil { - // unsubscribeOnEngineChange(func() (unsubscribe func()) { - // return lo.Batch( - // engine.Events.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, - // engine.Events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, - // ) - // }) - // } - //}) }) return b @@ -115,15 +99,13 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { if !b.droppedBlocksBuffer.Add(block.ProtocolBlock().Header.SlotCommitmentID, types.NewTuple(block, from)) { b.LogError("failed to add dropped block referencing unsolid commitment to dropped blocks buffer", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID()) } else { - b.LogDebug("dropped block referencing unsolid commitment added to dropped blocks buffer", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID()) + b.LogTrace("dropped block referencing unsolid commitment added to dropped blocks buffer", "commitmentID", block.ProtocolBlock().Header.SlotCommitmentID, "blockID", block.ID()) } return - } else if block.ProtocolBlock().Header.SlotCommitmentID.Slot() >= 19 { - b.LogError("received block", "blockID", block.ID(), "commitment", commitment.LogName()) - } else { - b.LogTrace("received block", "blockID", block.ID(), "commitment", commitment.LogName()) } + + b.LogTrace("received block", "blockID", block.ID(), "commitment", commitment.LogName()) }) } From 9c845ec9d8b03983b10ec37f5ee25ca24aa1f23f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 1 Dec 2023 13:26:42 +0100 Subject: [PATCH 316/356] Refactor: reverted more changes --- pkg/tests/loss_of_acceptance_test.go | 2 -- 1 file changed, 2 deletions(-) diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index 62cf680d8..93ec48b57 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -171,8 +171,6 @@ func TestLossOfAcceptanceFromSnapshot(t *testing.T) { // Need to issue to slot 22 so that all other nodes can warp sync up to slot 19 and then commit slot 20 themselves. { - fmt.Println("ISSUE BLOCKS SO THAT NODES CAN WARP SYNC UP TO SLOT 19") - ts.IssueBlocksAtSlots("", []iotago.SlotIndex{21, 22}, 2, "block0", ts.Nodes("node0-restarted"), true, false) ts.AssertEqualStoredCommitmentAtIndex(20, ts.Nodes()...) From 1e8e9ddac14752b5882a73722e0d31efbaba4089 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 1 Dec 2023 13:51:48 +0100 Subject: [PATCH 317/356] Refactor: reverted more changes --- pkg/protocol/chain.go | 10 ++++++++++ pkg/protocol/commitment.go | 2 +- pkg/testsuite/mock/node.go | 16 ++++++++-------- pkg/testsuite/storage_settings.go | 15 +++++++++++++-- 4 files changed, 32 insertions(+), 11 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index aeaa16c02..90378abe0 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -157,6 +157,8 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (dispatched bool) func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c; currentChain != nil; { switch forkingPoint := currentChain.ForkingPoint.Get(); { + case forkingPoint == nil: + return nil, false case forkingPoint.Slot() == slot: return forkingPoint, true case slot > forkingPoint.Slot(): @@ -335,6 +337,14 @@ func (c *Chain) deriveWarpSyncThreshold(latestSeenSlot reactive.ReadableVariable }, latestSeenSlot)) } +func warpSyncThreshold(latestSeenSlot iotago.SlotIndex, minCommittableAge iotago.SlotIndex) iotago.SlotIndex { + if minCommittableAge < latestSeenSlot { + return latestSeenSlot - minCommittableAge + 1 + } + + return 0 +} + // addCommitment adds the given commitment to this chain. func (c *Chain) addCommitment(newCommitment *Commitment) (shutdown func()) { c.commitments.Set(newCommitment.Slot(), newCommitment) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index d739bc43f..8a04de88a 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -158,7 +158,7 @@ func (c *Commitment) initDerivedProperties() (shutdown func()) { return lo.Batch( // mark commitments that are marked as root as verified c.IsCommitted.InheritFrom(c.IsRoot), - c.IsAboveLatestVerifiedCommitment.InheritFrom(c.IsRoot), + c.ReplayDroppedBlocks.InheritFrom(c.IsRoot), // mark commitments that are marked as verified as attested, fully booked and committable c.IsAttested.InheritFrom(c.IsCommitted), diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index b9031ee2e..32394616a 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -392,19 +392,19 @@ func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engi }) events.SpendDAG.SpenderCreated.Hook(func(conflictID iotago.TransactionID) { - instance.LogTrace("ConflictDAG.SpendCreated", "conflictID", conflictID) + instance.LogTrace("SpendDAG.SpenderCreated", "conflictID", conflictID) }) events.SpendDAG.SpenderEvicted.Hook(func(conflictID iotago.TransactionID) { - instance.LogTrace("ConflictDAG.SpendEvicted", "conflictID", conflictID) + instance.LogTrace("SpendDAG.SpenderEvicted", "conflictID", conflictID) }) events.SpendDAG.SpenderRejected.Hook(func(conflictID iotago.TransactionID) { - instance.LogTrace("ConflictDAG.SpendRejected", "conflictID", conflictID) + instance.LogTrace("SpendDAG.SpenderRejected", "conflictID", conflictID) }) events.SpendDAG.SpenderAccepted.Hook(func(conflictID iotago.TransactionID) { - instance.LogTrace("ConflictDAG.SpendAccepted", "conflictID", conflictID) + instance.LogTrace("SpendDAG.SpenderAccepted", "conflictID", conflictID) }) instance.Ledger.MemPool().OnSignedTransactionAttached( @@ -525,10 +525,6 @@ func (n *Node) FilteredBlocks() []*postsolidfilter.BlockFilteredEvent { return n.filteredBlockEvents } -func (n *Node) MainEngineSwitchedCount() int { - return int(n.mainEngineSwitchedCount.Load()) -} - func (n *Node) TransactionFailure(txID iotago.SignedTransactionID) (InvalidSignedTransactionEvent, bool) { n.mutex.RLock() defer n.mutex.RUnlock() @@ -537,6 +533,10 @@ func (n *Node) TransactionFailure(txID iotago.SignedTransactionID) (InvalidSigne return event, exists } +func (n *Node) MainEngineSwitchedCount() int { + return int(n.mainEngineSwitchedCount.Load()) +} + func (n *Node) AttachedBlocks() []*blocks.Block { n.mutex.RLock() defer n.mutex.RUnlock() diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 956797be7..04409b25b 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -68,8 +68,15 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found", node.Name, slot) } + // Make sure the main chain exists + mainChain := node.Protocol.Chains.Main.Get() + if mainChain == nil { + return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: main chain not found when checking for commitment at index %v", node.Name, slot) + } + // Make sure the commitment is also available in the ChainManager. - if node.Protocol.Chains.Main.Get().LatestCommitment.Get().ID().Slot() < slot { + latestCommitment := mainChain.LatestCommitment.Get() + if latestCommitment == nil || latestCommitment.ID().Slot() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found in ChainManager", node.Name, slot) } @@ -126,8 +133,12 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - actualChainID := node.Protocol.Chains.Main.Get().ForkingPoint.Get().ID() + mainChain := node.Protocol.Chains.Main.Get() + if mainChain == nil { + return ierrors.Errorf("AssertChainID: %s: main chain not found", node.Name) + } + actualChainID := mainChain.ForkingPoint.Get().ID() if expectedChainID != actualChainID { fmt.Println(expectedChainID, actualChainID) From 52694bef06d4504eca82f04c65c9f48acf308509 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Fri, 1 Dec 2023 15:07:31 +0100 Subject: [PATCH 318/356] Fix: fixed bugs and refactored code --- pkg/protocol/chain.go | 162 ++++++++++++----------------- pkg/protocol/commitment.go | 21 ++-- pkg/protocol/protocol_warp_sync.go | 13 +-- 3 files changed, 86 insertions(+), 110 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 90378abe0..c7d4eadc6 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -45,8 +45,8 @@ type Chain struct { // latest verified commitment. VerifiedWeight reactive.Variable[uint64] - // WarpSyncMode contains a flag that indicates whether this chain is in warp sync mode. - WarpSyncMode reactive.Variable[bool] + // WarpSyncModeEnabled contains a flag that indicates whether this chain is in warp sync mode. + WarpSyncModeEnabled reactive.Variable[bool] // WarpSyncThreshold contains the slot at which the chain will exit warp sync mode which is derived from the latest // network slot minus the max committable age. @@ -92,7 +92,7 @@ func newChain(chains *Chains) *Chain { ClaimedWeight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](), VerifiedWeight: reactive.NewVariable[uint64](), - WarpSyncMode: reactive.NewVariable[bool]().Init(true), + WarpSyncModeEnabled: reactive.NewVariable[bool]().Init(true), WarpSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), RequestAttestations: reactive.NewVariable[bool](), @@ -188,7 +188,7 @@ func (c *Chain) initLogger() (shutdown func()) { c.Logger, shutdown = c.chains.NewEntityLogger("") return lo.Batch( - c.WarpSyncMode.LogUpdates(c, log.LevelTrace, "WarpSyncMode"), + c.WarpSyncModeEnabled.LogUpdates(c, log.LevelTrace, "WarpSyncModeEnabled"), c.WarpSyncThreshold.LogUpdates(c, log.LevelTrace, "WarpSyncThreshold"), c.OutOfSyncThreshold.LogUpdates(c, log.LevelTrace, "OutOfSyncThreshold"), c.ForkingPoint.LogUpdates(c, log.LevelTrace, "ForkingPoint", (*Commitment).LogName), @@ -209,10 +209,21 @@ func (c *Chain) initLogger() (shutdown func()) { // initDerivedProperties initializes the behavior of this chain by setting up the relations between its properties. func (c *Chain) initDerivedProperties() (shutdown func()) { return lo.Batch( - c.deriveClaimedWeight(), - c.deriveVerifiedWeight(), - c.deriveLatestAttestedWeight(), - c.deriveWarpSyncMode(), + c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { + return latestCommitment.cumulativeWeight() + }, c.LatestCommitment)), + + c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestProducedCommitment *Commitment) uint64 { + return latestProducedCommitment.cumulativeWeight() + }, c.LatestProducedCommitment)), + + c.WarpSyncModeEnabled.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestProducedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + return warpSyncModeEnabled(warpSyncMode, latestProducedCommitment, warpSyncThreshold, outOfSyncThreshold) + }, c.LatestProducedCommitment, c.WarpSyncThreshold, c.OutOfSyncThreshold, c.WarpSyncModeEnabled.Get())), + + c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (shutdown func()) { + return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) + }), c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (shutdown func()) { return c.deriveParentChain(forkingPoint) @@ -224,65 +235,18 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { return lo.Batch( - c.deriveWarpSyncThreshold(c.chains.LatestSeenSlot, engineInstance), - c.deriveOutOfSyncThreshold(c.chains.LatestSeenSlot, engineInstance), + c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { + return warpSyncThreshold(engineInstance, latestSeenSlot) + }, c.chains.LatestSeenSlot)), + + c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { + return outOfSyncThreshold(engineInstance, latestSeenSlot) + }, c.chains.LatestSeenSlot)), ) }), ) } -// deriveWarpSyncMode defines how a chain determines whether it is in warp sync mode or not. -func (c *Chain) deriveWarpSyncMode() func() { - return c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestProducedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - // latest produced commitment is nil if we have not produced any commitment yet (intermediary state during - // startup) - if latestProducedCommitment == nil { - return warpSyncMode - } - - // if warp sync mode is enabled, keep it enabled until we are no longer below the warp sync threshold - if warpSyncMode { - return latestProducedCommitment.ID().Slot() < warpSyncThreshold - } - - // if warp sync mode is disabled, enable it only if we fall below the out of sync threshold - return latestProducedCommitment.ID().Slot() < outOfSyncThreshold - }, c.LatestProducedCommitment, c.WarpSyncThreshold, c.OutOfSyncThreshold, c.WarpSyncMode.Get())) -} - -// deriveClaimedWeight defines how a chain determines its claimed weight (by setting the cumulative weight of the -// latest commitment). -func (c *Chain) deriveClaimedWeight() (shutdown func()) { - return c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { - if latestCommitment == nil { - return 0 - } - - return latestCommitment.CumulativeWeight() - }, c.LatestCommitment)) -} - -// deriveLatestAttestedWeight defines how a chain determines its attested weight (by inheriting the cumulative attested -// weight of the latest attested commitment). It uses inheritance instead of simply setting the value as the cumulative -// attested weight can change over time depending on the attestations that are received. -func (c *Chain) deriveLatestAttestedWeight() func() { - return c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (shutdown func()) { - return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) - }) -} - -// deriveVerifiedWeight defines how a chain determines its verified weight (by setting the cumulative weight of the -// latest produced commitment). -func (c *Chain) deriveVerifiedWeight() func() { - return c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestProducedCommitment *Commitment) uint64 { - if latestProducedCommitment == nil { - return 0 - } - - return latestProducedCommitment.CumulativeWeight() - }, c.LatestProducedCommitment)) -} - // deriveChildChains defines how a chain determines its ChildChains (by adding each child to the set). func (c *Chain) deriveChildChains(child *Chain) func() { c.ChildChains.Add(child) @@ -312,39 +276,6 @@ func (c *Chain) deriveParentChain(forkingPoint *Commitment) (shutdown func()) { return nil } -// deriveOutOfSyncThreshold defines how a chain determines its "out of sync" threshold (the latest seen slot minus 2 -// times the max committable age or 0 if this would cause an overflow to the negative numbers). -func (c *Chain) deriveOutOfSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], engineInstance *engine.Engine) func() { - return c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - if outOfSyncOffset := 2 * engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge(); outOfSyncOffset < latestSeenSlot { - return latestSeenSlot - outOfSyncOffset - } - - return 0 - }, latestSeenSlot)) -} - -// deriveWarpSyncThreshold defines how a chain determines its warp sync threshold (the latest seen slot minus the max -// committable age or 0 if this would cause an overflow to the negative numbers). -func (c *Chain) deriveWarpSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], engineInstance *engine.Engine) func() { - return c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - warpSyncOffset := engineInstance.LatestAPI().ProtocolParameters().MinCommittableAge() - if warpSyncOffset < latestSeenSlot { - return latestSeenSlot - warpSyncOffset + 1 - } - - return 0 - }, latestSeenSlot)) -} - -func warpSyncThreshold(latestSeenSlot iotago.SlotIndex, minCommittableAge iotago.SlotIndex) iotago.SlotIndex { - if minCommittableAge < latestSeenSlot { - return latestSeenSlot - minCommittableAge + 1 - } - - return 0 -} - // addCommitment adds the given commitment to this chain. func (c *Chain) addCommitment(newCommitment *Commitment) (shutdown func()) { c.commitments.Set(newCommitment.Slot(), newCommitment) @@ -373,7 +304,7 @@ func (c *Chain) dispatchBlockToSpawnedEngine(block *model.Block, src peer.ID) (d } // perform additional checks if we are in warp sync mode (only let blocks pass that we requested) - if c.WarpSyncMode.Get() { + if c.WarpSyncModeEnabled.Get() { // abort if the target commitment does not exist targetCommitment, targetCommitmentExists := c.Commitment(targetSlot) if !targetCommitmentExists { @@ -410,3 +341,42 @@ func (c *Chain) verifiedWeight() reactive.Variable[uint64] { func (c *Chain) attestedWeight() reactive.Variable[uint64] { return c.AttestedWeight } + +// warpSyncThreshold returns the slot index at which the warp sync should stop. +func warpSyncThreshold(engineInstance *engine.Engine, latestSlot iotago.SlotIndex) iotago.SlotIndex { + // TODO: explain why we do - 1 here + warpSyncOffset := engineInstance.LatestAPI().ProtocolParameters().MinCommittableAge() - 1 + + // prevent overflow to negative numbers + if warpSyncOffset >= latestSlot { + return 0 + } + + return latestSlot - warpSyncOffset +} + +// outOfSyncThreshold returns the slot index at which the node is considered out of sync. +func outOfSyncThreshold(engineInstance *engine.Engine, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { + if outOfSyncOffset := 2 * engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge(); outOfSyncOffset < latestSeenSlot { + return latestSeenSlot - outOfSyncOffset + } + + return 0 +} + +// warpSyncModeEnabled determines whether warp sync mode should be enabled or not. +func warpSyncModeEnabled(enabled bool, latestProducedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + // latest produced commitment is nil if we have not produced any commitment yet (intermediary state during + // startup) + if latestProducedCommitment == nil { + return enabled + } + + // if warp sync mode is enabled, keep it enabled until we are no longer below the warp sync threshold + if enabled { + return latestProducedCommitment.ID().Slot() < warpSyncThreshold + } + + // if warp sync mode is disabled, enable it only if we fall below the out of sync threshold + return latestProducedCommitment.ID().Slot() < outOfSyncThreshold +} diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 8a04de88a..920799b29 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -275,17 +275,17 @@ func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) // deriveWarpSyncBlocks derives the WarpSyncBlocks flag of this Commitment which is true if our Chain is requesting // warp sync, and we are the directly above the latest verified Commitment. func (c *Commitment) deriveWarpSyncBlocks(chain *Chain, parent *Commitment) func() { - return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSync bool, parentIsFullyBooked bool, isFullyBooked bool) bool { - return engineInstance != nil && warpSync && parentIsFullyBooked && !isFullyBooked - }, chain.Engine, chain.WarpSyncMode, parent.IsFullyBooked, c.IsFullyBooked)) + return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSyncModeEnabled bool, parentIsFullyBooked bool, isFullyBooked bool) bool { + return engineInstance != nil && warpSyncModeEnabled && parentIsFullyBooked && !isFullyBooked + }, chain.Engine, chain.WarpSyncModeEnabled, parent.IsFullyBooked, c.IsFullyBooked)) } // deriveReplayDroppedBlocks derives the ReplayDroppedBlocks flag of this Commitment which is true if our Chain has an // engine, is no longer requesting warp sync, and we are above the latest verified Commitment. func (c *Commitment) deriveReplayDroppedBlocks(chain *Chain) func() { - return c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, engineInstance *engine.Engine, warpSyncing bool, isAboveLatestVerifiedCommitment bool) bool { - return engineInstance != nil && !warpSyncing && isAboveLatestVerifiedCommitment - }, chain.Engine, chain.WarpSyncMode, c.IsAboveLatestVerifiedCommitment)) + return c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, engineInstance *engine.Engine, warpSyncModeEnabled bool, isAboveLatestVerifiedCommitment bool) bool { + return engineInstance != nil && !warpSyncModeEnabled && isAboveLatestVerifiedCommitment + }, chain.Engine, chain.WarpSyncModeEnabled, c.IsAboveLatestVerifiedCommitment)) } // forceChain forces the Chain of this Commitment to the given Chain by promoting it to the main child of its parent if @@ -297,3 +297,12 @@ func (c *Commitment) forceChain(targetChain *Chain) { } } } + +// cumulativeWeight returns the cumulative weight of this Commitment while gracefully handling nil receivers. +func (c *Commitment) cumulativeWeight() uint64 { + if c == nil { + return 0 + } + + return c.CumulativeWeight() +} diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index fb6a3c111..1e898c90c 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -47,7 +47,7 @@ func newWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { protocol.Constructed.OnTrigger(func() { protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (shutdown func()) { - return chain.WarpSyncMode.OnUpdate(func(_ bool, warpSyncMode bool) { + return chain.WarpSyncModeEnabled.OnUpdate(func(_ bool, warpSyncMode bool) { if warpSyncMode { engine.Workers.WaitChildren() engine.Reset() @@ -110,7 +110,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } - if !chain.WarpSyncMode.Get() { + if !chain.WarpSyncModeEnabled.Get() { w.LogTrace("response for chain without warp-sync", "chain", chain.LogName(), "fromPeer", from) return @@ -161,7 +161,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo targetEngine.Workers.WaitChildren() - if !chain.WarpSyncMode.Get() { + if !chain.WarpSyncModeEnabled.Get() { w.LogTrace("response for chain without warp-sync", "chain", chain.LogName(), "fromPeer", from) return blocksToWarpSync @@ -177,7 +177,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // 2. Mark all blocks as accepted // 3. Force commitment of the slot forceCommitmentFunc := func() { - if !chain.WarpSyncMode.Get() { + if !chain.WarpSyncModeEnabled.Get() { return } @@ -248,10 +248,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } commitment.IsFullyBooked.OnUpdateOnce(func(_ bool, _ bool) { - // Let's assume that MCA is 5: when we want to book 15, we expect to have the commitment of 10 to load - // accounts from it, hence why we make committable the slot at - MCA + 1 with respect of the current slot. - minimumCommittableAge := w.protocol.APIForSlot(commitmentID.Slot()).ProtocolParameters().MinCommittableAge() - if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - minimumCommittableAge + 1); exists { + if committableCommitment, exists := chain.Commitment(warpSyncThreshold(targetEngine, commitmentID.Slot())); exists { committableCommitment.IsCommittable.Set(true) } }) From 8ad929b0b05b429c22c10b04e337af39062ac334 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 01:57:17 +0100 Subject: [PATCH 319/356] Refactor: refactored warpsync to be able to handle loss of acceptance --- pkg/protocol/chain.go | 78 ++++++++++++------------------ pkg/protocol/commitment.go | 3 +- pkg/protocol/protocol_warp_sync.go | 16 ++++-- 3 files changed, 43 insertions(+), 54 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index c7d4eadc6..b03b7a2d0 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -29,6 +29,9 @@ type Chain struct { // LatestAttestedCommitment contains the latest commitment of this chain for which attestations were received. LatestAttestedCommitment reactive.Variable[*Commitment] + // LatestFullyBookedCommitment contains the latest commitment of this chain for which all blocks were booked. + LatestFullyBookedCommitment reactive.Variable[*Commitment] + // LatestProducedCommitment contains the latest commitment of this chain that we produced ourselves by booking the // corresponding blocks in the Engine. LatestProducedCommitment reactive.Variable[*Commitment] @@ -48,10 +51,6 @@ type Chain struct { // WarpSyncModeEnabled contains a flag that indicates whether this chain is in warp sync mode. WarpSyncModeEnabled reactive.Variable[bool] - // WarpSyncThreshold contains the slot at which the chain will exit warp sync mode which is derived from the latest - // network slot minus the max committable age. - WarpSyncThreshold reactive.Variable[iotago.SlotIndex] - // OutOfSyncThreshold contains the slot at which the chain will consider itself to be out of sync and switch to warp // sync mode. It is derived from the latest network slot minus two times the max committable age. OutOfSyncThreshold reactive.Variable[iotago.SlotIndex] @@ -83,22 +82,22 @@ type Chain struct { // newChain creates a new chain instance. func newChain(chains *Chains) *Chain { c := &Chain{ - ForkingPoint: reactive.NewVariable[*Commitment](), - ParentChain: reactive.NewVariable[*Chain](), - ChildChains: reactive.NewSet[*Chain](), - LatestCommitment: reactive.NewVariable[*Commitment](), - LatestAttestedCommitment: reactive.NewVariable[*Commitment](), - LatestProducedCommitment: reactive.NewVariable[*Commitment](), - ClaimedWeight: reactive.NewVariable[uint64](), - AttestedWeight: reactive.NewVariable[uint64](), - VerifiedWeight: reactive.NewVariable[uint64](), - WarpSyncModeEnabled: reactive.NewVariable[bool]().Init(true), - WarpSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), - OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), - RequestAttestations: reactive.NewVariable[bool](), - StartEngine: reactive.NewVariable[bool](), - Engine: reactive.NewVariable[*engine.Engine](), - IsEvicted: reactive.NewEvent(), + ForkingPoint: reactive.NewVariable[*Commitment](), + ParentChain: reactive.NewVariable[*Chain](), + ChildChains: reactive.NewSet[*Chain](), + LatestCommitment: reactive.NewVariable[*Commitment](), + LatestAttestedCommitment: reactive.NewVariable[*Commitment](), + LatestFullyBookedCommitment: reactive.NewVariable[*Commitment](), + LatestProducedCommitment: reactive.NewVariable[*Commitment](), + ClaimedWeight: reactive.NewVariable[uint64](), + AttestedWeight: reactive.NewVariable[uint64](), + VerifiedWeight: reactive.NewVariable[uint64](), + WarpSyncModeEnabled: reactive.NewVariable[bool]().Init(true), + OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), + RequestAttestations: reactive.NewVariable[bool](), + StartEngine: reactive.NewVariable[bool](), + Engine: reactive.NewVariable[*engine.Engine](), + IsEvicted: reactive.NewEvent(), chains: chains, commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), @@ -189,13 +188,14 @@ func (c *Chain) initLogger() (shutdown func()) { return lo.Batch( c.WarpSyncModeEnabled.LogUpdates(c, log.LevelTrace, "WarpSyncModeEnabled"), - c.WarpSyncThreshold.LogUpdates(c, log.LevelTrace, "WarpSyncThreshold"), c.OutOfSyncThreshold.LogUpdates(c, log.LevelTrace, "OutOfSyncThreshold"), c.ForkingPoint.LogUpdates(c, log.LevelTrace, "ForkingPoint", (*Commitment).LogName), c.ClaimedWeight.LogUpdates(c, log.LevelTrace, "ClaimedWeight"), c.AttestedWeight.LogUpdates(c, log.LevelTrace, "AttestedWeight"), c.VerifiedWeight.LogUpdates(c, log.LevelTrace, "VerifiedWeight"), c.LatestCommitment.LogUpdates(c, log.LevelTrace, "LatestCommitment", (*Commitment).LogName), + c.LatestAttestedCommitment.LogUpdates(c, log.LevelTrace, "LatestAttestedCommitment", (*Commitment).LogName), + c.LatestFullyBookedCommitment.LogUpdates(c, log.LevelTrace, "LatestFullyBookedCommitment", (*Commitment).LogName), c.LatestProducedCommitment.LogUpdates(c, log.LevelDebug, "LatestProducedCommitment", (*Commitment).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), c.StartEngine.LogUpdates(c, log.LevelDebug, "StartEngine"), @@ -217,9 +217,9 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { return latestProducedCommitment.cumulativeWeight() }, c.LatestProducedCommitment)), - c.WarpSyncModeEnabled.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestProducedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - return warpSyncModeEnabled(warpSyncMode, latestProducedCommitment, warpSyncThreshold, outOfSyncThreshold) - }, c.LatestProducedCommitment, c.WarpSyncThreshold, c.OutOfSyncThreshold, c.WarpSyncModeEnabled.Get())), + c.WarpSyncModeEnabled.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestFullyBookedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + return warpSyncModeEnabled(warpSyncMode, latestFullyBookedCommitment, latestSeenSlot, outOfSyncThreshold) + }, c.LatestFullyBookedCommitment, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncModeEnabled.Get())), c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (shutdown func()) { return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) @@ -234,15 +234,9 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { }), c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { - return lo.Batch( - c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - return warpSyncThreshold(engineInstance, latestSeenSlot) - }, c.chains.LatestSeenSlot)), - - c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - return outOfSyncThreshold(engineInstance, latestSeenSlot) - }, c.chains.LatestSeenSlot)), - ) + return c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { + return outOfSyncThreshold(engineInstance, latestSeenSlot) + }, c.chains.LatestSeenSlot)) }), ) } @@ -284,6 +278,7 @@ func (c *Chain) addCommitment(newCommitment *Commitment) (shutdown func()) { return lo.Batch( newCommitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Set(newCommitment) }), + newCommitment.IsFullyBooked.OnTrigger(func() { c.LatestFullyBookedCommitment.Set(newCommitment) }), newCommitment.IsCommitted.OnTrigger(func() { c.LatestProducedCommitment.Set(newCommitment) }), ) } @@ -342,19 +337,6 @@ func (c *Chain) attestedWeight() reactive.Variable[uint64] { return c.AttestedWeight } -// warpSyncThreshold returns the slot index at which the warp sync should stop. -func warpSyncThreshold(engineInstance *engine.Engine, latestSlot iotago.SlotIndex) iotago.SlotIndex { - // TODO: explain why we do - 1 here - warpSyncOffset := engineInstance.LatestAPI().ProtocolParameters().MinCommittableAge() - 1 - - // prevent overflow to negative numbers - if warpSyncOffset >= latestSlot { - return 0 - } - - return latestSlot - warpSyncOffset -} - // outOfSyncThreshold returns the slot index at which the node is considered out of sync. func outOfSyncThreshold(engineInstance *engine.Engine, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { if outOfSyncOffset := 2 * engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge(); outOfSyncOffset < latestSeenSlot { @@ -365,7 +347,7 @@ func outOfSyncThreshold(engineInstance *engine.Engine, latestSeenSlot iotago.Slo } // warpSyncModeEnabled determines whether warp sync mode should be enabled or not. -func warpSyncModeEnabled(enabled bool, latestProducedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { +func warpSyncModeEnabled(enabled bool, latestProducedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { // latest produced commitment is nil if we have not produced any commitment yet (intermediary state during // startup) if latestProducedCommitment == nil { @@ -374,7 +356,7 @@ func warpSyncModeEnabled(enabled bool, latestProducedCommitment *Commitment, war // if warp sync mode is enabled, keep it enabled until we are no longer below the warp sync threshold if enabled { - return latestProducedCommitment.ID().Slot() < warpSyncThreshold + return latestProducedCommitment.ID().Slot() < latestSeenSlot } // if warp sync mode is disabled, enable it only if we fall below the out of sync threshold diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 920799b29..1b956deba 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -160,10 +160,9 @@ func (c *Commitment) initDerivedProperties() (shutdown func()) { c.IsCommitted.InheritFrom(c.IsRoot), c.ReplayDroppedBlocks.InheritFrom(c.IsRoot), - // mark commitments that are marked as verified as attested, fully booked and committable + // mark commitments that are marked as verified as attested and fully booked c.IsAttested.InheritFrom(c.IsCommitted), c.IsFullyBooked.InheritFrom(c.IsCommitted), - c.IsCommittable.InheritFrom(c.IsCommitted), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { // the weight can be fixed as a one time operation (as it only relies on static information from the parent diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 1e898c90c..0b23ea6e3 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -247,17 +247,25 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo }) } + // Once all blocks are fully booked we can mark the commitment that is minCommittableAge older as this + // commitment to be committable. commitment.IsFullyBooked.OnUpdateOnce(func(_ bool, _ bool) { - if committableCommitment, exists := chain.Commitment(warpSyncThreshold(targetEngine, commitmentID.Slot())); exists { - committableCommitment.IsCommittable.Set(true) + if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - targetEngine.LatestAPI().ProtocolParameters().MinCommittableAge()); exists { + w.workerPool.Submit(func() { + committableCommitment.IsCommittable.Set(true) + }) } }) - commitment.IsCommittable.OnUpdateOnce(func(_ bool, _ bool) { - w.workerPool.Submit(forceCommitmentFunc) + // force commit one by one and wait for the parent to be committed before we can commit the next one + commitment.Parent.WithNonEmptyValue(func(parent *Commitment) (teardown func()) { + return parent.IsCommitted.WithNonEmptyValue(func(_ bool) (teardown func()) { + return commitment.IsCommittable.OnTrigger(forceCommitmentFunc) + }) }) if totalBlocks == 0 { + commitment.IsCommittable.Set(true) commitment.IsFullyBooked.Set(true) return blocksToWarpSync From 89f0213796298dc9c54b9c1ef3f50e96edbc0188 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 02:14:32 +0100 Subject: [PATCH 320/356] Refactor: fixed typo + race condition --- pkg/protocol/chain.go | 12 ++++++------ pkg/protocol/commitment_verifier.go | 9 +++++++++ pkg/protocol/protocol_warp_sync.go | 4 ++-- 3 files changed, 17 insertions(+), 8 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index b03b7a2d0..86b1d1d30 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -217,8 +217,8 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { return latestProducedCommitment.cumulativeWeight() }, c.LatestProducedCommitment)), - c.WarpSyncModeEnabled.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestFullyBookedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - return warpSyncModeEnabled(warpSyncMode, latestFullyBookedCommitment, latestSeenSlot, outOfSyncThreshold) + c.WarpSyncModeEnabled.DeriveValueFrom(reactive.NewDerivedVariable3(func(enabled bool, latestFullyBookedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + return warpSyncModeEnabled(enabled, latestFullyBookedCommitment, latestSeenSlot, outOfSyncThreshold) }, c.LatestFullyBookedCommitment, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncModeEnabled.Get())), c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (shutdown func()) { @@ -347,18 +347,18 @@ func outOfSyncThreshold(engineInstance *engine.Engine, latestSeenSlot iotago.Slo } // warpSyncModeEnabled determines whether warp sync mode should be enabled or not. -func warpSyncModeEnabled(enabled bool, latestProducedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { +func warpSyncModeEnabled(enabled bool, latestFullyBookedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { // latest produced commitment is nil if we have not produced any commitment yet (intermediary state during // startup) - if latestProducedCommitment == nil { + if latestFullyBookedCommitment == nil { return enabled } // if warp sync mode is enabled, keep it enabled until we are no longer below the warp sync threshold if enabled { - return latestProducedCommitment.ID().Slot() < latestSeenSlot + return latestFullyBookedCommitment.ID().Slot() < latestSeenSlot } // if warp sync mode is disabled, enable it only if we fall below the out of sync threshold - return latestProducedCommitment.ID().Slot() < outOfSyncThreshold + return latestFullyBookedCommitment.ID().Slot() < outOfSyncThreshold } diff --git a/pkg/protocol/commitment_verifier.go b/pkg/protocol/commitment_verifier.go index ab600fbc9..3ee2b4cc8 100644 --- a/pkg/protocol/commitment_verifier.go +++ b/pkg/protocol/commitment_verifier.go @@ -5,6 +5,7 @@ import ( "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore/mapdb" + "github.com/iotaledger/hive.go/runtime/syncutils" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts" @@ -22,6 +23,9 @@ type CommitmentVerifier struct { // validatorAccountsData is the accounts data of the validators for the current epoch as known at lastCommonSlotBeforeFork. // Initially, it is set to the accounts data of the validators for the epoch of the last common commitment before the fork. validatorAccountsData map[iotago.AccountID]*accounts.AccountData + + // mutex is used to synchronize access to validatorAccountsData and epoch. + mutex syncutils.RWMutex } func newCommitmentVerifier(mainEngine *engine.Engine, lastCommonCommitmentBeforeFork *model.Commitment) (*CommitmentVerifier, error) { @@ -76,6 +80,7 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *Commitment, attestatio // This is necessary because the committee might have rotated at the epoch boundary and different validators might be part of it. // In case anything goes wrong we keep using previously known accounts data (initially set to the accounts data // of the validators for the epoch of the last common commitment before the fork). + c.mutex.Lock() apiForSlot := c.engine.APIForSlot(commitment.Slot()) commitmentEpoch := apiForSlot.TimeProvider().EpochFromSlot(commitment.Slot()) if commitmentEpoch > c.epoch { @@ -92,6 +97,7 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *Commitment, attestatio } } } + c.mutex.Unlock() // 3. Verify attestations. blockIDs, seatCount, err := c.verifyAttestations(attestations) @@ -107,6 +113,9 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *Commitment, attestatio } func (c *CommitmentVerifier) verifyAttestations(attestations []*iotago.Attestation) (iotago.BlockIDs, uint64, error) { + c.mutex.RLock() + defer c.mutex.RUnlock() + visitedIdentities := ds.NewSet[iotago.AccountID]() var blockIDs iotago.BlockIDs var seatCount uint64 diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 0b23ea6e3..374aaa3c6 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -47,8 +47,8 @@ func newWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { protocol.Constructed.OnTrigger(func() { protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (shutdown func()) { - return chain.WarpSyncModeEnabled.OnUpdate(func(_ bool, warpSyncMode bool) { - if warpSyncMode { + return chain.WarpSyncModeEnabled.OnUpdate(func(_ bool, warpSyncModeEnabled bool) { + if warpSyncModeEnabled { engine.Workers.WaitChildren() engine.Reset() } From af324c3775aef5742683440391cd168bd76e3d62 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 02:29:47 +0100 Subject: [PATCH 321/356] Fix bugs in WarpSync logic (#577) fixed bugs in warpsync logic and optimized logging during debug --- pkg/core/buffer/unsolid_commitment_buffer.go | 2 +- pkg/protocol/chain.go | 182 ++++++++----------- pkg/protocol/commitment.go | 25 ++- pkg/protocol/commitment_verifier.go | 9 + pkg/protocol/protocol_blocks.go | 21 +-- pkg/protocol/protocol_warp_sync.go | 29 +-- pkg/tests/loss_of_acceptance_test.go | 2 - pkg/testsuite/mock/node.go | 111 +++++------ pkg/testsuite/storage_settings.go | 15 +- 9 files changed, 191 insertions(+), 205 deletions(-) diff --git a/pkg/core/buffer/unsolid_commitment_buffer.go b/pkg/core/buffer/unsolid_commitment_buffer.go index 27df0dd51..a6417a4d7 100644 --- a/pkg/core/buffer/unsolid_commitment_buffer.go +++ b/pkg/core/buffer/unsolid_commitment_buffer.go @@ -51,7 +51,7 @@ func (u *UnsolidCommitmentBuffer[V]) Add(commitmentID iotago.CommitmentID, value u.mutex.RLock() defer u.mutex.RUnlock() - if commitmentID.Slot() <= u.lastEvictedSlot { + if u.lastEvictedSlot != 0 && commitmentID.Slot() <= u.lastEvictedSlot { return false } diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 8c26912dd..86b1d1d30 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -29,6 +29,9 @@ type Chain struct { // LatestAttestedCommitment contains the latest commitment of this chain for which attestations were received. LatestAttestedCommitment reactive.Variable[*Commitment] + // LatestFullyBookedCommitment contains the latest commitment of this chain for which all blocks were booked. + LatestFullyBookedCommitment reactive.Variable[*Commitment] + // LatestProducedCommitment contains the latest commitment of this chain that we produced ourselves by booking the // corresponding blocks in the Engine. LatestProducedCommitment reactive.Variable[*Commitment] @@ -45,12 +48,8 @@ type Chain struct { // latest verified commitment. VerifiedWeight reactive.Variable[uint64] - // WarpSyncMode contains a flag that indicates whether this chain is in warp sync mode. - WarpSyncMode reactive.Variable[bool] - - // WarpSyncThreshold contains the slot at which the chain will exit warp sync mode which is derived from the latest - // network slot minus the max committable age. - WarpSyncThreshold reactive.Variable[iotago.SlotIndex] + // WarpSyncModeEnabled contains a flag that indicates whether this chain is in warp sync mode. + WarpSyncModeEnabled reactive.Variable[bool] // OutOfSyncThreshold contains the slot at which the chain will consider itself to be out of sync and switch to warp // sync mode. It is derived from the latest network slot minus two times the max committable age. @@ -83,22 +82,22 @@ type Chain struct { // newChain creates a new chain instance. func newChain(chains *Chains) *Chain { c := &Chain{ - ForkingPoint: reactive.NewVariable[*Commitment](), - ParentChain: reactive.NewVariable[*Chain](), - ChildChains: reactive.NewSet[*Chain](), - LatestCommitment: reactive.NewVariable[*Commitment](), - LatestAttestedCommitment: reactive.NewVariable[*Commitment](), - LatestProducedCommitment: reactive.NewVariable[*Commitment](), - ClaimedWeight: reactive.NewVariable[uint64](), - AttestedWeight: reactive.NewVariable[uint64](), - VerifiedWeight: reactive.NewVariable[uint64](), - WarpSyncMode: reactive.NewVariable[bool](), - WarpSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), - OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), - RequestAttestations: reactive.NewVariable[bool](), - StartEngine: reactive.NewVariable[bool](), - Engine: reactive.NewVariable[*engine.Engine](), - IsEvicted: reactive.NewEvent(), + ForkingPoint: reactive.NewVariable[*Commitment](), + ParentChain: reactive.NewVariable[*Chain](), + ChildChains: reactive.NewSet[*Chain](), + LatestCommitment: reactive.NewVariable[*Commitment](), + LatestAttestedCommitment: reactive.NewVariable[*Commitment](), + LatestFullyBookedCommitment: reactive.NewVariable[*Commitment](), + LatestProducedCommitment: reactive.NewVariable[*Commitment](), + ClaimedWeight: reactive.NewVariable[uint64](), + AttestedWeight: reactive.NewVariable[uint64](), + VerifiedWeight: reactive.NewVariable[uint64](), + WarpSyncModeEnabled: reactive.NewVariable[bool]().Init(true), + OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), + RequestAttestations: reactive.NewVariable[bool](), + StartEngine: reactive.NewVariable[bool](), + Engine: reactive.NewVariable[*engine.Engine](), + IsEvicted: reactive.NewEvent(), chains: chains, commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), @@ -157,6 +156,8 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (dispatched bool) func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c; currentChain != nil; { switch forkingPoint := currentChain.ForkingPoint.Get(); { + case forkingPoint == nil: + return nil, false case forkingPoint.Slot() == slot: return forkingPoint, true case slot > forkingPoint.Slot(): @@ -186,14 +187,15 @@ func (c *Chain) initLogger() (shutdown func()) { c.Logger, shutdown = c.chains.NewEntityLogger("") return lo.Batch( - c.WarpSyncMode.LogUpdates(c, log.LevelTrace, "WarpSyncMode"), - c.WarpSyncThreshold.LogUpdates(c, log.LevelTrace, "WarpSyncThreshold"), + c.WarpSyncModeEnabled.LogUpdates(c, log.LevelTrace, "WarpSyncModeEnabled"), c.OutOfSyncThreshold.LogUpdates(c, log.LevelTrace, "OutOfSyncThreshold"), c.ForkingPoint.LogUpdates(c, log.LevelTrace, "ForkingPoint", (*Commitment).LogName), c.ClaimedWeight.LogUpdates(c, log.LevelTrace, "ClaimedWeight"), c.AttestedWeight.LogUpdates(c, log.LevelTrace, "AttestedWeight"), c.VerifiedWeight.LogUpdates(c, log.LevelTrace, "VerifiedWeight"), c.LatestCommitment.LogUpdates(c, log.LevelTrace, "LatestCommitment", (*Commitment).LogName), + c.LatestAttestedCommitment.LogUpdates(c, log.LevelTrace, "LatestAttestedCommitment", (*Commitment).LogName), + c.LatestFullyBookedCommitment.LogUpdates(c, log.LevelTrace, "LatestFullyBookedCommitment", (*Commitment).LogName), c.LatestProducedCommitment.LogUpdates(c, log.LevelDebug, "LatestProducedCommitment", (*Commitment).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), c.StartEngine.LogUpdates(c, log.LevelDebug, "StartEngine"), @@ -207,10 +209,21 @@ func (c *Chain) initLogger() (shutdown func()) { // initDerivedProperties initializes the behavior of this chain by setting up the relations between its properties. func (c *Chain) initDerivedProperties() (shutdown func()) { return lo.Batch( - c.deriveClaimedWeight(), - c.deriveVerifiedWeight(), - c.deriveLatestAttestedWeight(), - c.deriveWarpSyncMode(), + c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { + return latestCommitment.cumulativeWeight() + }, c.LatestCommitment)), + + c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestProducedCommitment *Commitment) uint64 { + return latestProducedCommitment.cumulativeWeight() + }, c.LatestProducedCommitment)), + + c.WarpSyncModeEnabled.DeriveValueFrom(reactive.NewDerivedVariable3(func(enabled bool, latestFullyBookedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + return warpSyncModeEnabled(enabled, latestFullyBookedCommitment, latestSeenSlot, outOfSyncThreshold) + }, c.LatestFullyBookedCommitment, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncModeEnabled.Get())), + + c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (shutdown func()) { + return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) + }), c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (shutdown func()) { return c.deriveParentChain(forkingPoint) @@ -221,66 +234,13 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { }), c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { - return lo.Batch( - c.deriveWarpSyncThreshold(c.chains.LatestSeenSlot, engineInstance), - c.deriveOutOfSyncThreshold(c.chains.LatestSeenSlot, engineInstance), - ) + return c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { + return outOfSyncThreshold(engineInstance, latestSeenSlot) + }, c.chains.LatestSeenSlot)) }), ) } -// deriveWarpSyncMode defines how a chain determines whether it is in warp sync mode or not. -func (c *Chain) deriveWarpSyncMode() func() { - return c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestProducedCommitment *Commitment, warpSyncThreshold iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - // latest produced commitment is nil if we have not produced any commitment yet (intermediary state during - // startup) - if latestProducedCommitment == nil { - return warpSyncMode - } - - // if warp sync mode is enabled, keep it enabled until we are no longer below the warp sync threshold - if warpSyncMode { - return latestProducedCommitment.ID().Slot() < warpSyncThreshold - } - - // if warp sync mode is disabled, enable it only if we fall below the out of sync threshold - return latestProducedCommitment.ID().Slot() < outOfSyncThreshold - }, c.LatestProducedCommitment, c.WarpSyncThreshold, c.OutOfSyncThreshold, c.WarpSyncMode.Get())) -} - -// deriveClaimedWeight defines how a chain determines its claimed weight (by setting the cumulative weight of the -// latest commitment). -func (c *Chain) deriveClaimedWeight() (shutdown func()) { - return c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { - if latestCommitment == nil { - return 0 - } - - return latestCommitment.CumulativeWeight() - }, c.LatestCommitment)) -} - -// deriveLatestAttestedWeight defines how a chain determines its attested weight (by inheriting the cumulative attested -// weight of the latest attested commitment). It uses inheritance instead of simply setting the value as the cumulative -// attested weight can change over time depending on the attestations that are received. -func (c *Chain) deriveLatestAttestedWeight() func() { - return c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (shutdown func()) { - return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) - }) -} - -// deriveVerifiedWeight defines how a chain determines its verified weight (by setting the cumulative weight of the -// latest produced commitment). -func (c *Chain) deriveVerifiedWeight() func() { - return c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestProducedCommitment *Commitment) uint64 { - if latestProducedCommitment == nil { - return 0 - } - - return latestProducedCommitment.CumulativeWeight() - }, c.LatestProducedCommitment)) -} - // deriveChildChains defines how a chain determines its ChildChains (by adding each child to the set). func (c *Chain) deriveChildChains(child *Chain) func() { c.ChildChains.Add(child) @@ -310,31 +270,6 @@ func (c *Chain) deriveParentChain(forkingPoint *Commitment) (shutdown func()) { return nil } -// deriveOutOfSyncThreshold defines how a chain determines its "out of sync" threshold (the latest seen slot minus 2 -// times the max committable age or 0 if this would cause an overflow to the negative numbers). -func (c *Chain) deriveOutOfSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], engineInstance *engine.Engine) func() { - return c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - if outOfSyncOffset := 2 * engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge(); outOfSyncOffset < latestSeenSlot { - return latestSeenSlot - outOfSyncOffset - } - - return 0 - }, latestSeenSlot)) -} - -// deriveWarpSyncThreshold defines how a chain determines its warp sync threshold (the latest seen slot minus the max -// committable age or 0 if this would cause an overflow to the negative numbers). -func (c *Chain) deriveWarpSyncThreshold(latestSeenSlot reactive.ReadableVariable[iotago.SlotIndex], engineInstance *engine.Engine) func() { - return c.WarpSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - warpSyncOffset := engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge() - if warpSyncOffset < latestSeenSlot { - return latestSeenSlot - warpSyncOffset - } - - return 0 - }, latestSeenSlot)) -} - // addCommitment adds the given commitment to this chain. func (c *Chain) addCommitment(newCommitment *Commitment) (shutdown func()) { c.commitments.Set(newCommitment.Slot(), newCommitment) @@ -343,6 +278,7 @@ func (c *Chain) addCommitment(newCommitment *Commitment) (shutdown func()) { return lo.Batch( newCommitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Set(newCommitment) }), + newCommitment.IsFullyBooked.OnTrigger(func() { c.LatestFullyBookedCommitment.Set(newCommitment) }), newCommitment.IsCommitted.OnTrigger(func() { c.LatestProducedCommitment.Set(newCommitment) }), ) } @@ -363,7 +299,7 @@ func (c *Chain) dispatchBlockToSpawnedEngine(block *model.Block, src peer.ID) (d } // perform additional checks if we are in warp sync mode (only let blocks pass that we requested) - if c.WarpSyncMode.Get() { + if c.WarpSyncModeEnabled.Get() { // abort if the target commitment does not exist targetCommitment, targetCommitmentExists := c.Commitment(targetSlot) if !targetCommitmentExists { @@ -400,3 +336,29 @@ func (c *Chain) verifiedWeight() reactive.Variable[uint64] { func (c *Chain) attestedWeight() reactive.Variable[uint64] { return c.AttestedWeight } + +// outOfSyncThreshold returns the slot index at which the node is considered out of sync. +func outOfSyncThreshold(engineInstance *engine.Engine, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { + if outOfSyncOffset := 2 * engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge(); outOfSyncOffset < latestSeenSlot { + return latestSeenSlot - outOfSyncOffset + } + + return 0 +} + +// warpSyncModeEnabled determines whether warp sync mode should be enabled or not. +func warpSyncModeEnabled(enabled bool, latestFullyBookedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + // latest produced commitment is nil if we have not produced any commitment yet (intermediary state during + // startup) + if latestFullyBookedCommitment == nil { + return enabled + } + + // if warp sync mode is enabled, keep it enabled until we are no longer below the warp sync threshold + if enabled { + return latestFullyBookedCommitment.ID().Slot() < latestSeenSlot + } + + // if warp sync mode is disabled, enable it only if we fall below the out of sync threshold + return latestFullyBookedCommitment.ID().Slot() < outOfSyncThreshold +} diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index ca06a32ab..1b956deba 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -158,11 +158,11 @@ func (c *Commitment) initDerivedProperties() (shutdown func()) { return lo.Batch( // mark commitments that are marked as root as verified c.IsCommitted.InheritFrom(c.IsRoot), + c.ReplayDroppedBlocks.InheritFrom(c.IsRoot), - // mark commitments that are marked as verified as attested, fully booked and committable + // mark commitments that are marked as verified as attested and fully booked c.IsAttested.InheritFrom(c.IsCommitted), c.IsFullyBooked.InheritFrom(c.IsCommitted), - c.IsCommittable.InheritFrom(c.IsCommitted), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { // the weight can be fixed as a one time operation (as it only relies on static information from the parent @@ -274,17 +274,17 @@ func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) // deriveWarpSyncBlocks derives the WarpSyncBlocks flag of this Commitment which is true if our Chain is requesting // warp sync, and we are the directly above the latest verified Commitment. func (c *Commitment) deriveWarpSyncBlocks(chain *Chain, parent *Commitment) func() { - return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSync bool, parentIsFullyBooked bool, isFullyBooked bool) bool { - return engineInstance != nil && warpSync && parentIsFullyBooked && !isFullyBooked - }, chain.Engine, chain.WarpSyncMode, parent.IsFullyBooked, c.IsFullyBooked)) + return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSyncModeEnabled bool, parentIsFullyBooked bool, isFullyBooked bool) bool { + return engineInstance != nil && warpSyncModeEnabled && parentIsFullyBooked && !isFullyBooked + }, chain.Engine, chain.WarpSyncModeEnabled, parent.IsFullyBooked, c.IsFullyBooked)) } // deriveReplayDroppedBlocks derives the ReplayDroppedBlocks flag of this Commitment which is true if our Chain has an // engine, is no longer requesting warp sync, and we are above the latest verified Commitment. func (c *Commitment) deriveReplayDroppedBlocks(chain *Chain) func() { - return c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, engineInstance *engine.Engine, warpSyncing bool, isAboveLatestVerifiedCommitment bool) bool { - return engineInstance != nil && !warpSyncing && isAboveLatestVerifiedCommitment - }, chain.Engine, chain.WarpSyncMode, c.IsAboveLatestVerifiedCommitment)) + return c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, engineInstance *engine.Engine, warpSyncModeEnabled bool, isAboveLatestVerifiedCommitment bool) bool { + return engineInstance != nil && !warpSyncModeEnabled && isAboveLatestVerifiedCommitment + }, chain.Engine, chain.WarpSyncModeEnabled, c.IsAboveLatestVerifiedCommitment)) } // forceChain forces the Chain of this Commitment to the given Chain by promoting it to the main child of its parent if @@ -296,3 +296,12 @@ func (c *Commitment) forceChain(targetChain *Chain) { } } } + +// cumulativeWeight returns the cumulative weight of this Commitment while gracefully handling nil receivers. +func (c *Commitment) cumulativeWeight() uint64 { + if c == nil { + return 0 + } + + return c.CumulativeWeight() +} diff --git a/pkg/protocol/commitment_verifier.go b/pkg/protocol/commitment_verifier.go index ab600fbc9..3ee2b4cc8 100644 --- a/pkg/protocol/commitment_verifier.go +++ b/pkg/protocol/commitment_verifier.go @@ -5,6 +5,7 @@ import ( "github.com/iotaledger/hive.go/ds" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/kvstore/mapdb" + "github.com/iotaledger/hive.go/runtime/syncutils" "github.com/iotaledger/iota-core/pkg/model" "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts" @@ -22,6 +23,9 @@ type CommitmentVerifier struct { // validatorAccountsData is the accounts data of the validators for the current epoch as known at lastCommonSlotBeforeFork. // Initially, it is set to the accounts data of the validators for the epoch of the last common commitment before the fork. validatorAccountsData map[iotago.AccountID]*accounts.AccountData + + // mutex is used to synchronize access to validatorAccountsData and epoch. + mutex syncutils.RWMutex } func newCommitmentVerifier(mainEngine *engine.Engine, lastCommonCommitmentBeforeFork *model.Commitment) (*CommitmentVerifier, error) { @@ -76,6 +80,7 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *Commitment, attestatio // This is necessary because the committee might have rotated at the epoch boundary and different validators might be part of it. // In case anything goes wrong we keep using previously known accounts data (initially set to the accounts data // of the validators for the epoch of the last common commitment before the fork). + c.mutex.Lock() apiForSlot := c.engine.APIForSlot(commitment.Slot()) commitmentEpoch := apiForSlot.TimeProvider().EpochFromSlot(commitment.Slot()) if commitmentEpoch > c.epoch { @@ -92,6 +97,7 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *Commitment, attestatio } } } + c.mutex.Unlock() // 3. Verify attestations. blockIDs, seatCount, err := c.verifyAttestations(attestations) @@ -107,6 +113,9 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *Commitment, attestatio } func (c *CommitmentVerifier) verifyAttestations(attestations []*iotago.Attestation) (iotago.BlockIDs, uint64, error) { + c.mutex.RLock() + defer c.mutex.RUnlock() + visitedIdentities := ds.NewSet[iotago.AccountID]() var blockIDs iotago.BlockIDs var seatCount uint64 diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index b18983f3b..3afd74807 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -53,21 +53,12 @@ func newBlocksProtocol(protocol *Protocol) *BlocksProtocol { }) }) - protocol.Chains.WithElements(func(chain *Chain) func() { - return chain.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { - return engineInstance.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook - }) - }) - - protocol.Chains.Main.Get().Engine.OnUpdateWithContext(func(_ *engine.Engine, engine *engine.Engine, unsubscribeOnEngineChange func(subscriptionFactory func() (unsubscribe func()))) { - if engine != nil { - unsubscribeOnEngineChange(func() (unsubscribe func()) { - return lo.Batch( - engine.Events.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, - engine.Events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, - ) - }) - } + protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (shutdown func()) { + return lo.Batch( + engine.Events.BlockRequester.Tick.Hook(b.SendRequest).Unhook, + engine.Events.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, + engine.Events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { b.SendResponse(block.ModelBlock()) }).Unhook, + ) }) }) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 844881d89..374aaa3c6 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -47,8 +47,8 @@ func newWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { protocol.Constructed.OnTrigger(func() { protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (shutdown func()) { - return chain.WarpSyncMode.OnUpdate(func(_ bool, warpSyncMode bool) { - if warpSyncMode { + return chain.WarpSyncModeEnabled.OnUpdate(func(_ bool, warpSyncModeEnabled bool) { + if warpSyncModeEnabled { engine.Workers.WaitChildren() engine.Reset() } @@ -110,7 +110,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } - if !chain.WarpSyncMode.Get() { + if !chain.WarpSyncModeEnabled.Get() { w.LogTrace("response for chain without warp-sync", "chain", chain.LogName(), "fromPeer", from) return @@ -161,7 +161,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo targetEngine.Workers.WaitChildren() - if !chain.WarpSyncMode.Get() { + if !chain.WarpSyncModeEnabled.Get() { w.LogTrace("response for chain without warp-sync", "chain", chain.LogName(), "fromPeer", from) return blocksToWarpSync @@ -177,7 +177,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // 2. Mark all blocks as accepted // 3. Force commitment of the slot forceCommitmentFunc := func() { - if !chain.WarpSyncMode.Get() { + if !chain.WarpSyncModeEnabled.Get() { return } @@ -247,20 +247,25 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo }) } + // Once all blocks are fully booked we can mark the commitment that is minCommittableAge older as this + // commitment to be committable. commitment.IsFullyBooked.OnUpdateOnce(func(_ bool, _ bool) { - // Let's assume that MCA is 5: when we want to book 15, we expect to have the commitment of 10 to load - // accounts from it, hence why we make committable the slot at - MCA + 1 with respect of the current slot. - minimumCommittableAge := w.protocol.APIForSlot(commitmentID.Slot()).ProtocolParameters().MinCommittableAge() - if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - minimumCommittableAge); exists { - committableCommitment.IsCommittable.Set(true) + if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - targetEngine.LatestAPI().ProtocolParameters().MinCommittableAge()); exists { + w.workerPool.Submit(func() { + committableCommitment.IsCommittable.Set(true) + }) } }) - commitment.IsCommittable.OnUpdateOnce(func(_ bool, _ bool) { - w.workerPool.Submit(forceCommitmentFunc) + // force commit one by one and wait for the parent to be committed before we can commit the next one + commitment.Parent.WithNonEmptyValue(func(parent *Commitment) (teardown func()) { + return parent.IsCommitted.WithNonEmptyValue(func(_ bool) (teardown func()) { + return commitment.IsCommittable.OnTrigger(forceCommitmentFunc) + }) }) if totalBlocks == 0 { + commitment.IsCommittable.Set(true) commitment.IsFullyBooked.Set(true) return blocksToWarpSync diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index f47ea4e40..93ec48b57 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -173,8 +173,6 @@ func TestLossOfAcceptanceFromSnapshot(t *testing.T) { { ts.IssueBlocksAtSlots("", []iotago.SlotIndex{21, 22}, 2, "block0", ts.Nodes("node0-restarted"), true, false) - time.Sleep(10 * time.Second) - ts.AssertEqualStoredCommitmentAtIndex(20, ts.Nodes()...) ts.AssertLatestCommitmentSlotIndex(20, ts.Nodes()...) } diff --git a/pkg/testsuite/mock/node.go b/pkg/testsuite/mock/node.go index ab8d94abd..32394616a 100644 --- a/pkg/testsuite/mock/node.go +++ b/pkg/testsuite/mock/node.go @@ -225,11 +225,11 @@ func (n *Node) hookLogging(failOnBlockFiltered bool) { }) } -func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engine.Engine, engineName string) { +func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engine.Engine) { events := instance.Events events.BlockDAG.BlockAttached.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] BlockDAG.BlockAttached: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("BlockDAG.BlockAttached", "block", block.ID()) n.mutex.Lock() defer n.mutex.Unlock() @@ -237,78 +237,80 @@ func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engi }) events.BlockDAG.BlockSolid.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] BlockDAG.BlockSolid: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("BlockDAG.BlockSolid", "block", block.ID()) }) events.BlockDAG.BlockInvalid.Hook(func(block *blocks.Block, err error) { - fmt.Printf("%s > [%s] BlockDAG.BlockInvalid: %s - %s\n", n.Name, engineName, block.ID(), err) + instance.LogTrace("BlockDAG.BlockInvalid", "block", block.ID(), "err", err) }) events.BlockDAG.BlockMissing.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] BlockDAG.BlockMissing: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("BlockDAG.BlockMissing", "block", block.ID()) }) events.BlockDAG.MissingBlockAttached.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] BlockDAG.MissingBlockAttached: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("BlockDAG.MissingBlockAttached", "block", block.ID()) }) events.SeatManager.BlockProcessed.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] SybilProtection.BlockProcessed: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("SeatManager.BlockProcessed", "block", block.ID()) }) events.Booker.BlockBooked.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Booker.BlockBooked: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("Booker.BlockBooked", "block", block.ID()) }) events.Booker.BlockInvalid.Hook(func(block *blocks.Block, err error) { - fmt.Printf("%s > [%s] Booker.BlockInvalid: %s - %s\n", n.Name, engineName, block.ID(), err.Error()) + instance.LogTrace("Booker.BlockInvalid", "block", block.ID(), "err", err) }) events.Booker.TransactionInvalid.Hook(func(metadata mempool.TransactionMetadata, err error) { - fmt.Printf("%s > [%s] Booker.TransactionInvalid: %s - %s\n", n.Name, engineName, metadata.ID(), err.Error()) + instance.LogTrace("Booker.TransactionInvalid", "tx", metadata.ID(), "err", err) }) events.Scheduler.BlockScheduled.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Scheduler.BlockScheduled: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("Scheduler.BlockScheduled", "block", block.ID()) }) events.Scheduler.BlockEnqueued.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Scheduler.BlockEnqueued: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("Scheduler.BlockEnqueued", "block", block.ID()) }) events.Scheduler.BlockSkipped.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Scheduler.BlockSkipped: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("Scheduler.BlockSkipped", "block", block.ID()) }) events.Scheduler.BlockDropped.Hook(func(block *blocks.Block, err error) { - fmt.Printf("%s > [%s] Scheduler.BlockDropped: %s - %s\n", n.Name, engineName, block.ID(), err.Error()) + instance.LogTrace("Scheduler.BlockDropped", "block", block.ID(), "err", err) }) events.Clock.AcceptedTimeUpdated.Hook(func(newTime time.Time) { - fmt.Printf("%s > [%s] Clock.AcceptedTimeUpdated: %s [Slot %d]\n", n.Name, engineName, newTime, instance.LatestAPI().TimeProvider().SlotFromTime(newTime)) + instance.LogTrace("Clock.AcceptedTimeUpdated", "time", newTime, "slot", instance.LatestAPI().TimeProvider().SlotFromTime(newTime)) }) events.Clock.ConfirmedTimeUpdated.Hook(func(newTime time.Time) { - fmt.Printf("%s > [%s] Clock.ConfirmedTimeUpdated: %s [Slot %d]\n", n.Name, engineName, newTime, instance.LatestAPI().TimeProvider().SlotFromTime(newTime)) + instance.LogTrace("Clock.ConfirmedTimeUpdated", "time", newTime, "slot", instance.LatestAPI().TimeProvider().SlotFromTime(newTime)) }) events.PreSolidFilter.BlockPreAllowed.Hook(func(block *model.Block) { - fmt.Printf("%s > [%s] PreSolidFilter.BlockPreAllowed: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("PreSolidFilter.BlockPreAllowed", "block", block.ID()) }) events.PreSolidFilter.BlockPreFiltered.Hook(func(event *presolidfilter.BlockPreFilteredEvent) { - fmt.Printf("%s > [%s] PreSolidFilter.BlockPreFiltered: %s - %s\n", n.Name, engineName, event.Block.ID(), event.Reason.Error()) + instance.LogTrace("PreSolidFilter.BlockPreFiltered", "block", event.Block.ID(), "err", event.Reason) + if failOnBlockFiltered { n.Testing.Fatal("no blocks should be prefiltered") } }) events.PostSolidFilter.BlockAllowed.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] PostSolidFilter.BlockAllowed: %s\n", n.Name, engineName, block.ID()) + instance.LogTrace("PostSolidFilter.BlockAllowed", "block", block.ID()) }) events.PostSolidFilter.BlockFiltered.Hook(func(event *postsolidfilter.BlockFilteredEvent) { - fmt.Printf("%s > [%s] PostSolidFilter.BlockFiltered: %s - %s\n", n.Name, engineName, event.Block.ID(), event.Reason.Error()) + instance.LogTrace("PostSolidFilter.BlockFiltered", "block", event.Block.ID(), "err", event.Reason) + if failOnBlockFiltered { n.Testing.Fatal("no blocks should be filtered") } @@ -319,11 +321,11 @@ func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engi }) events.BlockRequester.Tick.Hook(func(blockID iotago.BlockID) { - fmt.Printf("%s > [%s] BlockRequester.Tick: %s\n", n.Name, engineName, blockID) + instance.LogTrace("BlockRequester.Tick", "block", blockID) }) events.BlockProcessed.Hook(func(blockID iotago.BlockID) { - fmt.Printf("%s > [%s] Engine.BlockProcessed: %s\n", n.Name, engineName, blockID) + instance.LogTrace("BlockProcessed", "block", blockID) }) events.Notarization.SlotCommitted.Hook(func(details *notarization.SlotCommittedDetails) { @@ -350,117 +352,116 @@ func (n *Node) attachEngineLogsWithName(failOnBlockFiltered bool, instance *engi require.NoError(n.Testing, err) } - fmt.Printf("%s > [%s] NotarizationManager.SlotCommitted: %s %s Accepted Blocks: %s\n %s\n Attestations: %s\n", n.Name, engineName, details.Commitment.ID(), details.Commitment, acceptedBlocks, roots, attestationBlockIDs) + instance.LogTrace("NotarizationManager.SlotCommitted", "commitment", details.Commitment.ID(), "acceptedBlocks", acceptedBlocks, "roots", roots, "attestations", attestationBlockIDs) }) events.Notarization.LatestCommitmentUpdated.Hook(func(commitment *model.Commitment) { - fmt.Printf("%s > [%s] NotarizationManager.LatestCommitmentUpdated: %s\n", n.Name, engineName, commitment.ID()) + instance.LogTrace("NotarizationManager.LatestCommitmentUpdated", "commitment", commitment.ID()) }) events.BlockGadget.BlockPreAccepted.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Consensus.BlockGadget.BlockPreAccepted: %s %s\n", n.Name, engineName, block.ID(), block.ProtocolBlock().Header.SlotCommitmentID) + instance.LogTrace("BlockGadget.BlockPreAccepted", "block", block.ID(), "slotCommitmentID", block.ProtocolBlock().Header.SlotCommitmentID) }) events.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Consensus.BlockGadget.BlockAccepted: %s @ slot %s committing to %s\n", n.Name, engineName, block.ID(), block.ID().Slot(), block.ProtocolBlock().Header.SlotCommitmentID) + instance.LogTrace("BlockGadget.BlockAccepted", "block", block.ID(), "slotCommitmentID", block.ProtocolBlock().Header.SlotCommitmentID) }) events.BlockGadget.BlockPreConfirmed.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Consensus.BlockGadget.BlockPreConfirmed: %s %s\n", n.Name, engineName, block.ID(), block.ProtocolBlock().Header.SlotCommitmentID) + instance.LogTrace("BlockGadget.BlockPreConfirmed", "block", block.ID(), "slotCommitmentID", block.ProtocolBlock().Header.SlotCommitmentID) }) events.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { - fmt.Printf("%s > [%s] Consensus.BlockGadget.BlockConfirmed: %s %s\n", n.Name, engineName, block.ID(), block.ProtocolBlock().Header.SlotCommitmentID) + instance.LogTrace("BlockGadget.BlockConfirmed", "block", block.ID(), "slotCommitmentID", block.ProtocolBlock().Header.SlotCommitmentID) }) events.SlotGadget.SlotFinalized.Hook(func(slot iotago.SlotIndex) { - fmt.Printf("%s > [%s] Consensus.SlotGadget.SlotFinalized: %s\n", n.Name, engineName, slot) + instance.LogTrace("SlotGadget.SlotFinalized", "slot", slot) }) events.SeatManager.OnlineCommitteeSeatAdded.Hook(func(seat account.SeatIndex, accountID iotago.AccountID) { - fmt.Printf("%s > [%s] SybilProtection.OnlineCommitteeSeatAdded: %d - %s\n", n.Name, engineName, seat, accountID) + instance.LogTrace("SybilProtection.OnlineCommitteeSeatAdded", "seat", seat, "accountID", accountID) }) events.SeatManager.OnlineCommitteeSeatRemoved.Hook(func(seat account.SeatIndex) { - fmt.Printf("%s > [%s] SybilProtection.OnlineCommitteeSeatRemoved: %d\n", n.Name, engineName, seat) + instance.LogTrace("SybilProtection.OnlineCommitteeSeatRemoved", "seat", seat) }) events.SybilProtection.CommitteeSelected.Hook(func(committee *account.Accounts, epoch iotago.EpochIndex) { - fmt.Printf("%s > [%s] SybilProtection.CommitteeSelected: epoch %d - %s\n", n.Name, engineName, epoch, committee.IDs()) + instance.LogTrace("SybilProtection.CommitteeSelected", "epoch", epoch, "committee", committee.IDs()) }) - events.SpendDAG.SpenderCreated.Hook(func(spenderID iotago.TransactionID) { - fmt.Printf("%s > [%s] SpendDAG.SpendCreated: %s\n", n.Name, engineName, spenderID) + events.SpendDAG.SpenderCreated.Hook(func(conflictID iotago.TransactionID) { + instance.LogTrace("SpendDAG.SpenderCreated", "conflictID", conflictID) }) - events.SpendDAG.SpenderEvicted.Hook(func(spenderID iotago.TransactionID) { - fmt.Printf("%s > [%s] SpendDAG.SpendEvicted: %s\n", n.Name, engineName, spenderID) + events.SpendDAG.SpenderEvicted.Hook(func(conflictID iotago.TransactionID) { + instance.LogTrace("SpendDAG.SpenderEvicted", "conflictID", conflictID) }) - events.SpendDAG.SpenderRejected.Hook(func(spenderID iotago.TransactionID) { - fmt.Printf("%s > [%s] SpendDAG.SpendRejected: %s\n", n.Name, engineName, spenderID) + + events.SpendDAG.SpenderRejected.Hook(func(conflictID iotago.TransactionID) { + instance.LogTrace("SpendDAG.SpenderRejected", "conflictID", conflictID) }) - events.SpendDAG.SpenderAccepted.Hook(func(spenderID iotago.TransactionID) { - fmt.Printf("%s > [%s] SpendDAG.SpendAccepted: %s\n", n.Name, engineName, spenderID) + events.SpendDAG.SpenderAccepted.Hook(func(conflictID iotago.TransactionID) { + instance.LogTrace("SpendDAG.SpenderAccepted", "conflictID", conflictID) }) instance.Ledger.MemPool().OnSignedTransactionAttached( func(signedTransactionMetadata mempool.SignedTransactionMetadata) { signedTransactionMetadata.OnSignaturesInvalid(func(err error) { - fmt.Printf("%s > [%s] MemPool.SignedTransactionSignaturesInvalid(%s): %s\n", n.Name, engineName, err, signedTransactionMetadata.ID()) + instance.LogTrace("MemPool.SignedTransactionSignaturesInvalid", "tx", signedTransactionMetadata.ID(), "err", err) }) }, ) instance.Ledger.OnTransactionAttached(func(transactionMetadata mempool.TransactionMetadata) { - fmt.Printf("%s > [%s] Ledger.TransactionAttached: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("Ledger.TransactionAttached", "tx", transactionMetadata.ID()) transactionMetadata.OnSolid(func() { - fmt.Printf("%s > [%s] MemPool.TransactionSolid: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionSolid", "tx", transactionMetadata.ID()) }) transactionMetadata.OnExecuted(func() { - fmt.Printf("%s > [%s] MemPool.TransactionExecuted: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionExecuted", "tx", transactionMetadata.ID()) }) transactionMetadata.OnBooked(func() { - fmt.Printf("%s > [%s] MemPool.TransactionBooked: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionBooked", "tx", transactionMetadata.ID()) }) transactionMetadata.OnConflicting(func() { - fmt.Printf("%s > [%s] MemPool.TransactionConflicting: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionConflicting", "tx", transactionMetadata.ID()) }) transactionMetadata.OnAccepted(func() { - fmt.Printf("%s > [%s] MemPool.TransactionAccepted: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionAccepted", "tx", transactionMetadata.ID()) }) transactionMetadata.OnRejected(func() { - fmt.Printf("%s > [%s] MemPool.TransactionRejected: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionRejected", "tx", transactionMetadata.ID()) }) transactionMetadata.OnInvalid(func(err error) { - fmt.Printf("%s > [%s] MemPool.TransactionInvalid(%s): %s\n", n.Name, engineName, err, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionInvalid", "tx", transactionMetadata.ID(), "err", err) }) transactionMetadata.OnOrphanedSlotUpdated(func(slot iotago.SlotIndex) { - fmt.Printf("%s > [%s] MemPool.TransactionOrphanedSlotUpdated in slot %d: %s\n", n.Name, engineName, slot, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionOrphanedSlotUpdated", "tx", transactionMetadata.ID(), "slot", slot) }) transactionMetadata.OnCommittedSlotUpdated(func(slot iotago.SlotIndex) { - fmt.Printf("%s > [%s] MemPool.TransactionCommittedSlotUpdated in slot %d: %s\n", n.Name, engineName, slot, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionCommittedSlotUpdated", "tx", transactionMetadata.ID(), "slot", slot) }) transactionMetadata.OnPending(func() { - fmt.Printf("%s > [%s] MemPool.TransactionPending: %s\n", n.Name, engineName, transactionMetadata.ID()) + instance.LogTrace("MemPool.TransactionPending", "tx", transactionMetadata.ID()) }) }) } func (n *Node) attachEngineLogs(failOnBlockFiltered bool, instance *engine.Engine) { - engineName := fmt.Sprintf("%s - %s", lo.Cond(n.Protocol.Engines.Main.Get() != instance, "Candidate", "Main"), instance.Name()[:8]) - - n.attachEngineLogsWithName(failOnBlockFiltered, instance, engineName) + n.attachEngineLogsWithName(failOnBlockFiltered, instance) } func (n *Node) Wait() { diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 956797be7..04409b25b 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -68,8 +68,15 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found", node.Name, slot) } + // Make sure the main chain exists + mainChain := node.Protocol.Chains.Main.Get() + if mainChain == nil { + return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: main chain not found when checking for commitment at index %v", node.Name, slot) + } + // Make sure the commitment is also available in the ChainManager. - if node.Protocol.Chains.Main.Get().LatestCommitment.Get().ID().Slot() < slot { + latestCommitment := mainChain.LatestCommitment.Get() + if latestCommitment == nil || latestCommitment.ID().Slot() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found in ChainManager", node.Name, slot) } @@ -126,8 +133,12 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - actualChainID := node.Protocol.Chains.Main.Get().ForkingPoint.Get().ID() + mainChain := node.Protocol.Chains.Main.Get() + if mainChain == nil { + return ierrors.Errorf("AssertChainID: %s: main chain not found", node.Name) + } + actualChainID := mainChain.ForkingPoint.Get().ID() if expectedChainID != actualChainID { fmt.Println(expectedChainID, actualChainID) From 6eae1b4fd03198bf5ceae3c449768375e4b2e65d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:04:14 +0100 Subject: [PATCH 322/356] Refactor: started reverting unnecessary changes --- pkg/core/buffer/unsolid_commitment_buffer.go | 2 +- pkg/protocol/protocol.go | 12 ++++++------ pkg/testsuite/storage_settings.go | 16 ++-------------- 3 files changed, 9 insertions(+), 21 deletions(-) diff --git a/pkg/core/buffer/unsolid_commitment_buffer.go b/pkg/core/buffer/unsolid_commitment_buffer.go index a6417a4d7..27df0dd51 100644 --- a/pkg/core/buffer/unsolid_commitment_buffer.go +++ b/pkg/core/buffer/unsolid_commitment_buffer.go @@ -51,7 +51,7 @@ func (u *UnsolidCommitmentBuffer[V]) Add(commitmentID iotago.CommitmentID, value u.mutex.RLock() defer u.mutex.RUnlock() - if u.lastEvictedSlot != 0 && commitmentID.Slot() <= u.lastEvictedSlot { + if commitmentID.Slot() <= u.lastEvictedSlot { return false } diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index 7bef7c575..fbc08d562 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -89,7 +89,7 @@ func New(logger log.Logger, workers *workerpool.Group, networkEndpoint network.E p.Constructed.Trigger() - p.waitMainEngineInitialized() + p.waitInitialized() }) } @@ -204,14 +204,14 @@ func (p *Protocol) initNetwork() (shutdown func()) { ) } -// waitMainEngineInitialized waits until the main engine is initialized. -func (p *Protocol) waitMainEngineInitialized() { +// waitInitialized waits until the main engine is initialized (published its root commitment). +func (p *Protocol) waitInitialized() { var waitInitialized sync.WaitGroup waitInitialized.Add(1) - p.Engines.Main.OnUpdateOnce(func(_ *engine.Engine, engine *engine.Engine) { - engine.Initialized.OnTrigger(waitInitialized.Done) - }) + p.Commitments.Root.OnUpdateOnce(func(_, rootCommitment *Commitment) { + waitInitialized.Done() + }, func(_ *Commitment, rootCommitment *Commitment) bool { return rootCommitment != nil }) waitInitialized.Wait() } diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 04409b25b..23dc9bfbd 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -68,15 +68,8 @@ func (t *TestSuite) AssertCommitmentSlotIndexExists(slot iotago.SlotIndex, nodes return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found", node.Name, slot) } - // Make sure the main chain exists - mainChain := node.Protocol.Chains.Main.Get() - if mainChain == nil { - return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: main chain not found when checking for commitment at index %v", node.Name, slot) - } - // Make sure the commitment is also available in the ChainManager. - latestCommitment := mainChain.LatestCommitment.Get() - if latestCommitment == nil || latestCommitment.ID().Slot() < slot { + if node.Protocol.Chains.Main.Get().LatestCommitment.Get().ID().Slot() < slot { return ierrors.Errorf("AssertCommitmentSlotIndexExists: %s: commitment at index %v not found in ChainManager", node.Name, slot) } @@ -133,12 +126,7 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { - mainChain := node.Protocol.Chains.Main.Get() - if mainChain == nil { - return ierrors.Errorf("AssertChainID: %s: main chain not found", node.Name) - } - - actualChainID := mainChain.ForkingPoint.Get().ID() + actualChainID := node.Protocol.Chains.Main.Get().ForkingPoint.Get().ID() if expectedChainID != actualChainID { fmt.Println(expectedChainID, actualChainID) From 7675908672be3625a38c60628ba7060ef027ba5b Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:07:24 +0100 Subject: [PATCH 323/356] Refactor: reverted changes --- pkg/testsuite/storage_settings.go | 1 + 1 file changed, 1 insertion(+) diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 23dc9bfbd..956797be7 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -127,6 +127,7 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... for _, node := range nodes { t.Eventually(func() error { actualChainID := node.Protocol.Chains.Main.Get().ForkingPoint.Get().ID() + if expectedChainID != actualChainID { fmt.Println(expectedChainID, actualChainID) From 8a2a19ee55152920af7ae3a2dd97b223f60eb3ce Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:08:37 +0100 Subject: [PATCH 324/356] Refactor: reverted rename --- pkg/protocol/chain.go | 14 +++++++------- pkg/protocol/commitment.go | 4 ++-- pkg/protocol/protocol_warp_sync.go | 8 ++++---- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 86b1d1d30..2cf78e72b 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -48,8 +48,8 @@ type Chain struct { // latest verified commitment. VerifiedWeight reactive.Variable[uint64] - // WarpSyncModeEnabled contains a flag that indicates whether this chain is in warp sync mode. - WarpSyncModeEnabled reactive.Variable[bool] + // WarpSyncMode contains a flag that indicates whether this chain is in warp sync mode. + WarpSyncMode reactive.Variable[bool] // OutOfSyncThreshold contains the slot at which the chain will consider itself to be out of sync and switch to warp // sync mode. It is derived from the latest network slot minus two times the max committable age. @@ -92,7 +92,7 @@ func newChain(chains *Chains) *Chain { ClaimedWeight: reactive.NewVariable[uint64](), AttestedWeight: reactive.NewVariable[uint64](), VerifiedWeight: reactive.NewVariable[uint64](), - WarpSyncModeEnabled: reactive.NewVariable[bool]().Init(true), + WarpSyncMode: reactive.NewVariable[bool]().Init(true), OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), RequestAttestations: reactive.NewVariable[bool](), StartEngine: reactive.NewVariable[bool](), @@ -187,7 +187,7 @@ func (c *Chain) initLogger() (shutdown func()) { c.Logger, shutdown = c.chains.NewEntityLogger("") return lo.Batch( - c.WarpSyncModeEnabled.LogUpdates(c, log.LevelTrace, "WarpSyncModeEnabled"), + c.WarpSyncMode.LogUpdates(c, log.LevelTrace, "WarpSyncMode"), c.OutOfSyncThreshold.LogUpdates(c, log.LevelTrace, "OutOfSyncThreshold"), c.ForkingPoint.LogUpdates(c, log.LevelTrace, "ForkingPoint", (*Commitment).LogName), c.ClaimedWeight.LogUpdates(c, log.LevelTrace, "ClaimedWeight"), @@ -217,9 +217,9 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { return latestProducedCommitment.cumulativeWeight() }, c.LatestProducedCommitment)), - c.WarpSyncModeEnabled.DeriveValueFrom(reactive.NewDerivedVariable3(func(enabled bool, latestFullyBookedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(enabled bool, latestFullyBookedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { return warpSyncModeEnabled(enabled, latestFullyBookedCommitment, latestSeenSlot, outOfSyncThreshold) - }, c.LatestFullyBookedCommitment, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncModeEnabled.Get())), + }, c.LatestFullyBookedCommitment, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncMode.Get())), c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (shutdown func()) { return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) @@ -299,7 +299,7 @@ func (c *Chain) dispatchBlockToSpawnedEngine(block *model.Block, src peer.ID) (d } // perform additional checks if we are in warp sync mode (only let blocks pass that we requested) - if c.WarpSyncModeEnabled.Get() { + if c.WarpSyncMode.Get() { // abort if the target commitment does not exist targetCommitment, targetCommitmentExists := c.Commitment(targetSlot) if !targetCommitmentExists { diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 1b956deba..8f2b7b5ee 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -276,7 +276,7 @@ func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) func (c *Commitment) deriveWarpSyncBlocks(chain *Chain, parent *Commitment) func() { return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSyncModeEnabled bool, parentIsFullyBooked bool, isFullyBooked bool) bool { return engineInstance != nil && warpSyncModeEnabled && parentIsFullyBooked && !isFullyBooked - }, chain.Engine, chain.WarpSyncModeEnabled, parent.IsFullyBooked, c.IsFullyBooked)) + }, chain.Engine, chain.WarpSyncMode, parent.IsFullyBooked, c.IsFullyBooked)) } // deriveReplayDroppedBlocks derives the ReplayDroppedBlocks flag of this Commitment which is true if our Chain has an @@ -284,7 +284,7 @@ func (c *Commitment) deriveWarpSyncBlocks(chain *Chain, parent *Commitment) func func (c *Commitment) deriveReplayDroppedBlocks(chain *Chain) func() { return c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, engineInstance *engine.Engine, warpSyncModeEnabled bool, isAboveLatestVerifiedCommitment bool) bool { return engineInstance != nil && !warpSyncModeEnabled && isAboveLatestVerifiedCommitment - }, chain.Engine, chain.WarpSyncModeEnabled, c.IsAboveLatestVerifiedCommitment)) + }, chain.Engine, chain.WarpSyncMode, c.IsAboveLatestVerifiedCommitment)) } // forceChain forces the Chain of this Commitment to the given Chain by promoting it to the main child of its parent if diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 374aaa3c6..ae2cb7576 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -47,7 +47,7 @@ func newWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { protocol.Constructed.OnTrigger(func() { protocol.Chains.WithInitializedEngines(func(chain *Chain, engine *engine.Engine) (shutdown func()) { - return chain.WarpSyncModeEnabled.OnUpdate(func(_ bool, warpSyncModeEnabled bool) { + return chain.WarpSyncMode.OnUpdate(func(_ bool, warpSyncModeEnabled bool) { if warpSyncModeEnabled { engine.Workers.WaitChildren() engine.Reset() @@ -110,7 +110,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } - if !chain.WarpSyncModeEnabled.Get() { + if !chain.WarpSyncMode.Get() { w.LogTrace("response for chain without warp-sync", "chain", chain.LogName(), "fromPeer", from) return @@ -161,7 +161,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo targetEngine.Workers.WaitChildren() - if !chain.WarpSyncModeEnabled.Get() { + if !chain.WarpSyncMode.Get() { w.LogTrace("response for chain without warp-sync", "chain", chain.LogName(), "fromPeer", from) return blocksToWarpSync @@ -177,7 +177,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // 2. Mark all blocks as accepted // 3. Force commitment of the slot forceCommitmentFunc := func() { - if !chain.WarpSyncModeEnabled.Get() { + if !chain.WarpSyncMode.Get() { return } From aa420c9902821d7a0ac3bb97c70cdf131bf8b509 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:11:38 +0100 Subject: [PATCH 325/356] Refactor: addressed linter issues --- pkg/protocol/protocol.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/protocol/protocol.go b/pkg/protocol/protocol.go index fbc08d562..436ef0dcd 100644 --- a/pkg/protocol/protocol.go +++ b/pkg/protocol/protocol.go @@ -209,7 +209,7 @@ func (p *Protocol) waitInitialized() { var waitInitialized sync.WaitGroup waitInitialized.Add(1) - p.Commitments.Root.OnUpdateOnce(func(_, rootCommitment *Commitment) { + p.Commitments.Root.OnUpdateOnce(func(_ *Commitment, _ *Commitment) { waitInitialized.Done() }, func(_ *Commitment, rootCommitment *Commitment) bool { return rootCommitment != nil }) From dd8771a86ea75447f69f575efc45c9bddb303aeb Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 22:37:42 +0100 Subject: [PATCH 326/356] Refactor: reduced changes --- pkg/protocol/chain.go | 60 +++++++++++++++++++------------------------ 1 file changed, 27 insertions(+), 33 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 2cf78e72b..08091dc1d 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -29,9 +29,6 @@ type Chain struct { // LatestAttestedCommitment contains the latest commitment of this chain for which attestations were received. LatestAttestedCommitment reactive.Variable[*Commitment] - // LatestFullyBookedCommitment contains the latest commitment of this chain for which all blocks were booked. - LatestFullyBookedCommitment reactive.Variable[*Commitment] - // LatestProducedCommitment contains the latest commitment of this chain that we produced ourselves by booking the // corresponding blocks in the Engine. LatestProducedCommitment reactive.Variable[*Commitment] @@ -51,6 +48,9 @@ type Chain struct { // WarpSyncMode contains a flag that indicates whether this chain is in warp sync mode. WarpSyncMode reactive.Variable[bool] + // LatestFullyBookedSlot contains the latest commitment of this chain for which all blocks were booked. + LatestFullyBookedSlot reactive.Variable[iotago.SlotIndex] + // OutOfSyncThreshold contains the slot at which the chain will consider itself to be out of sync and switch to warp // sync mode. It is derived from the latest network slot minus two times the max committable age. OutOfSyncThreshold reactive.Variable[iotago.SlotIndex] @@ -82,22 +82,22 @@ type Chain struct { // newChain creates a new chain instance. func newChain(chains *Chains) *Chain { c := &Chain{ - ForkingPoint: reactive.NewVariable[*Commitment](), - ParentChain: reactive.NewVariable[*Chain](), - ChildChains: reactive.NewSet[*Chain](), - LatestCommitment: reactive.NewVariable[*Commitment](), - LatestAttestedCommitment: reactive.NewVariable[*Commitment](), - LatestFullyBookedCommitment: reactive.NewVariable[*Commitment](), - LatestProducedCommitment: reactive.NewVariable[*Commitment](), - ClaimedWeight: reactive.NewVariable[uint64](), - AttestedWeight: reactive.NewVariable[uint64](), - VerifiedWeight: reactive.NewVariable[uint64](), - WarpSyncMode: reactive.NewVariable[bool]().Init(true), - OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), - RequestAttestations: reactive.NewVariable[bool](), - StartEngine: reactive.NewVariable[bool](), - Engine: reactive.NewVariable[*engine.Engine](), - IsEvicted: reactive.NewEvent(), + ForkingPoint: reactive.NewVariable[*Commitment](), + ParentChain: reactive.NewVariable[*Chain](), + ChildChains: reactive.NewSet[*Chain](), + LatestCommitment: reactive.NewVariable[*Commitment](), + LatestAttestedCommitment: reactive.NewVariable[*Commitment](), + LatestProducedCommitment: reactive.NewVariable[*Commitment](), + ClaimedWeight: reactive.NewVariable[uint64](), + AttestedWeight: reactive.NewVariable[uint64](), + VerifiedWeight: reactive.NewVariable[uint64](), + WarpSyncMode: reactive.NewVariable[bool]().Init(true), + LatestFullyBookedSlot: reactive.NewVariable[iotago.SlotIndex](), + OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), + RequestAttestations: reactive.NewVariable[bool](), + StartEngine: reactive.NewVariable[bool](), + Engine: reactive.NewVariable[*engine.Engine](), + IsEvicted: reactive.NewEvent(), chains: chains, commitments: shrinkingmap.New[iotago.SlotIndex, *Commitment](), @@ -188,6 +188,7 @@ func (c *Chain) initLogger() (shutdown func()) { return lo.Batch( c.WarpSyncMode.LogUpdates(c, log.LevelTrace, "WarpSyncMode"), + c.LatestFullyBookedSlot.LogUpdates(c, log.LevelTrace, "LatestFullyBookedSlot"), c.OutOfSyncThreshold.LogUpdates(c, log.LevelTrace, "OutOfSyncThreshold"), c.ForkingPoint.LogUpdates(c, log.LevelTrace, "ForkingPoint", (*Commitment).LogName), c.ClaimedWeight.LogUpdates(c, log.LevelTrace, "ClaimedWeight"), @@ -195,7 +196,6 @@ func (c *Chain) initLogger() (shutdown func()) { c.VerifiedWeight.LogUpdates(c, log.LevelTrace, "VerifiedWeight"), c.LatestCommitment.LogUpdates(c, log.LevelTrace, "LatestCommitment", (*Commitment).LogName), c.LatestAttestedCommitment.LogUpdates(c, log.LevelTrace, "LatestAttestedCommitment", (*Commitment).LogName), - c.LatestFullyBookedCommitment.LogUpdates(c, log.LevelTrace, "LatestFullyBookedCommitment", (*Commitment).LogName), c.LatestProducedCommitment.LogUpdates(c, log.LevelDebug, "LatestProducedCommitment", (*Commitment).LogName), c.RequestAttestations.LogUpdates(c, log.LevelTrace, "RequestAttestations"), c.StartEngine.LogUpdates(c, log.LevelDebug, "StartEngine"), @@ -217,9 +217,9 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { return latestProducedCommitment.cumulativeWeight() }, c.LatestProducedCommitment)), - c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(enabled bool, latestFullyBookedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - return warpSyncModeEnabled(enabled, latestFullyBookedCommitment, latestSeenSlot, outOfSyncThreshold) - }, c.LatestFullyBookedCommitment, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncMode.Get())), + c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(enabled bool, latestFullyBookedSlot iotago.SlotIndex, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + return warpSyncModeEnabled(enabled, latestFullyBookedSlot, latestSeenSlot, outOfSyncThreshold) + }, c.LatestFullyBookedSlot, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncMode.Get())), c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (shutdown func()) { return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) @@ -278,8 +278,8 @@ func (c *Chain) addCommitment(newCommitment *Commitment) (shutdown func()) { return lo.Batch( newCommitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Set(newCommitment) }), - newCommitment.IsFullyBooked.OnTrigger(func() { c.LatestFullyBookedCommitment.Set(newCommitment) }), newCommitment.IsCommitted.OnTrigger(func() { c.LatestProducedCommitment.Set(newCommitment) }), + newCommitment.IsFullyBooked.OnTrigger(func() { c.LatestFullyBookedSlot.Set(newCommitment.Slot()) }), ) } @@ -347,18 +347,12 @@ func outOfSyncThreshold(engineInstance *engine.Engine, latestSeenSlot iotago.Slo } // warpSyncModeEnabled determines whether warp sync mode should be enabled or not. -func warpSyncModeEnabled(enabled bool, latestFullyBookedCommitment *Commitment, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - // latest produced commitment is nil if we have not produced any commitment yet (intermediary state during - // startup) - if latestFullyBookedCommitment == nil { - return enabled - } - +func warpSyncModeEnabled(enabled bool, latestFullyBookedSlot iotago.SlotIndex, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { // if warp sync mode is enabled, keep it enabled until we are no longer below the warp sync threshold if enabled { - return latestFullyBookedCommitment.ID().Slot() < latestSeenSlot + return latestFullyBookedSlot < latestSeenSlot } // if warp sync mode is disabled, enable it only if we fall below the out of sync threshold - return latestFullyBookedCommitment.ID().Slot() < outOfSyncThreshold + return latestFullyBookedSlot < outOfSyncThreshold } From 044b797e31f9120ada5af21edcbd1abe27636bd8 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 23:04:29 +0100 Subject: [PATCH 327/356] Refactor: reverted unnecessary changes --- pkg/protocol/commitment.go | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 8f2b7b5ee..ff4c7bb69 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -156,11 +156,10 @@ func (c *Commitment) initLogger() (shutdown func()) { // initDerivedProperties initializes the behavior of this Commitment by setting up the relations between its properties. func (c *Commitment) initDerivedProperties() (shutdown func()) { return lo.Batch( - // mark commitments that are marked as root as verified + // mark commitments that are marked as root as committed c.IsCommitted.InheritFrom(c.IsRoot), - c.ReplayDroppedBlocks.InheritFrom(c.IsRoot), - // mark commitments that are marked as verified as attested and fully booked + // mark commitments that are marked as committed as attested and fully booked c.IsAttested.InheritFrom(c.IsCommitted), c.IsFullyBooked.InheritFrom(c.IsCommitted), @@ -230,7 +229,6 @@ func (c *Commitment) deriveChain(parent *Commitment) func() { if currentChain == nil { currentChain = c.commitments.protocol.Chains.newChain() currentChain.ForkingPoint.Set(c) - currentChain.LatestProducedCommitment.Set(parent) } return currentChain From 010e1038786f140aec754691bc9198a363dcae63 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 23:18:11 +0100 Subject: [PATCH 328/356] Refactor: reverted more changes --- pkg/protocol/chain.go | 51 ++++++++++++++++++++++++++++++------------- 1 file changed, 36 insertions(+), 15 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 08091dc1d..fc9ac9c01 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -209,21 +209,10 @@ func (c *Chain) initLogger() (shutdown func()) { // initDerivedProperties initializes the behavior of this chain by setting up the relations between its properties. func (c *Chain) initDerivedProperties() (shutdown func()) { return lo.Batch( - c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { - return latestCommitment.cumulativeWeight() - }, c.LatestCommitment)), - - c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestProducedCommitment *Commitment) uint64 { - return latestProducedCommitment.cumulativeWeight() - }, c.LatestProducedCommitment)), - - c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(enabled bool, latestFullyBookedSlot iotago.SlotIndex, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - return warpSyncModeEnabled(enabled, latestFullyBookedSlot, latestSeenSlot, outOfSyncThreshold) - }, c.LatestFullyBookedSlot, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncMode.Get())), - - c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (shutdown func()) { - return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) - }), + c.deriveClaimedWeight(), + c.deriveVerifiedWeight(), + c.deriveLatestAttestedWeight(), + c.deriveWarpSyncMode(), c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (shutdown func()) { return c.deriveParentChain(forkingPoint) @@ -241,6 +230,38 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { ) } +// deriveWarpSyncMode defines how a chain determines whether it is in warp sync mode or not. +func (c *Chain) deriveWarpSyncMode() func() { + return c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(enabled bool, latestFullyBookedSlot iotago.SlotIndex, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + return warpSyncModeEnabled(enabled, latestFullyBookedSlot, latestSeenSlot, outOfSyncThreshold) + }, c.LatestFullyBookedSlot, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncMode.Get())) +} + +// deriveClaimedWeight defines how a chain determines its claimed weight (by setting the cumulative weight of the +// latest commitment). +func (c *Chain) deriveClaimedWeight() func() { + return c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { + return latestCommitment.cumulativeWeight() + }, c.LatestCommitment)) +} + +// deriveLatestAttestedWeight defines how a chain determines its attested weight (by inheriting the cumulative attested +// weight of the latest attested commitment). It uses inheritance instead of simply setting the value as the cumulative +// attested weight can change over time depending on the attestations that are received. +func (c *Chain) deriveLatestAttestedWeight() func() { + return c.LatestAttestedCommitment.WithNonEmptyValue(func(latestAttestedCommitment *Commitment) (shutdown func()) { + return c.AttestedWeight.InheritFrom(latestAttestedCommitment.CumulativeAttestedWeight) + }) +} + +// deriveVerifiedWeight defines how a chain determines its verified weight (by setting the cumulative weight of the +// latest produced commitment). +func (c *Chain) deriveVerifiedWeight() func() { + return c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestProducedCommitment *Commitment) uint64 { + return latestProducedCommitment.cumulativeWeight() + }, c.LatestProducedCommitment)) +} + // deriveChildChains defines how a chain determines its ChildChains (by adding each child to the set). func (c *Chain) deriveChildChains(child *Chain) func() { c.ChildChains.Add(child) From a3a5c72665c5cf051bd25cd6f9153f8c1162fb04 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 23:20:56 +0100 Subject: [PATCH 329/356] Refactor: minimizing more changes --- pkg/protocol/chain.go | 33 ++++++++++++++++++--------------- pkg/protocol/commitment.go | 9 --------- 2 files changed, 18 insertions(+), 24 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index fc9ac9c01..ef84c38b5 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -232,8 +232,14 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { // deriveWarpSyncMode defines how a chain determines whether it is in warp sync mode or not. func (c *Chain) deriveWarpSyncMode() func() { - return c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(enabled bool, latestFullyBookedSlot iotago.SlotIndex, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - return warpSyncModeEnabled(enabled, latestFullyBookedSlot, latestSeenSlot, outOfSyncThreshold) + return c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestFullyBookedSlot iotago.SlotIndex, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + // if warp sync mode is enabled, keep it enabled until we have fully booked all slots + if warpSyncMode { + return latestFullyBookedSlot < latestSeenSlot + } + + // if warp sync mode is disabled, enable it only if we fall below the out of sync threshold + return latestFullyBookedSlot < outOfSyncThreshold }, c.LatestFullyBookedSlot, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncMode.Get())) } @@ -241,7 +247,11 @@ func (c *Chain) deriveWarpSyncMode() func() { // latest commitment). func (c *Chain) deriveClaimedWeight() func() { return c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { - return latestCommitment.cumulativeWeight() + if latestCommitment == nil { + return 0 + } + + return latestCommitment.CumulativeWeight() }, c.LatestCommitment)) } @@ -258,7 +268,11 @@ func (c *Chain) deriveLatestAttestedWeight() func() { // latest produced commitment). func (c *Chain) deriveVerifiedWeight() func() { return c.VerifiedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestProducedCommitment *Commitment) uint64 { - return latestProducedCommitment.cumulativeWeight() + if latestProducedCommitment == nil { + return 0 + } + + return latestProducedCommitment.CumulativeWeight() }, c.LatestProducedCommitment)) } @@ -366,14 +380,3 @@ func outOfSyncThreshold(engineInstance *engine.Engine, latestSeenSlot iotago.Slo return 0 } - -// warpSyncModeEnabled determines whether warp sync mode should be enabled or not. -func warpSyncModeEnabled(enabled bool, latestFullyBookedSlot iotago.SlotIndex, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - // if warp sync mode is enabled, keep it enabled until we are no longer below the warp sync threshold - if enabled { - return latestFullyBookedSlot < latestSeenSlot - } - - // if warp sync mode is disabled, enable it only if we fall below the out of sync threshold - return latestFullyBookedSlot < outOfSyncThreshold -} diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index ff4c7bb69..4ce7b79da 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -294,12 +294,3 @@ func (c *Commitment) forceChain(targetChain *Chain) { } } } - -// cumulativeWeight returns the cumulative weight of this Commitment while gracefully handling nil receivers. -func (c *Commitment) cumulativeWeight() uint64 { - if c == nil { - return 0 - } - - return c.CumulativeWeight() -} From 0ce46e7268eb8d3eb0a9f5e2c81c6b793a8d779f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 23:27:48 +0100 Subject: [PATCH 330/356] Refactor: reverted more code --- pkg/protocol/chain.go | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index ef84c38b5..31ee3dad0 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -223,9 +223,7 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { }), c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { - return c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - return outOfSyncThreshold(engineInstance, latestSeenSlot) - }, c.chains.LatestSeenSlot)) + return c.deriveOutOfSyncThreshold(engineInstance) }), ) } @@ -245,7 +243,7 @@ func (c *Chain) deriveWarpSyncMode() func() { // deriveClaimedWeight defines how a chain determines its claimed weight (by setting the cumulative weight of the // latest commitment). -func (c *Chain) deriveClaimedWeight() func() { +func (c *Chain) deriveClaimedWeight() (shutdown func()) { return c.ClaimedWeight.DeriveValueFrom(reactive.NewDerivedVariable(func(_ uint64, latestCommitment *Commitment) uint64 { if latestCommitment == nil { return 0 @@ -305,6 +303,14 @@ func (c *Chain) deriveParentChain(forkingPoint *Commitment) (shutdown func()) { return nil } +// deriveOutOfSyncThreshold defines how a chain determines its "out of sync" threshold (the latest seen slot minus 2 +// times the max committable age or 0 if this would cause an overflow to the negative numbers). +func (c *Chain) deriveOutOfSyncThreshold(engineInstance *engine.Engine) func() { + return c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { + return outOfSyncThreshold(engineInstance, latestSeenSlot) + }, c.chains.LatestSeenSlot)) +} + // addCommitment adds the given commitment to this chain. func (c *Chain) addCommitment(newCommitment *Commitment) (shutdown func()) { c.commitments.Set(newCommitment.Slot(), newCommitment) From b6b430fe0bbebedc68fd2a5bf2e42b03c71aff6d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 23:32:19 +0100 Subject: [PATCH 331/356] Refactor: revert --- pkg/protocol/chain.go | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 31ee3dad0..43ef38211 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -307,7 +307,11 @@ func (c *Chain) deriveParentChain(forkingPoint *Commitment) (shutdown func()) { // times the max committable age or 0 if this would cause an overflow to the negative numbers). func (c *Chain) deriveOutOfSyncThreshold(engineInstance *engine.Engine) func() { return c.OutOfSyncThreshold.DeriveValueFrom(reactive.NewDerivedVariable(func(_ iotago.SlotIndex, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - return outOfSyncThreshold(engineInstance, latestSeenSlot) + if outOfSyncOffset := 2 * engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge(); outOfSyncOffset < latestSeenSlot { + return latestSeenSlot - outOfSyncOffset + } + + return 0 }, c.chains.LatestSeenSlot)) } @@ -377,12 +381,3 @@ func (c *Chain) verifiedWeight() reactive.Variable[uint64] { func (c *Chain) attestedWeight() reactive.Variable[uint64] { return c.AttestedWeight } - -// outOfSyncThreshold returns the slot index at which the node is considered out of sync. -func outOfSyncThreshold(engineInstance *engine.Engine, latestSeenSlot iotago.SlotIndex) iotago.SlotIndex { - if outOfSyncOffset := 2 * engineInstance.LatestAPI().ProtocolParameters().MaxCommittableAge(); outOfSyncOffset < latestSeenSlot { - return latestSeenSlot - outOfSyncOffset - } - - return 0 -} From 5beda14f877c893f1cb08570b23d3f34b803b8ca Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Sun, 3 Dec 2023 23:53:25 +0100 Subject: [PATCH 332/356] Refactor: revert --- pkg/protocol/chain.go | 16 +++------------- pkg/protocol/commitment.go | 8 ++++---- pkg/protocol/engine/clock/blocktime/clock.go | 4 +--- pkg/protocol/engines.go | 3 --- pkg/tests/loss_of_acceptance_test.go | 2 +- 5 files changed, 9 insertions(+), 24 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 43ef38211..a2f2671bd 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -156,8 +156,6 @@ func (c *Chain) DispatchBlock(block *model.Block, src peer.ID) (dispatched bool) func (c *Chain) Commitment(slot iotago.SlotIndex) (commitment *Commitment, exists bool) { for currentChain := c; currentChain != nil; { switch forkingPoint := currentChain.ForkingPoint.Get(); { - case forkingPoint == nil: - return nil, false case forkingPoint.Slot() == slot: return forkingPoint, true case slot > forkingPoint.Slot(): @@ -214,17 +212,9 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { c.deriveLatestAttestedWeight(), c.deriveWarpSyncMode(), - c.ForkingPoint.WithValue(func(forkingPoint *Commitment) (shutdown func()) { - return c.deriveParentChain(forkingPoint) - }), - - c.ParentChain.WithNonEmptyValue(func(parentChain *Chain) (shutdown func()) { - return parentChain.deriveChildChains(c) - }), - - c.Engine.WithNonEmptyValue(func(engineInstance *engine.Engine) (shutdown func()) { - return c.deriveOutOfSyncThreshold(engineInstance) - }), + c.ForkingPoint.WithValue(c.deriveParentChain), + c.ParentChain.WithNonEmptyValue(lo.Bind(c, (*Chain).deriveChildChains)), + c.Engine.WithNonEmptyValue(c.deriveOutOfSyncThreshold), ) } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 4ce7b79da..1e0898be4 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -272,16 +272,16 @@ func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) // deriveWarpSyncBlocks derives the WarpSyncBlocks flag of this Commitment which is true if our Chain is requesting // warp sync, and we are the directly above the latest verified Commitment. func (c *Commitment) deriveWarpSyncBlocks(chain *Chain, parent *Commitment) func() { - return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSyncModeEnabled bool, parentIsFullyBooked bool, isFullyBooked bool) bool { - return engineInstance != nil && warpSyncModeEnabled && parentIsFullyBooked && !isFullyBooked + return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSync bool, parentIsFullyBooked bool, isFullyBooked bool) bool { + return engineInstance != nil && warpSync && parentIsFullyBooked && !isFullyBooked }, chain.Engine, chain.WarpSyncMode, parent.IsFullyBooked, c.IsFullyBooked)) } // deriveReplayDroppedBlocks derives the ReplayDroppedBlocks flag of this Commitment which is true if our Chain has an // engine, is no longer requesting warp sync, and we are above the latest verified Commitment. func (c *Commitment) deriveReplayDroppedBlocks(chain *Chain) func() { - return c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, engineInstance *engine.Engine, warpSyncModeEnabled bool, isAboveLatestVerifiedCommitment bool) bool { - return engineInstance != nil && !warpSyncModeEnabled && isAboveLatestVerifiedCommitment + return c.ReplayDroppedBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, engineInstance *engine.Engine, warpSyncing bool, isAboveLatestVerifiedCommitment bool) bool { + return engineInstance != nil && !warpSyncing && isAboveLatestVerifiedCommitment }, chain.Engine, chain.WarpSyncMode, c.IsAboveLatestVerifiedCommitment)) } diff --git a/pkg/protocol/engine/clock/blocktime/clock.go b/pkg/protocol/engine/clock/blocktime/clock.go index 51801187b..506387df0 100644 --- a/pkg/protocol/engine/clock/blocktime/clock.go +++ b/pkg/protocol/engine/clock/blocktime/clock.go @@ -55,9 +55,7 @@ func NewProvider(opts ...options.Option[Clock]) module.Provider[*engine.Engine, asyncOpt := event.WithWorkerPool(c.workerPool) c.HookStopped(lo.Batch( e.Events.BlockGadget.BlockAccepted.Hook(func(block *blocks.Block) { - block.Notarized().OnTrigger(func() { - c.acceptedTime.Advance(block.IssuingTime()) - }) + c.acceptedTime.Advance(block.IssuingTime()) }, asyncOpt).Unhook, e.Events.BlockGadget.BlockConfirmed.Hook(func(block *blocks.Block) { diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index e30cfe19f..781dc0d32 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -9,7 +9,6 @@ import ( "github.com/iotaledger/hive.go/ds/reactive" "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/hive.go/lo" - "github.com/iotaledger/hive.go/log" "github.com/iotaledger/hive.go/runtime/ioutils" "github.com/iotaledger/hive.go/runtime/module" "github.com/iotaledger/hive.go/runtime/workerpool" @@ -159,8 +158,6 @@ func (e *Engines) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error) { return nil, ierrors.Wrap(err, "error while rolling back attestations storage on candidate engine") } - e.Log("forked engine", log.LevelTrace, "name", newEngineAlias[0:8], "slot", slot) - return candidateEngine, nil } diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index 93ec48b57..eae12a80c 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -32,7 +32,7 @@ func TestLossOfAcceptanceFromGenesis(t *testing.T) { 5, ), ), - testsuite.WithWaitFor(30*time.Second), + testsuite.WithWaitFor(15*time.Second), ) defer ts.Shutdown() From 2b819f9908662d578b677c3263fce95cad92caf2 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 00:29:37 +0100 Subject: [PATCH 333/356] Refactor: reverted more --- pkg/protocol/chain.go | 2 +- pkg/protocol/commitment.go | 22 +++++++++++----------- pkg/protocol/commitments.go | 2 +- pkg/protocol/protocol_warp_sync.go | 2 +- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index a2f2671bd..00054ce72 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -313,7 +313,7 @@ func (c *Chain) addCommitment(newCommitment *Commitment) (shutdown func()) { return lo.Batch( newCommitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Set(newCommitment) }), - newCommitment.IsCommitted.OnTrigger(func() { c.LatestProducedCommitment.Set(newCommitment) }), + newCommitment.IsVerified.OnTrigger(func() { c.LatestProducedCommitment.Set(newCommitment) }), newCommitment.IsFullyBooked.OnTrigger(func() { c.LatestFullyBookedSlot.Set(newCommitment.Slot()) }), ) } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 1e0898be4..e120b02f7 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -62,9 +62,9 @@ type Commitment struct { // IsCommittable contains a flag indicating if this Commitment is committable (we have received all blocks and all attestations). IsCommittable reactive.Event - // IsCommitted contains a flag indicating if we Commitment produced this Commitment ourselves by replaying all the - // blocks of the Commitment. - IsCommitted reactive.Event + // IsVerified contains a flag indicating if this Commitment is verified (we produced this Commitment ourselves by + // booking all the contained blocks and transactions). + IsVerified reactive.Event // IsAboveLatestVerifiedCommitment contains a flag indicating if this Commitment is above the latest verified // Commitment. @@ -102,7 +102,7 @@ func newCommitment(commitments *Commitments, model *model.Commitment) *Commitmen IsAttested: reactive.NewEvent(), IsFullyBooked: reactive.NewEvent(), IsCommittable: reactive.NewEvent(), - IsCommitted: reactive.NewEvent(), + IsVerified: reactive.NewEvent(), IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), ReplayDroppedBlocks: reactive.NewVariable[bool](), IsEvicted: reactive.NewEvent(), @@ -145,7 +145,7 @@ func (c *Commitment) initLogger() (shutdown func()) { c.IsAttested.LogUpdates(c, log.LevelTrace, "IsAttested"), c.IsFullyBooked.LogUpdates(c, log.LevelTrace, "IsFullyBooked"), c.IsCommittable.LogUpdates(c, log.LevelTrace, "IsCommittable"), - c.IsCommitted.LogUpdates(c, log.LevelTrace, "IsCommitted"), + c.IsVerified.LogUpdates(c, log.LevelTrace, "IsVerified"), c.ReplayDroppedBlocks.LogUpdates(c, log.LevelTrace, "ReplayDroppedBlocks"), c.IsEvicted.LogUpdates(c, log.LevelTrace, "IsEvicted"), @@ -156,12 +156,12 @@ func (c *Commitment) initLogger() (shutdown func()) { // initDerivedProperties initializes the behavior of this Commitment by setting up the relations between its properties. func (c *Commitment) initDerivedProperties() (shutdown func()) { return lo.Batch( - // mark commitments that are marked as root as committed - c.IsCommitted.InheritFrom(c.IsRoot), + // mark commitments that are marked as root as verified + c.IsVerified.InheritFrom(c.IsRoot), - // mark commitments that are marked as committed as attested and fully booked - c.IsAttested.InheritFrom(c.IsCommitted), - c.IsFullyBooked.InheritFrom(c.IsCommitted), + // mark commitments that are marked as verified as attested and fully booked + c.IsAttested.InheritFrom(c.IsVerified), + c.IsFullyBooked.InheritFrom(c.IsVerified), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { // the weight can be fixed as a one time operation (as it only relies on static information from the parent @@ -258,7 +258,7 @@ func (c *Commitment) deriveCumulativeAttestedWeight(parent *Commitment) func() { func (c *Commitment) deriveIsAboveLatestVerifiedCommitment(parent *Commitment) func() { return c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, parentAboveLatestVerifiedCommitment bool, parentIsCommitted bool, isCommitted bool) bool { return parentAboveLatestVerifiedCommitment || (parentIsCommitted && !isCommitted) - }, parent.IsAboveLatestVerifiedCommitment, parent.IsCommitted, c.IsCommitted)) + }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)) } // deriveRequestAttestations derives the RequestAttestations flag of this Commitment which is true if our Chain is diff --git a/pkg/protocol/commitments.go b/pkg/protocol/commitments.go index 4066fc01d..857b1c00d 100644 --- a/pkg/protocol/commitments.go +++ b/pkg/protocol/commitments.go @@ -155,7 +155,7 @@ func (c *Commitments) publishEngineCommitments(chain *Chain, engine *engine.Engi // mark it as produced by ourselves and force it to be on the right chain (in case our chain produced a // different commitment than the one we erroneously expected it to be - we always trust our engine most). publishedCommitment.AttestedWeight.Set(publishedCommitment.Weight.Get()) - publishedCommitment.IsCommitted.Set(true) + publishedCommitment.IsVerified.Set(true) publishedCommitment.forceChain(chain) } }) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index ae2cb7576..4c9e6d466 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -259,7 +259,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // force commit one by one and wait for the parent to be committed before we can commit the next one commitment.Parent.WithNonEmptyValue(func(parent *Commitment) (teardown func()) { - return parent.IsCommitted.WithNonEmptyValue(func(_ bool) (teardown func()) { + return parent.IsVerified.WithNonEmptyValue(func(_ bool) (teardown func()) { return commitment.IsCommittable.OnTrigger(forceCommitmentFunc) }) }) From 75240f00ed6a406db79356a893518c920680f086 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 00:32:01 +0100 Subject: [PATCH 334/356] Refactor: revert --- pkg/protocol/commitment.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index e120b02f7..49a8936a0 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -256,8 +256,8 @@ func (c *Commitment) deriveCumulativeAttestedWeight(parent *Commitment) func() { // deriveIsAboveLatestVerifiedCommitment derives the IsAboveLatestVerifiedCommitment flag of this Commitment which is // true if the parent is already above the latest verified Commitment or if the parent is verified and we are not. func (c *Commitment) deriveIsAboveLatestVerifiedCommitment(parent *Commitment) func() { - return c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, parentAboveLatestVerifiedCommitment bool, parentIsCommitted bool, isCommitted bool) bool { - return parentAboveLatestVerifiedCommitment || (parentIsCommitted && !isCommitted) + return c.IsAboveLatestVerifiedCommitment.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, parentAboveLatestVerifiedCommitment bool, parentIsVerified bool, isVerified bool) bool { + return parentAboveLatestVerifiedCommitment || (parentIsVerified && !isVerified) }, parent.IsAboveLatestVerifiedCommitment, parent.IsVerified, c.IsVerified)) } From e83a78ee6d148d5a891df279059b71d1837e255f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 00:38:18 +0100 Subject: [PATCH 335/356] Fix: fix possible nil pointer exception --- pkg/protocol/commitment.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 49a8936a0..e49ad25ea 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -289,7 +289,7 @@ func (c *Commitment) deriveReplayDroppedBlocks(chain *Chain) func() { // the parent is on the target Chain. func (c *Commitment) forceChain(targetChain *Chain) { if currentChain := c.Chain.Get(); currentChain != targetChain { - if parent := c.Parent.Get(); parent.Chain.Get() == targetChain { + if parent := c.Parent.Get(); parent != nil && parent.Chain.Get() == targetChain { parent.MainChild.Set(c) } } From 90c1fd3f7dd9fe49eb2a1b1598b8135471bd092c Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 01:25:00 +0100 Subject: [PATCH 336/356] Refactor: renamed flags --- pkg/protocol/chain.go | 20 ++++++++++---------- pkg/protocol/commitment.go | 12 ++++++------ pkg/protocol/protocol_warp_sync.go | 6 +++--- 3 files changed, 19 insertions(+), 19 deletions(-) diff --git a/pkg/protocol/chain.go b/pkg/protocol/chain.go index 00054ce72..3ec93212b 100644 --- a/pkg/protocol/chain.go +++ b/pkg/protocol/chain.go @@ -48,8 +48,8 @@ type Chain struct { // WarpSyncMode contains a flag that indicates whether this chain is in warp sync mode. WarpSyncMode reactive.Variable[bool] - // LatestFullyBookedSlot contains the latest commitment of this chain for which all blocks were booked. - LatestFullyBookedSlot reactive.Variable[iotago.SlotIndex] + // LatestSyncedSlot contains the latest commitment of this chain for which all blocks were booked. + LatestSyncedSlot reactive.Variable[iotago.SlotIndex] // OutOfSyncThreshold contains the slot at which the chain will consider itself to be out of sync and switch to warp // sync mode. It is derived from the latest network slot minus two times the max committable age. @@ -92,7 +92,7 @@ func newChain(chains *Chains) *Chain { AttestedWeight: reactive.NewVariable[uint64](), VerifiedWeight: reactive.NewVariable[uint64](), WarpSyncMode: reactive.NewVariable[bool]().Init(true), - LatestFullyBookedSlot: reactive.NewVariable[iotago.SlotIndex](), + LatestSyncedSlot: reactive.NewVariable[iotago.SlotIndex](), OutOfSyncThreshold: reactive.NewVariable[iotago.SlotIndex](), RequestAttestations: reactive.NewVariable[bool](), StartEngine: reactive.NewVariable[bool](), @@ -186,7 +186,7 @@ func (c *Chain) initLogger() (shutdown func()) { return lo.Batch( c.WarpSyncMode.LogUpdates(c, log.LevelTrace, "WarpSyncMode"), - c.LatestFullyBookedSlot.LogUpdates(c, log.LevelTrace, "LatestFullyBookedSlot"), + c.LatestSyncedSlot.LogUpdates(c, log.LevelTrace, "LatestSyncedSlot"), c.OutOfSyncThreshold.LogUpdates(c, log.LevelTrace, "OutOfSyncThreshold"), c.ForkingPoint.LogUpdates(c, log.LevelTrace, "ForkingPoint", (*Commitment).LogName), c.ClaimedWeight.LogUpdates(c, log.LevelTrace, "ClaimedWeight"), @@ -220,15 +220,15 @@ func (c *Chain) initDerivedProperties() (shutdown func()) { // deriveWarpSyncMode defines how a chain determines whether it is in warp sync mode or not. func (c *Chain) deriveWarpSyncMode() func() { - return c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestFullyBookedSlot iotago.SlotIndex, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { - // if warp sync mode is enabled, keep it enabled until we have fully booked all slots + return c.WarpSyncMode.DeriveValueFrom(reactive.NewDerivedVariable3(func(warpSyncMode bool, latestSyncedSlot iotago.SlotIndex, latestSeenSlot iotago.SlotIndex, outOfSyncThreshold iotago.SlotIndex) bool { + // if warp sync mode is enabled, keep it enabled until we have synced all slots if warpSyncMode { - return latestFullyBookedSlot < latestSeenSlot + return latestSyncedSlot < latestSeenSlot } // if warp sync mode is disabled, enable it only if we fall below the out of sync threshold - return latestFullyBookedSlot < outOfSyncThreshold - }, c.LatestFullyBookedSlot, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncMode.Get())) + return latestSyncedSlot < outOfSyncThreshold + }, c.LatestSyncedSlot, c.chains.LatestSeenSlot, c.OutOfSyncThreshold, c.WarpSyncMode.Get())) } // deriveClaimedWeight defines how a chain determines its claimed weight (by setting the cumulative weight of the @@ -314,7 +314,7 @@ func (c *Chain) addCommitment(newCommitment *Commitment) (shutdown func()) { return lo.Batch( newCommitment.IsAttested.OnTrigger(func() { c.LatestAttestedCommitment.Set(newCommitment) }), newCommitment.IsVerified.OnTrigger(func() { c.LatestProducedCommitment.Set(newCommitment) }), - newCommitment.IsFullyBooked.OnTrigger(func() { c.LatestFullyBookedSlot.Set(newCommitment.Slot()) }), + newCommitment.IsSynced.OnTrigger(func() { c.LatestSyncedSlot.Set(newCommitment.Slot()) }), ) } diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index e49ad25ea..eca4199ee 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -56,8 +56,8 @@ type Commitment struct { // IsAttested contains a flag indicating if we have received attestations for this Commitment. IsAttested reactive.Event - // IsFullyBooked contains a flag indicating if we have received all blocks for this Commitment. - IsFullyBooked reactive.Event + // IsSynced contains a flag indicating if we have downloaded all objects enclosed in this Commitment. + IsSynced reactive.Event // IsCommittable contains a flag indicating if this Commitment is committable (we have received all blocks and all attestations). IsCommittable reactive.Event @@ -100,7 +100,7 @@ func newCommitment(commitments *Commitments, model *model.Commitment) *Commitmen CumulativeAttestedWeight: reactive.NewVariable[uint64](), IsRoot: reactive.NewEvent(), IsAttested: reactive.NewEvent(), - IsFullyBooked: reactive.NewEvent(), + IsSynced: reactive.NewEvent(), IsCommittable: reactive.NewEvent(), IsVerified: reactive.NewEvent(), IsAboveLatestVerifiedCommitment: reactive.NewVariable[bool](), @@ -143,7 +143,7 @@ func (c *Commitment) initLogger() (shutdown func()) { c.CumulativeAttestedWeight.LogUpdates(c, log.LevelTrace, "CumulativeAttestedWeight"), c.IsRoot.LogUpdates(c, log.LevelTrace, "IsRoot"), c.IsAttested.LogUpdates(c, log.LevelTrace, "IsAttested"), - c.IsFullyBooked.LogUpdates(c, log.LevelTrace, "IsFullyBooked"), + c.IsSynced.LogUpdates(c, log.LevelTrace, "IsSynced"), c.IsCommittable.LogUpdates(c, log.LevelTrace, "IsCommittable"), c.IsVerified.LogUpdates(c, log.LevelTrace, "IsVerified"), c.ReplayDroppedBlocks.LogUpdates(c, log.LevelTrace, "ReplayDroppedBlocks"), @@ -161,7 +161,7 @@ func (c *Commitment) initDerivedProperties() (shutdown func()) { // mark commitments that are marked as verified as attested and fully booked c.IsAttested.InheritFrom(c.IsVerified), - c.IsFullyBooked.InheritFrom(c.IsVerified), + c.IsSynced.InheritFrom(c.IsVerified), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { // the weight can be fixed as a one time operation (as it only relies on static information from the parent @@ -274,7 +274,7 @@ func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) func (c *Commitment) deriveWarpSyncBlocks(chain *Chain, parent *Commitment) func() { return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSync bool, parentIsFullyBooked bool, isFullyBooked bool) bool { return engineInstance != nil && warpSync && parentIsFullyBooked && !isFullyBooked - }, chain.Engine, chain.WarpSyncMode, parent.IsFullyBooked, c.IsFullyBooked)) + }, chain.Engine, chain.WarpSyncMode, parent.IsSynced, c.IsSynced)) } // deriveReplayDroppedBlocks derives the ReplayDroppedBlocks flag of this Commitment which is true if our Chain has an diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 4c9e6d466..37946b6fd 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -249,7 +249,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // Once all blocks are fully booked we can mark the commitment that is minCommittableAge older as this // commitment to be committable. - commitment.IsFullyBooked.OnUpdateOnce(func(_ bool, _ bool) { + commitment.IsSynced.OnUpdateOnce(func(_ bool, _ bool) { if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - targetEngine.LatestAPI().ProtocolParameters().MinCommittableAge()); exists { w.workerPool.Submit(func() { committableCommitment.IsCommittable.Set(true) @@ -266,7 +266,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo if totalBlocks == 0 { commitment.IsCommittable.Set(true) - commitment.IsFullyBooked.Set(true) + commitment.IsSynced.Set(true) return blocksToWarpSync } @@ -291,7 +291,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } - commitment.IsFullyBooked.Set(true) + commitment.IsSynced.Set(true) }) } } From 8b5b5dc46b2b6745eb7eb03dd0ee06108cf35a4e Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 01:40:18 +0100 Subject: [PATCH 337/356] Refactor: finished rename --- pkg/protocol/commitment.go | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index eca4199ee..2113592d9 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -178,7 +178,11 @@ func (c *Commitment) initDerivedProperties() (shutdown func()) { c.Chain.WithNonEmptyValue(func(chain *Chain) func() { return lo.Batch( c.deriveRequestAttestations(chain, parent), - c.deriveWarpSyncBlocks(chain, parent), + + // only start requesting blocks once the engine is ready + chain.WithInitializedEngine(func(_ *engine.Engine) (shutdown func()) { + return c.deriveWarpSyncBlocks(chain, parent) + }), ) }), ) @@ -272,9 +276,9 @@ func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) // deriveWarpSyncBlocks derives the WarpSyncBlocks flag of this Commitment which is true if our Chain is requesting // warp sync, and we are the directly above the latest verified Commitment. func (c *Commitment) deriveWarpSyncBlocks(chain *Chain, parent *Commitment) func() { - return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable4(func(_ bool, engineInstance *engine.Engine, warpSync bool, parentIsFullyBooked bool, isFullyBooked bool) bool { - return engineInstance != nil && warpSync && parentIsFullyBooked && !isFullyBooked - }, chain.Engine, chain.WarpSyncMode, parent.IsSynced, c.IsSynced)) + return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, warpSyncMode bool, parentIsSynced bool, isSynced bool) bool { + return warpSyncMode && parentIsSynced && !isSynced + }, chain.WarpSyncMode, parent.IsSynced, c.IsSynced)) } // deriveReplayDroppedBlocks derives the ReplayDroppedBlocks flag of this Commitment which is true if our Chain has an From 524162284dda3cfd2ec65f3af2afdbc5e0649458 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 01:55:39 +0100 Subject: [PATCH 338/356] Refactor: refactored warpsync protocol --- pkg/protocol/protocol_warp_sync.go | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index 37946b6fd..c2a560d56 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -176,7 +176,7 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // 1. Mark all transactions as accepted // 2. Mark all blocks as accepted // 3. Force commitment of the slot - forceCommitmentFunc := func() { + commitmentFunc := func() { if !chain.WarpSyncMode.Get() { return } @@ -250,21 +250,23 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo // Once all blocks are fully booked we can mark the commitment that is minCommittableAge older as this // commitment to be committable. commitment.IsSynced.OnUpdateOnce(func(_ bool, _ bool) { - if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - targetEngine.LatestAPI().ProtocolParameters().MinCommittableAge()); exists { - w.workerPool.Submit(func() { + // update the flag in a worker since it can potentially cause a commit + w.workerPool.Submit(func() { + if committableCommitment, exists := chain.Commitment(commitmentID.Slot() - targetEngine.LatestAPI().ProtocolParameters().MinCommittableAge()); exists { committableCommitment.IsCommittable.Set(true) - }) - } + } + }) }) - // force commit one by one and wait for the parent to be committed before we can commit the next one + // force commit one by one and wait for the parent to be verified before we commit the next one commitment.Parent.WithNonEmptyValue(func(parent *Commitment) (teardown func()) { return parent.IsVerified.WithNonEmptyValue(func(_ bool) (teardown func()) { - return commitment.IsCommittable.OnTrigger(forceCommitmentFunc) + return commitment.IsCommittable.OnTrigger(commitmentFunc) }) }) if totalBlocks == 0 { + // mark empty slots as committable and synced commitment.IsCommittable.Set(true) commitment.IsSynced.Set(true) From c6a724238ef226830fbfe9e4eca417a7c0e22e90 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 01:59:22 +0100 Subject: [PATCH 339/356] Feat: updated comments --- pkg/protocol/commitment.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 2113592d9..8d0439066 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -56,10 +56,10 @@ type Commitment struct { // IsAttested contains a flag indicating if we have received attestations for this Commitment. IsAttested reactive.Event - // IsSynced contains a flag indicating if we have downloaded all objects enclosed in this Commitment. + // IsSynced contains a flag that indicates if a Commitment was fully downloaded and processed. IsSynced reactive.Event - // IsCommittable contains a flag indicating if this Commitment is committable (we have received all blocks and all attestations). + // IsCommittable contains a flag that indicates if a Commitment is ready to be committed by the warp sync process. IsCommittable reactive.Event // IsVerified contains a flag indicating if this Commitment is verified (we produced this Commitment ourselves by From 5fb3535b883e9b354345026310c9f436ade6d335 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 02:00:41 +0100 Subject: [PATCH 340/356] Refactor: updated comments --- pkg/protocol/commitment.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 8d0439066..ec8a8804d 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -159,7 +159,7 @@ func (c *Commitment) initDerivedProperties() (shutdown func()) { // mark commitments that are marked as root as verified c.IsVerified.InheritFrom(c.IsRoot), - // mark commitments that are marked as verified as attested and fully booked + // mark commitments that are marked as verified as attested and synced c.IsAttested.InheritFrom(c.IsVerified), c.IsSynced.InheritFrom(c.IsVerified), From 9576fd68cc80714a97b88367cdbb3e1c21b91a9a Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Mon, 4 Dec 2023 19:54:12 +0800 Subject: [PATCH 341/356] Do not mark blocks as root blocks when warp syncing as that is done automatically within the warp sync window --- pkg/protocol/protocol_warp_sync.go | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index c2a560d56..e6522ffa4 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -229,21 +229,6 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return } - - // TODO: maybe we don't need to set root blocks as we leave a window for warp sync now. - for slotCommitmentID, blockIDs := range blockIDsBySlotCommitment { - for _, blockID := range blockIDs { - block, exists := targetEngine.BlockCache.Block(blockID) - if !exists { // this should never happen as we just booked these blocks in this slot. - continue - } - - // We need to make sure that we add all blocks as root blocks because we don't know which blocks are root blocks without - // blocks from future slots. We're committing the current slot which then leads to the eviction of the blocks from the - // block cache and thus if not root blocks no block in the next slot can become solid. - targetEngine.EvictionState.AddRootBlock(block.ID(), slotCommitmentID) - } - } }) } From d8d6430f194ba0f54d114d86f41e3a6ff731515e Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Mon, 4 Dec 2023 20:16:45 +0800 Subject: [PATCH 342/356] Address review comments --- pkg/protocol/commitment.go | 4 ++-- pkg/protocol/protocol_warp_sync.go | 5 ----- 2 files changed, 2 insertions(+), 7 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index ec8a8804d..6c2bb4584 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -71,7 +71,7 @@ type Commitment struct { IsAboveLatestVerifiedCommitment reactive.Variable[bool] // ReplayDroppedBlocks contains a flag indicating if we should replay the blocks that were dropped while the - //Commitment was pending. + // Commitment was pending. ReplayDroppedBlocks reactive.Variable[bool] // IsEvicted contains a flag indicating if this Commitment was evicted from the Protocol. @@ -274,7 +274,7 @@ func (c *Commitment) deriveRequestAttestations(chain *Chain, parent *Commitment) } // deriveWarpSyncBlocks derives the WarpSyncBlocks flag of this Commitment which is true if our Chain is requesting -// warp sync, and we are the directly above the latest verified Commitment. +// warp sync, and we are the directly above the latest commitment that is synced (has downloaded everything). func (c *Commitment) deriveWarpSyncBlocks(chain *Chain, parent *Commitment) func() { return c.WarpSyncBlocks.DeriveValueFrom(reactive.NewDerivedVariable3(func(_ bool, warpSyncMode bool, parentIsSynced bool, isSynced bool) bool { return warpSyncMode && parentIsSynced && !isSynced diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index e6522ffa4..ac1326b84 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -167,11 +167,6 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo return blocksToWarpSync } - // make sure the engine is clean and requires a warp-sync before we start processing the blocks - if targetEngine.Storage.Settings().LatestCommitment().ID().Slot() > commitmentID.Slot() { - return blocksToWarpSync - } - // Once all blocks are booked we // 1. Mark all transactions as accepted // 2. Mark all blocks as accepted From 610eb3d55b2d744626b48f789b01b4e53e9df79c Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Mon, 4 Dec 2023 20:39:05 +0800 Subject: [PATCH 343/356] Delete evil spammer as they are moved to evil tools repo --- tools/evil-spammer/basic_config.json | 3 - tools/evil-spammer/evil-spammer | Bin 31873280 -> 0 bytes tools/evil-spammer/evil-spammer.log | 124 --------------------------- 3 files changed, 127 deletions(-) delete mode 100644 tools/evil-spammer/basic_config.json delete mode 100755 tools/evil-spammer/evil-spammer delete mode 100644 tools/evil-spammer/evil-spammer.log diff --git a/tools/evil-spammer/basic_config.json b/tools/evil-spammer/basic_config.json deleted file mode 100644 index f66dc61d4..000000000 --- a/tools/evil-spammer/basic_config.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "lastFaucetUnspentOutputId": "" -} \ No newline at end of file diff --git a/tools/evil-spammer/evil-spammer b/tools/evil-spammer/evil-spammer deleted file mode 100755 index 56c2f550b6530abc3301ae3945851c60f72b2b08..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31873280 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

#^xorw0Gzm8Nm9RYuzY< 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

tln+$&WXBN_76DE7@-n3Ivr$yv%vO*sah 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

EM3=wEWD<82dUt-w3G4k7D$MvTCAi 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≷#_h@fX`VQxbGuAwD z#+oM%&v@bh!$kIkyE7#DcYkb>yi92($!q#LNp3CzkPLi*;!RuIYZmE;x zxBi^s%p>+CCCTUSpGVG_CBDCBDhxsYeo)heD>JFdC&bXxpLZraV~738->MB4TwzE+ zKp*5^FZnT`jgq39c@0fH6<#9rwAa}J8bITnwfg0tv-M=gP->Ka>&(qTm3L63_u`7o zu8_a!Nx$jCgM8mrzF)V@XI%}*N5=)4dMaQ^=;^=HfeA!ZXiVbFfu$nig22uw_UnB+ zs5hi~$7a+U)TUG96Py0v=RYdQ|6X76_dig60>5=2$VT(4gqNzwr%$Jc7&IZ6F;#4- zIUoCt?=2&AH}jVHM}=dvqd4Sl&Ycw;NZGKHIOZm^-3IDVSkZA`5 z$i6=GwzNfWZ-p2HkZG*}^0M-GIZ%EB2v^7_r=yOe$ksPPKYNY82ELTV{FCTWc`AC) zk~>BI*`p3M1M>GcDCu2z<}N=TU}*WS6ZfqEFiw8}Vsk%9UL&uRM0UuPC{l?blwft% z+-iBqIb!DKR?9t{dT6c_XTG`hfi`;m^+B=fEc3NQCMgIC-CzdHU#%-AZa^B`SXh9D z$3<}yuvt0-CexASo9yfsWF(W>M=)m|FWXT*@{Za2t%^kV_7#b|{tfIj*MI4ZL}tW% z42ap;bEj0;V|skvkK}`p8d|a(?Lp&^e!m_PaO>a8ncRK-{xM{^Y2>ST(E3(;Oq|@< zmRj2y{ba0fr`Uw}eJHZ|{axHV^eS^Hn5Z7$UmljK1N+w=j$huS?`WO!5YS{Tj{$4E zL=z?n?)P4|?&V!7y$U#W{x3`xKur?T?@eh7Q-NHXOAzcQari^Mb#$S)tX5~=|EDKo+{H#UxyUbcn z4c_pZZa0qXNxoZ<(w5iX-rt_cpdjIofy_rY- zbh%zIy;3CJg|iZ9G@4{x3MZIq&Ire@&&>)gxJZqnA2%w!;OA$iTk2`cwCUq#RUI0F_kFl6~-$ix@U3`99s))Q83?*m(K+nCS6` zdshNuKtp6=EnKpm>c$_bW>yNRsZy-$_U*b4(*lrZ!VeaArW_^)W)&~a@^T21(1gRV zU;R_u2mTb!@l>vTDk?aKmPR?(H`axl^@)HogDBc#JE#4EOM^up-kepeOlpo0=$*}p zl?f2;IQ}k3nC}CYBMcc?u|`Jxkq7Izzg208-m8o_P+#6WTVQ1E zs&*d~mDAja-FMVvLQ0*5!~#$CqYK*LA;y%VkI5EU<@-jbj{b4WRu`z<=oXUOrFS?m z%Y+FK)o;3r2`LuLUekXeIh`w$S96;iWRVS$qd`_p_I)4M6Tem85(9sv{Iuk2u|I(#N?$4Qm6T~X0SiEA}vPec=dz? zc0JjD2pT}l_HLH3XWjH_=FIG#D-u@(@zpM7l5rKSork1h84CY|YGc;-;HYO1y~vqs z+`)lCnxtmozp|%i_2CtX(f_nH>H--B{rPJ#^qBk=@5FM5@th$)V|(&L3l^&lEQPF8 zVtcr|uYvcbYW5_{G_}tr%D}}I?hJDwdvc_ggcGONuz9g3mrI;b6!x(3#>Y+GFs=Hr zFcD&!16*3GB4$*bosmpG_WaB+Dc z63tCdVNpfn!Gm%C8Ui}xgy|GV#L%*B<2Dt1_@?gA)RT`ob=kmBKQ=!$^5ap`gAX

x$@B@>(?rX-sGTyEq&_1I=#_`_^Do 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

RhJ+CrD*A}pA^P+Q_36tTpPQ&aM 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%0D2~l4(H#{}if4NAzVe`*X@y!3w*mCh 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

?|M8*56-?jr5VBBkSblUX`yse~ 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 ewq(ZT0gBTkk$1i*qIQ0>^_yFki5V=HuE`KHn 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±(FK% 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

Q`0pJK1Xr`Rj;sVb%1 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�LW+ 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⁢=|Dcd`mSXr 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 z zrn*LC?7#aVGj;#{cP}(Yc00&BA79kfa5;QrM#y)kAm2;K_u$8g^EYR!+o(ISIlqw+ zXPi$Noq~N9VUKDDd+!giMW}O2San9&_WScv_J>!o@SSMJj}z_2bGk%(aAwfU0Ggzx z{=n@ziEG<|zUJ93v3}8?k=Cba&`JHF4eJ4k@9`t3H=2n?v+=YT&%W+DO%@nX5_`yr zvHp8bP~-anBtUTc?;jS5G8uaVL6ZCZblDkoIH1EUfbn6t9N$?E`vJkR9}o`vflFL0 zWQdD}47iSd@Kh7b4-g+L#yoBu0Tm~0n^^D&tv0AR9B^#m}Q6qv2>*UQk%xuiw!kQbgdH^SB1hFhF zADEkT*#?(%VQ$i8kGNQe5EttZa2<4c_Qz_jLU?xX>yq+eAJikrhtJ`3)$&;&scLZJ z@k(2vCIE{2R?cozv}Z!GA3Xdcu^$Zo9QK2IN|SP9E(%M`F(qm>`zBwP5^3JBOuQ`f zmuVO%v{X8h(2v3or9SuEs4o{vy0Rb4>H#=?o{18bKA259^cW6HOze$s24Qi&^-*}qg z(PUvH>me@iuF>H}x~!)TGYi8Fa6y*y8x&bq>uAY_=rSNcaFPw-3LR!PX0H(h^;Y^C zR6`J}hlgZgZjz-OF3G~&BullpFrtf#lR|JEWVv_EPlPOlXZQYDlK;0N4F2Ct=rELd zU?;`S+SKABOpGP?l(PA)zrkT&^P>>KE?_)i78~n-)IcQ+3lYR*=P%Ew$qtjTm>MZ& ztrXX8f9n&K#x94$MNE#m3KZ0p*;!XhT-bueg)LapCHvvgSE+SAmSX4s)G~yLeWrejh?cCO*KA;H(8pOFyLU zd}tq>d64Xm;lqr-w-EHr?LaU6YnQX27thEfv+Un#37i~%`w)KrcJLqG*yXKFSD&5{ z{>AO#uZDmZaqf z2;>TWg(PKe_P#xE+54EAz0VdG25@m<0Eg@7ec?rAKppcqe70Y@h64=kw^eu_HFwlZ z+@~MKC46Lr#hZDnpm_$t-gBOQBH(r7*`htr&o`NGPZ`gn+N0@bKHq6Pk+k>)=JOom znUxkl&3v9>Ji)a1(dP3=;~AP3KhS(W#&~+9#UC7N-ajy&g!U->_nObUjAwgV{3i4H zDdTxGE&e|9`A*}Bq{S~VpXV6QthD%P=JOQe38ux5HlIft&(O5^f#&lu#?vD${@@r> zf8$ALkFLM@yvumDr^RnFpPw?GN7Lf(GoSA?o=95!0`qx}@ytq#pJqN!F`i&r{Alxe zr11<*iyvq{A7eZ{(&7(}HuX22g!btAo6oz9XM0-wCiD3z<9ReK{yy{hPUDHB#V;_Q z=NQkdwD@V}^AzI=rp1popGO+c(6so0=JPSe(<3eZ;JK#$#*@$*i{E5E zKV>|Rrp4c9KHq6Pk+k>)=JOomnUxkl&3v9>Ji)a1(dP3=;~AP3KhS(W#&~+9#UCs( z^*5e`_UQVX&%2Cgds_S^^Z6;`c{DBlKJ)obFi?|8uX>JaSnnQ)*8fB_if`QXxz@ar)?*TDYGyfNo@3v z)l7s@iY{-R)z{4HSOJxa#dXpcjpl8G2?Cgv#_eg#x?zyoTX_>kKwKdw<6sRS@uhWE z?@Hd=9g=s{>gIR~yTUxjZQrr26;{F~ z+;q-oVqU^1NZfD-H*Qr$eJ0@cRlF0P`_9&fv+S3bcEj+``Nh(`?xj~z=Rm!19eT3X z4J^x1FW#~qz1-_wXB7a*!vLcAYxGE|pL^-Y%m5%bhuoy@R^RxK4 zv%QjtOgbbY?dMWZ zx#h{XV0H%lL45$Z$947lL3}IwZE{%vn9Q!L%(73>m(Q)@>k#>s^)T}6xEeIv!aT9w zx8w+5w9)y1*(19TXp{GIHZ*8P7wI;+97e75e%f3)><~t0r-tVBHf$dgYu$}dTtgQi> zI#CfUIMW&@aG7uJeYa%UN9%kQ$akX32UJ~b9cdY$odqkowbA>)ky#DPco(*X_p<_I zW_-1gMVdZh6%ytPwIKGhkCT45rxP$Ar}i(n5DCx($dK3wF#RQLoZEEzGNk`6l^z5< zk_5~>5{VxB2?%@*6UBPJhjIZAaju@IVXq}5H~=CWc~khDsDW@Nh-BY`0B3J4;@;AX zF)Mlda(0=SzNu%9DA^@F8bf*%!jjJjVT5hML0EVi;e9$RoQ3cK9j>8^Fd3bER?PtE z$^Zr!^`sO75QQ*v=$JAFybOQ~3gqLJkb<=bkGj#l5hj1sMeVz3%{M;v8Iw508E0)8 zgC}j@{M`p=13ZyJ(TxFsLuBmIuS2oouY=$02{s)#zqq!gG??AU*`G)v%>ERB-1z_y z;=2($?Oz=8S5Q6IwP6+ThJ8^g7vj?#3jq}mPlVO`oD(Cj*yEqTxUhILIitff6ZR*C zPKn8C=OuQ1mq|x(ub<$GUeU{n&hfa{&Cd%($6<(@QZO@8PjW<74in<6VKIUF4crN}K@9gaa%4fm{z@7j|I@ia!i@=d7isU)+nCeum+*pvAaj}J@vkJuOEHXHZgL96|HZ; z_h95=+!J3zZ%KVU`Jp5de-2K4yb-^;;qA-L*3F&xdHU-rihk~OSD&YAppFm#V|@5o=yS<$UZj@~ z-6020)wu9dO|KGk3r`7pNxu>Z)4USI4JwJu@OcsPSxa#iY2RpE<&#Ufr&feA`JNg%O&{AN#Eh7*jjCjwX;_I+p-`L3uFcM#y5wsvvp8yG6y-9nD<7Y{{yf3fsrTysfHI+pvl0CqIwK7#QT>OSc1p$35T5c%j8 zU<&lrslL87dP;zYldSyrsEhk8_Y+^$eCHj|R)TueGTRLArnMvnmdce_#sl)n$?u`%DtmIf-sJ9jXMzbEG{~yzswyf6St05wN$-gUTHnJoy(;6JouO_n(1B zzQ)eIVF@^>(icdo2&#W1%8F*{Zf&Or?FUDAc^BrxK zdCt#PJg12_Nt7mM}fj`w8p0(aYOsD zi}-PV*PMKR^+@QSg6rbXR)c8N+Q^w!Y#|k{TRK0VaPkjXb1ueP=n+uX-0L7n&U*Ip znbMsBU=7D-c5N#Zt6{5hObCQx79J%-rwYa5Y)U@Zy{^F*`HLc$9WJe2cG{TRp!=Tic2!&o+H=o#5GF<(hVs0p04=x(mV@35=bA)z1ntw^`p zv8#q_tp^%=Ykzx>rBH+7jEU0(tzeIHp)I|dQ5+R{WoU=#i$T{d|LJ+}FT& zx^WxPcwBkyi}7)mN z-vAq>fR*@4__k}pXWuOo;8Pp+X(uS%NkJ( zS_EcwflzDL&>$j(*Z#d`lb2ZFInu~$!N@i{`-^u|c{ZTlw0AVZ0fcrC(__;^?b8a6 zYcNS3x7VKH(!1P^8r4L}wAv5PAmQ_z+0 zusR|_Q9KYAc1?^1LAm>q0QHFBEAm#`??BHh0}BMnwDnipm{$i2c~@$-NUn zvd&Z${BIrP)6as-8hBXTEhr9`5Fx~|mh?bhdgXO2n+zh{7z}XurY0>Atd~6j!HQ;O zDKb{WvAjtk@7HF=d*{x0qb2Kq)YsJEl6;OCEi^RjIkHZqF z=4o~MxQR@z>wL7uumm}Sf)Y4hGc4Z`=2#~^>@h``rDrI*&^!gY%tw%j`BiX%4h9eu zx^P?}T>{b!GRp9kS$qXuo_fte7seU7$o`Pgk1N_JLl{^e35b~#g(3}YSXM{cfT$#c z+q0yGHA4E&=z5mKb?{#j)D`Zd9${o<*_%BqN75tUWk6CR0M;>dCehLRYLLfv!!%EI zJHUc|Pbdh48F&r>wy?BGbR_yLwAFd#GvjSog)*P7@S;DXPtW(;*G$MpW(@@SmkTfj zhw$!4SSVYG+KH#ycsS-Wt7Jh^reK&^n6(b!IM`$bT$asvC({uS)4f3#`2-%qWICBa zq!H%P@bmr~^< zO7aoS0J&Qyx~`JF*f9Php#=q6irqxKf!$j073|jihqq;I@`+ywO~Y<>^Y2>QMr^kt zTk(E0moRrg-Vseo%oT#DgO64Mf`gAJNZ8t?L`6&><@8y^P?92mu|=)olDzfEAjsOr zbHI39LXxQ*saGiFn{QGe){FnV|Ar~WAH#sfL|M#%2<9}2JjM?bI?LDuH3t-b+fH=< zvW)^SRXd7dd*q2)0w*jZe9@ZJAKc5BU+WO1)EvrfAJWMFGYHG2GMYgE=%~o{&H=o7#tg4Z9-9oVmUPWq*HO0>c@OfecbGc?S3fT`7 z{j+VvUNnfzb%QjkSdo2gJ3%#?<72%Wg4A2E$;-VC%1i$nqS%TV>-7phh0)Ltu0TT< z04}vyE7{6_dz8!6804sJ323(UK`XLfg+%ePeffqO-#Mt!fxXrI{R~YThy_U7DICFF z(5q^m;U>wZO7VOiG*1`h+VB^AnQh^ z9nokP??zH(Q+v~D`T*j8p)AlG=c*k$!v_tL{Nt{>6w<-I3roz<9z)Tb<0eMNyAtP7 zUqSVxeFF6hyB%S*HK8WmusrTtbgz3|C2ZT@1RB4{3Aoq&6I0z@BO_VG?scR5Sj)HO z(yZ+1X5ls4+E3l%-0Q|1Y1Mvj%~=Qj*=PYf`(^Imh%~Ff1_Yq5rR&=#ouFGMrEe#$ z@5l<&Pvc6s#n8dDaASWFg@f+Wy*Fa9wfC2U&&VFJYs5cWi>dHQkEKe&6tUbtGZLcb zuP}%t?plcb>C&L@Ko#RkluC_l4LSo&By70=2mdt!V$5Ev=~L|G2Xk$+BH!8{P9Xk9 z%f-BsQwGZp&DPs3w;@+jSfWMy0(*)Qey6w-s0cSp7+Vo7f- z_w{i<%d&sE{S#hNj~xs0J6nDiCPC6fhGAqodUjju2r8}|sA%7TrApaV$a%9FXg~}D z3x$W<8bc7xMf=>be&`NtuQDRs$n4Q>e8otOlH_3xNZ42#VK7~ADa&x{rDS~wGT}$P z&KF~cirp_THgb5d7k~0@TkXDV(yf%}v!K+nASptIE{-(P%w2W?H0>Khv5T@pMNMVufcMz)0_+aZ2oO`RwiN{yOM%O$!~8Q9k|F{v5Q>;WbNmwj(<{B5gZXh$Kn zo6Bi_4P@EVtj_JP81%*dsz!Wmf<9r+fU z^9ThS^;B$8xm*n5`|aHqrl3FKguY&&>%3U@uVKESUqYlzx4wDDYWnVcn(eEt{4cpB zT%bnB9LxFJr_31}b*vSeCx#&Qs$|7G-aqqi*%SD4(NLv+dOE@CQHsfQLQq4%%YIDM z7y~0ros_m|I*Wvk_A+BYp8)BzRR?4y@sr%+}Frx&`l5FL4MzyX5Ct zcAw?2;b5)nSe6m%{lskUmEuzIa{?sUwj$GWUwZdp&i54z;UWt=Bqom5eb&jk2afB& zx`~IhSmF4%M~#nPqFg;bHV_2}Z0e{|F11_naHN9=y;6S54A=c~!e$`U_{uZN%FL;!+kS2B!&pmY=L3~UF=uY>#B z?0F@IxwLW*z7^$O7Fm>Xp6ur`STEk(01#KjrJqA)nQfN#j$;+E%9S#PeqNn;tD|0F zB(TWeF6?*JGiL%>sKC8%@88aT_k8V*h}vO4Gt+6m`{ejE`(55y3Z=ud-}TfLa5)sC z&g^#&`6`m~r2(z0S-=G^Ss;&YyZIk>%KT^ZKin2Xa8N1)Z1j#Awqta$G&FXgw(UF& zxO&2dKD7mqj}#R02Ow&jYsK%dfvxqPU%|UdbOV^#UIo2 zK6ab52_Z6&{Zt~gbt*aU+karcnfEEYGuK8GVcXYF@q{aJ?xC3zOv?VfPxbHjfsAh4 zdg9e?oED3ie1}C$+$*WTr4%vfwDzAMHaJN46%iKs){1-sAw+O$#0O)yB1A2v?ZY-pIhVw-T^cogRMQ;;m1O%mjU&Ns$oJZXWBX5~j_ZCvU!ybbW z)U!e;4o)OoDV>Tsq?h_bf&Jw%nqsMb!GgU6Q;>M$5L6`nS`__m1yY)RD+N8pc=krv zRcMo3`a>k(D7c!j(WgXeMemffv9SXmScQd+?>W}%i)#wL4Vz&4Y5QUvXRrY2#-!N|_!)Zcz`sGjc|7*=#r zAx3wZ@oVKS*86uw6n1JMR?YiwT43h=%gwUvBX!BCze<@@=03Z}G5a?KB@F=PgY*Hl z{xqFWttV{S5$|CcleXM9P29GJ_=vK*(m!qFd zF0i6EK^@*{&peCfPZo%R#?UvLzK|4@w0$-Jarv?a9ww3{9S#0tKsloCS_z8JGl%P9Za3y>SE6U+(r$7ESxM?)oT- zU*;bRjy5P|+`pmbPrD3j)_w*-2n7dAA2q0=rT1EKF(lH=rH{Qgx@pLP8Dd=TGqPvK zThA0>%S-|A+3EOb>=eb=5`pt2HMBgzP_cz|2vGO|me>nI^iAaowZk~EkH(1$&n42- z+@en@JeJ6i5uF#HL0s~TI-a7~Zx!vIgZ)*I$E{}*3rGZ+AF(W$ORyCtcGmhj%&&Ld zqRdSNu-?+JNWq=N28d9iqYZ#fzg?kN&R)282b)@y$)q`iV;pOW4uRE=yku3be#R75 z1rDsvAwnorigRL>53F$iibe|<(5{?B3pp^n91dCo1g#`(L6ib8L~=vX{9cLyTnSGG z0mbz*Z&LsAn>xH5)`qcUU054Wg(JAVDPbxpU zMV+q+e(BpROgscE9zqpE3s7P95c)Gyu|xrZ>?i1O6G0*jeK%`Mo$q`&Fwnf{t{uf0 zCD)F&ZIE<|<9Jg6K4jSps7! z6%9;YC~FjD(^b$Z0dNw?ip<)oB>6ZX8tVQNC_AWo45@pJq3%IM8tNW}5*^gt3Kq7C z4!UoDjWkizjj;Nfx-sP!>i!CTp(P6w4*`pZP_b`5n+?tEq%KpDx&i{!{7#1nhScqe zJfQCJaJq$xwixP?4oT{whhZ+X-%!{0#PwqTwFfR_w?$GR@{3~dG(-lS5(%NNXo)M- z)_oB!hoJ8SFVD|8=^Fr2R5${LzB_^RA?f=jA`N{%QGUa{N&50YkI=Woca0)$iEkD> zBF=ft?l~XJ5D(#rhrkqBL%wTBQzoITpG5-xSqE-n;9~?p&9C7c5f^e^Ak5ksIsg2J z>#@ITe&?k8UP#%@g)J<0EZ$5JU=|}rxr`KfC2bpz8b8?ZdWE3&f8l9$~b3+V37<`3pymW8XY$WxXq;aX$V$sK= z69O{!#AQsabV0+c-CPJ_!xTZ|vREn#=)thU4fq9sGz_VrfcrKo>%;3Zz7KpLJ4@wF z!a!1&UEAF>*nspJJ1Vd1KTqwCul>x!ssZ12(!M~EfM8h{BvAVaqY+h?DQH-(T_Mh8 z#d2T^3tSGAJcf4;Xw;|)>QFI_@c?R;I9{O0%s1YtrI~5 zp}dLp8$iJkwu;`IgHt7#fgpA31xmc2z#7R6D-vCFC|SH2wvhWociSa5QZ2%Wk9}kB z5VA@wLZ9LZLJVjqm{gL&P)W99^%BxP=T@ufeX1p)NF(-#jR0|Rzr@d0p*r`g!hjw+ z6XikdtkWLE6;o&5gu_TcsoGJWfTKQYAWytVq9*n4QZ}g^Y7w>bLWPSHXv$E{G`uE!E_Ez3**d;|djMZ90A_Y}> z=&)eBIVqlclZna%A8rN#QWaDdkqC!S3{MH9xK32gL}fzf4frIUZN{^QiIA;aTo%j9 z+y5QL+&k8L_9?jJ3Z!K|mfNUPOZgCh)l6MsU!zi=r&AL+Q#b3>f(TNVGj*ALj!Ny( zsRaY1Zjscv+kYa>_X?d@@5X1)d{=_XY(8R9yn*71&DZ>7TJx!H+m7EX)EzPwvSy6w z*plLM7sv$)?;%rKWhN1t!ho4v$oBQ1M7O6{W_nx(gkL6lKKSDpTKsU)ok}3F)ck$g zJ~RJX?i(c;WC~WNuGz(yBkW-zhWneA4hJu?OeQ6rKNEh^sliA4beI{)S6Oi5Xf1A> z0xe6HZg(%^Y84n@O!g}?<3-Kx+7}RRUyp49N7aMsu&Kvim{)DN29K1)JN8Pu$3)?T zZa-C7F+^)QV!QyKo2TJ=@&y>z^j zqY)plzq(jz{aLxH^&XvH^YF>jrPf2}#CrF=96Wp;u11S13XuJ1pDqKh#$VPpTZ8KuR3(1m?}y- z_we-nx$pk$Mnvtf|2zq`MtuiKh{jG9 z7g0%QSst7k%R{I3Le1!q81V&&hcva&zca=M5D#H$VbJUtuk<_iFr%M>w_sxw4pXg# z@{?O~{#eGRY^`3hZ2Yq#F3Ucv-4miyCM*n*KA+tW)hOW0cs)ucAlM)0PCxj|+6LtN87Vbz{x*hf3-iql1wx5F{sDIF?u$U;Qk9pP+VL$#`&{bf~%DDqd zE6fm^T}EjgZ%S{y-;|ZfP2Yd~d~Q;IZPWs$SzPSk7CDhZZ-~Z>T;H~{_JGU10?3&m zSf!_ZeY?Bv3P8nxXRk@5hN=>PBd6q$Q)I9)LscmY;!t&^l(^i-q#UZel0~ORE)I#D zwKD^u$dCqctS~iJ*wQ$JTmVVXv?Vh5rjO9c)R{(Th@>4qredo03y~ zx+snL2wUKfbJ<^CAj!YDS|ukCCa;%dxyMZt>7Pd@*87FOL0XTHF1=PX%#;Fp^rIrS z84qxY$_mPzf8ySZ!3G!23jP<0 zGPy$eMVSxs#(%e-lr1>SCSnmP%Lcf_poS@aQ4N@FF zY?XsF5TF5S-)PpgNNt*xt!-*XJr&LR2AmY;ae$O&Z7`lS@SuIK8z+^x_Q$FcOvm1` z60WrGBo%*=j%RkpuU7E^d$@`}MaL5=<2TTa=GI&$m0U~*XO%8-C~+()H4(Y!VMitP zGEO5>q>XjszIF~jiM|=H=TQ55yU@=Llo-na0qm&f|2VpnWtm zxzy`a&~g?YN*vXeWw-M(*lt{~a_Is3I0r5eupaOgvn1f??Ar!lK_S z(zL-w_Hb$8rJi|Lqj%vV1NklFN9=IEbI?o}_42=nRU_FS2+;qI#BZl z>h5)o3VZoY+i8HI>XIG2l#4rEpsNOY2%7z;uT>u{ehjNovj6XYr#`AZUO6h|eIKfi z+V&+Bd>GoI(J6r zj=gMEmc4SuAyiErrQ7U z3>c=2_PDT=5X3%goS`dvaqd*ipVHUNhSy^mB6zi0hy{KVa0AOtkcnB9Zu==LRLcR; zk-^AZ%s09jT(Cb^)_$5f55P(PfGZdaxADY4Ffyo5?bt#A(8s<(02~#JR`$UW)4BK` z>Vp{pDu}yWcqs`ExSdX`uR<4uKq)*ci)PQWFa3K5Itzc_2jg^#+#P(1{!gXo5A9gC z&!|NZHi4OC3i%>19#^AWbOAJn^h^H*P{qz+dz7&~LeK&VgS2H54%$QI*YMC-XamU& zKAjm47JciEosQzw^(82y%+W+VKZYGTza`}gaN|{*Y*&IMIy4ju;8>9fMz&8J+7xWt z9{lF*VAHqfqw%ojoij0CiVwrs?6P7vwpm3x=RzZ@1UsO1rFvBwHr#JuVZMAB8nv>F zjfw=a6whLi3WjZ#3#9PF1s+h^Zw);d1p5!&5gPhRu<89AtLfnRq5K_IHtgA3(It8U zoP|9eC-PAlz(I8hgxK2Gp`s)dXb0j1BV3_@go6i+p+oe!bwc4wYh& zD5KI>fb#*PQ?jZ9bK`@^ub`GKs1@5I*8jqnR%M0U&+iCseF@pyCb~;@kYgjS^O)=& z%salu(vYlB;A69W8SX#_(gCM_CCEbl?rrUWU+ZltOjQ5+1*Dk9!O$2~WB;^@-m5xV zQ(O`IBv}We-Qo~L*Yw856$iboXa#r)^d?6}2VpK6a=Un(3}ml*#(;E?pQJznBR|+B zylnIW_7K0F)3I79vXguLiF{IC=xg=|0RRUd04*G`{aNsOR=o8hq6rx_m8FU80(i>G zBoa2u`WLHF+XUX4iiB-1vcI^{ooEt_V8EANSjffEwa9^X@OEei`-gw)&r-JSZ8C@Auuo` zYhy*eB$|&aG`Sp#@-h@`C16X60 z_22tiTJ$LyJ8o;5v__IRc4dDR`kbfngY=QzSv*M@>wo#YRhX$3?XEhmE(CeO7}?lMnCeSpd+Ld*}BDB257uq`3EV{ z9E_AsXaDw7Cj+#uPY0U}ZO8}CXoo}n#jWU3*l)Sor76-|&u?j{Gz2!_N6<+Iva<31=w3tNCFk{PTWwM*f-bL|6Q??PF)t%8>bg z#6P9K%fLTBNh{?48vk(rufCsz7BJ~(i$80Gm%RqvY#|gjJP6{rJ*KiJr~AAIi+5Vb za=(2Jw;!*a_g-6TPb-FfFSf;tf~YP+|Aw{SUAL6rsF?E_3$3YRHktbZa!7Re((j11&XivRi+q8Yf^ypp)JY;jZuh z3%4$|U&|(nSgz;&e;CDskxN~PYf*h?tsFM$HFih>{2=iE0^cY5fXL4`R#h`ZFG~l^b_~&B8T$3L2&!4JF zW5h?LANhop#+DcuITN!`JNwNnRd35#?@JH^R#awIa$`mEG8QspHR(?aYzXd3K|OcU zg~F1T(803mZD7ekjESw4lqs&f<_>VBOtLXZE#6FKQVLh&2(|ub+Oo#5Jm{uoTk~aa`>)sV1 zU3nRDFZ5NIK^|WA=V}oArv2E!f1=bCO<~p{~Q zlypUyNVDhYQ~PBYC}V)tRrVq&3`F(Y zN3tUkP9)n;_Ug>=r}zG&P+6R9M4@1;1~|!`_nx=( zP+DN;{#Dh!ATbbJ-m%)rFNZb0n)yMd^8?fVr_T>ecvIIxogWzeo@vL7=La0^_o?Y0 zi$5b-xDS*o1?(zpM*B&gQ#!2Ht32Ah^cR2z`JRZvr6fUH!hYLHTVid6#n}@MuNZSa zmn)@tQikRi9KuNPOQDlrFr>-=bfs^U+yEf`XThp>aqX77?p{_EIIya`xDuO1p;AibIL5$C!|bAF;h|dnNAwz@~|!i^EmD;lsYUi%YQx z%~e6@-R*dL)Eg}T9&p*G!4pqu{Pw`Vq{+?CwA?fdPX5s6|N5u+Lxxo@{0J$mVQgC% zT|pCc*a9j=7=CVnfI{7pm*P#A!Sm-?(b60&hM!b`At%;*&;?vd;)DfKCjddYV~V<) zv%tVG zKRspe1n8-NM+Su&z=L1L1QD{HKn2H#2Kini(FjTx@zh8P1RGUs104jLRZtQk*rI}s zbP(L9f|3Y94(x7EO^c58sGuZ5td})Lp9Mz^{_43$;0K$%;6h@W^0Obw#{3pjYd;TZ79FIB z1>}7?Sist&WzgvdU%pATOrdF+;te@SX6N50?X$P42ZRyHr3TvMn@bP8ZX}WY%ePG5 zS#Aig1{U4UiPyg@H|Lu+K=nuWre&`-`{}N9z9D@G&uO;b!?3@1|(EnuFk@f!` z{V(6pj{a&IW9P5zg8yGl(*KulbVmR3r2HAwEh&E}DmhM3M%wGXO`Yw90axu6vtoBN zq91Zd#th`12J!QrirAAa;;+QyJa&_prrAX@70_?&X)4)TovcMCqj1&9s_k=Bnz&9wAxcn`xH?U_ z-B+cVt9w8W1zA+bD7Yyinh4p!Xd>1w%}vz5H?>pfjAEx< zvHumRY4K-y(47i4QFwET8OuH40bD&dfBXk+aZJVvA|4YZw+o6185vymo}C}IVMWB% z`cymM2nzhO4gvp#2EaeQBYb6^CT!flZGb=15x9YGY50XQ{VuS#4i+{Ej8?j30d+!* zRJp%@BjcWc>U!A|fb|NgP7hP!Zw-7if5TP{tiODB+ zW9LTgSnhQJ%=z=A(YQwgEd;uLZ}&(RC%5LsdKaENB-@JSV8`Z_Sn#gpIWlfYaLfMM z1B3 zHP0iXaicJMpTi#*6LN2lG__X}MVNZz?AK_aQ$HpXvV7 z|MJf0*H&uicXAT{O~)qbSCK3@)qfoJn;sA_QW0anQ8$Iq2#?wLLSKOE6ppz`4dfA; zD>*-T4*Q>E{Eobc-hTwJ$3aI`~&vlGOUbYztkzR5<%PV zB1XE`9aBHmH-sNyix!hRR1&UiD5>~ZKuz$0Q^+^OUVyV{Sk&N&hlk|UE_T;M%`J*p z5`k#t*zd=^5ikq(lmZhsLL+jRhZ}$y7B6_0tTB5?Q^`srtpa)Ws2#e|2n^O8d=vSU z*wk*qktQA0{YTAe@)t@eUrOP?@=m>0EbzX=`KT5KXX+XDs!QH$tH08BKGz7uhG|7H zN3W#%l>3+?q0(xqks2&=J>MldziwA$chKYd)@x*pDR-|^reAEzX#NMs8eD<||BO*G z*5KG7?e5Xs6{m}3{VqDO-V^=>%eoJkaIvR6WmZ3WzAW|-eOzm$igPdRilybWxtH?BIzcaW4hO;KL|Jnne1b-}8VEmqra@R8;*e3t-;Zxg(T{k(XptlbzlB5MX&_DcDivAysG}Te`@25)cuS)(rfs)m!qBQ#7 zUhOEEW4wby@7$&bdMAfwB^Dfp{$|b(VfGfQ;slRZ7J8A3_#6^oOsu8mYJ3*+pdho}=Yw zK*<`tfdu^S1wps-NHu#g`=Js7T*HzJ(y>iO-3J2`j@rpsAUhcsB4w->u7#oKitOXM zxED9WE?h@-xi-T_Bzvks&q+P#ABisZw?@Yg>U4uI>*rqf9@tCQ5%pllKxNRG`wyN9 zDq)KSE;0aNizd6O`m(Y>S`3yr`#)lD>nUdYk#UJ5c9CIO2MO3j7W)>q`0QRZ*^1r( zKwr(hT5ZB9;?~Kg4|77%UMFCK%n7bw(Z0E(sd47XMjhT)Gxc~h?>uZ=!o3f;QLUMM zwCX-n816nRnw+PuXT`26Y(>L{H2Wd$@!(Ad`|W$+jklMVIa@l&%f!A6qH+T*qKDdi z0Y(x2n3bfRzLo((%QK>JlZ+^1Su_}fo1Q>5(8C;E@^jx2ztpPDQ6QOPb5t{_hwU59 z3;$@v#^-`9xMvKoT=qpTYvi#%Zb9ekH-g`_8b6c`c}Moe$!}l<7|3a3@v8hBo4~P12k8ls{5e9Z%gWaQ>O;0lC?@rX^qe;O< z7%HOkEVSc@?ecy=O7(C^ix~z;ir-tGc6Lndr$p;)|GLz_I9Wbg0RxrVKQ#GAdjAJl z3?zZR&;4~#Xfi<;T1LuutoX4CuWoT18j<^8<|^Fu*?|5)9x#WLqPU za2c{rF-5lSa1^Ba?;leAHz50WF}^KryAjuR$QC%PUx=WAB^?!#O>eQYPP}tE_y0^g ziyLFb#;!NwfjpoQ*Ezr)=;`0umvQfLEZ6@k7$kZ&8AM{)mehGB(VTKOrAbP>sr9KBH6;@xGI4TO`@;^a{muDH>4nMm?*VM$6mHPvlyIx0mWHWc z7P%m@Q>{NoyV?%4v8f|3)SD)fyCFJhe>Kl+JmOGEgnuti@h>_Y4*|q-PkL=O*B|YH zIIsuhst2)FJt>xZ~HV$v<3tPhw~d;XrFf$qHfjLin6D5fzmO-%(y}9V0P6x06c94Zuh64g}!V* zK7!0FFrbWb8!MQ2t3=CoRSrXe)=^gMV(c^Ea2?AXi2U}vjQMyr01OUfkSkR561Ig0 z-IwgKioU5lmnKAT5*Gr|RlFF&px+%3o&78O6uqYzeNk|cQ4mSFb>1JsyRPUmd9`Ct z*o-cNw_QuIgdL3FW+AoV#)?$C-0OPOL;n8zCEcm8gQvB>eTF1Ff|LfiFD_6Iy^be4 z+<&ojtuiAmd@q=8)%pFWvXpTs<^xM~)&HX7`*kXSg?|^M_}3wS6BBg*n@avcLqS@Y zot!ED*>o${uPX~kO8gXyrx5(1-+!F;(ciKEv{8-!kkm$E8<(&le#|~-`=~#5=&gy% zGD#lQA2wWc7~}upjjuOsh4>7OaE`BoUrY*3j<09PT6O#Jb^j&l<7@DFU4!KL_A`_8 zUAnyz+6C0$J-F=+s;BDm$>Gg{KB`By_H_B`xejz`eURCR z0Wliv7qRe&2^A!7P#Q34s;p0z^njw@X}bMfIPKiN{W$*17GSSK8F29PXamflC_R>v z<?KRYyg`{fZ{{OK!u6qrY_` zJ#c?N&%t$)V#9#Wiz*}ehq4lF~hhibcA9n(XrXj}T68&_G^VDXZSUadT zco$w^#WYOAJ6S{@D$RJ`L|=!Yn@bz@2(wDT$YJ(!{&b)qAeL8l4`Mc%frDEI)cis5af zUM2ORZrQ1KjJ%7AOJJ_-Rd7M1skqV3xd3NoVF(+yy*}$A_qv>JO24c9E-<&Sq&~+J zijB)Iu6^H)xL$pNwFd%oo@hPBl#*I;!~A_Ci?%;t55p5j68JL$ar=^WAGReXqz%^6 ze@1BfKq14e;5hie2OtmVHvKD)Xgo9iOJxq&fyOfj8d6uZk8@GAOq5!b+oqXCxHp#jF>BbC~> zhd_eG`cL{94h^TjR@JNB%TnG&=kjH#g0z>Vp4wWED?!!EQh~XnGrcSon6s|6KYIa- z#O8{N%2A@8E$mYbFqJ!4Olw?(K-_Lxi{HaKpJ(Komt6_G%4Z6pQnOFt{!1wDC=BKU z`+7iZ{Zkr&6n&af^eLQK;(k-6tI~7P*SD1Tun#Ymd&kD%*>c5A~jDrE%b*8_izjfoOSi35At(@sf{I4+H)JJf%k;V;~@ zKGQpK=|@!qX`JL`N9VxPO|*tQp!?pj1)bSgejBHCx&^`Rnr7@S(q7R9WH{(r3} z*=g;D%nj2gkV*FKONH#;BHJJnaqIOa+;E%Is%wC-888W_ZI!Stm zzq~{5zy*CS89va~0TSOzwo#cSZ3HoF$>a_MEWhfd%)QB*)|+N*cJ`*SL-nR}9lhz> z8Nd+50|%7n#9^d*Ka){{iazzLyWIP`9bN7X1mgB<_i>kNdV0I)Nl3*}8Eltq>oob4 ziGK#-MI6mP;Whs$|19m;KUFz4Bee9->!1Rx9kWx0~se zH=OrgTatPhK6}DMCLPOOf3N9d_At~zPONA~@3Q`*$E522#D7-*c|X;CNA^!(oiMe1 zV$q(|_K7jsMZl@!4<)Vsx5fGJ|91hR^ z>t41!)jk$k5t(yXCB3gjGW8&JI{9s ze{?*5y9qOa2lDm&F4Otj8K+^Yrp=Gl?M%2SUvBIQ=(+Kgr>4_!_U{cHAC?~6Dg9&x7#h;uZ~y1? zJNP?Q;GyV;v8+@2o!oi+;n45@-~IF1n^ph3^V|QK{(0MD|J(g@RD1qfwGsT4%^ii1 z4qo^A9y24*!Dwq)eo7iYLH{zvwXW4eLYgD|Rj%Qe$rzP-t!*auzvEUs_j=Dv$iVZc z-Jh3yj_Sm>QcM?M2bE4M+e$^Vl^JB1+th2oBIvi;Hd|oVKWbQR@vCzA@S!HRz_hFQ z!{M)aq4x9}avrSlO@lh^pYHWR-^_@GgLkCsKZc~y)!w|?^wVFZ(X)Mk`*-yIl8-?K zL1gh~+>HQQKPS6M#IwzOSzT)4M^ z*$@b^bfS;FIjiAl>1;pvh;HS?fkWtKq*WK@vsZP?6$odl{h#NFf0F!mlV5$mgF5lw zjVJzLaz%#-`S9E-$y4I%4v(CdJl4HF0K$~`VAUz{;hJ_ms1IaKstW#@MH767w*2E7eR;GsPut@}XRv#&a>}2s*3UPbf+p>R0MYTTPRB>+ zYlYY;Ra77HVNSqJYTPEp{S9H5Q}9Y8S+WEv%G~Rq4;A8xf+|enL%t%lK86oHs)q8z zx$yR^`T+@GSw&d9!o4z}0dy{`ZD8H9C;oQ>J8{{#XxpNrqobBY$JAo2>I+09N|3vt zss)*^MBZUlZkH`}A^46) zF{2dzD6ALl$<+1W_f(w_D69nTc~TGTkHSZ9RZl@LX;pU6oATMc?C)p<%_9L|R0fQu z1EU$lsGJy85TojndUeP>xe0J)yrgKVZ-#q`oP35fV8>_4VOZ;B>c>X}kQF95`55%F zSCnFA5qT-9uC~H?WPB>H?{pz6SaY0oIX}->apF%)p4Mcaz7ALU4QB~Z=>18BzGxT} zdUMvhmYaLD5fMI9EXX0nreaXdJXCW4U=I@W6sxIJToS&Jj1z!;Vf1g+Tp-WA4yjR# zL1MFl9SErb6nBE4T?$LcDv8HCNFqhw<5Kf~a%-41!W;pO3_3y7QlXEXwPp^^4@Pf7 zrN#cTkJ~445mr$@%x?i6b*SW>JFQ1W2ii7a+Oho}Nt#$JSl5Th@-!G-?H*taz-hRuhuc?p%yu1CT*4mry2+S5hEes&5M*Jr z9kGbu;^auUuy*VVt2EH5z5)Q<*~pF$e=vegOkp%R*JUGNyud!0E^xzO7e+zB0+dt= znWc@mF3<#2K%cW;eLzbOlG{UM@)8?5P&L(wG}n5_IVWIs2Ldb{;9k;W;(Sf3snz=e zj6ZEw{`al(xN0X;icr)lxFp(ZXDAxBg6=2Yj=U1WLxZx69o+q4C^o$%_|0DsvESPL z1@9``-5RX@S773R&+)oEoLv+1cL&>cOw8XAioA~u6Z2a``EQ1@-wWY;WPh+J;SFW) zK#`H1p~#C%x6eDdXy?4#V5GT~KPW6}`AcF`+J^3&8J}3R(|zk~VA$%x8n@T#@l_Jb zl1MWirMAz-zLXBvUMC5FDr5N`3;MYA`v^!UOz7NCe2INXpg0~cZuM?Z)qfG6-&0*? z_oq0lgBtFUl)JxR!riU$csvNB@x%czze^=U`EOZmuUq+Vg>aY{dGcRJC9PP$b5Kie zwQTyE*UEm!%HM}m2*A7J)$4+z;{WGT@}q$pc~^!;vVWi282Ai4m#f$=$|TTg^mg{3f&<0>1>(V zucZ^~?HP*8V7b)H4XuIXb+_!_mpE>U5G8WxH`tQH_ldQz(0ZlFA`h7q2oADO`i*m# zBcEa(J}A)(uoNTgy7)8dHV!%zM-J@%dvRpHqQ(USc9rD6Rg#bE z6$4oy%93AWjyd!jyzp7K5WW&ru!I{}&50uFMzw9(?z)|jG9(@-dcgo(!Wa&RqNSyw zBTBuY(@I?-h|00l0C6QZAz--RmY50D+Ro zH@m-3B)nk2c2tLTdTr=8JUUO3%N9wyPHq_xQQibud%?*MXW9P#I5LCtlEq?PQJ43O zVZ?e|W>h1xKqCKp&=uP)dkXPhQWy3c zihhmTiAm9l|Fk}9Nf2l{6?pvsC{_6$*87X5Iq|w+=(ZBv`Ex50OXo27g6m4qS=9z^ z@vJ7L_Mv|*u%+w%BUfGd%*g=Hr8U4so0izqRQww{p7|Kh6&v*8&;RYCDfjTTks|H7?d9IUV8tD+XttI6D2fkpK5g$kU7k;KFKfSkx1}7b6q8soCXxe= zf_@b1fBPjJRw&x9-wnyMe)lDA5H{;~q0H-dA+vtRBC&pVYX~JK*Y863Xs_Tl5v<=y z;8q0Ub~b9(<@z1R2Yo+Sp-~d`{b1x7>~&%zSGyw{^&@EEJ$aCLC7~Xg+Yn$ zid69>zMs0+69s?_k+IxW4}!LdKCps#My4R}ty|O>e5CT=o zZ;t%x`8_Ej{Z#umh*_9sc61rhvh#&L;*J1XKl-QKGw`ek@hw3CsmkM2T+_TMxE~65oH(C$Ui7 zaZrliy7Swq^c_pzxv0^FG#ylA!dxNfurGB>@ux^>U@VPRpI+W=`TK7wwoj!yJ^VGm?oo4dFg2U@py)M;{DBGVL*FVCv0$3I}a_ zQV78I2qnEGz(zEh(_*fVYnkE1fYu*{5PD zHu16HG?AYH-HIN--O)BL%iiKLrauLA2w+L8oDI*h#srqyNMiqa1(wD#?Y|fJXK47C zdjT(7MhSf-C~Pljw~;JgZY~87YYa)7XWt0uWM53~%%rMym1`a8rZhAveo2NUCm)7aa@nSXbq@kWk`Tlh5naZrkHDkjiL(DX!hYBoGQ zdo0{f0VK)BgSsE;MG=V?$~U24M&@RXhym4Q|)B0QWRRBbs$Z|68Qee#_8fAIn7ss6+FG|Mw@rw7bfOrge z-`=U`B=-C``O9LpKgx0W%WlAnTbu*(gyzY4*AI%qToqe(G=Riz(68tG=>T|Q$@x?C zu8hk?IZNBVv8Ba`|9A@GBPLn4T0R{gqdpmy%PVkRWL`SBmOC!>ILAb;5!>R`*iqAP2m~abto*Z_V zc-Fmv+cgfJHv1tsY;}%tJgI*;Dh3`Zn3fK0U}}3rXlqyTg@2%b`2d*je=L~#3Jw!0 z5$`cLg+NoIUhcz74e>#c11y3}xBc(DQ@|-qjoi^_9*F-76#m=T+zS()vv;2WQ-!y} z#_<*)Zqhq8e1YD<)eYEQKB(e)KunT2AGYsheuVz+W2h1H4uWBSmcR+yDF%L%dkwe0 zDliC-5>vrRkxUlx$%jtkj+AWSp!4Rd?7Ei0Fv9`%-f}WO_)rDxtV8#}HCCtZWJo|Iy$8v)(rK!@0 zhzO=uA{G_`U6=QYha0%~FUAWAZYp0WrBE7?3M$r~2F<>*=wfZMu6=&BcnD} zcE2h6F|QpPKEc$OY5)wm8UqUx3L9t)n_PF=uPgo;Ezj2VtY_=ph20MWU=4woCacdPQo7#)j40^?(JTE zl`uKR|4IXYP$V|JeU!us1p_M8O>vmQV!X?`Y4A~4 zaYcrlH2;{h$Wk~7LKP{QU0IPOxI;7opda|J}I!pW$67tI{MEm;|we zRj~?I#T;z<9X`=CGxB|pemD7Ouil>Qcer)vOqDL6lSB8=)ch!+!eYf7@d+KB5VMqIy0#C0+(E>1x!dk1glUL?~| zkCU2}65)^2YN0hlTw_9DKhGZmaUpsIzHvna`^PmipF@R_lj3^<9UpLZMb0L0TC6#{ zf%c-`JOneetUJIJS$Njt3(uT`kZ}9LoOMLB#%i2SA; z?_^(PNpN%#3$3djY0v6LdlspiCQ5TTtT8Or@q&j{8 ztb;n}2KI^MgAk9A5HTnqmtz1s)6m>uHz+|SL_y{Z=iQ?y#z00bMq6^d2s=@IEX+iU z7Yf8mxJv&G#$m<^2#?81Wbo^n$mJAcWSxeGD7y|CG1efCF3njvzY(aU3GvU3>}s^6 zy21@oTwfhU{Fk}<_Zk_n(n88gL!n#AmGpvTNCrTn*cJOUu`mWrKl@(xlx_|)4)Wd_K0-Hc3 zfMi@U5i2rIM+~O^=KvQh3{PL<1n>dFv{e`2!?MU8XBD*DWL2++3QewlfEDbZD&HSY z*DNm(Dc2AIJevp4j8woUDGDFBasw^Lr8-;R5k*t}NGh6ygA5iJ-FP8j)B!ac@DQUz z&LaZ|BOIm$j5e0|6;QIb0!DPSX#{Z+9vo2yI5oG-@%2e9AhB=!m@P><2#ZfKz~3apHp-cR@X=I2ME+X z2x!?ot~nYeip*JX14cXo_0uT)g!Q=_eykC?b&@MJp+@FK)#>zG;r(0H8{#&`no7Ao zb0?!n^drog7JaDvAZ}lXABf?xlx3@X($VEh zuf-N{N{ZP6I;^uj0$Y)$_yX&xzcR=cRluQHMh2XVkBa>%*^mV&9D&xKp8EvGZ)Kld zin(HVA|;d|w>UCE7d0@A>{FtQPXG)@LabPshQiL!0wojL{jNbJKF_P+3eRsic=g?A4y82BH zY#?~WXh0(|au+2^ETvM_oOPT~&EcKT=V(l+i5zNT(erR{wf+r2S-t*&^vOX$QDBRp zQ&LA6oi+Ln#%m@w@Wos=ieME-j_r&ALNNf&N|m2*P-He3=%5!$F;H+H=Y*}`3qbr6 z@#|UgEAl(Psl%_lbeu9@!`Avy_&Q?Wbd+IjEU3o6i}`Rqx>7_SoF6lJoRd@y0jYt- zLXZ?$vIu>`CDlM1a8jI~huv~8TFD%Y_rA=HMxh~4^>@RD4VwbL!VPsgE}(AOkdtzf z#t|%rZmE#SHn#8D0wLPkBS5q>%M5)IX32zEs;sMoR0g4!Nx+G}%K&FsxtNTAOB# zLIs51bQAwFjij0xcfRX^&5*19y&0VsN7BjpnEMJI_fq&X^S96}H-A2n@{zuO;T}+j zX1+^FC}4GULNH@mw?A2sAZA2a&b80DEC;qC&2p}1Y8)BO`Al8UR6eL`E~AV(qGlH%O&?Zu?LTYR$y@vAqPQ2Q;f1DA2ykpi#O7mzJaVGMmne zvoMh_#6!TNKU!y)q|qO7!N+2$011V6`F;PV&`Q zCGwKK$^}FMLkEt*RKZoO`hS-1w6#SRpSIzLUlSs!n zcFXzK{@)*?ZcV=w45(_LSizbCjNfRr62I|3;?V@8kob)imt#s*{6@<;wGC;_QLPy&>rWFHWK>?2`+AV0Nz=dv>32l{~(#d-5bI2-ROdEP=8C2$$( zB@QKV<%4G^mg0Lr`y2z#KWP+@xA^^`=*MsM!bestFMp+c>E4gf%iRJ}c|ta^LO`S( zPMn+elL2XUA4sQ;A7gLldha1kI^hSElL|;kW%C6mfP{{QxCCE5oR(v0%}B;3X0L&&|N)3 zki9|(h&nMNTr5NK{Yp1uMwsRN=|9Ab(&50F_KiN)kgZ_&LuYaLxU)oE(xI-Hns%>( z0IPN(P!lP@_@lhNj4AMTwMqypnt73j6>V{Z6%9J85i2^0k}UhF{ho+EO`K@GfGnvj zh9%uq9W^X8%Zh{xy;xuB;XCEYJq2Z@_oQcf67KR%+b&CN)!;0R(i-#3C=S(MjjSV^SnBL(j`Ob4c zYnsU2;ldDvXDkglht7NwU9EHOh8~R0ao|u`*pl{s_Za%;`|l^WB{(a75Ox4(g=Flj zUOb!&_BW+?wGwN18x4(ZVHn^?m;Me?63GR6PL%ES7dNIU;8;!_23I1oL zy5EtJO$iXK_P@XG|F+9w`aeMRKZpH4fRkHbXS)ASQ&rev|7%2(Dt=^Zx~$ec*@CS-32KEqIm+ScgCpFd?1mDiNVSgeaq9*4;D+ z`l~;FPHlwf6`_*(h%BgF>RUs09^$?Mf|hYt*+7HQy|M{3*R%~RguVsypD*)&`jZLH zah!ZCYh_%Fg4}}$M^N3HT5N@9lof>MN-MVSk6Rx{W@><7t#P_dR7HzL#u9}HnTaa; zq6{?rY7P2_3gk!IR}@ph&XB60h!sFmqce%^TeoAj=s%op^v;V`2m@{=qsdy;#W3=d zdEt%~*~kad!c#M=i}6*4UksR*5E#W)Mb7eDqWqX+s84nNA=YjMBjHBH2-G(X)mmBM z{9v^evPue2eY+5daA+KiQL&M`g+5NrWJe9o<@N}h*j6Hg6wVnDqJ^$?!Y+I z*?SzI|xRB0CwP2X=vKne?ABhTX3ogL^Q!v5rYdS z)nwn2>96W8zvl<6>=6Nf)#36sFv|*GnFag1F1rsEN!h{SQSh6FdO_C5A=#sY{;JLL z(Z%b$@U+5V;X$Ec;fsmm$M*z|-vtK2PTXfIg5nX-9*1eVy&S*sPQ${y@YLdA;elnt z)Nd%e#D=rPd*fu2f0=Z^3eQz&{eYUI+ZC=;4;&VR2c|28S6}R$_ZOm$yHp)V%Z?Jf zGE47Ke!-_JnQ|WBo)CclRIztmAV#G|j&Oxk*`Ey&wiG+}%5Z_`#zU$%A;67X^^4%M z`^j-+>yv*o^=r8Us&%XjC zbRWT@^xiQl`gJvlw`WmHqXsCl%*vx5jFBumFGU4o3q=$}|t+criu5M6UlgHo}N_ z{PfS851BYhnD z4MVE*cOEwt5&CvEPmZo1N9q5P-9a z5IX~FLe8BhagxA2w$Xd=Q>gRNKJ~s;kD@qc6*ni!wlszO8bHbkQ}^7UIQhz^Kc%^~AoYBZOHw0_5AS zaC!$HcGAInZ%=srJn08ez}+jId;<4MaUDsDZ5cxW6b-j={MUKsO09)$(2q|y{=LaO zVO|I-_B~!i@s#${{>uP9SrBhM021Plc7IOlhxgmac2 zj;f)XHm7@q`nO*hrT)KNYsTd9Po5so{RdBsVatE$q1f_y`OQ~8)2+NXTKONN0227* zx%G>jYlRmp(Mu#_jAD9)8b$9GM$yG>=m^sg_-`xmpAlBN1?~S^Z!y4DOBtm9BcuHX zLS_Pe=Dh+XbM8*^SSXnhG`ivqh}N;1<~`b*Hx<|=v<3SX?;ldTY+|;^cl{@s8EG;; zY-{n275~28ZJ3w`=W>7`iya`h(I$YmOhOkpiDqa=1BBn3^=F{Il7(uNEQB?nPwi_M ze?t8*vOWx}gcdj%Thr}v?CPchP-fr5JguN*?t0ibc+G?Px-)<=?P$kDXDA}4iCp)c%1WdM1O{Kru8!w z2iqaG0K6JJ-03jWeEoyo_TtkDKRUSh5mf5~4=^JpE|>{mkn>(wMd(|Gg3x8@2mCUb z(;_TF*s|j={y-)S)*2 zH07(v`&me&s)@$o_llgiuZ?byd5HcKF=Auw;trcZ$AK|uz(Ox%i*3R8=|Q(h07ahD zMc@p>A{mOYZ{W3O73+d#3%%hgJ#&;VTk&sF@QbScWA|8g%8jg=`|Fpv!0G+6A31Upbl;nbNF5I5-Kwde+PLPQxKv;rDV9=jb1Jm>nf(Y|4Fax_? z3_c$OEt^#}C-6zaoaCHy8}_JQT`c?DpR-40_q=QEqZ2idNFD2G=2m|rtk3K@FTe$GPW8vl>^SL-2I5V3dNyvGn@ljB^!htuFs973B)#S)ouupz8YbiQ_xt#)n11prB z-3Z0N&;|Uci6<;q@&EypzR+webz|grYG;Q9O6}~>7+EVohu9@wlS7kkWK*Yibd6mC zooB9WJn#24o_8|~3jTipEHsY;4u~F!JqMm+?~sa>fw(>8IO6t4yp;d~%cFzM{-JaN zN?`o)NN(p`ISbTW4R@-dHHDkrBUH4Xxgoh zlaIXh0~5iL6~rz~5pLkT0&iLB_L~y!4qXzhf8XVLT%P)W3HirAFV6np?c0686rQq{{3m@1V#l)u_ImG<{+!Sm6oo9F~eV@H0 zmcFr_8(I32ynY5XI4zVmdjPF^sWDc))i-*qdeaITITwgU?`6pU2ze9rEEv&gPlJ>H zl-bbLo;Fc&0T92ANjq#d0H959djE%CYMhtH!2>3_2}U6FpJjMkQ)4$fyl*C&9o~jh z%nlFuIUY5);2$LQr|J4JlfI+bX}d?sCyzmZqW*Uj=-WwQE!(_|NvEZJOa3|IBP6$9 z%0K6yC(FB-m@bPZ&j>IC0S_1=sVLz45uevYMh4)@wYAU!5fcnUQf^Xc5IaK4e#{x#`og& zKY4sZ8L=UDd}HY5VrG8kU>1^r20z~5hh03k)0|2O#_|bVXll0 z)m;utbN})UAY}G0Tnzyjk9}|*e^GK>Q})64PgM3ndN>+6E)%*oEO&*_zC%Hx?1;}x zzLM)C5A1+hVh4l?FspPJUI!pGpcMB=4GdtX1Bm1YVF(Ps5NN>=7{ojcPl6$^y8qAK zia3zptBC1W+WM88VPW-NEpYSW5#f8$TiSjce&`os8LFzoK%hp1UJ z6jI^U@Fwv(&11cjCZq=x@3P;fm5?$bcUoWLJQ6)?LXB)^PVT72NcPWoBvbg+$)#Vw zM?e$Au`%%qgwwKe0>cj&5}iN;Ou>(tf~?)+gt1yMp`;RU&ge#Br9sN~hgZb-w3H9k zMKCx()TKYr+|DCGbN%`%>_v<}O83+21bhGR7hvzW_XK-W$UW?SZ+)z=_dIY{rQ8Z@ z`86M2{@Uo(^F?VlgAZv}n<5CLaF07#g`oF^^+4}&OXAS`$UKAIV*d&n{N5T5JBmmm z9~u2W1e0I@J5t5^*+kBN5=oxilscVBp%u|vN{NTbI3H{37hJA?K28RUso%9P4EgjH zt^eAE?ki5cmE-bg@N!Mft=bokChvCoz=0mdnWIpw-Z9;f_5+%?r^#~W@}6JG;IKbE zTg_fm`^Qy74K$q>Mrcs}g#BY{`-c@rU`=R2!7lx$)7n2Q#zqKRAm(C_Ep)hjYF`D~ zC)DFjld9~9Fo{NGedQ6d_gZ{|*?S?92d|=~s+tPrS=<{P3ys7+{)SE0zF99>_P}wN z1ryc8SvB0?&y*&_f4zR*<Lu ztKLNX-E5GDtzHrEzy30u2Z7L9rkAfnyfyYT-=PtUQAR+_-pufaWTiu_uMxQl6g40`}PyalIAJ#NlMEqYWpfRq~DbMc& zngY=fy7w3^sfh40$V7Mme!=*cfj86p05jH=^K>aC42U0t(NN%;aNdU`xH8UhCgPyV#3 zi%c3+P)?AIJZDxe^;Gi{qkn6$4be39O!biGj8}y`|Mla1;-C(810^~xeDi9WBrJ_w zFV;0i(KLFzmpt>EQZz9t zml|iZg=y(zrX>mlHU1Y+v7Vz;&iqBkdj@#_N*Q3MHV-iN{*xe&^g$CUf#990hZuMM3*cwhHR!Aj116}W&kQVk2Cy>WeNqK@^A5m^X4 z^=*E1PhSK>rSBSYD;;&J+5!-imokRRalpt~kyGmy38Bb4V(^6npR#QNFiLX(q7*M< z3y#vZ6gir|6xMeZ{oxW_4DQV|i2^Q4&rrw&plXFGaxQgS3ZkVVT_mWAV8BH4r-y=D zxlVx2+#!nLCPq@561+8rtNDljh{112W5z}Z7I+COrT!reIgI|HBhsRNfPap-CyQGj zCb*FEW&vS1lk9G_J()pAp93{N-z;*9Ec3#0Mqfeh8(iFq>Y}EYM~gAetXy!$?ep zi}OI>5q_|97GH@H;E62pb4;_XX)6v4(lg<1wmMu zA3TpO+Omd$i^DhsM8f zvgu5HB~d`yZ?k^kq9K6Pb!%GFFC1aoa0iS9w*~ufy^DWkv=1xS5q*}`H4!)Ef4qwj zi_$g?#V`#+b;X67e#i)^!KDw8ox)Lv-*@<1k*5^Ua4cAj@lzhl{Y{ALXtBqj%ub0x zIeGsR^izKL+V%-GtvV`un(;a+{~p^2^l=J!32fKDjH9xrDcZvUa^{~I)d4hNidr_#I~Q2wz`t0I}E2qs4H z7Zf=(-W0jB7ZwXJT{ctePY%5yyh(d{mu?o`KQg#5Np2lkRUy(&;2Wmky}mdxIO${8?=BEePM10>)_ z3bsXjVGh2OF&IVFW0HT7&ab2gw}{yTn^I~U%u`URcQ7Cm0k+I46drxC zxzp!&=6g=QRi;ZG?5LONcjn^`TXgft&wR|!A+Rfw58q`JcxOK5S3@=VOBkQTWFE|& zo5?vi9U(b1i^LvmfZBuYJzTVhNwTM(vyQVUS4ppy@M@y&2oN^5Z_i;f@R*Q(m9u>T z#3MUtD}TT&Wb!*^K1-e($TtZV=g%tJ(>j|}gKUgz0$t_ZOGRh6hz~ny`~{Xur?{R=hUKW7!z$(G@VxdiC2mm$EK1|1=r=>$zz z>Z>Ul%0H101G@b*thQJi3j^Tn6tzDdgS8Rb%Hz}3%Gi|t`cS5e|5+OUJ^JfL^`nhK ztljV;wR8UPPgVbA-I}j|iCce7Tk6MxT?qWf!Bf;fTGxL{^Y!<4>(6YW{?`1rTGQ{X zz{=X1{@p*X6g<}8fKUMj08$sx2Xd?4oLeMYa0712l{lN#=X(k2Ru3&OT@4{&llld7S~Q|Auh772evim+o*E!;_rM|sqt zT$)0R26{#2Wk5KCq|>MYI+Q~j=WQU9!ep8_ltVtC|K)Q^cE!;wU~xvDUCNsrLlS+t zc$2r#7&GxiACAMp5zB2XL$!mp;kdpT-d=V`1mRm_*&XOgo}_pRft~1_cdlXFH^xg- zihsxJhfec({7Y_qQuIS#)wikuYtnyal;!G&+UP&?1;aQ*^+N$*nDZT+Nq{IT<>d={ zmN*mpwLw25r)gW&Kex&MtaAqsP_BMLfU@JuMnGws|Ji_{UZ}Lu|LpBApcvdV$1K)? zgozZbvml-uH>1D7Q^kNutg}-EQm$7Fxj*T}~I&-Z(y0)BNG^b{2q@mMw`+Ek06+l7$=4Xxg!@G0|G5q08ywo_kecHeu)c6*<>r)W{UWT;^ ze4NJO!YnMb%Rd8{ASiS~*jCO3#8XkDQag-g0okWQm&eWYj6z`alXn0o^!b%;C$fm% z@?#>!xmOhlp-2&m6r)Hx-c%t#4sP&V6ptLKNL77Hw!tmA@E{ z&xpU6#S&>y_+m&(^IKezGr=tyMA18RQPKS3^sg=&QpgzSBghErlq_3{f6e^0Li)tW z$oRF30-l<`A@2NPefQ{p|Cxy@ssDupmSFV1M@ZW1fA&w{72A|~#SB6L?2S)x*?|uv zKE-RyCa{&WO5*_Ed>8?skwsjHOz3c-$ITA_U*_$Bo-r55g7Y=8s$W299AKLd-K{DH z*Rz2^6ho^yBl1w}_S9I_FEDHzK$>67mJ2cEf;Le70&Q}BZ=pn?D)GOd`UQVHbe4v{ zs|$_HcV|MuKh8f5SOl^m`Pex#KT)JJIvH5)#t&Nbtmt9>azE6=WiN^fM#tazaupeB zOa5tf%puC*-@b{x_5HWRIq+Dg8j&6S?{E6wwEsT)-**4Bhk66tr$2)oi(Yn(=8AO9 zdnMKRqBnarf?3P@V+y%iJ}&!-`r{>3ZMphmfSx;QPy7lYh_=PA_*nG9*G-JNr4<{2 zI;0O8wIzN9P<#q_SIIA>7RHc_=?itbYGL6II)24SP|1{{UsyMchMUt3%OR&0b;56) z(Fg}3ewS|4?$q!v&-uRq`H--FP!Kt|1r8J7ZnDouq$Cp`;SIkz-{h}ifEkn$r7i#j zqoigsD0OHsN?{yX&Yj083cMOwGssMs)#WbG|3t&B@MFr+YyYIoKE~208{lf5rekdw5Jtl)rTQQ1O>cD^SA@Y%SGJ>Q8?cQ+KAspyGYr%nzpBBe~)~6W` zXpn0h5s1;LD#?UAFmkyzC);6Esqn~XvMl@4NGUDskv4EzJLdIz>Pvo zJdSTe|1nU(?)YOA?3&bn{3<$>eLeM1TGD@b=jOIus{YH4YQFv@Zv8cFsUHYiScLv_ z_4`AvuD?t3_4jw{&upUp*7P5(o!?)<2pFyIFNeDP9i%N%BNRm8V(?~AX3Y67&_7M} zQ6I$dJ26JPU&(mmg9tl3eGn`FMC!cI>Y;8hwEK(IeK^oNB0QNlV;A+lOz`_@9MvAQcA_XYsDv zS-2pO=bx5L;Z`YW+3;%;*xw9xAKcdW$s&X|Nu|JN<5zRFfK%`R!kehYf6XVjStRAq zOt~BtilPZeC8{r|A<=mw{nG~MW)dSanj(8c{%`r0*K)CL7K7StZ}yYaVTBWcE6wM@ zcmML-=0i|O`P}4YD^TB4Tlt>W%J+EVrcguj^Bsil~GmpLiF3&!n#Aa$rC7xd)nmJpV(c3QV z{DV4j69FKYWpg24GYa6Br=eJh-#G=@aj%UP?yNRhuxhPVx7_jG1ruJm#&iF|8ZI|wp#COV0b77^kunRR)C*lbl<{sEs$}?!FgAk6z*<9?)qfs(+fD; z>Q$3Lz^VrKMKBr5t`tR;pb2NsYc$-DeS@pwK87bBOK|Sc z3o$%>L_d<7$Q$YAtXqsW+?Ir2Y712>8gQ5F-pC$1|VI zcY|7GMT1)1`y_)}?I3V!!Q-ix1L)W`RDaWBt`c{io-9?L^0}%yi&Y0KL?32$XQBG) z(_eMNVc%nwB5yvwr6iY5Pv{jDWNrmfHx#;4hhqO?I`xY zCu-nwt{^w?3pb;YM`Ym?`P2B{rm-|SOlXBiBOg|LgqoG590L3XgoJ=iHag|OCotu^ zegoM{BxDZM)4sE&N28YOYhq{D$oF4isCs@etHysygbfuVnk#|Oau`GCLV*KPgYUu& z&|lX(0dEWood?&fKZ%GA4@JcrYJlkn#j>m31=E8h!6=?c+G{z@0HgZ*(_~bXLNKUI zI=zs?fZ(9WlY}kbsAe+`G4xKxp5j62XP=GE+Ep?1amwQW)^k@0u*$sKA(<>^QTIl` zlKpLK@nhJ(tOc|YDKzE*HB6Y?$s|G>LUZ84+tOeAmqX&pf=CBrbT*Knw1?h50~bnh zhhIs0M(I%n+2r<%)-Y<2y77nWKe8v5PJpy0$>h?JNFug5qE(dCp`vg@5(;LNN~5m6P4f)|9_5<-35GzRJVY# z+Y#OLo%Xn2ab}C+oAN)Lp!)~H!_tYS=e>Z1e$E{lG5yI9U9gho!VJQ2#JN~q5xy-s z7Yl0ur|NP8cn0tc;)&^_H*Bvz0s%dny^^jPKkDrmASwPxUmV>B&^`42mEis5_z`t9 zr1|I0V=DWN5^+HQP9q1|gCI@T$~1g+?!HJhkU?4k9y1I0M1TPlre0`O)M8vCcU$%? zyRH2nS!;g0u;TMHs~s*G{vjYnIo$rdiN*$>lZTpCgixnuO{q9!BTejs=ZiFERsY~T zikF%=mLV+5sXn0*DJYKBZ2W|q_1M7zl<%OT0K&^?+C#kxhkz1O_k=E?zYW|LdY@^3e z#LCMm6KYn`*gnvsVgyO@X!2M*-93o3SMZ-F67xG;SjOGt#-A(E<@caT!2a_^yXD> z&3!e1#4udvRB_h7aX}|s+Dj3{%Jwb#ER$!3+bXfHoXXjeal+w|n9NCdWLs5w(-AzXXsC{G~s=RLC?EIsRla0cyy}B}8gPCBUi)SU3s9>&1isN> zx`t0^sy_4#f#0G-$ZF#d1WZq%q$G&PlGwodF_v;ZK@QA8<&?!2!Fs%4)aG9I%Jf>v z`Jhr2KxI(JckJs~auu)u)$DK{`EH+QGDiV5Muu zqr|$kcaB&mlk5NyH<*6!V3+q?xsuEbc=je)3GeqL0kT$fnjo zB|mxW&zVXtp?{&=KR*5n4u@hnNGkwOJj``o8p$vjo_HK=eJ*h$mGp?wabL%~tiS=%pc-Em$A{m?VtjO!Tg_1v~E zbQ=yH@1i@IDhfqC9IdNyn(*;1+(kq6h=U#Vot^h#&lYD7ylR&X09LPirF zP0B31{2GjI1K9XY9ecNfib72%wNk&Ifg3-u7~XR^M@bV#b^D5(^_}(busMKN%7HUg zMH$GPy}}Z3%n4}@6IF`%!Zy%~~4@$(%!YVr8@2rN14BbTL z5mHUc-QCH)Fo8lJ(lAsg!X-qR!tD5*CSQu=Z;Z6m^K^tKK!ze#THIMG70oYYCg>!~ z@r$qyq!*YpR3b&r*yDa|fDVvjHq-sY(He#|t?4&tAK3SUu@5}!i-K?glH}xz`Q(Ys zDCe6Byc~{+hFIQb7jR(Z{kJ4I%Vt3u0+S?*BPW9&4d{FnvI$Tz3nCFE<3j802ds+q z$q05z{)U^v{kY+Uvh3jn;o*t6s#{$ZTVSWu&U-vz7+n9#$P}_ao`(3)a)xx7FxCPv z))&}X^+Cny?S8*zPmY?+o=B@YBcx{Ay-Z7z;Qxy67b*QjfU{xn zU9s57{?0ix7QZ1_bRMRBwQLZ$f(1a|>h5N$ zFvSq(RkNr>coK{&di9Y;h$oUrHi~zf-2F{lHYR)FfUoiCQFBtwR8!+9vHM zqdoOYM%2$5oK#i+v!=FUlPEWd8YEbM8AcX!%cHmdK2QCU5%seMX9WTPB0bC07BGpR zNrY6woLwoSuCj>ZXAY-Kl`k;4lT9McBr=g;|595Vzj#_H_)139&l;RmRX>Bo$!uks z`O7j1%Ona-0^v^4qVGdCjCxpv^H!(dS(5Kd^?N|S6SbJ174mzr{vOot0sYQ)tS}c+ zWDd!T-WlLswXLLIelO;Cu(ev?B>%Bu=@7ov@;!?1JZMjGIDqAKwR{s_e+22^rJTGr zeyejmPJ+7xSBLU0!SRjQPALeZzxO;4+%b|?LRysIe82M$oEDul^GtdZ#t_%p>p0Mfy-4)gxwT;ZU z!_yTS?-2{B1T?s3}33bH>%a6(Qn z;)wD3%LS6gZG~FC9X}i282@O$bi@eHau%AGivTuRV~bE+&6;!ZTXZ(^SDnG^h~J>U zu?H3yeXTsP+&d>DBjT^`DxECr60%RiT66)*B#u+{aRk&ZUEo{_Rc0kbWVWJezyhJ< z<5jOv3!r=QT%o5Y55G;BM_KqF)kUr(kf6>7Pc9R@u+XL?Xwo1O6MW8>LBWIHYz+yb zFca}0D0!fobT+CC19b)|j0_>k;Ol>b?5hXxVJBU?1edc6lW{B))3B>5nfsFLt2xhH zGte&>T9LDbu8mMFZ>VdkYhZ>b?VPFdJf`!+_3rnRrFReUVJB6kpm%*y%Ch5o_t}fy z-eDJ)EO1a8Q|V%sj8_Bg=p%~ShUp+04n_1 ztrGqWyV%uY%VWnAW%!E}4%@!E--6im<(|9-=nkA4lnD6_OYV|qQ>LK2*-9xv^oG#v%#Izc1AR&@0A_w%pHv>oyikFEqpL30& zWe9v=T15U8NH=VqgawBz)Hg;=!ft7dEc9FMb1SkSPYY)T%Bj-S2k6p>?ox7%;h2UQ zuNoa+(?*__#%xM??v`&kjN3`*3=|sU?#(B}^sQcH;~d1MQcg)EMz#yFnCA21JKq9| z2QL;-Z`|A%1N^UG+|G!6$xx(eAPxgQnIssnhY#F!&TF%p=FHBYyh!ds%I)eq2F{mj z=(tPOGjl&|fIT{g(9jTWqTH#voD-d&X(;DkUXY$sxv{hZg2gmi70(_OHxX+6>yMN5 zF|!eA7e5=RVq0%=Hfoe*E85qeG97F31ls3sYGyk0`fN$Aci&RE;^t)7H8Ll|`LL5- z=?$t(*YsfteE?Zt4q4-jdDb&0jd8^3t2*AU1`C1%xJWFaZ@c zroiX`o*p6tI7K&a>HY=EF`Z%f&*T(p0CMXP)$ct%d$nsOJ8& zuDSkPr84Z&8RGggSoLR!>d*O~p+9L&_NSY-KQ2ZqM(-gT>1vUgT4I&_BG_Ya^X)+b zB1?CPxnptjIhCQO&cIp>ZmJdfPXncf^-bgEg;xrY1AN#?H*$pz>OrwB7dJ0@!UN?0 z;h=s{U7GfWnux}O+MzOx(is{LYJ08>>T8WT0y3B2uD?PCHJJ}PDRaEX&>B0aDUW*w z)rRTN_^*1mY;AMh@2WD~tuuJLPd#gZx8orwvS(S80f2uIJ1D1X&avil8OT~b?4*b8 z!9dPza(142%rg+f2#q{>X1-c%T*>Fw+3x2404qeVLe8g*x?onQ_bgRtA3i%9UkA7~ zd*xa){{UDu6)jxVlF4XOoyWh$4INl>6Fo+XJHLuozCiz?>}Ri|UTtH^6#D?Hvef$d z85aWR(xD%zegj6{>tSr;np`y(h0rX%h+!=ki#!TBn+oK6>E-yArk1?0Yhbm)P_;XU zPnJCTd>O4}Fe*^SU|6vR^n`zFM8GD;R zz_DTmA332}hy9`Sq&1*F@QN{F;(D)d2}IuuEB(} z8$ibg@gQ7h5jWW*#?&h36M5M&zDrejm;RYR3IHmm*EOMWD!P5Mhv!tVC+F{KD)D>d zQ*jSg{*3{R8_AGECQrs?B~M&K6jVO9>}EO~7dtS~7l~t6i3l5Ym`g@*ftSDD(@@{s z{j>ggkD%AO4H%_-Pu9ZO$HH&4L;rBqC%iit;dTcvC}`h~m(W$LZ4bA^^x3(C{mTb; z%)s^YxwTG*Avj9|8_J%;79`Mpt-bIE_$OM^vIZ~cfJiL^;o9~IUE4Z#&Z{_JO?|$; zi)lss_Q6#Va^p%i?aVy}T1z+s%1bF;YMg)V+tU!qk3lD~Pxf(X2NVE@s_HFy)dyB8 zFnmn=<0ZfS8kGr}2>Qm+t8#p-LG^J&OL9r8e;`(8>V1>;Pjz9(qn&n-c?ZvGC(XmZ zWTixuz{s3T)L*~FTiVb+vB=a>g9$k8bxc6Mo`72?f)m*(Up)@1V#@)L(`QQnMJ#%}C4@^Zk#Bi+EvY75j8P z->WE9am~o_F)Sel1TplPI4nFVZCKT3rQPUXqU4ud7%=Kj#O&^?Cw&&!H>9Ty%kGt4 zx-+jD7m~gkQ(ydx!tYv0hZ?>`3cewXryG|jxNz6VJr~$`z79a_^RGFsVQtkrv&qb# z#t(E4bMD!)M}a*EN>>6LeTM9mS;#>fd7)*C6A|pzteIf%^SXfj)e98Z%bXXAx&JF2 z&cz9!*Kzk}5l_-cFkHt3eI&^GS`bE*$D~{?Jm&U?8}XP6s2UY}G^Gqofh8kj8zD7Q zlsd>Z;i}Ha_THfEyk7$AgxvqvJ;u9u^?&DkxKgO8u@_ z;9Dhxl)OUQr6{og150cgO)mgGPGJbK<6 z{w+LPkb%y;v$P~T!Fll!h&WXZrLO8xtLq1l(+HVZRFsl zCGZkVhU~~y2nlf+%%HeO|JP&18H&q}EH(v9WiTuJ2{%~P+Z6gp8!>%}-tQ92wKKnn z;o2t=%Y>;*4Tp`FT&KNXg@$ zZzMlEzm_kb6vWBT-!E-ae!l;KsQldf)BlI%=dZuOO5N*5&r0o;pSR&_Gb?rR%d%3B z>}OW$FRqV~pYQuTMtDJh{yad$?Zr!t^ZCXm{Q##H`tQpR@}VR> zja&pfMrSXLm#D^-$J3kxl%xPbl!7BSKEiN2DwSL%OPJ3JT?R@Xt;0=q*0BuEKTO3z z^aFGrLwS^?Cw34nE9-VgS$bxDlJnjVB5S!L4}X zNICzrYC5LNJxH%C1gDwK5n{rzQ5IVjk*ZcMf1UtfFI#NR--ar zL`C_`mNNL42U=49Y5m(A7yq#5g7+!02+9ify*L^11=08I%7%e^K%FPIeMXOkSr-x! zkS!00u-01f)~Inymi~IhU~B)EG@6}mt@#0$enM4tu%Yw_YyWoW=zZ4x*8YR=^QiC` zY2I+|UHx&>hajP!-qEzs9vLV~0GZ#hnm*GIKlCKk>nOynH{V3Y2Iuar=yL@l8QY_Q z%f)F3tM#6BShDq6!u~sN=_Ewk9U(@O)}EQ(u13s9$V)gR(ro4&WBMT&vB1oMw0}(- z+CL`Re)Z0lnjfT_SKY?_*>$GhZeQka*DzsUBDV@4Oo!s0{^eH2w)*meX(!a4)KsW2 z`TlA1-|f-uB+DL^rLJK^EVk9~YxVYR4!^&1!uKcbYpC6}`=q+lbz|ncbb;T$-S+88 z+ss$ZznhQW@nM1+zvIr_*!Ue^-U;t_w{$`Jm+M(}6% zT=-+T^6hy_;NQOuRcZLA5sa*;Dfnka;a?mJ|DCcOGk!w`Kn55k=~;w7VjRT4f8BNi z|3k3rs*O z*TKzKfVggl8U6q-lRI`ZPlX{agX((jDXjf7O8D#x=q6dEy57}~Pn=z#-9KPfsZ15PZHt;R(gmv&()abn3 z1GH!-Sr3K)Yr#@wIR5uto~U(E!?Ct678>mrFrm}qpy&vk)X-{KGOv9`wL;eA^29B8 zBhmO)=O6z-Z!w)&P=RM-1kSOl`#6_zXG{qaIrW`)^1@4H%Z05D^2TdTO;;Rn&mipkt*KZLNWt$AETf`Sj&zPQ z%?X{T`F|0W>G?;SatL@9;v4{f;mLk>`Jr|t$CV#yUwSTCPxaT%Q2G`q5k~xmtm^#; zDB;u{W`0IKXDvG@nPhOVd#8-JHzcsk@Gswn;Af$%Sb^!XKUOEK`n8P9D=^((^<{&z zs2kZhxxrBnfIptP-U#II)yE{reh;oDT(DX~)V0uF9$xOaa#r6jsn3=v;S>pz~Hf?4)z%0-Z0{ zSeNCZ^Nd-7b?AUbXLbdh1|4!=GV?7j?}|Jd2X2r3lIM4|{JNCQKvtFI3Dp1!+{oF! zq=&%(oC_N<05PE>i?jC=P596>1y#I5)TJB=X!&pSo4X2v->TD2xq8*-yucaQ=K{jFN8o6}7l=a8mhtQ+GiyF#R>x6ts8d!< zNPr?)gni3<3*=wn!%jM-29UoAMRl+ykQvWZX!@QZ&YDZ{o1OvVE$2>x(1-K&ChtrL zL2!Q&HzBd;FZYvLSZdT3W5kisDayob@eGC~&xPuIrJXY7VOda1eOC3RdZ56jmFQSP z$#{VkJIOewSR?4O@?g6BfMGwy4`JVxePq}nKJ27FZ3CM-hhK2IkvUyXceolf`#@x? zR0kD-BW09~m3XED*T`kq;PUYNOx~xau&N!F4Nh)=eP^U{`g?@CI{*3?GGLAKSB^Wv zn?tSn$TBX`*&NOD{Ne1HZ^lDF$xCt?p`?xiie}g!XEYHCWC5!&wU;_O6Li7UzJYg%J!0r8j?sX2B_f z`us`7K@4{|wvJST_^W!6hXbGs(C77v0OjoX3cT~5%wsJQEq<&~e8k4_XJoaqcls+& z7g*)vrIKsHh$Vv;2-gR zUiQ9{AzWG@Aq!syyUAO#N9`oPEkMo5*a}9=p%PicqaEgw6Jp(9X6hVu^prQ?P5Ank zAGJV>Wu;3~Q=$ID`Ia_`ARAX#yEF16hE~23fj_{Milpun71o zAH$+8vsZ`QlGrW9Om?macN|WRrOumEAFy3=2z7Mf?@|I!M}GJD&k%Y|=EF|fybx?^ zD!+hU*@(MFTsmEtl%iK@dmp|_A_21}iDZ*V6HJjt!5roA%^@UL8kO?1QcPxUugcIRK`0!XSe-jwF;5j2hz;h-acG9_b0zB1Cf@eyJ z2Rx*Ma%O`Hu-LixONE40FUe1WsT{t+J@D0ODod%kIoX3N#3cd8ZYgaF337aJShE!XxcUznojJLp}JE|W2{h;cS5`fTh1Zs3E}Te zA?)JQWDNK7VJ9V#?B=joJi-e8?V1`tj+Ve_xBqG2{F9=c=M?RX?t!jcpu56mTn;d% zt=%9SI->brG{uH8R3}bXov7*FY$x8H(pFf&+dgGZyXIjbQ8{*Vq%LYbtO(^1MJT(A zA-(i!5*C)X8*x&ac+$%*#>rjNNM3U{Fp=MUFZ-4i6VXJh$~#7a3lBQB39l|U3*~Pe zKk-^D5L*5gzK>NY%9BYwLIitFf-&!uiXfO+5Qb-P9`q?a&RTq<34;KM3;U0l_=1a3 zhQeQyArdPez!vCNtksSSk+|LZlEMwb7n#Omd*Oyi6s?11JhE*7hfzy`dxFP_Bw>dY z{Qzks8Y1!L>ltlLMS0w3LL|nFfa{4n0=`inSR=jmJ+KfXI8oB-Muup(o8#Iz0vY8~ zs6i4dOkxA;M32k)1i~=~xi}<=|3QRAwSSoTXl$6o*bs@hU-S&Nb?pCIe8lmuDJ;kR z;LXKHoZd?OywpzD04y883w!_Ntl0Q@m!GNP=Uvi?b1phj#Lt_zma0mG2ZSja@$*)| z;4SGk#m{^CFOA5uh4^_&f3Ou3ru8cUCG$t)A1*n8b1IrDVz0z^9GeF1GZZE{7hLlM zKGsogpN3;o%$Lb+bsBec$l&|^S7ajKa_SuAU?7NW1J-SuRsJw5X5(2GZw8Y zUQI9u8q--4^}$4qM251MU&F!#5Hy*vnBOAiW@BE5q1a<5U$R<*BhtAkJD(c=u@Eox z_=`9Q2&!y2AA^CIEK%;ZO5wdk03Rz=RmwSbJj zvJ7L@^s|%p2Tx$T%kjwy=Zrp)i*&y+c!*vEfzY*EJ;JUc$en(nt3lx^1HvthHsg#R zm=)cBdsuXU5*t`_5Kre^D8a38M-b`4^xH9bIvRKI3FbDmUXJE%rdWMo8vVdG@CyVW&Fx&G+A%zP^{rM`QD%99>*0EpQlhZW6 zNX2caSc|zvv~r0(YHGqBi}mB`Z@*o^I)T&Q0_u{4;`=B=4$aRjaS`G0qkg%RFP)Ho5~N;SbDK~j1>ZGQ?KFum zk)RoewXinkAh@I=)WPMF@2rb;I(&a+nbbK6`46xh%Cj8HKd1Av0p?$(-`Nh|*Wn4` zPMbFs**7}}j!;vOf$AAUMyA4EDAgd_!3Pnf;X9sT#`H)YUL^7eSRv^@iPJ#%MT&r2 z&RZ}on_qaD2>f?ob4iR`jE~~OQG?)%)NB_WPFSM?9Zc7$Ic{o}^4(5JI7jj48(Zhk{n&bqZXJzz`17l0d-?M-uL7DS zot@9#jb+QSXhbFgya@1h1RB=+_hH$v|MEyI5a0#WG%S0&zw&&%1Jns!1=Q{Eh=Q6Y zw4$I^FJ$5OylkNSOe_mm>t7q-yX}6AaLZ}GBz$-GX)}B;Ve6SaRqL_veE_w1*1wes zzLncrfbWwi(gb{yr9Uowm!=AQAI76K`1V`Y41CoVWF!zVFSSo?{SlTu8li7%t?Ui6 z&*KRjL~*bB9( z7pGfKGIv@Xz)`X&aRtaEEa#Ek`x^Yo9T1)XALag?!Mw8~ki04ly}^pB#Ry|=aXP^||6=Oh7f1~{Tpr^S{gpr9rW}9ODx?@uPh={H6EAqPf}2<3==$0K zubSyWCSNX}>sF@W>GkDP)f{ ztYLkVAF-B6)6gR=W!*1*{$I%f8G*5nuz2w2J{#)?ySM|BD#$kP1VO8OJYqiORZr-G z#RPsN7(rT|od@}h@-*NMmmJmQan+1w7V zmr019k7$1zOZ&=p3>Sb{YxZ=Yg{LU5xE>+GYbrin44GUl01>F2MiIJNz zMXGl{%1TD*P`VEo(48haz5Ee?N#wAT*)#Cu7(*u)wJhh@KkLcoaDbqVt({y^vLbuq zHdzWk?gl6|erObp?oW34IYaP^W}TK-@=G=G=kwXOG%mB~p!i1M&ed_Cj+A+YPe73A zcNqdG@_;G7X<;x;ubs)3-B;#8>Q99@IP1?=yM2I0mL9m1{er>k5iVXE3Z;Bp224{T zNTRF4Fp+eV@e@%#Rh|pe)A$UJ1}2hJ4NZdP7D|j}3=o5;BN|Ex{LB*07({lZE%iu< zxU8C(woqru3lZs=4JSeo2qY8Gqznp#k-s7N3qwFsZ?Ue>(jjz?nL|-p8;~lpZ2FBL zRZMu7DPgo+RTX#Vh-ItLmyG4?i4Z*li=K)QZ35&fUmWMsVu`T4(DVx|DCuPI1cm9g z8zq2_9IJ)!BvETxr!XbI>_&ne1^hID+DV~;`%n|&)5*7_>-1}_&WatEie`&ObM!aX zhu7ouD+Or0_SCPt)oX%&b@&Qs%T$JQL5kcUBLWhjKpyd0BK{!orsMC8bvrsgu~g%H z^QT4>0{v8ERUAPW#ERjcQPXtAUQCYRpT^N?6o_+-u(g}6DM@hh{`)~}e9_9o1k{5$ z&tj;iWBPXB3VImiPe2F#QzfF2Qd$CwoLj}nqLeZL?x1tb*>bpM6uuP2emU5W;wbH0 z4CeUspD9j)&w*O&kAwfxW)2%KviCP0TvnnmAI)<_b%5v&0BWFNt6(eQKm34$gLcxA zvXG!jh`lX>@p4pWvRB_AKJ26pJE7)O0mvYexfa^1CqUII)w>P3Dc0rTXwLFy8qG~) zt_V^d{p4QQVT4JU`(2c&gV-e-EYt~Vng;a1wJqS0VAKPlrxoW-6;ioI5NQ;kFJ2BC z8s5YD1k>2BY5qh;0D#08zEiD0Btq~A{8k8g!aw(MQm@KU9nFDh1Zt|9p?%?Gw%bXs z&bfYOw|zVRb{$HozB*?SsBmLJ5$Us9R0hLDvMmhUWmqEa@%eq9bT$utQc+qPwmN<| z$8cwky$0@6sPC_*1S5tl!kvY4qpfRsktm10V#dJG(4G0ar9R%nkp13N6w#e-*GHzs z=um~oIXFp>q9w6G3Io7Sc)y@U2SE$9Xi^R!9kL6B&h;w8r&B_Jsb&huP%9a*FfxF@ zGel*2O=ptok*Q8H`7Y~16zfsQhn@6VPbl;U^NYPq7U^glG0-pK|BFta97HV`fmVmG z;d>cE?k%c^GL@bo1e_;ThO`!kFjr+dRIF-=8$zW}NslT;CBuK?2^`DzqC;@{$M&E6 z0Z=PP9vR1CBna1#(?zuxp03)H59sw$oxviGmGi|;%6czKl*;$irOUSpW58u@4u%L6 z*W9E379e$Rra4Gpnhn}XXUv_S@H#w0WP;eQXmgWrzlXQM*fvDJ)L*r;thA|N`FbP^ zCY;EJowR07a}7D)UFI2AY%|XG?_?+=n{Hy0Uz*s=hn;jq^G)2@LKCH`iLXkU9L4^l zrHKQ4*hz=Vn;k`OZxiuM^3Eq3F-iFE>}reuD-E`>@*P$kNWS#+-QX0`*#$>at^fj4DzPC*qO+xB32=EpN>S&nW>3p;y5!=oN&|2WDd(#gC9! zDEh}<`GxiI+Yi*y#tdK$77a+PZ`{Oc#$YTI<^UX2lQKH^f4I96_@=6?-$ILJDJfF4 z2uRVYMPV$9PAgP{A|#MPMMle_Q#VA!u|SJe5W%)c2*D~iE~taM=d-tAu&bep1=bp=z1ktkCdL+*xTU*v( zn2U|8Y~Ie4I}_z^3I49mnyud-g#0}|pwFLaD?jo@{Is9*XWn@do=^DsGsiw)u)==N zpP_v}eV9ReKxh~tPF`hl%ii`rJJg>Y+6M*AX~;uuIMo?O&awQ4$LXM;yix(?awaXJT0~v&@{Y^V%9?RCl{>c zDMp*sG2cQY0nhjuF+oF$i#q^*z{EuAyRRq%`))EZ{kAiw&Wi=fTGgAo0mWj(!>}FA zZ4=rX=Al3^dJvl!20qTuyw`XSMd3E8o2T(r(_1l8j(+O1|wNNvkOYM8eqMT{G6v*88CSdxkJ-yft^D<#V3Ve0Vw_Zsq@)?a!f zCs0NY)$0QOI5Mv*w<3Q@=tY8x7auWR=G}^Qc$?C-9`k|03x8J$3lwQuz)l8ccz#{p-kFb} zFYsVFewmq--Dj)LG6{~B&d7sll=rqCyXziHu+9{tKjeEPh4sg-&?!#+-aGT5VgB@% zn2!?y)Do9J{ashf>e;}E%b(N%2j-m!$>=hJ6$}1hB0h9Jy<_gDcsfG=g3aLdA*3ez zSN-|l+y%UNKad>zI(76EtOYTD8!o|Jcpby)W$I=Oeryf`Q=H@j?#5f3DC#Dp2vdzu z!lQVCbHO)eA}Wsp}s?3tYVr?L4=n2L#g+o zQqQrfm}ckUy)cy?soGV=-3B5!`_ls7hlj;26~OpS3RqOfZ*GChWQf=j36;RclutM- z@(J<9&rtk^+koMaKM$aR&JyicLoDzyy}p>}s5%RhyBf*gr)itI1l+Dwvw2aC3q})` z()WsWK2|@}$S}{}k_RbF@uJ#uemv(_x%>(jm(AIc> zZLzE8Al0m zqY4c+g#s9&71CKfaEE<%6AKxEKG9D4rTtW=C--^)U`+0Z*(0WHjeHu>L9RoLAdvo( zCS-)pNBGWBB@5mhD<78xCEC&64fG#YeG8iS+9CD9qtgRgF)6^s#s0&1RRq}t>2>-_ zZkSR91$vzUff#nM z5MvO~{$$@*2B<`O33XJix{7DK!;%vGc+-r4j(!Dz&%~iuZ+s?D7YIbmzXdq6*{Lu2 zpZktxwB-?g_)~A{hS)(*-odW5a?6ufi(Ga%!25P~`0>_Ac4%S6?>1=qFNAb3=)a8Z zgZ>-j(>TD_H#Lpgt}=y!2jJBR5c%(Rf`ZG#DH&~qfpxI8+>w@O(0P#5s5Z##TA7Kr z)P&(SGCOIf$U$c#cWK;}t4nZ9GD;Pl0EC`m{%9f8sgAu!BUC^@iE=qn&!?GygcfdC ziVN)j{!|eA{l&!q+K8zEcp*7t0$Wh$>SyYVXZRuqNCE->8-El0Z{mkPwL?$f|9IX3 zJFqW{9aP#-Apwy`R>+^7ZeZq2V8-!W2Px4$Vb0#!362}KvIST{uvwBbI6|Ci=jTZp zo3W7&BR>|uCm18gGraRu_wYea6MRP*w7TIF8FNBoW4=f~^WH_pf|sQNk2U7cew8tQ z&JTa;(Ck=aM*iUt+n@#Sv(c1F(#>Cck#3&95vB9^=}Vrgo4-Lf-}fCf59>!z$|o(Z zo`C&xXWH5aERS|1Qa6`PhJBSWJ1?Oud0k>+P#+$}ch&rl_58mmYR_GD&)sy-%lF#m zHs7{-R%bNmcbd_!ng6b-92#&(-R*)4qjvk3p9P=i@WY?FbOa)%7oa=xP-&LQp73y=YlME$sV$s&%{nxjD^JbLJin~7N`U|i#%SHae()|%hO{>q@ z0(ID%qrUyUObIc|65oO^)yjcU99Vt(vhH!z=UjGE#Pp#4J%IZ5$1btzbFLZ-aU%7; zR3X}ruRiCHVh~`ML4ey^K-u{_wI6x|1Xo>Y@`UvXIpq?GimN{7)cfp}@Zze^c?hdh z2+UTI=yWEZnAA7~U#iud>i^UAIZuCIbhcFjd`UQvVg~0t;V$u*O=BXHS5|%d?H5QT zz$qWY48cv88hSV_4Y5L5-~OkY8Qhc58tdEll!f|u>vJwC|B$?BWQ*j8U9Va#)H4f3i;)H}RBXB+$=vD9a;j8UKSJ>ZTi z1Ca&PsNj`V-~NJPLHpjF8tvt(u7j9`DlQQO!(<5ZeL8{OB-raVo z6lZr*}DJCOREOFCKnQ#b!W z`KJmK&EOyN{0Uu2)1SPf8ng08bRtFuXX0hHS@|OF#+a3-pD*mO;{$V6ev=WaKIfmy z%sHkW!x)-WpL5k=q49eUZ2Z%wm}7UWK()TTt!569!Db_q^S!4oM!F)THm=jYKQ__r zPp{)F$br003_@NXPHaHxgvwpI2U!K!kgNxUZGV^kIAXcJ@f}jMEMXZoiBG9j09tCX z1*SAuniL~g*4MHP_#pOR?HT!eQmo{z|J;xBe+b_P)ahjQJ?YA5PxFsSy@d?!VyCxlM!m< z{xQf;6@fF5&}WfEFR%cH^Q`W~q+k)taxy)zl<30dZYX6Gxje~8!~#~x6Cek8f(yf-4JajqVau>> zQ4$P1#njOpqz%nlLO#oO`TD=@@f`;K!CD2D7G2(NB@MQwbQ!pZt%kF?;FrOOY|hji zHF0iqOp{5leu+l{$>v-W{_k(hFR-}~Jh|1v%M;W`Kf_ET$d2b)Phib3hR5y?-p{#~ zW&nZwgDRu5;PTL{3SHT_z@Pg143ciMV{s@0oZ;2R_SZU|YwYeTuRPCL+6alCN3g50 z`y^GLjjNbz$j2p>`Vx&VOY5Vf{a_pZ@(;|7RHej|=sm7NdX1+#5pnXQ7q8 zO7q5_x+4+DVBw?WZ@!*|t8MC^*lq@jpzI7O(osW%$}nhyngvur%KKJF<*(ozY-(f3 zEw8U*?$^Rd$&a!X$Pl)DCE8YF!%bI!R3qaU#S9GLoE4-x@(R92a+hrr64YBvB7R70^+l@?)=H6 zpO=8=x;;?!K!SR>P74m*6ROquMrD&Tp${QWT=hIhy{$}q@Li#yLK^u5U;gSa`Qp(o zD95vIGkfUvVF&ZqTlniT{8~*gvtgd*s0-$3cF6{|asp>ZUmz9!oodb>z6ZP>mtfK? z|0_+iACm1{{8#py_ifqHHUyWpg{aTT>ww%A&MSmvYWYZJ^AbeE=H zm~C)1z)TBFHU)E-ewq~Gugt+1AeJv_Qs4?xekRBQx;m)=3J2qA{9t6j91X!I>)Xh9 z{*k2jCztHftdoHuj;_B?)<;zrJu-tE^G){oh_8?vTZ2cB!>_`WrQM;k#^+s=c2#@X z)jujl$QW!7Fr5&K8it?tW zU4;y4pfFSGP_Pns2&&6T-gl9Y3XwW&+(&wh%QxM)Pg`aSc0kO(99&J{NH6uE9Fm>!;z}O$>r$pyF zQ-G5H9CPOa+YNZ|nP2ZSR82gkB=GcWVkD6uY%h3(^G8}%c<~4x-yI)NBe-3E)pK4); ze_N^rKWJ)+z0%`o$&&tuqGA{~2iaiO%33Ct6vKo1G8NYXG^fWh|8R`uf%RcyIpx5mFV zH2!Pi8-MlBdi)cyC6{&)OlAHTm%WBp&n zyVCz>9j)=N361~i_{KkPj~@SLGXAjs|J^A4pA6C8>VHP4|C~7c&(Qt%kp6dIH&V!& z`!%Jp@qfX)di;l4<9|6c{_+^(ztoUTnG`Y z5c&OerWN^3L!A+aq!A#Tq4P4KC0ajgSu}|AVK&&kQ2^lPlItp#84~ zFcnTD1RRk}#6;noJH$EH_SFvN3Hy`#&jRrsc(x*6O()SYN5BQu&3PCfTg#S6->adF-*HXRo~SJLLP879sj2RKmdST-j0vroK1@V-7bi z8%)wmrbMz=bo!ylaAWbo%7o_;@s9mO6Xsu^Ye9kqOjWby-+5(W^Y2P5Z%59*yu|SN z=PfbD7W^IaZ?M_O!PC!k5<>KAs(yX|>#+@2ZKBf;>DjTVW9YBA=3ig4%V5O(ySfSb zxivhihnP!d5xIO?7?I~=l{<{ccn~@tTFKJT-GMo~#J%-z1~vj$giXHRp`QnvO*RAl z9doY(5eyuK>*&AKBa#LaZA_dhx+gIMF=yy#?2kE6HGR<)5gZhVQr|)pe9=`{)S9;EUn$}i>8*tmzLL|v?bcs=xL;r{jR?xH$Fe1YC3O0ul{aZC-si9iE)4W zb$|4WNB@NJFCvMEu+hyzv3Gy+Kmezn8^h4KajXqIFB<8npFZ_+#2;3DKq_+8PD=90 z>MBoAy#7kedR-q9^BZdRW?6{FwO!4A_PP)}*Hp8QPcmovMS7-7aqRu^=R||Q#6FL{NIC~3*vPuv+vh)%-TL0aG70B1bQ_PurmK6 z)<-|T5~{qGX>1TzVe6ysy&5)y5g(gqN`7?dA*KIDEguaE9${d0f*Nj&ps zdIWyfT><>uvm*+ADqm@UpH-JOiXXxM2^N0~Zvk6ah)TYv-&D-M0necq6d74uV`I?} zR@FGOeVd}Q<$p9H+C<3icl{YFGmY6F&4S;Hjqzg=VKzv7A)`TD;El_H@e|+G7}w5S z!sTIh$Dy)NZ;K0voxggM(8F@>dQC9NQ6=NwAAW>BQS2+u*aq>BOU#xd?5i%8ezeBN z_(@0+3O!Y|*@BQVxRwC2f5+UlA^B6t$yCA@CidAnp*o02G=;O?_FBR>C$gO7!W;04 zWLx;!E%L4dJKg-%eF-?h?a`fDh-{Fky-qE6nkTA+q7TX5?pWOKhDOwwr-5~U>eifM zG$`wEvQV0Q-Ep=Pg>qhEqJqo&o0{}h01g{Yi_@zzT=(SJzOoW($tEoku(X${?zmVV z7aZbWoi@`#B$XcjVzh1G5c2mOq3qMU?&JFGjt}&BxWfX1SFc5c#*@vSsLfU$X^zMH zl#Hi^F`isXOedar@>tt=vaRvlu`6sm6uWvn6uhRaRc~Bm8%1D?B-u#ns@l6L6J@D_2<$TxH?PQ+7D6vT;>d zmWr!hxEk$PY%It|)uI}IEG25-FNceas}6-ltM$VYEQD~|RMjFpgEn0)2WN2|uW?)fEqC;o(AgSoPHpX6Xmb zJ*@IVLgisx3&B_LDDT};K3sO;CAf)r7pKUC_A3@gK2nhynYacF!*3s zJeZdFt&AW2mtAf&nT;ol^^;YhC$nW#Wv3bsu}I0qtL6X@jlXfBCws}0M$j$iyfukt z${4OiWk-Hi$GQ>myPA3dGADZjCnC4ZKbpRe033t9uqtp!4$4hc+=w43Cq!bv<{JjH zfUy+`u2W{9ge+3AkWMx}F~#M-22*8b7HU77j*Hzc@7_W6FpcRR%$G<{5G%vd0%9gsNVQf9Wqfc zfA{^>5SudpquM8qxy!*Iq4{s*2NZKS6A3iLUZIm)x3>bqlL*g5l&ymCg+<5ut%TSk; zV<15)xM?2^eEXF&;HZ)W6sr*~kv7`M^;RPUxCmCDQ=YHiVjG11t)zYn(slog1AZ`) zd7i94w>GX{`uTD(oYKe zX^DPpl(q@{f1YorI0p~rgeC~2HDqouxlK#;m+QeqQVLlphj~2hn8(wfS6z8ExSiR7MGs@DigX)uiaSgiDr}zk>lnl~AnBKY#WKOXg)uC}n zLL&6fdC^BBi4yxie>raW&d~4;jvGGaOJaTvhyfp_aJJ#!#D$+VFA9Fv;v+u%sM_(- zF%$He!V91Ak6-scIR5?z#od2~#UGeX8S3G$u_avSPWdzrN$2m_AP&D2_#3=Gu`5)n z`TnY=zn{|A_Wq2fzn|UO_Wpo4-apwIe`tPyeQ;VSYz1chx_AO%A%#u0nuI9RerAQF z=}KK$zUNfWjg8I;GDjp~SBlHB?ya*y{GIr9%=JMKh2%fPyHx|jHK#sdc0$6e3q?2> z<{xC;{l^tU`Ej=UJE?cDo(@2AFyU3(hs64;H11p0U+-NIczWM7-ZHH})TjCw5>I43 zT}6ErQeX|lfqHdJBO?u*Xqkl;6AAxZVvH>lf;Tu93!p=glv$DA{d_n$$O#7(;PGJ9 zLR+#M`9x(OZh?{;>$%e&W3vi@biJNHTmb{ciTqY11_Ek0Kq?2o1s7Uf%Z0}8YcSpo z7)n&nw}Bz_>7oh05g={%!}t1*c_=6=H2*w$U6B8HAlMo4A!DT(^+8)gj1Kf=CAz)C zA!(EQ;1crjE!`UQ^BSoGga&V5gZD~<_;xkEQTaPpGM1+18y)pvM^e8COo;kLql}K6 zx}&p09l3C+rWyT!pleog(E}}aXFsPH?QI!vxQkGAXs)Hv9L_Q!+-pP4tz>gqMsvWc zM#8oQXzObxqW}q2p|*0+)^o-RGeTc%D|dl~gWkAQ+uzhEfacL{-N3f)HQLGxwUv#w zE;riB)@?l&YU>`hwE%5Zoo+w=c%Yu8ppqBjQYHioh~Ok%OoByO zoDi7B*ywWjTlYy;KQtg!KK6b-rDw=QAnnNKaf?L6KGtNO?IqLIvfqfp%@?qaJ|0jm*%R+Ij zIj>8kz78u&u#5t*l=cS98y@yOo8S2arwJHtgZkkKRuN&2TM$5@IYTmk$7VObctA6zQr?%tyTQGQz?M5*V8Kecafkh^sRQPjkiCP_l%4qY`Q)7Y~k2YswH zXg$7vhQ?P+8kL(hV!_pY|H7c`wz64l80^Zk5LhF77(!I6-&RvPman)38(OH4)19jJ zA2P^OGW8&VI67vy1y6#{`%};AWg8$)Fvl#DgD`JsAp(vhbYsyE%7n5Bye-y4jWM_>xbTV5zt|C!y@(imM9~ zN;P4NWnk*nyJgHny6Z6mnQ$7x%w;Quu+#a08Z6W1CA@Srn}cR94vqW9L>V{4lR-{g z83LMUQ&;NN)sYQaKU}w-p<9391hn2gvh_Yz>ntWkndL}xN^u($CUj=fJt|bM>;Mz{ zQ;!+S?Bv0KFmFRyM`TsNv~%j@gGoocS06-jx;}q}1;y_W#ONl~=69umPlvDpC*Lnk z=9v!(Wf@`39F1lme~~KRCi-Bnze`ZLuUmt`o}vZU04=x{zlp(`<%Ddg9GqaH(vHAC z={6r~*yiWY33x? zr`<+DQhKh9BjG>XA-GBJLflBfRxL56Ju56($`988y=PvpONg>4ZQjHu@i+Z!19xB=i7ieWh#(?dfTWiZAURz`IFxaDQiba-qIaAIcNf`Hl9@aUFhs z-uEpHKAN-3DO0pkiY!*cY(6^)C21GF1Y!d`m--Z29V+tAD>Qr#xX{5)>P9Rqi>;2Y zP_!A^S|605R>;#QhCh8l_|tGyXxk6URrBQOL_TfQcV**!!yhj)9xqa3W z8c!#gPvfh{cVRgXm2r7bF9+|g4jtQ?i9yOQti6b1&DtMP49DUAtPJ_u`#;N%P4svl zljGrp>7^1il`sE!e2)os+`jWbA>FDA8~)^FNGCSVb8~p)oCnfK`taSUkEdf6ISPEh zzP$`ogAvl!Q8fwLJ8(Jv2uM58gWsaq#nFusV#0;};y zK%)SbiyHHy4i|v&-x(Ul=k?dWKXWX~EG*8l9;-H=U&;pnCR-wye1Txr$fvG+NaV3y zg1H@^6zzq?g>NiuIe}7JHR|h2HK6SsRc-MA{i8!PtTP$s*RP@ab0&i~g)HY)-Z~&e(OL)@%Ty=#t_9yXZfM*j5cJ1xuM6{P3tv&TOqp_s2^MZekXhlL%VNk)+ zjD$*M>sHFJJi)=6ClYc|(3zr+cYX+04HrGkiwyI^VP3Q{F6bYf_MsuH)b62%s0e(% z&vYt9K1P>M86uxn;ZajQp~y6Uzk?16mb8nCZz6cvSH4a_vDFU5vNDT?roA(|0+!&d!aC?$-5K!Fd7%A+Q_yz5a; z80#H4l?;(^4~n(^3B)y4KSiKRS~?bu)tf^!YCu+e4NNf2b7TFQ)dUR~VbT~&Qbi2J z7jprylIvGk!$Gy=ZDo32B-f36g*meS;Ye5BloY8u42pJUE)ABG);J()D`b7iSD4Ee z0Wispz$LEOGW}47B1$2#VkuRb_4)`-KY&ukDHlCc&vy|U|c+{hSf27LZ)vzo~t973iXj%bcL+9)!PYCW0xC99ro z3>`Be#*K3YcIpxMiW|Yk2(+m#lNKciNN(jEMrL$HevY&S5vR!)Oqclm0HeL7GP<_p zMB++g_xyW+-OkdUg&SLksl$8WsD zA41r5#=x$BWPNpkMA93;f)y`bV|wS@W=T~tlxGr*lp zVTe5KzcCl;`mWNuSuR=^^rjI-vE%j?Va6B`^?b|YZ#T--6J3An`srPF?ME$LwR=x< z0~T#q?rY3e^f>)z6uQSg{MAorbN5xEB4qLDVzh_)pyBAWv4>0)BZ zTLNO&@=fV~xy&WJ`ns$Y>#uHaKYfPA%|-GGRxZM2qT!(LL9Y;yB+lb_kVk)Ve(QOr ziL^#dZ$sLw4$&sGewX*Qu@@bTJ_b2yF#@u|Bxnb0J zT9XJUoSTbJH_)uZF~HS*vbwClM$l^AU7*z*Y0H|IB{E2~NS1S*Ol6zPH7vn%n(DoGyyG*Wh2w z|LO)xzoDh`_CU%!+66Expcc)Hj*z7j`2MHpW)AIxo!UOQ6`q|KIdgW&41#`oo+P4O zuwauAYqj=!^48D7*>!hnr^tMaW)ZoMo)Bi=nq}vM%BYp`j(Yxa6d%NGl(`D5!Ci4I zw5K}{Up?L$^}{^S-Jklm*2Q=!th~8Vg8L2qK!H3EQkvG8%eOJRxREF42@9B1M04;MhH+2^|a?b^Eh?liONIi=Y$zT|5| zFCo{ABf2DxC@wK|u>F+Kh#&RC%w*r-IU`$6WaKKU1OkzS2IIV}-0 z^n@okLyeHB?q_h$>k zI;`bgD)`(E>lg8d${2Y}HcS8Qy#4ZjdW;aUjsL%lRzwPGdJ2buv2>)m$i`t8Q&Qw0fGECQCs=FJw^E5(2t$Ko z{lHOqAw4gvJspaGOF&FS1aP>F@-R&TJB=X)zOjA~hx1kr#^0_BCPfS4)X5o{b4W3! z(PlO8pO6=5-U(Brg_KD|Qk}~&@>|SG_0?RUV|!UE-U}W}bw67W^Nl(SiOkk(R6D#O zuRE?!7B-a>l($@4K6ZKEhIv8LqT=HguEdv_12eJDjx#}+66n>95;LM~B2KWp{1%uH z;%Q_{0vI8E2EL8dl@s{1U*9v+^%$So@lq7|bLPD99TIVZvb&<>o4gWZY%@xuW!*OC@5&Gg_XRO1q3-D!vQh(ho`XH0t zXM^yEpLJn^+WOD;>JbfRf0=MR0nr+bN6-davseCv8I6RMqjt7nmv>!k>jJVv-1Z?)(M_`+Ou2 zcF)6ln*J_qH60!5vi^;XKX3xL&lbbi{Ncs)GsXw$se_?fe=*ijc{*ojMSY^9@fwm=5Z51f3{RMa1|IML;R;OEdGOeW5$0l>k$9JdUYuH0VO*w zP4WC|^A5i5A_nw>+Rog^EE3q6&)`%2sgoH@<pCO)#!{o(v1d zQOPm{l%L}Y#jG0X%i2V(qFo{3+G;j||fc(9&5Eecco~4HI&i_UNIyH^<&d{$XvYIV&mgqGB{HddGLy6sv^TaX^!r1psa^)tL`Y}^WzfU(sTvVM)PZtnn)vwcbd5()z% z9pwaBV3#BVV~2?k^_M?IM`E1%?~mfI6z~^dZyJC7y#9Cb*D1ZDqo(=!tMKmsMgE#L zBa**9$Z5!5sgi2YbpHC`gy=|&lfP6*KRNB93-eRG0J~Gf5T{=uii{q{3v4CV71uE# zrMfnz9SVn{h_++l)zq<&UKyNzn9Q(Q$H*+6=<-j+bi4-B?%R480Z187J^K+UCf9%I zHK>oXOlrBIo)|P%zW2HN89(^V-0)PA62x(&`BU+8pC2vzqv}UT<>jJt&dGLFT!Z9I z9st^L_9+RatzGMDaHl?){5&9n+TR0PO0wu+EmgiKLW3K{{K+SGy%Zvr);w13E_MzWEqpTPW!Ht1p6eF^^0)sgH)u$rE(${T%ea}SYFT{1lp2SiQ z-rU*6Y!wL0RDBQ|WpcLq6R8e_P<{r}RcAM8hc66i`jAF315=O)n788ogusnr3Uw>> zGaVa zW9ks+MwF(03szmrdFg`tDID+0duJ-nZh=`EJd%$KK)$C5hWsi{n0n(5$QJ+E^)4Q{ z0AgYq^@p+aOE1zIuft~v9;W^zi{-c$QqN376pF+yO-l*DV7WROmgwCv><%BAd9yd+w?d(RA&9%_%fbf^gc~Qo+bc2D{!Y8Z_mt{ zEPtm;OV>+Fi=`1_ax%M@M$ml;zpxQDHk+T%EtYmBV2M|=E#APQJf=gsq-Rbg)UEg$ z8|D`rey|aL!g z4_LulAOu5vCPQ_W6?**xS1M3IMdyaOQYKUf9;E+ft#f1k2~YZmWgue!|1$^G3@Cdy z)xRa^p}7f}w{+yi;Ijp?9_d)I0fn?*TZlX+f4kTC>uz}{d0VBmokTxr2B#3^3*e}n zeN#05`ID#Y{wwN-bv0ZSFt4$uhLOQLRa3L{+=C(%Rumg6q-!q* zQa?n15F0bV+-Alqjp`!PsD`YoB`V?dEf8_&&fDl%I12DkaJoFcLkp_5mL?T2sS?~) z#J$>lv<7___{Lzw8YGW*8$CRnDLkltTPS`}^)#MiOHKo4H2YCMM~vi?x;K-nqHQB?JRfq%Mk)$j5j_GUJM zm}c=$a}EDA?dCt)e?ZTsf7oY3I6p&peDSuqc5nAQ*ij zRMfO;FrNvJcNlETrAML1Qipm6tJ{*b-A3Ww0EgrMnI?e9KX=AhUsrRwMdz7-vdJMWe+Gs4qmbINoQeR5 z1GUsxZqC4!i(nUn8IC|+2hc6+TiVA&tW11NJi_Ej+K``-2;z;2UZI1DCZUOtr_36E zASvYj)ND#nSP0kP0xl;wpgXj|7xQo;g4p=b2Hn+d_t5PuyN-R9BPx_lTB8YRZ**3! za1P&la>W($UZy(pat$<^rnSyyaQ{ZMtA^1$MoXBZ%zw!=*rF6^r$>XQ)bRs|HhdKy zpd8qqkrKd;c>LJyPgUaOorn+d@(K~Gvx*aOU^2=yYPAgFF%$Z;OAIPpFV?=s|5w0P zC_dRR{)Q3A%?&dGydiuiet7$BK7cPL@r4yU|HC73c5Fi+=xk$LT+Vu zn~2#Oc8b4*3PhIsfDWO&SA z@$SI=42=8AF&AcH#!J1Qu1HJtAXJR!kW7-?>X|FB{&y*vNpg$DxrcC=$yq5G1ewSi zN3f?F$p_q#HXY1kfMnGoNBNv+Q!Zqa$(pCSCZiGjiD4$ooq?@UnM}`5Tl{Sz^{3XC zl237G)@+$wtBs^s31q+qhKK}?3$cADh=Cc#JiBv2l~8~Iee$f)01#Tp6+F5Y?!4U& zKa+B(FI|R`1dgQEW3CkVfub~ZA8zQV3tL5m#88oCULd;LlUgDct9}#o)J3;QibiiP zhu**WmZRcVjsR)VwVxv*pVX%!|FbT}oYtE*p)Av7QC)u(Wj4A!BqKKz4emo_IT6J0 zCqMB7xmS)brt9`CrO7e?&euY zuM~+cst`!Vd}C#<@aeXPh5gH(HJdcztX8Q~c8vLIYO4lQhw!NZouZFi#E)(Ibi@pe zIsQ%|`vUANat1<3+TV9GSVc_zD-y*Aw_1eG zATlJ)jIp`(+YD>sYVS4RZV4>XnizJwSQD49i%dz>0G@NC^cQV};bBk1zT%c(d6eeD zD;b;^4)Uqa4-Sl=#`{qgp7ER5ktLWJ(^3NcsqlQ=j=xH5h7<5%N-)D_h#|n#hK|uu z9(XcRL}~td6zB-q4|LywWD)Y#`KJ`c73;w#4VN~l-1m^7VxE8M#2PRRRIWVlcQJFp z<67A@`TSGiJ@x9L(T6VF7H~xJm>&Ogq48sCiOiH7T*;Z`t*KF#gW(r15tvmbjaQzqx7g;*aB>-p`mj8SwUU zTzO~bly%0QFwu{BXXlo+Tgd_f>ZW&g)Z^$vF4AY%O%Ih3)?4r~yBL)A2iV#N_Rr2n zMb1JkKiFBiudsjK+5OQEvjkMnSp6(>*hdw-pZz#iq~x|O%Ln-rbB8CE_4m1w@`fjs z^#Yx7fV302hG2>#aXT#+Jb_bAT^Yg>ZShlP?(j^L59~18uLb^N8^SLMmu*%aOK`8* zzJm!o;V4NC2X&>r$*^l_zcAE3c(-F2iV&JR1F=sV%7Dfcrto(v^~)XHcZYF6j2Tt% zb5H``Dq^@m$A;kN)G!GAk>f9J z(7($*evF+sFvhR@KaLU%!sv9!b4r`MA!$Mqq-Qa`bwq~BQZbnI@-S$s12Y;*lrZoN z`S9nE{)SdzFc_zH_e6p=)^|4Q@@lZ{92MMWNMXt3c-Zpt7lWx&Z;sJgbRrK|g{l?| zL!ZM8Rx3mIurtqC7A!v!14e;{HfV7VEKAg16U&Dy9&0o za|8J(BXDb^UN@=0`Qezm5W_Zj#982*kXcamsZlRf>v_@m@FtWW@XKH`PmQ%5cq}y3eqd=#}6%Fw$t6e{xn~L0+#cN7ZnAb$he20;g-fllgDT-%Mj{WkWglz$3CGflWZ~ zAanZLtOs!Z=(jL0Dp-xKf!EEnhm}~YA{uU!* zCN?uOKDQf%sj=XHB|$j;djTOg0t5;8giL6a7zq(QT-cnYS=nMa2j>t#mjLJ&0B^7W zGcE)^r$KuQKcfjBh?W2T(SYbSLIl$cIpxHRxxBI+HV^jSBu3`$sR^wkk#$Q5S@#Gm zO9+DWpWU$k)6D+QWB(Z%BauYm`pv$S$gUodu7p2i>`zI5k2V~;)xUYZlR17z6&)%K z0~w{yM%nxq972vsBO^mzvbG_NBYjd_HiQuDSI#ywF$Ra#BWTG&42fW-4P3p4P{R+o zFov&tmI5~_qa7bPAUWU6LZ73G8xA-mjK7hi&t$lQU#ot<$$!HMKKP$Zx3>pS+)1OD zULo#abm8{m-w%mEvalM~Z|^2txq{|L1kGYLSg2P%U`ECucp;kFxT?|8TlL0=;K z361Q=rj&Z7RrDch&)_6O%E(-DRGn!M0PEAIXgOmIxWR?szfVK{KGWbW5j~P`kbW`F zIl1w>Skk9cBy_?1EsiK#CYZM!t6)K)@gKK*fBfti@;&{ic;)-?nIZXp_oLzR{k3JW z);5f3C(zbot&TN>~5Y@_kr~2;3c1`F=-Np!g(>;#l&1MPdX@ z|KH^MwuI#=b8{`DiV zPBT7gM1GF@F^c>g z5(St8lAkX=h5m2b8Dr42k9YhUIqoLPPsiNKko}fz`G-<=Q`?aUew#M(2wHC$wBFKa zx@Qy;)eL)f1`6en09{~Jtz^#?BT({$s`-kEsGpPow|af;3S4b8X5wfPn) zyu|+hC1QNCr(4X@3Dq=A9aY?*K@%z9X=ts9eb$Kou?+ZqzA^mHi0nVuMEp)~)INXr zNq|sB7ORN0uA+Y27lDK($?vH4q0Xua1^W?j5&QfcQWy>o7eqke9A@j2!rq^;n+o-M z0WVB+oIFy45*J+Tmk?6LI+^uYYpJDgn(6kZCy>rX1Qf2wZc_RIO=)LzH$;c<+r${F z7UVoXj-)Sibe|2TP0;kG`7ZS5ZOb<1h0s4<|9s>VAVnKZipHD?ow0Yp-snUTK%3&9 zHz7Xr)zDb-{qT6@`KsA?TG*& zZuuTB{a^105axd@Q!x(uM?xf%vdQ$f&Ob5Z6J=I>CZ7=PAw;q4_Z|OZZ0(S@1ejnQbC@#||j#PmX6jVR{5CKz@ccl zBH#A~qR98pzli`XctG;~JobN^#z-XF)Bc_jrK|sH`Tof62;3c1`M$R;P<)FjL)n`Sg-4WnnAwjv(wu)qSKi1j}M~A_jR8~VB^5#`-_-NDuew; z8#Lw5xF}uy@5uK)GVv+jFKyX;@_oi<5vXiN`F^?4q?oTsv48pg(Z`JddXVJ%6*)2F zdwK_#MAi47A33R>HG8yt|JU+x`M%H}OTK^qQN&=IS-x-m4IWZKtf{D`MFJ4Fe2+K& zK9V4`*(}mF4*KtmKuL&En?nCa;_om13W&-HQ7rv4ZhI8{Gb9qU1JghG?0*jn{Ke8g zJ3frSLX+j=|Ec(Uo5%qj)cDN1`+(vfG>T)&{|_RN+$8z`Ul4y^^nUaq{z38g?@s|0 zu8hU#>WB9tpgSn>8UOJyLh+e@JsB?FpSU5Gd{2)YU~|j&o1t8LuZ|%~ z)S?}c7>+mpJ$8KNJa)SM#YW_3mu*qxXR9c{98i4w{hQE#5&MrNKbO24Iqv@*`~57y zs^c@4exA^5@tIZcM2xQ)?e}Y|f#34R@H-%~|0e6FM)PO(-Utv*`j?P6mi%6^Jpu_$ zlHbi4pBV*s4g3Amgo9weZ+biWShXNOsPUOA7lIUFi0Xrb zvyxb6Z8ERY5h=LqS^&45d#)?YgCDW4f_qqy1BN2-SpR!d;|Dol{24iY&ft7zU}5|H zV4Z(ec9U#R@P#E_8DAv-D%XH7$Aqt#iDgdaHUKy&m$_SSR!Jp18>C@ zu}|NKAX~`z4|)k8z;{Z1*nZ(Vw*h>Ps#(NcIE+Y_x^m_NIP6G3^}elo08E@uUoZQn z0IXR?ZVxw_4t^z4t%Wvtsbd-gKX9p$g80Z4;yBw>2ssUzh=uzWG$6{P*{5 z(Xkot{-5~rM_T}?!PxnuodKxUe_w2GM*X)nVrb2%|IWJx$h}P?H~RYdfXM!vEMH>F zxA)n9#)CrK=>4zS5;6WJ_unXgjU@8#TR@@+|- z#?K!k-+B`s^{BwpsC-K@z_R7jAAI?CW4T?v4FZ@k<=e&U8m=pV!EZE?>q)_TNA&M1$-SKjyAX4i#MI!5f;s-B&j{eIv zMq==Pl&+c>KbZc1D*ifuV+8IFYW#KVXFze8MsY0v{l^UvFg3w`_^;TX-Z91y|DgD5 z=`oK4|I^f1@_q5ThygaUeE;@i zVE8NTYDbC^)iDx)W|!|*5`;&dj8neP`F8|Lnq9uX{}CX{puZnWzVBNdMZSN&HUhK* zTVFem{okfB5=j(^e?;l(zgoUOvL*s|2UWiB{SYX=MWZ;Dd_OD_rvGp9z2D0bXb;V% zKOq0PJE-7@#pvpm+6d?lihS>l6zr(=rP4o%SH6D=76mV94c6EVPM zmhYqJD!sZimImz?2|(QPJ+^)Pei=F~zqb+jx$3zn^7Fx$BCv6Q@{|4VxhKY;DL)59 z>8gqHvzhXrx0IUx_i;})pZ`7XUlFKmM*sWQX~1s==^JbPa>t7i{WsPBZhU|GH3Z>J z4MHsWeNH40O_JZuxxTh_D#^_J=cOot-Te7+lU7F{+$P8m>iXJ$rhpWaG%5D)pVzKx z1kiZ>bDkeoqt7oIY!-2xv+H?T9x={>!qKD2E?-BKHpTH;m2!5GK74AM)bdjAqP%Ex;W#Zy6ULeFP71L1^lIIngy|m$Z z1x6VJ7tasbAdO7P02k>>6)0bLgc@~*?x@hkLe4E;>V-niD4mXalYuL+Dx>Ry6t2Ya?x4j_KcRh|Xj19tfPj)*)}Eh@FQS5-@)yI|qo%jgW5fEM z)U$LFA;5)RL{#U7Zc9~5yu&j9e95n!Bvmb6=Z8Oa%=NYko6b;$&5X;!s#*%PJe!xr zHRVfKMLN}br5z*0a7N&V257OC8Z~~JW&LRo4xZHU*@y0KKK(G@`N+`>1y3}keo3S2 zFW2A*m!@dkMl{xV<8F{gf3e ze$V*hwLkW=zBvYf8vJ#8^YPb?XCsEzjP}P}%YobsjoeJT=#nZxlwac_`)@LRiw)U^ z@V+IKY!{OM(BBxJSzD>>R3sDJdn@b|7Ej{A3nge1Vtbp~H7k;l)lbjZ zVGcg3Wrz4L(*OSIpB`iMpJtBc7}UePaLfJBzp4w84KQ=k4B{%E*;jBayUCOe>STbM zY~wO7WqeWFZ=u^CcX@dGCmcZgX8yR9KXNjYSe)j;_JvgLC@j_O#yW88B;BF0x|*$C zcv>SbJNOI-=$$ut(PQgL)Akm2z;_PCUhTf*WpDe@3u+ITGe`1`` zJcx+GXTc}gN4E5_O8R)##8mW8>EEi4ZuXy}OBO$Q!F{NY9;IjX*;8R0u`<-_zoplg z%-+KI&%)n$=J>!++0CpQuTdbm!!58bca_RG8(o{87}mKc=#T{*^oOu~yTG!@geBUi zz&F&uzm>mq2@jQ{p+Y(rnRLb}k)*Q?$_U>cO*N3krYDS8_4=qj+p{UEG?X4K%!YC zgty=wghbcaeNZ4-YC#fj|D)OemDe`f|FS3TOw)w^qt5S-k=hISF+&S1OMVPDJ86Ra zIH#d}I!ESTVLkkVioG4D9fgyzeP_YO%&VP_67{K9;o7kxDN)NURnF`ZfAUk;{1ub7 z+Y9|MY5x778TC*vJYkGFxQJ-h0_`7y=G%?=?=<@-S;0U!-dRpgqWxU;BaUmKY{vP_ zKkE*e=rtW_X}fWLpBiWN#FxRHQXP+Fy3tIwt`zoX69kbFA;intj(B1LOuO*HWd;Y( z|Jtejuk4WjC8rucUfTc4biw~Z)vs9o*FZ@E)BcxkMEhUT z30xq|r`>AuX?FiB7w6LrGF^wNjiuK(Rg)+(HYk^FH8I{`dFFpv4|SGkXA1|X6O3A zqv4(e@w;8)w|lbTWX;*NlsE)_wVzulc=q6QWhK9_)*d2!sT$)sb}A*r2dx5;5_sgf z@i6>X-t_qH*AL@_F1nW<-($K_xSR9v9mk&!@^1EcmB;&0fp@LD=l4c^J9ot|?Hmhd z;OOoG`nTud!sER-t9bCd@mWLWjmCkOIIea!TZG9}Ub(gGTo2%q^M!HpWC4qk*QuWl zV~_f0cl}2CbwX79RD)MT=Va=pc#N0^5>1*TVY7r31<^sTIGJb2UWz-ZX}Z6F9Md9Y)}_^hF4R^r5B_}!(G@crVfA!k;8T6zhZN-X;; zopTN0>DiHu8TiK`^0NVu^vcmGd{Lfu2?;##?L2ftmMGMH=^lcu^e4}s=c{^t&nor! zhX7^`t0%A4F}F9~cHq-~SHeR<&KFkicrVZNCuDLA$s z=W18gI30J%31eaXd%rPzhH1L7a%1V)=0H8Zu~1D7v1TI!j`<8xV!OH|1;f*4n3X$L zfDL$P+mJxjuTTI6?$9I@UHnbn%u&&=Cuf;(f-hY?5e31qYHsf~PtTVRWPo_QHEIh!M|dZ9!6~ezS&1J1UvYpvj^g{yu~4RC-Zzf9&!9QC_j?|c z=kZNG5{GOLJkpc*j$Sd59hQg- zydA;tM*_w(@HXcg#m4AfCyHw;)=F^VKG6opDAJ9KrA}^ib@y+B*GjM*?ce32) z>WMiFL9^D4I2zVuj2S8ND{wI|;qh+g`}>#<0>S?sKC4M+D83kaPR>gNFfh8#e8?_z zqiH-jG|>ZsI|Jo=qw7AZK-xc!x$R8RT(JvU2nPUI5kwc!`e_o;`khAW#YAhbBMtfK z!Aa+HSMxp&wkz-r?Ckap?hMop1Zq!vl&C%2<9%0^VXYfy1lq8)4Pzx%d$p~|Kg@h^ zyYk?{0`JiUzR8_|&dY($HB=02BJY=z!F{K$iBtFWb{k_bi=ht=xVIUwfjVU;H?5*8_GBI)^dbzaLWe0 ztzp#Mlwoo8hHe}S{!S()zWY;Mc{g)BBYeQZ2w$(Z(tk&}vEJ-@m~V8;lwsZ^p!k`8 z8noE10$2>jId~AKZGm2L?3!WT(P+int7S$0e0i{|aOYqM{8e}w1Od)kf*?HHcnvU* zYyTOE1^$usfl7g@cKRe@6!VmwL(m*adEFAAwQD)d+YSx)k%l{{NoMzGkf$Z1@0P|~ zY;Qa=R2~@sN*pPVz|rWJA~OdDA_DW225T_y3>MIUkn))UL>93pq1LhBN*D^5UxJoT zab4hDL&$(H0@bT!82`%s*G>Ka+S(Fr0D9)b7TTW10<%UN;Wp8R#)O5>=7WyPNg^1w zt13J!SQ`u;g(v~mXH$f00P3_Kc#Vm@qSM+Sd_ zaXulfh^IJb19hyOKV$Xv_rN@uec;XMmufE9KwO$!Kn6`}3oZa3p70P6+Cg261#!V9 zrlP?GZNUXe5F07RBZK6T23*i*hsgpP9NZtHRv~``M}4bj_`M`2o{=W2p!MyLPAFxWSO1>Oo8$ z{2=y;T-K;X`X}WxJ}dA^exHHQxcObZdUyQXF7q?c1tv2MjTrwl|4)X3He*y&?&Th1 zf1TwOL1;}R+ZB8K=ir>yU|SbYX~vIk?_O8Mo@9rAFDOU*DKoGSSLO<6L0+AsvQoHf zjl1V=cg3E*js=tP-I_mJ9CNo)ZTe3KX(2+v)Loa{XKQt^)RTu1wh+T$8%I~*zo>qMuUAL(*f9n6 z(MOKC?@@mE`nYR9rK5E;nDJ;Zz4CZBdA!?fd=KPGkF<`8J;v%KeKh_(|Tu#1z($Th}Bmnz5YYuDB7o7vSG;654PwKLcc28Cs8 zcnJ7^bPnLdmdpa*#gLhhxFfvnj;zR^w3M_C*+)yTzAR3IrxoaD*hjE_U>3Bh$REh3 z9hL2Y3pGWaq$Q=F)bryzj7JZZv=q#SMrNf`OgaMeI3mR`r*p~e6jQ`l1~8TZjBNu;Xmm}9 zfi7nQbPf0i(FGr1yPAS^=h&D!ln**8`w&w@<;f7H0$uQ{fg~PIZE-}y5eD8C$Erp> zfLW#SvqY|Tszv%2<-=z@@=kqxdt9O}aLT^M1RUdEO2@ylFv~>9&DkXmE8<@dgH2uQ zkqUs%1c)aQGJ8&Q*Q!%T__N@!{L*5izt_bD{-pjR`~xS9@TdO?0oxSEg1be6!T!Nl z2()SV%G{8pXvV``zhwJDW+Oy$LFZT5&o_d z3jE`MJ}tKZ2)-rfqpxdt`o>(ImXIIGZeG*aN{Twl^`N zy*+@F;VBJ<36_B?OS)kQa9^{E+&GXM@`^)o`J9*(>k7Pk;EkChSO3JFAmTTBD9&8S zBq{Cgs`$BGS^HIB00uos{qxqqk~J^2Yh!++65CG@K%IGOT+B)N8;}0214hH_&&rT~ zL_qFg+-5Mt?$H|hN#X;ug&?Km0Z3Rn7*OEaV|a{ z6>Y!<)aN(XPQQ#%Jn7qmV^n?ViEiKcL@0lBi2iG*4;C>R*6q$DNL4&HGZEeDh~~BE zQ;*%H$DSQT+80qEKCjw}L=W{Uvpski<~QnPT*49N<#Y1uZuO-8Nj-$mcx0T!lBgzK z>iflUF_dU*;@A~tBX^uP<;6-URC$!vh%xNx0v=?PE+GXF=zU1wFPPElrNGhPH!w<(~mb zl|FhiP|U}2+sp19DJ(*75Nw4CT2i^_d|6%R;XpQ zWbgo3Z)XVMa|_Ux*E4`-K*x&wllZiw@^p+6MxVMAZ@|fdokcs5p@hwWW2xd0gvN4$ zV#jXsP-xii?7QVK6vC#<-^6x)A+JxGtk-tjpb4qAk_=1b~qMDiXUU4%z(t%OZ^&# znO%8Xrca?Y5$%g|{4FN(^n2D5x1Hmh; z`GTYJ1mTqr)Bt&j@#T(&=l)&5L0+j?Tf%j?I<=A+AMoU!!e?BZl5$gAoTBa19r5Uo zo~CJ2vCGM64)L!=8P$MhCXx!AR2)3suvT$xN_7UW_>>msAWkMqd?3E=@pnBL#zta6 z-gd{rdr3uq7Jj%mtA!PxF38*IShzxHk~GETcXAEeF?SK3r9>|9_nHC&r3KajT0)j0 z&X^Z)%)NpwK?r11T_N65iqo{{@_z=Q?CAziXl6IiVk@LNlsI&gRtYCi=7SqK5a^yv z16X66)(GG+1bfE&X!bCFQhR~;4Ge)05BK+P>+xk}VEG~gJ|OZ-!E=xECeR8I3fv%e zCkm87a91dby;H&mK^@4xR_t@pkBz%COBRtm#XjHicw_eYR6gjaJPp!AJtR-s?DL*< zV)VJ=`Y+h=C}gofes#eId`Z<2pQ=6n#KWSZn1uh-xP@^st0<MIkv2W;EdhF7fq!hh)>F`qgaGSa(q_>712YSMzZ2p%{JUA|(hUp)r|gzQ(QR)e6BH?RehZqKC&7-h!jv^HAZkguVzS}%&6kE%n0?T$`?)k>1&~D_9umfk3NQbz* zdpYqyDEuT5(xmnk`KMMB&v&S+9wCmq;NkY7?}Ilm|BPl`b@cPXC-|b{Adm{Ghm<$2 z=wEKo{^fBdlh4^Do(%lK8sLShd#8LZ$f}diJBDB1W{XQGP zUjd?4riTln{9%3p3V_5SN80I0Oc)!Fi*#O0ChtNvF3{cifZe1lCYVLk#X=Ba8z0VQ zLo@kEFGmM$ZSc!Le$o2h7=q80L4R?nz=8_go~)VbsE+T|R{|OXs*0E4Qeqa%QRe1A zjLi*sn;kdiQfJOtOU&5QR}9jc`9x}$H#+7?)$G7R;W;}2w0xmmV(=gM1j%m{Ey8~= zcww%vms~_G`*Xlxxb#{VoDc8z3DwXoKtzfW&CDg=rID$eocZFf7P<1)U$-7F3${|+ zzVsTGuMJ-2$&lu&cq{aRJFoUSg!i|D!@}|@8;q5ZyV6hv4tQ0)C&u3yFYS6yFZTjbJ*^WB5-%! zwyCK=h_M9(zcd8r^KH?<=~JU#4c!QbWw3_jObyFhBcsEz@Z<)tM94Sgn`=imagrhH z7vX5PzG?g~3C%B%9flB*3_QW6x5@WqKWX`%3DMrx?cXnuCiW4ub#E_Q$IGDZ61knm0VYq@SoLgLi2m9xEI5 z-l~X!O2dJkb{Ve6w>C7sVr)N3YPkEz`>x)5jX;$& zz?81>x1`cQ10@@%ogQc%IewgHY|2kPzc9UY{J@-E=IlblrFL${+*(-|jhQjnQs^(W zBy=~Nqo*dwc&G8hpPFPJZ)kQQzTPivz?e*!UF~8`E`W1jTgfk(<#J1{N(E!nc|G<(6m1WH>UWj}(_dj8oV?t&@)u&}A zAUmbh;aHJ?{IQ#Up=qCT-Ws)R#SX)SQ~$o+=q&gzCjDkemNy*xtgPVLu=Xjr%~m_J z)z)YgJL%S(w?^~FI5x^Q(xi>|q>Z<%Htg?rI*}2 z6dN!&sidYVi@`p=N?_0?(Kr z@Ts(rRiyrNodJigkhT#4uZ#x*_&J?m?3NA8ufnhP00b!a= z?v;%n;NJhC?n}U5$!LUjIIb8)jA>Idc97J?o6j{yptLpCeNG6j>i0t=&9wqO* zM|a&_T~*z!ODj8P;{F%6N<0{>MCayZ+YKZ?& zxJtp5&wnDWx=*aYb(X&iu2XSk_&eZ=+Rm|yaV}^x<|QS?`BDZlv=n<|;D3G{D){q> z{#lGYqbSh_h7x^tyx>U4>4{g7hIE!_BNj_p0az1Z|CecL5nFH9MvwQu%_sR{nP_Z( z-f;>(Q$EHKd}opUMooTVx+sbhr~e>Fu~Z(i-EwiYuZ>(=?K`Hj7wgrIezpDfD{<;+ zL3V}-*?lCbQhw&Mq&}o2HS%AYKdSW)YtaJ(I(rYQZ#6#X+Vm_OW;#nuV#6AVO7mKxP>GiV#X3B*mC{RYG%r7CNtQ6M3>)FbT1^o z+zZR^DGvFCpeXr0Mi^iIMkYtf@4**Mnz&~)PkvqHdqH1C37=_c_TeUtAFk3(EEce& zV`x_ZDHa$OC9vL#3dr~?*;mF@j-vOF|2Sd~9Q9D=nci|to3<7uPTUaZE$+7oK{dB; z&dgS=X%1hqrWM=ok^{YNAL3eGl-xD&vv2j@1fOg9evCpN&n=J3bS)o%?AWh4)6VkE zDRLv%Fg3npw`-Vd`H&-wlHYTtzJ&V9&PHJEO6nLM*pxqguEUgpeJgVaelg=Q5GAmc ze~Fv$Lu`6MQ;ht_>RYuS{Xj7;XjiV3qIe}mHNQmjuoTrS`%FVI3w}QTdkz0vL{fE= zlBx*&=9jRzqT@_YJN_5*>nsl>Aj`vyKb3T)9f`nMbj45G(9?Xn*N*O8Lswntsz}O) z_~Lmbnabo&)CgT}Qwg#Ui)DPtr=9fKdnk@%vkyb?gax4sU66g4>vyGi-N2khKeXG0*YKEZ z%P|&h=xP+v;S_3wz@!(huwYxbRPdYiGrHnE&EaVtO@qk>CLkr(;FH8^1i(l zf7<5v=7qSM&`zhs>cj1D}bDaP|pzb4u|(|Gt7@F?&oMgi5cIlhcy z`Bsr5d{2N3P=*1-kc_0^h8dYclE=JFrz^f^$iYXnA~2{+Iq*EqT`n{S9(AGmHMk$A~D7+nl0A>x^DKC9)yBsptNPOEq|n4pfpbNdj? zzOs_L4-Zsjt`-TyUCUSJggW0}ULJ?_T?wr)lo->}v*skYb3()7GfTd3;dXMz?2=!M zsjq~O(j6!f1glYgv66ZfXZ#sV#vsB!dgF&EeOe2Fcx0NA0M6U85SZ!93aRp)wdqZ^ znO>$9%jb=XHu>h*JBx9}ESA`1DB29s?DA=LVct2$GsFnU^C?)pnO*EHroH`?hT57Mi5*iF{MM|f=32l>n5a4D%^LoC=O@&aZ}y)~YFMBlLLSq7g8dVN z2_#F5o8dn-+5XM>!fyYb)FcsGZ`P{ZH2=RT{!;{F!~Ro|4-!5?N%)2@*?$^xa!mdc z#Gd@8?hgOyu@cLFG9vp=hUGs|$MBy{^Vt0-67~u)n95GH=%0!oBCtqPjO|~cmi}h> zPcit%P3G@LDe%%iu6{y8EA~xk9)G8gR#Kj-t>|b{%hQ8y8a?1Jym}Uxm!O!}?u*ZA zE1;I$18#j!S(H?0V2%aO1QQ(Izd(i`BJN+1Q@8&d>fbB-Cy(U}I{<;t>j40pO`X5< zxJiqzZ_>2*D=DAs{24alPuPvPgFia9q~_m2>A0ndE|nM@Lmk{7O=4dQGjBK}0ISR7 z^0>+lL>EWsXyZu;9Z`0a=HG)Ym~u^+SpSSz=HEma&6T5wDo1b;I*|QxA&@29+&n-v zu*VGJH&W48&wczOsio66BFF(i84`qlMZY@Q!U}FN|23YBVYCp1)Fa`ZB+72oO;P+H<;EFt;@_Vu|H=fpV_+@r`43`88@+N_&j0_esO=RM*Gp1+x!8}Keu7ha07LZ%I>6}xF#WavY|5XE zAH^hp-B$coE2gi|0PZ;hn|Me+^^3o0IS~6NYaw9&S&Cy!@gsuIRZdeJr6XEKTxE1q z`ftzSN&#yZmc+kjz%Kgmkb(j~RyW|brQSY_-L@2`+qQG2<+k~zomJ0mlksynZ@#H7 z!g*8OC_R8UlJiD4#jR9uf)R{=+<+fq!(TOJP#-f%k*21j@_AI0x~Jw?ij!jw^;Q1u z0`#NkQ*8Qhv{;>rEm;mR6Q)@!*_A>?D!BAguMEUWx*vdGWxVS@n$?@jFG#@=yA3Dv zlp&A*Eg%Waqx&GV3hbs8(E?DMMn-v4$ZHC#rnss9e37c}2Q0g-{~QPnABM-I z;qH&vZ7u6w&uvY%hy5^9OTB#%xvVJ;m$jzYa#^A9kwSjHsmsGD6!4=i`>m$&ZN{OjSbHs4MG7Qd#BOP_q6Me ztnZ*jaVTfh^&K;)dDcf(#c1^%&iUCe=ZDeeXZeagd73`?M4zmBLlU_aoH&GQrJ|Sc zt=KK<@!)l8&LXmVvtyJ;7+`;i2Tk&9y;75h=b!AqFj9@>e{WFm6=?XT5PZ1`K12H# zc?6ZA-5&PhP?CY9JaGqJNS5ag^6YxiB!*@>^y3WCwGT(D3cyO2hSe)P3RZ8;ZOZr- zGpOZk3TK%H@Q}x^`KbL@9!A9jCaIphLX#?{@oNFFQ8a3%f9(0LrTyb!C!7B9tM_Zf zZ2s|@%N2@;>>sULgZ}Yc^8GCT`1~tP|9Ja-CXBnsD;WQ9|M;(`*!Z{a zE#}{~9h=9$O*b}&f8&p=$G-xqCei#Gj~`S}+>hn_FXLu=%Bwn^;tH_d7g#TfhvWORQ{_t@aNtRl)uT!eqAFmdvl|iuSWVX2C|TVKUHm*3U07rAM?3~>=XNB0 z9<=DA=jg67TItC2nW{(w&jI^$W9Ck5!-Sj`yU_YWWN0|};N^dPh*mt+9&ChX;w3^M z+)MjT;0j&`?=*phRdi+W92G@n;Qo6VH{pD|)_lAW0`nq^K$c#~*gP$9qZL*1>*miI zrVo#AJ|%x<{FLYSClIBA=Kz!~!jEk@Xrot(lq9ISdAF?p3Ti;u_KPi-Drng3SIGI9 zjG9J@UvmHY{P+~jDeMZcx~MNIS+SXG7hpeq>V!Da4^A5uhjy8x_Bu1O-6(~t5>wMy9bRCjKJ5?={IJW1oIjx`sCc7J{^P%Sm|7nRHLH{VNVexcESPdln3|UVFiQ4VT21xO*nzYFk~aw} zm2M!DRhTsgR!*Re8*hPt_em)u+*jWQ-oTU^%=Ox&Aq1**EQjyUG?5;SqP8!+%%FI4tz?a%Juig_L!p9tfPG9EpD~`y zEKIDjXtP!WfhxIGBqFeYG2aLzqd;P&Cn+ni0~Oa&JMh*EL)ESJ{k*@Wy@EV#Z|VAupy?c#)X<;*aNGwXdQEp zEDv}^sVa+AZu&vtXkub2VdG6t_V@?TRX@-^-rt)p`{S~eAG>FQF~l9W|46d#F!7gp zl3+kx_`enJ`IL{S8%9g)k$Gfrz+J&1B^f^#?ZwltshM2jKblJQzl)Z}pdpWc6Ftbo z%{14%)!~0mMEbBo(fAf_TXf1cvKlg?BCMdOxss3x@6np(csTNnUHCNljrqw?*R{ynP1J!@6gN=k7 zAX?_1Pwe8F45^&o-O*o?Ldj97{w3fkJdyx-1T1s z2HB1OQT^9ls{6xI|J4Hy2Gyfbn&Fu@8b~BIRR5K4B@&xk|3yVEm@yFuqBnks(%D)F z#3Sb`3HblC{_EDstnRSY;_X=)YFnUVM~;Hu7U(#P^jerT)z3$+|GL}?7Q|lv^*j3IY$D~-NZ2txQzeTQ z{ZsKn1n$rjWBWHkOaK2j^TJ;cFruO`~-IT_GAw@n4P<(5wh^X?^;R$W-8BTCNY?;gdQ@ zSrD5p1$(qhK?f*u{NNf~*u00g-qJJDq|&$*WAVN`cZ+9~-|>ucx8wDCKlJx)OObD- ziL0;qdf(V@u>Uep(a)S8bCu|^w&Lj@vrp)huh$}4H zW${hpe^r4xU#rR!gniOeVURf3gFP*MZSfUuj%X`y8U}9Wwvjg%wM#9^psAsB%4wTc)}U{l>oFw#8d+b9 z!_Ke`-tEUQ8leu0AETA$V`z)O{f6*A zNIg^7vQ)8Qs3beU?Z*@!e(70?53exe!zUD*j5|~J)V%oc^z#*dUX9;PgaOx=(yS2* zhTT;R>JGY zU4P?a$}~`aL!s(AFuKZc$TlQJ?_NcK7E*_~@*dev70AYf8?!2NlOr9%rdKg?7-k%s zl?cq_eUADY!C?^4>1nkel&&s9#G9vP6vM@S(vPhMw}J4)3Ne3reU!yh!|GvM(;q_* zi2x(&DxNFf z)5>5b-n-CSyIo>aQUw|jMzz?{6`>0wp7ztDTUeC8b>{0-a#lhMImL3nMpA6a)J9^0 zLWt*AuCmB$AXvU*8{hg}Y>q$YTK$dJ{e>GG-yHQnx`xeFMn_>VeI}Dcz;v1tk&2;u zQ+T*?C|E{0R?%(4%IAQye7!ZTX3GlmAwJg7z;c`Sl1gu-MHy)M3Ls zGO$G*!R_RZ;q#<{#iG$EldUqR*3UZ2oE9#LWM<*t{!DiEQ@xMDzabInz;n?wji*?7 zww4H;pD>!3pJ>FsLW(2V*G%1SqxMzTADI4?tUsXqTPX3@mv6=3+u`6pACD7nuSKe= zx~MbBN@!r}Ta;7(k#@x~lB}c^95C!w(w-hdTW~D(2RFotpAdx=_f0j4vgj;L6kUHH zJ+p}Q2m1U+Ge5)rAE03PR>AIHT)}o9DH(B!*$LNI57r$?{YYgqTF3v>`h zn`&VGGXG{%>$cvk!MDk7_0W21Cc-X8)1RKoAJmze&+RiOW< zHPy9x-!749f+H@`Ks4|C)9CzP#{GvYiT_o0{(Ikv!vAjcQ1bsh;y=Q);=V#nK(S~@ z6Zjt$zHt)1iwM3`9q<`%M}hBjddTptd>8PIA^5(ZV#1fuV(`7Tlvq7`iQrpu zlS#jIgIWr{+m9$X3dMmgXUM52c5&$}l5c5DNDMF<89mj$1v#o*idBE$F93c&Z` z>vsCh+7bo6>**oWFN5HF57AgL=@`oWhPy42b>G2$$ zr}SI+dX2A~{~bJ2GlCpA0=bw#c9q?VpX{I(Iz1965(;wdmHHj)TO;fb0>+%^Sl>FH z;Gu5Wjr3b1m+Xh>)584U_??~qlQliWzB8K6e_EfV&bRm!lxA|s^DRg!)cUM_ctR1e z#r#(uw4l!qpj0J!s*2et+LZf;jL^&;hseOaZ<40H>px!YXNM(OnJf~8xZuraW}%62 zXZG}P+$r|SD8#?3Jan6c1upOy&v7d0ndNb0JqK9pW3s4n=Qt@d!)kX@3XjsE5Sv#f zX);;90s9}70~OKO3*(7h&2AMwSb%S(F#WE>2mf(~57hdgy?9YclI6b>)nxo7hW%B> zBp^OK3SUqL!*XhnhyzV*t8tI?( z9M`j@T5T%1oPQiTe_m;2A%A{?>&Qz`m9k`}@>HoWFg2 ztwvHD=%+Dk=KL*2{H*!u)8&!zyYDg!zpLjv@w?+RY_r$1K7R8>MEnvg{Ej_T{H90s z&v!m{JIx=TSOOKh_aAouDDI6Y{!#dK?H@g|nf%||$p5{@WXd&O&6F7Ck5S}hbS~C zLj)^K7BAlj5Vs*TB;o8+H3@G~o|g;}l(5%DY=;$Q|Hr4`Gvl*dKZ*UmQQ$-c zS!$tZE_r`$(Hlq5%kU)GuY(g*hiM3cc}247G>vj*vVM{SlKuwjC%ONq^x63c)91P8 zN&a85( z)U${Kk+hx6(sl&xPLKQz9k11%B9$2(vB-*oROS}n!5(+gCyc;ALLe8RY7xFtBYhpWiD;mm z{+*cq7r3X(y*0vZk#I=VXFW<&@B)3zoOo^>uvw2Nv6yg$ofBf}DRxF=X+}u@nNGW4 zvoKPcg*yHjO)To+_lm;LRa$~83&-AnW`-OE94BJ_`=XsCzpa!=o<;ctNYi%gi(7O& z0^r_^sqR})=7_21g-MKC_{e_y5l7!1ZX^F<`*{O7A#MCBsU^mE(aFHAL{u0=sbq+`lkWkC1H9KFILB`xM}N@p(J_ zQdUS|iAcZJ^icA@iujLUu9!03q+jXDO`xBSUz_ur)2;aR!Do21qsX}1Y@SS;=&8FP z%NAa4&2iT79A_2l5RY%el zA4>RF=zc+f|NI03Yj=%@Co^sPEyD}Z*{zaDgBaZt?FMe{WI(KpJ{E~Gy^?r zK*ZaBu15d~fkgf^fFO}ytQZg*{l}>O_1w%qMyAZje;N*A-+i56Rfx(|O|pjdtC9S6 zYUKR(1l=+t8m)e)k@lg;k@Dy9E!941AtJTE@OZmq9|HWS=!w*RX3XvXNy(?_KV*`8 zg6vqP3P(2|?PC!n%3}DO0?UAL{gT*moE;C2aEEz(NrnE#q#yPC7kNGc=ig^!a594Y zm)r}rd&JT%{p0bD-kW?r0^84M{dXH=_P_Ol2>n<0uw&n>{$1sz*8IeZ@0Y9jNzv7m zp~$5PFl>5P3Ta$IkqqAPVIp05Va85BWip30yNcdeO$a9*WjGjL!#&8x9rGhx%pb7G z9!ibH)Ej(BXdCV)jke{z-qM$$vLH9?g+|U)}N3NB%qFSE#Kr>zj?x(EGYB ziWBYjutN{GQr5SO)#rjcZr`25*_6^scP1obEnFZzj zM{!C5$|kWHjI7@VeoKzUZVNcpHLzABppF)uQE}Z^voltEF-i9*?LM!+mC4bD_8)CT zej1R^cxOK?E}sjJwaZO3`+sQinc?W?kCe|TT_B&E!w&hJpJR&3(iAN!O`QM5D4$oF z^4ZJkbge;cWUMW}ec6Sb?q(7A>eyO6u|nt+Jm8V0%lfQAc_}|GtLg24xrL;lIulD6?}G;+)S$&vJ%SHgkxEu`EO^twA8$%N&{$R zfsT*3%HG%I0rc203*+%OHvU~uZt|~<35MvV`;TJ3V{8BBQnUT142`C!>=ac#Xni(q zkSf<_2e77^B9mtYc>B3 z^n>0Ye{v?hMwn2uOX(&aGA3wtx%y3*P&d3?@~e+|=!Ei#X!cxkIKO%N28b`MpP7Ne zN>WWIOA@)RH^^1nbgr*D2jyHo2L-Rd#ihg3Gj>dEPn$FoJ1WAb(y_w^Q>~P5$rUc4 zfmhXBPx1N6QZfrD&{uDTrq%N4=b@oJ@1+Rqkp3k@KRAXp^i!PvE!rd7jq^HjUTuFq z&$?zK?y`e-5Y;>+bx_k?!%g`;*ip%E%>{UoR^k`p9n-$h{Ki$5k4F?Dslif@2>Kbl ze)&GsFL%C#$1a-XOg8&w|89ovKZg2cbN*(VKaIbWwUXn%X3K1RB!9Z;_N6zqgyI^h zJZp>Td^yMbDM?rQ^|9j5)pNQ3Bw$vNWm5G?x3&teQ->+s;bx99InReYg!x6L?n7c0 z#eW-Icl;eo15FxH39*43TFihGmoXDgl`{b&aDXSnDGi;^z20Rv>g;mKg95pdPmacq z5w;cKM$TW01%Cha3XNk z#DX8l9|^w+j{c(I*NFe@llV0h-#E~r9$rn1Z}=2_t^7#?^Sib1pPxmY8$3KczZ;)v zDovpVq^a|}dhtC!i8k-ALV%ox5fy9KFmUF%DJ2#7G&`^{J8&R}2Fo3om;Jm3a80Ex zu;k*F4L%JM8xrZU@iMl5CD)@B3w})z#&{9~8G@Wevd{LXW-1;yJR0W@mXFx{j|;H* znRJasFB3p9SVI)WzloJU-&cVS_w04>r}At~3$eAmLcXc|i4DJ-E&R^4IvsCz+MxeE zJ+}6jVdo%4zg=gUNF8jak!rYoou4x2_k8{YPVwRSJ(fmFv4Z#YHsrkuwM(?+I1zG{fcS*Yya!uN4&6K3#T~2L`$5hdurzT*F&`*x10pMdFe;fe%w98 zL2;Y?2qoERVhx;!!+vbTl2a}JgEfHS;1P|>f2{UniihmGq=UBaGpw#E%&wXiA90n> zhVQM$7_Eb@vRSyv^*i}ZTmPEYjP1*i)kbN5K1VBu3^!>-#r+8;SQT*qa?9&5R z(fWK-_{Cl6ny%vE1g&FB$;NwmHW2&%t*=8Q?lU!L7R%)_{qI`W z}#dj^ncAh9b+NUMKLjuZh-@{?n6E7RWpdGW)WGRSeg?wygiu!?aIX-*)?e zW&EVN7W-pUL0JpLPa^eyP~y+|?@0ZRZ-M^DD&N7-@td(UEgZ^$b|dJul92M8(90-B zn4p4rIM$W6dI$~O{xpn7hYwjS49Ml<{S~#m;?>_Jjl5xwf8;S!nh^hp*?tiS_k5yV zV2+=4(_kbCuL7gV^@sX=J+G$EM3QvGlPP8iO7-QLj=7)ddn_nTdeq!^cw82gx5_i<<};G7%NFPzRpAlOf@>6}9rjFQmP=WHt%X zrTuQJdz2RK(C5DtHI20Y)30{UMw|aOGQXzyWQ6uJTdMsA=I>t|Xd(D>Bf~#C=Jp$j zZ{|mjZyxLDN1C3d)o-=P`0>C3DBr)N^3nKlRbM5RUUADWlG1IgY=3nOcvGNp6 zA!$E0?RV%!4EEzt#*a#zv#G`puM-eSn86Ncq;&sL=-}h_tw-AOaIeM z`H3xl`-7we)o1jwIvs3wdg$ZF_m7$UPq6%lm1!D7#s8n0%Kt{}drD;cIKkOZl=wu8 z=l6E~+m0d&)#1h7aZTxJR{N4{gHh}aWl;4}}=r0<6jf{Vd-qtsxZ51T6`_W z{N6STzcyB<-ONrK9v@;Ge>xsz((kDgO!`&sZJd5hkI#S8*&Ou;nSEKpB!=r=ZSK%K zo;C7xx|#VynjfnA_; zb!i8=-u?lDM*979s)Hizh)Ml^VUL|QhgZMvr$fhN{dyY{K+#P@)B^hLY707SmUPhe zcmDC37Gh~wt3uQC`+uL```|beiSV}yi58Ea|8RuKpNUp~GjxAZ_|pvgA!UKWAHVj{ zxY_JSqVBat?Z@|RO#6`_rGx;u)d_$I)Yx^T5&J=rTOF0O?XPzdwMq6arv3HuRs1(k zx0Fv&J8ZSa)u1WZX^qbwNTZN1A9Tg%5u{NV*gPNiqJ4eh`A9?2`z36Q#wQZc`px;> zHF?ESq2)h7pv81PF6|%pkt_~=RVTS;?^%FLf>rGww+uf4v8(i6xqDMm_R#(_tMX>l(zGe^XqNvmh77|vsG(a zyil^Hl~Hma_4YwHHZD0O@Uw6A-UOVGw;#JxxBaCoF4MJq05;wJ)i>=d-<%?MDD zzGSy+m}~ivBaD*YeN&f*F-}{p@2}V925gS8?Bh>r#ayeW zg%;g6s6bN~@; z{@pV1lVx8tfb<^}Kgo3T7Y)Bdi=XWHydGYEP<`~0zreq~XPuq`$@Ql)#+ff(?gAK+>E_>)%)Pc%{ux8L;n$?yZ* z7flbwnSEKpB(BxHw&?t1^h4(S8vA2`k*vBvLv)c9RA zna<}Z+wR9|_YQN35^eyI6{GYPKkuQOZ}e>~ZQ$ugO8{QZ*#(XyL|ZTwv(x3r+~x4gYcwD})u zqBT5z#5(?-HWzgGcBO+q-K?&>W>-y%KgOD0u<(1Torz!N2aV$w+xXs5Fk(c%bFKEr z$IyP$$KP+{CKfdQ?rf`Zv4lx{^S)iTrOq9CeqqWz=J@;dYm6)bFxClxnB?d?hVgfL zBjZy8`N?=^KT*b~nDQ47^r!lN=~f^(F78UwbQKT3r)A`SQ~&?r_W^zNXco(*eL7!5YVrNB*{5YPrN#2!%A{T8+nRO_%YUr?&5|0>VY1V| z8EkcxYj*X2%|6ljQx&x5LXrsnOVO*v?NditvOxT4WA)cf_ZMaSXu5q$l*K+|9v+R; zxLLv~o_x!0BU;LTx^K5>pBAk!{ikD{0Epg>zFWXPH4tB~+G58sTKu)e>l4p)bZwjJ za!&X#&F`x=$BKW;%In6=r@}DHn07K z8)KzktmA`gCdHqhXU*6CYq$UI)TY&|J3QR+iCbm>uKq7FTr_^)eNe+>nM65$hc?)0 zV#)B~sDHe9qdC9W^{WO@99*v;iZVXL%AYB>fes_&fdraAGpw#E%&wX?e#aP}xZlFB zjn!#4v(twCli1=D+uk(k_tXKCewA-FPQRv)uTO5`zS#da`?7>d4A;F{eqc-Z|HWo} zBI{WbfR(>!WElXlX`Nk$V;Ns#iXU8f0-V2pE#qz}elX1JR$Quk{2$dnKKv;_+x`NB zM*98q&kl;%>mS$JX>)k>`+_$ZK=%Jk07W+qQ48qzeV>31nI6UpR@-%?#q7sX$3Zwlrf`Z@X1Ah??(u(QKR(<6&>oQEBH54Y{#~CX z(m%NI4LfZPul?xv4^uwZ|EK{J)vs%%Zg~8R)jxRWBhcXZ;J}>i?Sk`121Y zy`KB$A7wx8mt!N@_g+?igLQu`YCp=PERg!Xwol_`vmbA+swbx{;eUK!+K+XMSr`d` z3?~30+tGI;_JgVlb=7lks(L=oC@D^gyCne|OebUCEZ6e3`>R^v=)jU6;sYDe+m`Qv zE>~7t`wwj3-5ILtR|mZHR!r^3+uFbW4`@HZ)_(gxp#3CU`_JuddHT3*?T>6)`&^$o zLDi0$`*%zrP7kLu{HRJih4whXj^L>X!ENnV-EWhahy`kL3sme#oXTcaOjY&7*!mka z$Z|_>T8{nNcUu0%J1ey{QukJJ9i}%eT_hZhZY&|LJ8i^$VU%5iN%|E$wcnuYbWA- zxf+u+`~IQX93X|vr}{8f$|(BH_Gg@e&#aFhNAx+1IGBne^_0_YjT0AP$vznxW@NyP z)(#fCVDA-~kM@N z#BSBS-0f;HGvjg7ZtDwazuyH36(pJmuCnd8Dc3i=NW722jKt}8VVQ$LZ($YFCeLTJ z{Wjs?+2pJ_Ij!QYRVAL=hh({yXC-$Z9;nJ(EfR*imaonUbzb&nS=@Q9g&V>*~!tlrG7TxOTt7DtR-$LgLBrtSSkLv8bA4=hvgTXW%>YZWGi68@Vt z`~`L4uPfgJ31IAp#g+-M)D>umkcUJF60F950?88N)htJ^Y4MT!f3>jv+gN3{e_v~o zh}fGocgJF?RcoxpJVxZjRL0boaDG~6T24hB_ggJSU(IWI zAo;YGiiEvFjHh}ME&8MILp<}9rWo75C0hEiqpOsDDKoUZikMl0vUU54Ka;h5!Sdh2 z{7rh(#@~ZqYG{R9gBorcf2ZsH6H`#goqjYg*E`B6S)F8*tW8>305XZr#XLMm0C2zwNgqcIX{wUy38dNQ!H zmfJ7Is?b^VCKLs}{qx45)aRlo%!e#`dh1oMI#qTnL!@&J3++vQu0T5gc5W*#pMebjp|19O(57y`A8W|Vm z`j5jE4y?H-&)*61o&b4IkYnIU4R!JSb9O9YU;b7{;OqQ!=)aPEztJ%M<&6Ky3V%YF z@juti%)k_392yywB1-XML^iZ{09a8oBcfQEP{MsZ@Jyfhe$~o1U28s(7dW5^6Y9Em zt(O{m&iJ3G`Cl4WnF=8yFQ;|ueXzS9(YYj+Vu|ygRpbq?mwnLpuJR%Arv4PrlI2<4 zNEY0OVCOY=q{U<6&n;o2&i1Q*q*K<4vZW)cPg$Euhrkrk%pq~?akNCG$2j^E>acS0 z-EnX9r}jccp7hKW=qc{}K$Uo6Yz?gzDuBf+IhZ>01mZ|>X)7A9V0zYSvm&~oewj|O z3ZKH`+zszfiWBEy^*$Za$v%Im!`B~|17)ao6{y{Q%H!-5UnN~+{x^@HMAQJ*0HQ&g zl7hK1GM0280hl}u(I)@Rb8@Te)hs23rW~6}=iOX6|L^D7| zoQxe-2`IF0B$W*P@cBORaekbKic_eBfODo&vIFCRT9SkUOoAzGRl5~< zBN9KcLdhs$0+vMw|@U(I#`+DzL$`av9()Tn=z6&LNiK-{lIbkzBM#XC+ltyUa@h|j=-{-12 zrglx)_S@YcSv%a|fY(ET&n4M$;$G(@yiOB8y8alnqw9PlL^p87Efd*i-^OGg6i;NI z>zRc<#0%J)5NFSVh8T@VBEb$~axQ~II#3|V3%cdfkV~_*LioDamw_4}zZ{b->s+#Q zBRDh_{H>rVXPT+~!>;hV0J~JkR;84;<2_R$<>KM{w2X^n;7~&g;1mTK#lIWQQ&aNmUDQ1Mr%%%MUAi*Z z|6t}xrSkkZBV%n*J2sZ$2h{tnNComFvFH-s6r>_?&{kN?&e&GKW-(v-P+H7TkB=w8 zTn4J@yI(}L6q!^@0o)`W5LvQtFcTOfVS#x4ADw?}N<;k%rq7uQep0FHk12{1MAts+&3$GQzq4~l5CqT57^&7U+|8!gX?Wz4<(b@-TC_FR_4a2{9y}_pW z0mFZ?YCjdq_VO(xHUL?JD|WmDT`Qpt<;32{0j#4z{ys;2&p{YNZ$QG^c(}#5gSE9Q z+q2AWpyKgRqVeB_ahWU0CV?%X9`DaBixZtL(%U460Cn=T9sg6QeQ`fFZ7Lbs?r9kF zqNBw*$WY@PKP(wN;7^Os4v_1gxEGfI^E_(dO>Tj{)K<3#&ApETkIq|Y^H}iy&+n@_ zwwvwlM{IYuTl6`U{a42ST1(W!oKaLzH)OSv#FGoPpYk^jh;Y9R#y8Jb^wqH;KS!zh z)!Y9C?E486U|X4L^6%JX%s+zQNDG1!O$Z*dAgCXuV*ZX&{hRU2QAA0cqAKH;#YaOV zAH+I*QXK>dvB3+Zp0;Z1LzUqWW(N;2H{o5ts!8 zrmO5${A5rIqghaf|4{U+@)uLTye4E~xQ42+{f#&|QMQTFZippS6~)8rwa-@c^LFgc z)PI5DXZv3oS2Fa*$H_Q#5$lnHX5*B^h6$${<1aXjp$JaV245O%U!01Ch)4da72zd^ zX|?Q+t`Dd2B|Q5E*njK^P%^X@W-P8KNu;RWoXxYwRbYJ(nh&q2-?F>|w9@SO)_o7z z@U%F8YY+tlitwWSxi6{y3q&7Rc{$K!8O=Dy?Vn1qic(mq;L#;R2Qv;XQB+A3JK6~L z%MMI~DaTB;eJQ-mi{QU^;df3JOZ7W9gPeFNcsl-Iyq-osF=S73<8P`FxF89B?_guY zIc_4eQEQ|b!E^9@JcckfzpQVf=VNwNtGO_um`eCNSpGG91`4-GjpYde&Id)rHa*Vo zttc6K{Q@Zg>t0h50GKWUsJVcVVonYT06SOho*E}EbxGTa=SE7&(37bRIbTT+cMut9 ziY#k7%~t|OYRS+x)(dHPAw|8ACSO2r9ZQCO`FAuju>vC{eGk%R2hPEhV=>)9H~0_4 zb(gj(8M=~QEb1=$Ylz1I)baQq0*eD7aSfD*fhCBY)n=watl)TAWRzy>{YUMzWEZLi z`+(G{_+6?+Kk(-=noH++d~}s!kFpOPM!Bq!#9cB4(&o%s!Dw;hY-rSHqMd;G5~KT-^ddM|Ne*iOAW=@t0`QSW~B zf`fYF=^aq-6+DbWy#cx@Nxi4|?WRzV9sK%Kln(xxf2l`G<>1G~GXHax$6NH(`VW1y z=(|JF7jn%bIoky~GB}i2{S|0C9gFaZwo1Xzeas{rDR>^IyzL5plJx?S{!I0P5?m>l z@$?Sq_gFlQLfRekRcB*7X%Nhj{I-L%up2N?E)3ydHy&gJO{=p4vd{1gv5WV9sl-5#+ITsMnW3q>!@&@rA@nXX)FA zB}J~*?-WA7Nf&51*E*4lk4D0bVBC6*-|s3;=l5Y3Y&y|V>O^ZJaIDgax%{?UyosE6 zV-%74TlqjeveaOsUp z?zc0o=F)~`Sn}^ii+^6rp}X=SLavKgfxL2~vmrbGkj;S01P1yl!be*C+o+lM3)Cel z^FoQ&d^{BaM9fbQVy(Q5Z(HUO-(Z5ltFR04{c6rX+c~$GUxA##*Qo&GR;o7~qi+el zRMbg+ADMIPU61GYx{LSF2-Bbu?;3t0xHXQs)d9tPu#NA!%BV!3-}V}+AONqt4qlDB z&%vwfoxCFcOxO8KxE~a;fsc|Vt_BUkf8=kGum<`@FdH3H?-?V~T=S}s9NdHqImZ%h zgWaBc?Y+gAzr0w*Cor;7?%t1+1#^>he)*y#|DW(14=!^1PsCLUu2OXFxDbGi1jx|c ze+$>729lPSIG_sOW0_dmKYFp;Kl*HBxEPSxduTi|0;QhM`R`*MfxnbDS>@S?D;Xq5 zVCOg_K)OAT0CL7w|50R9N`B3p>NYm4f&HotAE7R=b)9SO)7%o379zb!&5>P6t)Kws z!1RS_@iH;EFUz&8jn6f2y{~k?KN+T_2Of!H97!rOHRx{(8z$&Eu4@+{7K?UrDfwa; zfq5o)lz*wAr=gk1sD$qP+z8y@*=Hd7vQPX3OKt>jMASd=j=Lw~4^mxX0Jfng_NIor zVSj4EA3}sMZ-ICX=Lkp%fOSN+xWFjeUo?XJ<3b~NcIgpB`>J0OjgntlyGlO8hr#5# zT~BPAR%Ha+u#S)>=FzU(8tr`Ar8!SjJ%T_{_)#M`aP;GVG&nSu{sfTw>$f`G&L~-r z$bei$Y?N{Xl&rQlKjmr*fGpc??XTP?dHfeY;p<=k}iH+0VB>_w$bDZ8-r#a}9 zV)>9|ejB~zu&&>yQXi6rG6`i80`)tsftk1$S}LzfaRmo8PRy8&+=%s}&V!1tf_6oy znfIGHq*=m;E7reg`M+*-ey_^^-GfL?GxC4ab^C77q3HA4z-rO!BTyj#1}9$j40c}r z`M(g?uY?yMhu?O9C*kW$YEd$D$$ezgP$!Z2>D3U+s%NCh3MC#t_#w!1;zry>0I-I@ z+@P9~_WvmmPwBYM?=rdZ&v9`TuS29EhC}o3=k(*5wd>3FbNX>4ZgBeXm>X64F%=-o z{FV$Y_rM#H`Hpnb(xOdOf1C~)*(4F?TqZ2v2ZKB=|c6MX=E z&AFxn(l~!Qnf%E`lC)X;nW|_55k{#f*zo z&hS*;j#6^Cil z90NoKz_!v`HIq%;iG^ez_euNcvFzgz-j+iN=Iq{EvqQPH#?L!p#?Cf+uA#dH zBSJ&4Q~S+mjdJK2o2Q}{0lkOMB$Jj;Cb5`rP%#S(VBlu}dNrUR`%`@Yq=qfaCm4&B z2Me%s2~{9~7IQ+G2)vJ|&Hi~ucGZEiQMl{Q4t1xJh~v-*Nywk`2^D&u6W~Asx&5Ij zpD&DKq{aSOAmZ$G#C9mSfg&22p4(m_4#El`f%+P;QS8N!3J63JQP<7-RbBo$>lgeb z+^TuLjvbWtfi`GYI$-o$%?uHD;Z3mr!Os+5f%8y^Lgosx#ESj!&&DtO)}B7(jNyPH zq$Gx&@fq@)D6VOBJ1y2agFu3A(GVQ!)Y=GL`1?v((y|pf#@ZqHqGB|S4R{NMG$4kL z;4j@&)ZPe<{2gBLv_!1(w}q-Y(}MmM!pOd8OZUfF>t z6A zw~cOuIt+V)Dh43VaF&eFIE0NJp2NPr*oU+-CcQF{J{40vBp*Q96p9ETM2@!;U!aEO z$c7F)&JC3ey_CL(y9XTM0h14QoLGdm_y%T!vO(%DI4(`b=ZP{142KejeBqB1XDU$L zkmTpy#~vExr^X>bReQH;mxzhR-QljHuWFZru;3>iPR)w9)Z>aI!hR7tU_x_Osh!`4CIj9;YwTOZ-*ziiW;U2eDa|MgDUprikH z^v!zx|7TXT{!_GmOUq7+AkYGeP$aij=#RtOY@Cso41YKMy|G~}zO5B>J`T4~p_=fU zO+@lv>-3*SQfKQw-TXLm|E}`+_(H+pmGTccrICazC*;!=hwvJkD~{oB6mPauQ??XX z4617;0f%z)V=`qBbw~pkOJB!_5pXysO}IWHDw1=8Q3%5i)^{2i?Qj2zdmzgI2Fcn( zOz}nhWUk6`&h~G()6NLguN|uVk8f|u{~gVf|7OsytZmcjmnz=*AQJuVXn=lI1rg}i z7dTpq)B^PD21$UhC4phy+nYZ^ZhR zO02F&+w&L%42Jh`OWa9X_{a(|Up0k+ONBLA2hcm&Fz9b6abI^#AM02&sW0$+Q^g}Q z?JOanp-5bQ2mPq2cKQ=_4M-jP5k#UI(KGQR;lU zQn6y4_$pwsq_E}|m^%$noxcR1t9*$iABMC~Y?|^(3i9OmsYhzdP{D+4tPpg*5RbdAVre6A2gMH0coFOtcJHNF1*$n zsPUUkKegf(D{gaO+uM#U(_hCgBGpG%(qTzbzqa1mT>YY>$`p^AO26ua=FtzbkZ;6e zHbJ8S5?)NgQJC8}NLXR{J4C}HuW5*eMZn!AF(+vnHcG!4i6;FjiknNn4Ho_Kr2OR) ze+!7eoimbel-)j#lJ**|;GGS%3hs%r$~k)=ahxLX!vkBVM~o z(p28C$)%iMbpugsgsr;(wNd(ZgM29Y^xo23`r7;tOFl^vNefwESgo0?q}F1%4jGeH zYyShbr$Mde5G|8(@+KlBq*CHPzmroWWmPx{O)1SUsMU>?kqh~*P)3dxGoV;_rd zI${$?^WaJ`WsCukQ$?gtBCo08Xj-cjR%BT8m=E~R6nYJM?=znyU}KI;-}aj!rd&k+h^Sdf?s2V?tp9z!oi&J{xgk|+uU(? zcq=L~bl1WrjZ3NBGO+?l`3@wZV^~6|h0w4(v3@fnMgFtneY_36Z-jiB&mnQ?Lpewm zk7X4iXA;;IN<2y4`t%@fW#Co?VU;9K1%+6vYZ8hDi zzp1NVKV7Z$Yx1=Y{i=j2I`nJu2I$vG*p&eK^*dWx=+{q04*hDwIq``4wVB^^>etVl zK5j_A#`d)97wZ!WVcj@rHI$hr2CGelF>a9DnA-NGQIbLRA3Md4ukBjbXNswHhI_p) zDL$g=iG*=ZwJVyUIXA*#=wsKvdwWCw;KIj=G`}Q(DZLS$-mS;FE!OH{oB%f z{Tuw16g{PXC4=JbykY&YBp?WN1O5M0SAkgFzF~ot>Xs@#q!pn&L3O-L_D}2QE4B~v zL@)gT&u>>`u>ReTbra$(%z~7%RUxSa%~TUo&&l`PR4AKZ=O^t* z*~H1J2`?$G+{;JCgx%!$zBW?B8OoBSSlvUobY5 zdg!@?nVQ1^)D^fv59obLBGL5%eI1h7O0i}7K}vNIg>`%~&6Z#A8P}1ik{<})mLcHSH$G_)#KF42Z`jr@D6Bmp=F^AvQ@6=6U$HK93t{6FI0NBOg1Y z)V@wRF_~hOazy^I~)U}9?m?y2z%93>n>9Xh~p7=dID2}u$S;44qz9#=_Z zgRd}hNJ<^mlaf-@fh{R@`)}oOVt;oer#r4-n|;q2Qof3H0vV+&$DBo_EQ#Nr_PEUP zVjVikM=|*ay@V9o0?u(=vvy$|=O&GyA~O0XB8&cA(Z>s~av!}^9|a_Uh3McPL%D-{ z(E&AFz?o$9g83=hSB%k;PE(-S>sF&tjK6iBk#nS;N&jg47#M1Oheug*1l=spTzyW# zqcqx8&nuQpQi4X)3m7bjJV&}HT$DzcVsFjd2>Da9z9Uk6WIje0?f(=s-Tu~Jv18dL zE&s|s?FMJrNz(S|F%Qv*gmxqUUFF%ze_v5rAXOB#d}*}N%J!p43=@NAA^|_~W3UNA zPNFGxT!Ebuf*l?Oiy+TKSkByd0HK!kSO!>3E$0MFx#gTthq7zN!`DR+s8GT&)C_^2(au%=JS;ct*JV=LLW#Q{299@COB|_v@t?~H$GMU~ zXs6J1Jk1b+W5zbuU8VS5XN;+h;+$ZQ;E=R_c7{D2U}lbB$xGP#U_ z;yR(ktLI${0$~5Pof3@-d@N37G&n*-qf0y@Es`}x#@nvDULt%z2MjyX*peoor_OH- zw&SukyZ4stz)#t|-#S0=N%qgx*;NOD%N83hgL8sXw$2X*mqtW|ph5MESy2KG73TzY z5jM{jNNh@vgfX`<-+oC8$StARNYx$}1)!TqWRAq&iU##q>`{46%x>zdaLwCD>pS&F z`q$logqmOEQ`;CAK^c~>@$S9s-?HlnVvS8DpTR3yL)-AC2W+IUS157&tHXgZ%~SCl z#*@-hp&mm9knfS>@lYioKS~n?9rsF;X^_dz1F1;y9(YN9Z%9WK-{+DALQ5PQLceH+ zA9}^PlsrT?01Aueusjk~)Vbc_{kB8VsP<@6_%tfRree(s)U(`jMotjwXt=X`Z#zG* zS=FIr_uPiEnDgT|Qq>ZwDsrf_1xvs`z_xL)Sot*kZWYycJLoNf*Vt`jO#3sq${zuW zioUr-TDJRM!akL;57OdGij4&?!2E8j*!3X^brzXlzI&_~;3AC4Amcsh-lWs_27e#w z@Y8al9wk;lrBu4|(d+1li8dB35nJ&vT_n-`7C%#gr6YPHUcB0l9PvMv{GF>D)i)Zy z$oY9HC%Z+>RjUfU&Ln+b9phRuTy~#pgbaxzrkg!(Wz@_l6;Ob^1|AssC?DVhNq`Ie z0#+3Es*|NR$qWtS9KAU2e2j^T06J&SqoR1>DklNrYPvP-8Tz$_|sh64_Pqk`ICxqOSOxUS%VKULgC zoBZ&QQY*Kq!pnD{?z^@KMbPIW5|la-bJ`-e7>o2ZmyVCdUNs|=jKFy*;p62izgtM z00FSF|E))G0Kn^r%HDLPoic1cVp?A`(9$0-NyM#k_yD@Ob&Li|-gC9R;PGijrtA_p z)0{Abf_yl%AVYDIIa$v0)@~`QzJ0LrclXKolq3{=1SP-+Na==CbhMf9;@g3DWW!~( zuF?|H9Lfn}wVx40w)#p)=jPfEut?!*RYgpVQXP^sah+|@ifuj{q-Y}BT^GO*F&I>a z;TI*s_I6s$6qq5FPXK0z5vC6?Xop^Wce$MbQZyf_H)+(uY1*#=b?9FlJN*xyZG+QJ z|Ma@pS>%6ux8s|`L;efxfD-vr>H=sde}Wyvn8|!Hq#079l!SE3(YpN5U;kdxTX8D?Blk|BTp`&qWDRrZAymTOP^pw z+JIMic(?;2(hLA|F4TJ}+PqP{@D#srI*bIY9KBHJ4tFaVI*K2=#NGP){&M{yb|E-j zeR+d^G!=N#+D39hY5RfNVdw+vqU5mq024B>73;4+M_R4>;}yzEL&L+Jga_>qu4zm( zfJroCl2I7OIfyw)CIVT?dvPtNCv|){9-`Pt$@oe2*m@$#rmlwSo3;N!u@xnMI=^em zS{hhGFdb)QE4@~>GLJ+Qa>@gfX_>`0gJrLIgd>!V-U;POpAKH=z>{7i(JUgNC66t{ z;)}c`^$MR3tF3}1i_tH6N(Zp;U+&okF_gOq($Hrc?R{#rSA?QWI%S2SC>HP%A8;q~ z%i{ENBvsQiRULU{rmDD4*HASKL->u36svrUF|c$FXr*J+c3))a`?(j z66`;CX+8O>zkc?JDDssGcn}J;^Qz96&(*wys2=!5d4?7*Jy8I%Ju03j?70k0O@ts` z@NEdgcs@48^$_Hy2+R9uZrE0mmqf}YR#Nq(kg%b0Ezcp7Me`39E0bRIj;@cX`;z$D zr>7Y7rF<-<(j2j+eh$9GPQRMB>WmiBe{9{t^gA~_68)Aw7nOeLaguz4;aytPi)%jd zRBcf`+ATi2QQC=wiydTpzYf_<4@c7PNr+gi{`Wnf+5GR{o+XlS9JGPbS@9@#bt)Np z^jOoplP^6SYX*1(;(2&uzVxeS0pXH5>t;_F%?s?Tmh}zt*yU*T4JLhvziXb5^!dR_|Lb+j zO`v~6@L!28#7^0PbG<>L?uAF<#^7(L{o2RT{;xkqpwE-JO`%V3MgLSy|FccKdyKm1 z@)LKFT2JqwAA=n|vC@T~C7JT__`o$M%UH0Ua|o9D!SdA*e#cYiUFD8`PWrt$x+(ZI z)czX_sr{cL(C^wNwI5NxuR`OX5AFYF*Sz++FsIN*eTWYgNGu{NWscmH6=`5)=ju|c1~2S?^12mcgj zVNGeF5tN57sIAx!U>)ql3Y=wy6%b{A2i56A7+!`r@fyz*nV;*nT25;51QXCbx#T9G zzzv>x7!~+fKQ@^_!%sD>rRhiEoIC_OSM$4wGO78mdQr`PQ!pj!#6%K*LDCyT6rCUd zl5jA+L>Ba;yjyOMh4Owxk7)Vs0VtEB*xzyhI1@~$dI@Q4AC`ql`TUV~(pgRcMaRYOQ4r}_&)Bx5CC6GV5)0qpoq9t9JtO+WBh!PO?2*ei0&pOza{}0h;Xr2XyA(k@tpX{f zH>P9j-Aj^jZjpm z>EranBz`nit%u+Bj9)i}-dk zDU81J1EY=qbYS%QMK+A)x*EYq7VC<2*&3liPK4?VG7`UsE&QN{B<7*S#{-PtU;-vO z|GZ4sY{C>;uvW5=l=*!Czf8fTZn$BEa8Q!GD63wp|k>{GlHI?f~EeRXTP{ zNXTu%wO1henK+zh;UM9^F9Q8rO=9>fD<%B(L|I>id(K`W!(A!ClMsChhn^Uq3`& z7dpTGoB8#b&ab7&-F2=;yz%|zx>)mfAAOyRzzYHziDz9mAx<1X)mj7!@M4j!6t{%k zGZ_7BB&GxVvI9GEupW*~-8R&vJo~Snh?sSLj{XFGLCw4o_)sMF{DKBaDwNnc5q&&F zeW2s?`W=N5SLEl%iD`I)X5x8s&>ts7H1#p?VHJ&{|9V-Q1-r|`@d36?{&q?seUh5z z-3)4;KwVl=_4^ezP2SaxHQA^27vyk@ek%KmGi~wHwm;)^y}x$StYUXu5wDU+5sxE& ziTxF*)s*~btu3e^Hnk%TtAYf*chH?Nv(Ay<=1vT zi{zj1pm&Oop?_CdXRw#X!(7+$E8OWHxk`T_`3qi>Lhx;OmCC3(m2FWW+cFl;#9`M; z`KOAohB$NFmEg<{dV^TvT7H3hj@vS(jW9;(2hJxX34eJCcycc_W$|S43#s&s9 z>jXZsp;A=DPu_UK%skPJV2{)-OxB+GqsQIQj z)AjmlNFM&9cwDv|fQfy?DA8Ge8gYN12;Zmi0B(N&{xHqu2;3 zt0>*hJNC7m^=o`lLbzSO?I`MDhk>&!2<+i3!o-KW(l#cDVB-4v=RNV+p-x*>1UB)w zUO4CGcxE}G{kpDCEIP28AZDVbo=-}&~T_jH7%-;-che!z4z+X&8h;%c0^T>p)0uAso=Fp1@lz}1*kyjk6l$QLnF1s-S+QOkpH;= z-H`mxU7ULEjnp%e^{5T9UEtwuNRBnRV3-IU$)01Yx7AW!h}MM2upE{7N1*=zS{{rOu!F-?>^378zM?r=@v);IAXJcXLxIp#LixLZwaKj(^5$`3{ z6uGQ~+W#;{`Kj17)XVqQ@T-48YCjF?tCtC=o+hADteMmin*cem36K&5M-NQM4dH~3 z0pYCI-4L=M!1J{T-ux>BJRjg=`u+gm+XUBl4EU&(5H#pOb9L~tgm~NVO&szIH>8yL zABeN=eS?xVWr4w@UPZ|sZ^B=3iDM#8#wDNP@@y2Cp$hcI)2ZqyPE<(XQxquTECfUr zmGA;+Eh@$SkACPc*L^AqJe+EsA)b15D?Y#?Y_^g#D8*|24ONjNcwKCSs;Y2}_!p@L zF&!%II@|^RMR7T+dsPn>h*HmZh^QqbCV%I#t|_bdg8-M+eKDlE(*YPT5tRvPtXO>R zNqQYKWj7_d%<70(z3yzr03ujj<~h1vu_6b{=J4Lc5(bOj@eH+Giw6j}+vYI=E~Lhy zbhYPygOQ1~+1&ID`GCEfmF|`6gy9_-ZjHC~*1}g652$7aV5Xz)vs{1G?J~oJleD@w zHhhnTd7v_#p_gn!YK7{9qN>tfZBeO}_Zq9SU$0@*tomZ6{$g%=n$)m7eS!2P8TqbO zV=YM?3K(Wx*q<&j(X&)hR3V)c_wy`WO%c}W$$6T-i=?h_XX}dLoN?5xKXefS5DS^+ zIh4h!1#!@-1Zi2)iD4Py_5|*xCZ%8`Rr}JYU-)ykcxLRy9$2n)k-RIkzA$sWKe!^% zU$_7A!tQnc;K6pD=_^qHEes6xOhg_pq(njxa1GM_q@kL`d^EU`u=sQLc+5;(#}~5u;Zf<yl-VFqd*ZWA{lEMv9v~gdlPTyNKVdM&{m#z*8edbbK>mPCI9$?0GRZVU(B@`4y8e z@?Oa=RcWvOsMMPBcSRWW+9ki{D*0iL+)xYhi*+GCoy058(juoN`8D*?rb8tte(9KW zAxa>;O7fw0V2Buch^+Ta{ZXQn5rPLK&e)C{e`qiE1OzfS1k9`Bjk?1Kq~8mX1wt&8 zq98>4@gM@`6EMXmWONAhKjN2%?0wGPPL=7U`u@NAz5>582brUhstsxj#hemvr}LFP zH6f-u6AK7u-a+A6YR8kA@I`_{x10sB>BeDcnB6#_&N_;O+e20~dp(3ot#wje3<;$2ucAhMofnoK+DYfd{)^=?YG_rz-)lWg|1BWj+KYgnJ=Lb7$kzBos+ zwU!&Gh)THCW0;(!h1*~=z7uj;o|U)sEcDUu84UGzu23t0WAM5nZr<8`GbOXFDxfJ< zR)il(+!{(WNt_Q1ki?0&Cy58>`&4~@12IH3LzB2DLSiAy5lL(bH4@_D9TH#jxBoMV zRi(XNY6B8~E!D*!@o!WuSeI3Yb2-v_MVho=Zju(dMwa|8PtUBP?h$Y zfJ&`JQr++87}jMyj3r!zV>Bv4*PC8t=MBP2GS~QF1k8jvWKALxa6_`! z8No&U+U1m+^AnOZ9J z*}^ww!ufFyeS*&&kv_j=v7jpLwY6~s&UgGPtNZ=*VO`b_vKF(opqA)k^=wL?&f?QP z8hsdx<0JkQnwYKeS~yP+dZuNv7qOE#9?EQ<^Vj+M;YtpSkw>`U~+(t6MqgEQw`bpf(WP@IYVK6kBWMhzcex`8mm)S!oq(R~fuG z(KZl@=U~CygKD1uU5rqCI<=T5an0i@Tk+=a`lb`>x3*u7V%R(~O;Q(PBCLF#`XULu%Ch>8aS1RmHkp5~#+Z z?qV^q$)%{uU5;k2PY!~bou5`CP4Eq#=ci;>K)Fzwj;1Q7(gk=9Gj~?RViG!F{UEWx zN28^6LDR9;S-k5p$C?Hni*caG#)zV&o}WO_S4awC63Ck|8#kEY{GoOJ%me<=K_l~H zqplIt(?RGp-azh#fG4nl$J}>?pGc|5DuRGxrqhsq&+)5$u} z*QPMblESY8IpjR5DuqyD{bt859HO&jWMOzTBDXnTh)gVyRiK1i2=}&q zTNr8+s6M_By9EOw9MYkI$G|0qNM|Ai2MqYJxb(}}E1>d=cqZ5c_GZkI8?QgKp)hkp zVdy>V>}78G!tU=4Hangk$lVSqZ^!rzZ>1t=83c5vD*`Z5P>VO_cY0t&8}c2w?qxv)^yEhU@Q7#BYt2 z)B}cV11Xnm53TZl)q!q0{>De2LlJiN6l3{VLb-|nvXqo}?^J}`Xnp$^j02Rx+$}El z2P*{YvY+Bl;~^3o{;A6<_;m3ssGozgABeLCJV_^ke0m|wxv)`(N)xNcbPSbtL@HM7 zB!bx*fmx++AM`s}`40M>tsDnqV74xW*Px#d_i!2XD^mV~GH%l-MQ2M(gMHVX&5F=OyX2R>3E>!4DlupB}Pv)LO3uNxBh`s-%RC^KzXk!_u^NTam%1CbLRBBm!_2_Lf4bh6^XUcTE5WUCjyRo}~(?0VKG`t?Z z^9w$H4ztikYu^wJ(+t#b3^2tX2bi+h>RZgJW+t8geN34C^JNP#as2+>hH6P7YO(<% zT*ZT2aJ>nv*+c+bFtR&v?N1Z9vNLSBuKP&f68*HR4coM1gDv-M#5FL{lC||7fo;fl zF=0FKMGLT5yIyo4gDolwvgw5`$hHD^F32EX9mq~qkX_fqhV1_TD2f$a)u7Jb5mu}^ zHqaI!CDgJD@Quu`cMEi7yJJGvwMFRKM4GTF&jnqw3p(FvLbnNmm{a9r}9BOjV&C;LEtSCVa27B7I>Z8*}`G=ozlflvAeirXA52QsQB!^ zIsGhVx3u7c+XL33h+*)C5+gJK+Qpp^+1w&M|56?OGXVO;K=iL)G4=3TR-qwN^)E}( z;5~|0ErKU=Zm_PHb5l_aVE=FmfV~hkSTFrifK6|RNskRXS^(C1^LZOiPRd15a6;YF z>yglt6@(!4Acus~1k9efhB*#BD@!*3KV-bXj}6L*enRfo@yZt352|0n@qQQQ-VCxt zMy6Ji9MSXFuEM-?I}g``vvs{<-t_@JSsbH49oPvd$|j1caEv4-i&j=l6fO9yB^1@n zccaLNpvX+G`p^V`%dv*X`aT+7$ z`iBMS2(pRIATcNW2fErUF`F5S&7@A>#DsUrr!By%`TwtOpj~`nCit#&0sSbD>H>O! z@P|Xq|8xk>ynlZeMbA8lJN zjuLoJ|0*WD>$bN9@9WRThF6fz4LEW^@Z>_)9?%ih)*O}Lk{LHG6zGosdA-NJHWN-P zaG`7zNutFdIJ3vUMcrN4Sy0v9yb*zJ>Tp)9kFgqUIw}@duzm_0#Q%anj&Xjz`XY>s zUZ{fe^F*c_Mt-j^Vq$B~wwACJoae@tTNqRdN|p%@uogdf4kcxBIs;Zmc)T=X!jgFt zuR8Gx!T5L)@s0dNt@~J{({#1!Lm^ztnh)X7IQp%nnSx8txiS$_v)2>hkUjwSVtivg zJW^myj1B8+TU&zl@n>Sg3O<;W{($_QEIc7{$_%7Gz~6<8D<&^I zyrm`l-1l^B{1|3_`U4Il?9DtzM&Jk|n~)LIqFymV9iQ9zBgqgg^M6c+n4AxQFOf>X z|Fsr*wH7;4pfDgoyUoC?$0?1}os~eE%7lrKkcP9(M1}cT2i?I;we**t0 zBgc^AlFmDk9M`w)pYB1utFZyDAbTA$8d7y*HP*kqOfK12_9tQYd3Yojq?B!pT%OLy z)X^63*G#x!wLKGgZWdfu?NGSpSM1;tRqle1T)3WxXU@vI^IYIMl4F)}jrgnrMJP4| z3Dt0#m=j=R?ax3R_0*yrm+@zAx@J}PEh6{q`&m>VS4P}Kl?cfV}1jk;~(bhmLs=;5V;El#XiE|2a{zz%Sg zCb*ixxTqt>fBs#Hw;dSjmRLh)ZcVg)GMczHJK`WwKTs)$KCvcIZi5m)eL|j-?=K5c{xv&({F5NIM)9+J*SQJr_kp zdsBas*eB*7R9OX5H$gnwqi66*$lz$iue;zkAl|1CA9CD+V@7HZ(tTIA=sjv3+k3Ph zYbmwX&|L%#2Bk^xbYxKMw;s6&mhu4p*k*2lZ`p;~T7JMP#XDN*Gw_QlqNI>AH6HI} zOMC&gfg!}s(9uwSC}I+~P2=)Q`K0$Rkc+f@nkNK@cTawmx5>JyEuy@c=FVBjR^YYB z57H|lKlqsPLk*RLMY|zCXfClnxKZSXv0cdzMP)7EkUhKJB|lh)BR@WV{F_GlRFJD= zHA4RFn4ftlLz}B4n3CNR+@@eAB$mU}yK*Yp0*=NTYfuc0zcKU>Q=hr>Gn=QJcejYm zpOYXq!GB;v4-@z+a2JILHE;1T zH3^M~zIC=BT|Hb7arw5Gi1>PAONe;?FMm)ayH0+a9Ur~Hv-;h5nWgIS!@Q0#Y#5c(XjA}645S&&In`!8MKb=~L9^V0n z7wqMa-8mtSTLIzcrj?g8%c7*op->R?V1{BX*1%sd>s5Dzx*13xN$nw?N@fYKl6fU7 zjA?I3gD4^5iZ4s}GM`uDc{LP#5cd@LU|9uFE#`+%BHw~czIa{?#RaTsbn5bGSzMqq zMozGANheB-6KFF~J%h^^&4tgkJ~)SHQ;+2+n^Nq`9}85g5^|t!^>`lw4N|eKBLn^# zpVl0RFjBy=KC1`hWW<{71&!n-1qnh%eVYstZ&L&yZukw#fut^u(J)V=; zTA~jlbR&K#U8zct5)0*imZ%sExY{YtXDYK##OvHH7pDZ@GFc5Uj2W#fSNk)l1G5rN zY_| zw}>~~H^rM`5c|YAAolwYC}IZ;MQr-dgxJN3*s6X-ZyPF-yxc>Q<0RWzy7!om!sm(n z-JYpvPN<@2jv_4*Jh*DSBvg=JN+IyrjpVP0YYN5?ZV8n95yb)MGbL702SsNvBMS@D zVyGLkb(BI0am>&{D3VGV&QNp*J5Neihf{Qv>uv`2NTMAuJ3t3=I^se`PPbTl;IOF# zL>q=Ck=G-%u~`v#V|>jXx;TvdHSQY6KZT?qM)e~Vz*P-M|HBSQ*WCY>pJP;q)KI#9 z81`-!vwvRD?A=UkBRqK+X~yYF{8%zAMm$cj2(L(!|v;8Np zQ#|7h$IC7@q*6$OM|ksH&rv^NAV|Vez!Qfvxwxe{x|4Q(fyWYcFB|TJGtGsc8X(q2 z2{7{MX9^?O=_MGc3A-zgf#@dRfA!@tey_&=9`s-12=fCw#4Hxrz&*qV;k^I032}^H zKtP4a=rWII+N*?^@`X_qYH3P?v9K7ecxvXOdL8;erWwqazx<;zF7KVz@&N@Mmybo( zwzI=@_?2Hyh6ec|s&Sh1ec%c4ku#?>L#y^MObub82&;nT*c%6_Kl=_eOBq4dxU-2~ z4jz@ueF9i~Kbgj`x;B1-dH#d&_pVTic6g=~B-rQL+LYNFOHvB|1~hKG_gdF9Vpc*b0Wv94$3Sk&FZQRxU&+aS3sxxB!-ws5txCJu@KY{sXnv{a zGY<{wKKLjuiYP9CD`OaH<}Us!S!3}U=~uAfAYoPNeL^2=`vfJ1bGSMGk}8l@EU;Gz zriU^A3}aPPEqKYeh7hU+?uvvUn()@u=mH^Z3&?yURz|_~_OCWv?3dSiAwlC*#%)7R zG|NW;>CzwmVoyR-cGs{m%tHz)TaTEj^-ZM-;M@(wBuE+o=nwxKjfrZVRw4SJrX#2j zYtO)z&FZ765MQwmK-Ljeh^P8trW-$=5@M!~#6p&y{_XXeLQNN8@W&a%h`QB@ddS}( zW|7y{IuP)ow2pMX!i-P^UPF)pF5r0hZ(>VY$Mw2yN>DWeAuger)`6vyXdS4owCMkX z*1<8ak9}Fv#!YVGES1V|8t0`9&P!PhDY3>D8G-blt@Ou*ZJhPRPECKM3ocT=d&lyp z?5?&2ka|cO2p&M(DxLDwS0p$ATkwy={`!LK?FHFih9^;C$|Fw7m5vh)oDT^KpP7{X zzFG}z#4{>mTli}xY+2=64bRR+~L!bf#ZSz~)0w`{bn&MEAu z&}p7{LhKMD(gLtXtZH4ZuYNTfkF1Qe$oMSdpb$M}Jg=arsP#a^K8UR$-%A$)>19+L zp!wN4K6OBj3aU9ctT5q+%P?Bkmo*u!vlE=rIuC_0T3OR@fwB{i-D^goK2@v?5y>EFz^J?WtXYjaAOM?N9wIV=x+~(XQMloo zh&2MhG}B)VFB_u*D|#yx*mROOmI6!tsHi$GK8ETf^H8k%xdoq#RMkdDTS@K~s}0xp z5PCi^pYL3jWA85IMQTeet7%aB2X(8cg<{aZbD)2Nu?(XH{kx@4rGe=9tuiQIqDR>A zTRLtFI5MievNTsJU%}g>ZIurTbfxtni(q$r-;jns+F++NKDAy1CX_^z3$lkx^=q}L zsp?lLat{8lG*SON)1DU*pf|u(Uj-Tu<&rK>XbimOr4yaS7{*m)+esvl>BG<)__8pTG^VOAbLIyolTf|_ zn(q*c%}f$B*t^^Wo!1lh;wHH3E@iG(twg&C+L!pRDPoLl z(M|B(S)6(36#yvG2kj;(QP%3+hp`v2yd!lFaslFdJ6m14zyhovL#9vj1AJ zxA=p#Hflvb_6PU38`l%LPk>vT^(Kh~ioBR@W&Z|FK?K;Y{Tmca%zuL+r@b(BRxZaM zwr%Xiuk~`|%`TCjUDaDq#M&sAbyiiROucm|m0#DAEDQ0Rza{uZSD-|U!v4dbZJ}9z zFv@bI^ao`hxDM2}?KkTD7mPY3BB0TecsO<7ay6e6$thu3aY}^EH)%9ZwWu6&|)sv{YYSl@%4p`A5kt2qf(0X zH4U=Xy*n_4$-TUBth0$?)u{iUrUYJk8-i*@EA}Bfe{-z!OSc2Ps2-W*tUW*O_?_oR zuLpRVzB!7%S%9T$98SI9qLtJ=InFut!WTIn4}-PnQd#XI487(f1ppozS)yB{!MgV( zzUPQdBegROGoY@d0Z^L)i&4U5@zrtRge7bZ`0U1`98Q)#C}Rar_5$X*G4~=i|1(9f zj4!L}XP-1Sd7-p{slbM;2pW!-|I#@hAQpay-|yhJ=D)uezl=UP5`K@0+Ft*Oh1$u# z5w&fr;~Hz3c$%1vLMqM&A@USLtq(p?xKy_ajeP*LLSuF;Guu)5v+E=We?@zLFaA10 zZPfTHRs4xbS4AlRoHLZ*F(QJ;N5OM5S{5!G2Ep?`EqE{<#Ro!}16CX+B8YW};He-& zX_uyXdWfOUDI5(MFag}VS6lxq778AUpVYpl8mT?AH-*m?ThHEZu=Tvh5V1AB#8ehC zlO8Re2Ifzs^LPbB&_j!#C9juHreULkMXHBG%JqpWzXF2;K1cdp%!D;JK+;V`O~Jmy zf6|f;i&scG)1xIFy@l0X)Mlwxm_h&*3RycA>er63!d^+4Xz zJS<(cdT&!g6Q4K_g*DaqpYwywpY@K?ucj{fdsP0MGtuGCh2Q^P{=CaIKa##(UGXij z%oULN7--2v63ob2$*h;2#YH|OC?Dv{%fT7Ohrtb=8Da8-o>^%u6TJvW$3kI%?Sh)e zMEpM%UhXS$=-EcT`E47SN*C)}VJCYYy8)jJ0E_g4VyKh&RZqZP)zMjn)pDm*{Di$fwU`=(2PH14n#J zBKN=%gWrLL5;M#_}J7ST67mVv><@cvPIG-<8M(*uu9=7XMryZ2YcKHY}?Vz9qb)vEk}i zvx~CdFVUL=Bli1R){SAZAHV3H%Pv%JKiP!~`cGk{_rOY@{j(%2MLbIQCJrpIPv{zG zs-c}ir1&|VA;sJNK}m6Ku}_{QQk<%(7(O7pwKe)53t@>z{!tw_#{S4&8xBV4*gX4U zAuj0DQhROqn2v-6_=Uj#^FY|*JLB3qHwP`7NzX6lN-E-zqF#h@fmd9%_<49{+v2UB zW53~K*Agb6^4j|jYw;PCr%L>y(%eIysmlPoP+8Mj5)d6WGCyEq0;Bsrc~>ldacDUb zgd9q{|J0}ts{39vs5|nD=V59=njf42V6tZLH>J7Ne!UZ4(e!lA#%*R zeIigw4dXW8-ENoL#q($#l*M(SwMfr%S9+ox@v~Eo_}SJ>!r9*=Q=$64ZFT#`=AZA9 z&$l=G{5|`7tc}(8@zw3^n1shxMs?v+spI45Iw)T~)4BIc%Xs^YDbF-nctk2K=A@B9 ztaybB&4l8spk{SNC>-+NhN))3lfuA|Y3ul#5k8If#jbFq>yy$j^LCQlwa}|j3f>Lq zL2JpjDnR406-ISd=+w|!nEE74L#8R2rGENa%Wj#Zczyy=n=uNetaH;n)2_h-Le~&z zDg~S2hxGY#9Z-ZZ8~5ArGp<d2s?5i3U_zM;!D+y3gcfeeQT9frRzPMGHrp>_o>k~95(PUn9#cJKSvs6S|!J%`}`F-GQ(n29GRVAPbik=xU2zUQOm>Ff?PsUD(^%*IW`#cc;{EEm_1uWFI<2SGQ=Lbfqed*fS2#SJiC=%-yrpmOtrA8q`ZnQP{ZQ&dK8f*9Cb2-K9>sA%D!MJ zd&-CJ_CN(b(SJ@sg^SvZ!o;Bx%UC^Rw~!a9Tx!DSq3|;(j52%NWzN7BGw>%)aYCw( z#MOD;R-6;WlRqB=gSwCc7mH}lQ1j3@1w}D$IPdbNv;zL6xH9_2-#qJHKYnt@I0IN`C4U@CU>#X0r}B|M+W2X>1Oj5vOIceaLaY z#Bd?n7|b>Xu#MQ&WBnrj0))`Ck*Yf3d^@QNp_iq|IFG275IjG$@`)+&6!V|J3{=R= zQTyoDE)>RNk1CH%UIzM!B@&Y@*5}`e8yeS9$0mp2Lr8dI!${C>GnBik24o2|`yQA* z3;Sp0c(+4dozjgBp?5yEoPpxEx?B4TciiG_hJkD#z!OR#ZdmbMwIaM;=W}dMSw;S& zUho?VS=-jD^|kvudv(PcQpM@+t13&+u+HDWEllKpZx zQ(GzfW!8@0yZ+7wM`{^o+lK@>82EKE%%0lSY?z%y;E3rdcxUyLytH^AV+~8gl-A^O z5QEn@p$M;GoRP>W*i~epRZQ^4m5&pP(P(9PQ5v)%wZQJw_mjVafpZU*<8Uw-`>Fg3 zjj`1Z6%@Cs33uR=B5KEA{!>zx%Sap*M^*!!;lD97 zY?b|uu+?*anH6Uh9KSvGS5|l}$SoBpp*Z|ATPVKXWa%t4JSzR>Fk_XXU+Jg6mwx0| zO}|8|K{T>kKF7e4^EaOOWrxzhlJ>pR!#)UPH!h9pguZ>cx3Xrx3KxIyP(pc^DLHrD zcJrO(ohru1Pbfc51oua`CAU=hDl-)oWj=CeKph96)wjMOuPz(3BOKVgPJ z20R=Lcmt7#(I`t62#+j8I?)(&_un|1m*EIv4%X^^7_Bs*<@WcMBM5jbwk^DOqKv2<3>fHdcXLi8jx%F6N9C+>mQFv^*~q<;lY|JW-l@gNHeb2H2Va$uvC z{5s}*c^0folV@v1gS3_%K;fp%^^a;U{G>CSn_a*xxb$t3f+B;8h~ZglcsA73=;@UG z^Gv64OZO3?i_5un;RK_xPUdgVL(}ovvp6}i;^3KO=@kdhFH5dC*t>j(q8}y)^v?%P ztO#Bhbt%KkD}U4UfJLo<^+swHNq;_r>vcLBFxh5E`VTW<$ZDkVFljO>Icr;^ETGK3 z_kRb2EDu%K@|!9i(ZOBu3FtOP;DLYH6?-BTr#Gos2Afjc8n#8za$Brn=ir(8G5r@x z1^FeSf)tB*s+8R0)H%k>J&sz1p(ptn)tu$4w&4L0EyMqjx6B`ys1gB_y`g!ogvWt7U!BllzV0`^1rqib|uRQ$qxC5RWwF#JN}JWYOQsqjTJ<@P7lr&;>b9Q-EmQy|VK zMdym)4ZXYkLUQjcF~6~uVR()Ia4w2rs=&#m?c~c3tmNqccgm__yoO+Lk-vy&x5>YS zrOg(}KllY9{{nv$`Q;;^yeJCgw_X)NITS(b>gvxBMKV|Tl6!C}(37PSG9-DlaWd7| z8pLodC6?I#Q(mpDg#5P-Rk=HkQI08;V#d)-ICbhk;fFtVk1X;h1a5So@XJkf6zcaI z)!_0%yoivRvU`DGP3gycf0@%fCan44a~3e2R5In%*e+7l1X;*dE@ zUL|y>Q{ryCv~P9o?g-N?%MqqiRuP3GR{qxZ=G;iZ8r@zO)!vh}x;<-Qn$y(3zWLov zJ(khDsT9@J1x`~1k*02Fp((B734|pS?->7dP?;%d{fRu=4&H-xXClU9o3U@ZQFjOi z)vZRWI+3X?RZ7c>!PSyPAP@7v%vXhP_!yfCo$aZAe%Hpsg3}y4{NwA`cu19QDP0E}pb2+Zg{e=AyoLt9S$3;4q*1U7% z();iFtz7Z#h0RHY6QIyiLZ#E-lcze^cZMR7&g91BHmDFi{Bwc@88+HfEO$GUK{Tevi=R58SypEEFnD-kjUiQ=>f zkz)fOvWqd0Ik1=}n-(=zmI#I3d!`yceV*OgSm3#?ab%#n=b8I4(~H=0j8r)10HWhv z0$n{zRg#NbvnQY-!^~?1`v)SuemRaI-AE3-K41>OA!FtKQ}P4D+hP z{?LcUzHLU`!OMf6w+^)0#$si(m0^29lJ6B#4+=&g^Z}xAEFRgSX{p-uhu#Zd*eM@p zxLfpXQq(PD+c1kDEC8x0)?^r;`$hf+4|qN1&j1%1FI^$h(7s-~e6mCMlX01{CP z&+(*tvKJfc{*G5;cQnQpnvp<^rEPFFNAqZ1^xq8d4QE+=x;5~>6fsOC0F^BR{vk+`s6hi;PB-vuS#q&bIW|tl+_4$5 z1xsx2*aE{G;{^|S$9x>d*-9&n%(aF&%oB!4>sAB>2ARvZO@4$$$9#uX)lx6uwC>vj z(FwUKH-D5H^#=GI&fCV793Kxo2jz^TDBrwyV_wCt?e9CT?(6tG&*EQO9S&cNhtJ?) z!hOf%VQ|fhKF{JtJUZJtdUcWAjNI5GYT)lt>VH zd_$49AHSg3BV!fCSdJ7+#4oo>kz(o-tjh3=MB%4yqVXHv+eBk|-fN<5z|IF-WYYe> zy|Y8NJ)bqBo8;#*|H-C<2ReEx7vV}VnGMQ3`(hz32uh9oss$fF*)n*Ba5~Eolm#rW zK~bN~PhWy(!e9J#@gKi&gTnGIP~u#mSSLo{$Y>6SVUCU`*LWT-Lmkw8pkBZT76^@m zc?7aoG$IULv}4qT!HD~ey6?SJH^!4gv3Qt!< z8_e(6!iFaIG}a5sv(R(7@YxqdgawB1Vvty*iN05J{Y>YO3VuKxz>xP`HAD2Mk0t%X zOj)^+0&K%g0e1;&9U6K552D((__`E*GWtMFlR%HGIPXP=a4@ z&ErLiYgmq4GakPMnrqZ2aNFS-`^-<>edagrKC`^5&+8XO`i$|vJ=y8?p6$(gjdU|` z%`}XI$5Hw{&*uMy_C+l&2*5n~wIeE${-w2imLmX5@JrP(fH;6!`F&Y72oZpJxOW4< zZ`=UX>U%wc+q(cj{-H?!vzqr`I=vC!%f(LnVh=9ZX}%%WWeJTue#6wP#B%Jkh2Kmm z^0Kl(z%sHQ_v|!3b$5EFzPH5=n{Z)$=$jF&TeqL+;C#}yW;mCw#(`*Z;k7T)aKS$F z4f~vkUvSDZE0m~YIrcdfziDVY5PDf1dxJh_;2HbOPu+dyH*Q3;30I%zz2WNfnN01Ok9m>9P4aD;K%47f3Y8r*0$L+ehRtDHl9KXHBQ_BqRxeH5+lj{zPQufZ+#(fRhDPWp9t}g0gSF2(m}) z+nicN^{Y-X=fO6P3=Roc=!83?dzE-lo|w0k{R_9vTgo2#b2qZUrf}y#Zo;jqz&pCY zJ1kHLyU)xVvev^q`P0Z<Uq0>aQqZY|H3*IS;1b4O4Xxt)e2 zhC7NyDV!iboW9ctFeY-SlzLO{TEquqjmHq-{UP`suxQ9s(>c5Z8KiKQ*ygNl>g@xm zO8^nn9GdzgL7%t*hsnd1-XH7pCcM{VPq8&%WiwW6YD8=oG1<%bN!PRo0uWkCRFqg> z{Mv{ivA@wXi`~z1dvg>|Bd8kVO%MjuS({fJt=aIS5w>-%?D28#(;)J!=A16?$pvjt z04L4lCbi~83h04kB6Z<3V+s@i zl;>~(mM=S5>>H{bYH#18DN)ADpr)-y?12mD?(t~6 zKQHdZQkg?E$;Xz0tBQ$RI^ux$j2ejiN$ENA*C&5r;1&lfo)XAa@{7*v-HIpiFZqmrPkPm0l zZvu4}L0NZXcJ6Wop+)A3bSa98c9 zDF-U>DY+0I$zZ~--6My7;W?-!jhwQTS0|Ei?J)^}t88LJkg``5hbBij&H4T%e$|!V zKf$ZxjXEpG=nKvQYt>Q)^V8rLdnyj?jC}pxdrjfLksn`#T88uD?ATCE+2sLN0T_(n zEdizhY+8Rjsx3!oTLiy5%Ml5%o+z$dSAHAGVlZ^7nk2uV^sI;gB$P%$#kZl+O3#1an3E$h~*wA zZ!eQA;?vVnBHV_>QvFMSHT;A2gJOuGI^grnS_9{Jqpz~D3|mNA(`WZdL!I*=THd zJR+}cyxYIgSkF!RayIy5pqoEBz#Dz&WgtT_NpRPmiUZ#Aj^aHBe#tx)hiW-Uzx7re zToBDVH7hwHW}wnC4C)voG$*+0aK(XNT4ZB2zGwz0Kig%!&fQGvq+E=Osa~{`-awe! zv`!}dJSfpkm2i6H41A3M#ebz(z-mkkV~gV*`y)M9Gn2W#%}uI(oQlMc)Ih3Jmhp!1 z-SwVn^T-&%#kr}VG2X%@zRolAPJ$GAAA3LiYgTZC z_&0wWFt4xh!(kIV;4AF%WnuTvnPX>W9!utal((E8=lvs%HF)yB^6%SZz~sKBPJO&9 z(0!vncnBYED(qe#=)NJ4`_1I``Q~5{>!UCR-bZ;7G0f1qq(A+oM=Ok`(B6EV$qf9> z{wn*kHRtK3_)FXug})@^=dn__Hy!xH6bEM#@Hg^njlVwUEBxUN@ps(24*m?mU)QY) ze?}AheK9#2e~zB7l6tB>nhC#rg&69O&tu4)FHuEWB=u>{C1IjNirG!7vTmPi=WJk~ zy~5)%p<4f5+HCZS^3^aD>XbcZ-M{=+xw#T`zC{Qt1^BGt?tzi)O#|@p`|JjlL zr}1lFWPD=&XaDa~HDmpQyYjQpiPQW4f&TM8=PLTAde+s167BuZ00E0NqRNY+``Q-A zStsa%h~Qbr0hMZa)&q@9*j$vj%!?jSD#~|U201r^?+6{O4jL{jph#Q5mD+G|Gq`Lh zh4%20uWV&>*~9}*bCYg<6cBWT{5nzd9QwJ!Xul1y!)2|gz~BI_b+#PS-{&TsbA+!v zXdo;Nz?YP{(On1q{}sx4*UA=xQ+DqcXlIHs13g;vX9~Xel;B%|8%n*(skj&W>@Gwl>SllggFS$E_n{BY_B%)0H%lLA;%7FKsEvK7GF=@+nU!8~QZ1_DB$lu1|(UVuYIk-&@TjQp1{v zFjDe`PB1NB#&i9`@oMil0{_gYA^*I9Lb#bKHxCPY_^7{mrj6wrQHLOIkcEN#^9Omx z6y)Z$?O-7o+mF2(#^9(0Qu}^*Ww5}0S0a4OUT+4GGUNNR03YIcR0$k_j#c7!}Hp@+HZ_MId)wc^jNfn_VkM&wgYLXFnhg zN;&+}FnxEZASbux3T#LV27zgtJe5yKClNuw^Kr;;nlb^Iy%Nw{r62T>F0&j~ zT*a&N+cchuAej@KIiVgN}d|Q3jQ8wBU+E#_X9IVBF&# z3>53Y4pLAI`z(rPN+8C@a}S&k`+E`rpWIrd?6O>9^3~=GecQs?PplqR>YL42q^ZT= zKM{_xC7=3L{F4PDM(JNPF`Ju2RX-YG`g_7%Z{3;!p>q^1*i~wz=SrO;1YW-*znUEZ$ad$98oa?s%oy zZBAbO7X_Ky(5n@ySAEbcKcc40luBqTN9&XY4ztcUYNwiX<4QC6&w2Hq=VxyAEM6Iz z9|bF~C!l@vdSE4~jqU&rIo>k1X9Oz_O8&^!pFcyR1YgvztR%>S8H}ej_@)nCmcqZR z1$+v$Iu&HHf|0HYYEXf~=<57FjpzGAo48h>*^J~oIC9LrsGcZP|{qc`d3jf}71t{%-mG-d1_X#_Ok zq5RBk4hwDMJkz)mVGhZHf(spfb}+E;0bn59{WIB5dL=N>*=|n+;Tlc17$h6VFJH%( z_~`RG-ANb80-;TQ7zP+50+QvCW_N40chgLvsGI7k5DUqZV&f+sEed}6pj8=sX!>^D zG(yXoPz+6iWR)OUlhJlWl2N`3|4im2cohB_b3btKN?N2hTM>XsYBldolRm^6@ok(I z6}e)Kv^cid$JOHPXc3?{8)-!1dC`Mx)g+C-L#IW0+ymdcsK)t?q`DJzZi2v4r23Y_ zYlXA_S@1KElbqnE<=zfKimlXQE>ARucw)Q{4E`iba3M^^`O zVs)TN+m2M+q({=&LG~zeTc)iR_E$^=W4KXRp4CpajvqRs~)(jX|nE!7-ZF?9DM0$ld{0qFcC3# z(Nl8N9oGjsfA9)SA~H!&*}aqGf}R&gzQI(Th~Ml@c}uzc&wGb|!`^)J=2n5wfr8N1 zywIln(B~Bg6USbb7uwvg9U?S8^ld@rr{GUSuCyN0tswMaLFW2`oNvb_qy#7Rb2W?wTLlvz>gj!v+f6 zjrl`ZRw~VdN}9W|JWidxsfYZCW`I!y_7MqCY1HNd##b!SWU0k(L1=Sc?YFJ-f}gi4 z2z`aOJOg`?lxReGxA!jT)2+m@ms_MS834d)C5xD)ED=XMM=$h1DncL;nUT zU>T~QMQD3r_idaGibv&5IT+_1b3bCY3qzYn<<(IkdK*b_`#!O(GVV%DSG|euYuVZU z5uAfzi1T0X11@s95*KCZ`7T`a4*^1q=UH}-~>SQtXfh`4d1BOWAR zHy(WF=;-)<9J-Mi-3_!2%pEH_Kn?|d$_cvN69K*_xD__!*rXW4wqNNIg#y*~QK4@L zqE-XrEjQ`qsa)#q5bE9l`#q;FSbp95VS6@|kA`ewsxd_dKa(EXGvR@KevFpC+8uor zR$4f-!FIi3_msrW2F&CW3&CBNi!#Xt(0IK{M1vgLYUT8JIa=J5swPT{ba99utbt3rmWfta7V1nGq0h*6LBzw z2w;eX{Hj0~imNTS&kKEsfhptitGwWs7?-OsEe+5?9dAOL)iyV@un6Cu_V4a6JO-jE* z{zigHvp4;-2fv3o;|}Jn$+QN4hyG7l#oB@Hs-Zc*6jTLrel4gPnRB?H>aLu|JaY(0 zuvJJf10n`8=L!g9!{1mN$Xz|Qw=g2s#e1Fg-&kB_TD_rk}l=;$=7yOEn zCT%ecdM;!pae_;XiZm@QU&f~(*R;>5vOvwwcoNK8RhcX2YskP*~idZuW; z1w(KY_GhOkSg8@*Sy=2C4AyJx<&P1wxEi3}rfbe{2Ecn`#IMmn>vBjBEf1 zQ_5Z?6M|?D{j-)OJ7U590+PWtt1OpUP+3+)A^=16)(gwm$@{l39ANRAS;{SJOKDY9`t9};2tOraZqklPtZ5`lM(hWq}$H+$a^F&ZEz4621Q7z1eOPPSHPOgX$H1oWi^s>QX>*d`|zMb>**+@tQt7X*H_eJ+(BW?`N#KL_#}XLl|AE4P({x`x+!AI@iHepuu4 z;tLE5v@G6gqALRgE*ygN?G}8D1U|zEA+Y%dc;(8a4zKm9`W~mgd)2A$NDwZj$Ve@& zjw_ehlTSD6y>gl5Van6~ufKvTb^k#*2|%8Ntp;j*G)y4Z0|<;Cf`)M*PrebRVi*jR zlG7l5ynl3wA7r={eWU|-MIuNJe<^E#9_INnJ9frlo`PQpu7s2B#+Nvt=pK&}HgI>9 zk$pOXAs7Y~Y)te_-NW|Go;dS%9E2O%^?TL^La<;QMuzIue7O%Exx<$Szn0fo@;V;j zij7{+RAp{{-znlXTCGMXg5e3^SU37bbAK$mnN;w>Dr|kdPT|Za&4*zy9vn}+u&;l_ zkYit09IpfedUv4BxNH(E3$cxW=>tUanF;-*+#zt5^|%xTM&&d;I?0R?E0;hWKz@&j z@9t<^LT=#6ndjHyh9e$g*t!{SmL|&0LF+@@)Ubce==;vx7U*FHSZC+VL1AQ#u5QevhE17f7qcmn5NT^~|zOYW_Z;nl;6bpm1IQL)!k zxeecX9(rDC(2G=XbFs(Uh5@XSQw|#zu>oelyBK}=E{oirL5x9^=(L%^6?@2;#YS*7 zT9FK=_0|)E6eCbf(J2hp%py-^aQs+(wxT-l#&~BiFL;L7@LIdz%a$}SW6*PEmcfCT zN+7W3Wm zy?GUfdY69}PSPTf-XE{+>pH=+Y0 z%6fw??f!+JhtE4I!eQ?n#8%Qz6NGTG1uL{8`)7E{=H0{)3ar7_f{2J1@CR2M#!6kc zkL4-$<847p2$EWjbXH1gc466&85bu%J0klLc8Su?p!n!&fD@U4}nzl7O} z9ZbHV*_VwYqC1E$&*hix^p_I0V44LiVCr#n!<~J0p z@wN$m&bq!iexPWUs@OG~`#8fRlnBR;V&5Qw2Ae$3hA3NI2;pr%kEmzXnU6+Evx^V4 zw1}1Yk5mZW1L8E_z{2&dKHqvb;LyUahRh5hwvfMwf9JQACy=n%H822A`r=9X`CPwu zh5k{UoDS7HAoe3TyI@Ny&8}TajRHGY%p241Z1|NlL8dtoH6lbrIeL3&`T*EdxahiQ z9CId$ouD$k0>vGrD3pxgI4VWZ>?LzSZ)qr5MccE6$QeXx1&VI$!ZwWB5FL3kjggV+#$Er@j5dJay^>w{2F)XINfZ z8U4UA&WY7#LMgK%%UHA@=2u~T8!-E|V)zU51JuF~8h`%{q~I{m;z{v=e@fI3?OmI# zoOrM=*36J=!_dpzL6!8f#(UNJXzSS5QC+&T$+JIP1)pd1_Pui#7CD^IyinV(e1ClLKgzmoW*3E;e@ z@kzIF)R{%_#n&rqQ>}c6p#-Dwx_1+KXZAYf4?xzi)-a&~2pIA8S!kiv2r-h-B;6p` zpv3>qaN11}m^3Jq+_pxypPS@I{}`W?V&Eb`>xn+gDCgzjtZvqUnS}B6VdX93A`2_Xr zIHh98ev--ZBcsY|`w4~+*DFw&QJU+HDErA(P@YKeVr||)QN)*D3naH9l3{!m`@D@| z;GY;?HUh2v9EaYK)djEUVG)&x3YH*dSLa{YI6Q)^j4yyJ9lt_DQ74dkG|Kdw5gz{w3J|_@v!C6sO^YcR0b5O?;TgFTas9B`uHNjTns(?4Opip>S(5l(=0BQD&8rU^ zxtqsi!k^`rGq_s&_igdl?Y}(GeT7Kovqt5I;=LOC8SLLitXKH`oL8gPDK1f**Sxz* z6qmTVtMH$Q!KnM_BmRdu3K)zNtvxeo?$E=RKs~LC)M*=48ECU&D$XjX5 zo)2K_M`3(@5BLy|UPjK!AVIP?07{6tVk7e~OckxQ)l1pZy6@wA@L_Bm_$rg_KO$E41N4CU;0A>QEI$xrSJhwvhfm}p0XGk*`8mqj}u}3 z+Ej7#r?MAf~_%He)N&{}hT%df5N7(0x{_p!5aQb%M!$-;)J3(CI_x3hC> zLpRtucK+<{Le38dCiq3THwv1(=&QH#>+TG={~ zVd|B9ejlt4B!Q;AEof6Ot`E*ZBcepczpd5>eR4Rp-N?Dw&S{b`<4thmEr*!Vl!3{z zKDclucv>w*XQO?rpYr}jo>K`Xo2(Do7P{64qy*TO+8mPGU~A}dfxyPkKF`!mFrlz{ zrB2P1EC4h-%tL2s@`Y&$ccQGD1JPS;2Ec}~eb{Gs02$xlQHApx4H;&9Hmh2~>(FNG zUs|Y464Ms&Np;HbTcG5ia4l{jpD^>6;W)>n03MgMTUvn@k^4W54P!@j2hew|=b;0< z1*Au(oq3JW?(2QOnRas;(LZNr!G5%4RpmCN-7ABqfp(|hrO?iJ3pRwQ7c0UQ6Wl5R zJ>mV=LAVzWD8k_d7j_dKbO^^%AY9daML6CzAzb0WW`rY#&IX3gzPU%MJlQUvw=4}k zDfHxT9tHhuBX?ej3KedTvUy^9F6*M>Yw_XUVxX2gvG(91+=glj^i-iW)+6&!RetDW zd*!$meIm0Q3E8vp39UzpAub(fn3I3SkQ&E~s`$k*uj76->LKY>5ss;!t`@os`q`$7 zs^bV_s?A|HU2@PZYtJRbc%{zl%3yJFo$5uxqpF47KiMtFbMU%wB6?ecUPq1EXMc6K zkjfSwLJMlt;=}QH!l?$a#tHvJV%)r?T~LL~l$3`PlC3_y6dRPVXEpo;_K(-V2G8wN zY=9SH|EO}6=zC8)<5FPx4Qsx&W3pnVM25O}%}pN1EWn;gVRIUtTUxCi=hNlaIf3vr2W0CBB* zD#VQ^;^whxoFDfp5O>GV3UPQr#O2O#5XVwLoFRVpS@Ka6#3dQc5oac2ZSWC7(rE!b zNn1c|1l@R*An2_he=~yqc*u>QEkw|D;DKmizx5W|^e6(O^XmZkstXCQvH=q21q$XT zUjfYJKM`hSGf-gnn+~u?)hLP2q5ypGJjF4*Z31}mmCXUC-RFSyB&7|bBDPr`T-HSN z7o{IfVV(9Wq~Y8q;iA<4#+{~hzcgwSK4=G6D}7)+yQ)zqMTu0Y)R8K#^gpj~SFDyd zi}51-vaLJtS87JBXpj60AQHM5NLM+<^=01XRfF z*f{$|>PL&OqkP%zq7xx0ppm^gki8N`Ct+e<3mw*2vj+Ndqp|sifLSpaS5VEN75li~ zulvWa=1;oP*!MAG)zscwWAo=Ya!Qr>+35aXqx&|a{m0a3W}#KoEiDD>c5rgt9ELTY z&)Fl(a|`yBy0K^PpJdh)O(W%ISDZGlNgX(}<%StAI4?J_ZCJsRd?439aA)4&|WjGyNHsl|Hfu)|MqoEzXcTrn6cVM#bGblm=R!D2tMe`E1#la)E+Cwv!_0z==fSNwQfwo*=dgPqM#m}kS&fbL{=VTBJ8{1{6$(cIH3>^%1 zA~l7WH^Y#{q_0?j-@$xR_ibeV9h-*f1zYdx z$09f^VkUsl5DS-b$o1+IfX!sw51%4}7j4qQ#hyq`d4yL&mEf1O4D?$Q-p$xdQhsX09&=kg?p^koxA4BHedgJLw9jn+{!=mMTtEj3 z!r(T6H^t0VgY6MM*&p!-&}c=$9km8HJg?63!1!5fuYdfqKcWh6P(8M&ta?bIc;k@+ zV(ZxMG>l$p+k>*vo^=1 zP$z@C9hgS2`q`*nuvay-4JA4_4ncg!3xE0X1>$>Q`B?X^a+mhX}QPzl?&R>t_erk&oGowbrbtpJ)A5p+RxaVH0z-Wu^~O0{j3_D(()&ji%qeg zT|oQUYF{d>XaBh$%7(U{eG5nS5v^x;oD1t&{2mNQ2;&TGJ@Zx3dS*&JUTd|k<5;X` zZ;WpSn@k7|xtLR%lFhjn{p4;98#;seg{bObk8jAIhN~feytuGQOb; zGWeHZUqcM*=5bv(3VJ9R!m-fQo@PDtWD6{5{qMeJy{EuTYZ!i{-rM}w7otGJkVElhI z`87oB!}vxJ`;b&l10O2Spk)qeH(+-gpO{xg!`$5y$!A{cZ;uI&A>|rgUJaw16ZDh= z?IXz3&#@Y)cn+HJ@Nc0RM~rgst#cXWPPmD z!&V&n*f@dMKGDjVMQpbL<9}V`95A#UmniFj*2j3wGmy~1R5ve>KEuo0sBCrs zrQokn_Z??Pk4i&E@bY^&2o35F(9X)xkQawjBPz4VD~5F(_>5R{xaW4jDQ0aYhXk1d z&wBrbt<9z^Wgz}=th*az7$A!BVInBX()e1e$5B_h3;5tcow^1NH^w5 zH+U?P;Kx3HDa~%b0MaK*BmnUPB1E-cveb6jBY2eon$}_*8zob@*V-^fA;KG;&-SvU zy@k@=-y>i)*mv4O?hq&EvOt23n+lWxAsnY_#d zqVWA~{563FZ^d8tu*oJ8L-AMH=-g?b z@B8ulOZ4|+@qJl3?6*myd3CZ8%!w;c7U6(2GKNkgV=v>-%%7v1d6Ugxeg0Atgf_W# zx6iyr2;^4%|8XE%WkSdQ;=)Pjh<46)+9Cdhbl4CAkm{OLEw{(Of1O@;_;2-JZ8}-o z@7089ng5L7ZilmPA`Dj(2HQTLlu1Y~1|%80IM3$#5W-d>fpEDkHO9KcBvHyk@>MMd>Xm-O*}=GNOCRGMB-!-yl9L3v2t)U(D?<d&m-~8^2gJ4*6F1EiwfjRG9)bJ<<56 z=*C}=#-DB0I364We(NLjYs>mY&RAXVJ|g|x@ZCZ9ZW53%Q`Q*Osf<6_j&ziwEi&(q zk-N7Xvv{u&1_q_F-+koD?zbJfB|boQzje&+mvkA5xvf0_{mywd-sO84zs+XN2qxV9 zi;{1fucTO@eCy)WD3wLaH^JXf)`C&$=m+H#x{mz507LQ!`oYq_k#Aj@a;+DhvC+#B zj5(XyfLO|2xl?1Cnj=QFqb8I^sRCcCrw)<*%?aqZ?l&Ra1pRWu5#gx>?z<+z!I^%nKq|rHl{LTD# zJ)sIf*92HuM)i24b_=d)RoJCAkcq`hN<#t1IgVX8mFqg@6JTUy`@^(MChAAIjlc2rCTrE;pTvv z@Y8~7Y5VWe_WURUyZQSTwtAg{pUvh_Kg>1eO@R6vW zcfzS}K-u?18I0J0Oho?fSDQpIO#VAJ3K5U8Gnk)ao_ZeX;xW+ws>u8~ooy-kGw1(N z_b%{J7T4c+5)zF-e8MFdxoFT8gCZsfnh2>In&2*MASh~-sHtL%iW(r%D4>B&Fzd25 zDqgWa<6Wz@R4Es+ngDXGl7Mm%E2!8$>tc)8%FUAh_j_iZXLoZEY=7_n{k-|WKDU`O zXU?2CbLPyMGi5*7{yzhL<|>=N28H2|{Au`+^tI%-=C7heMPJ`9F;WafEZI8Tz#d+K z;L|@;Vqyyq9TNfbu%Z$Z!=TXHgtHETmM<@iqUEvV_c+~u(=AQ)dddx_r9UDnHRO*I z^Apkkh0ze~lMZR{uX#yo4WA%0gQbR9O~j5l^5#f>6NwXgkUR(O!TO3Y-cOuwA4#7} z$bZ9y-Sv*T_lDU!>cRo%yE5Q>WY~G2_Sn-=1X&`Sz6fj-3Ez_6kx~nJua3^!f&9Kg z)6bqi-9`EpTJ(dg0R0&Ky(k%G)e^|!X863**~)iF;tcG_^Zm`tG=-9!L;dxs_LNit zeD6)|$f@ReGqeDg36@dIX&)`-%S7p8nNUsWI@jvgp6_2@9Bj>X81~n*Z$aH=8wq9%OT} zv80MzXPy@l8e?=Y=Mu1zflu71i5glI9u3}QOV@|~Xg76-H`4ycU;ej>$60<{xcpQ8 z%kqz{e@OkYng|k%6?KVb1M;Ui^KqLD^*2~#_?h}gk*2>>%TJ^Bei$#;8Ah@b zXQyD@7dL6VDdfT~q$>9%i)j>=E|(acX%a3nPn;)YEJ2KabKwGuj^?5gt9^YWPC48E z=Zrs{j1So?LAtvD`)|jGrJaor6E{h%I6ka-)T&e)<}m+!eaCze{9hO!`m|?PX$|~j+75yK4R6;JaC=WaR0~TlP*6A>%!Wm zctg1SyZ`g@BjtM!((eRgsgvfCE(9MY+8!a==j~+d&!peC8*Kcaf7qtq(rf=?`nmjA zsqR)us~2v@C03@0{*^s0xw0Ea%B*pzu;TH2igu{W3!NV(T%8{g3uymCeng^irIu#@ zGyvA$m`CSYEhExPVc|!&AMjw7EHI3maT7edxZmLqU%-gJv+@FNq{ynLYxrq2A@e4U zH_Ku+JUvn!nH?y0oThd#1!g%;3t@td=?rG7veOu=B!07c+Q-EIkO#%(1gAg30*4;u?!+EjH1FGu2P${59-CMZa>3zb5Vq)9?RL z{yI5HXcfs{{bpI@GV8ClNOe5?)pLZ<=g1uve`S6irq6%DU&&*m_-iNjZmZ_~zrzjKmf(d_3F0zRBGx_V&3lx88`em8leHNzQ|D*i%X4iK7wE`|BT7G3*Ws&N5 z`0Jfviod2>{ME8EOrQUPzZP8@#a}bAjs5>Bf8BeMg@EF(2dgZC34a~A!XnyF@K<)& z|F4Wwy2$fq5UpW0J;7|xVA(>cL%amKFQl1^hoq?>+b&exhQM|Mgbil^Lc&i# z$iL-N)p`h|?p+0Ji@UTke)jaKfQFB%!9sLF>^RyvOT0*8nnyI)TrBXsh+pLe9vf6PBPXc;^KYiip|Ut5ns?I8Vi=7DT#fg?;-3 zRMg{xpYsmmq29s=@C*S>;!hL(D!2OJ(28^LdtQYDziAbxdVKomp7q-(JpOqP6;Gd1#)|X=2ELnuy9Tx)@^h5R4VCm=1COf4s;_dOA@f z4o`l~j|!0`PTz`7FH`O*aNWp4xQ9s*n3sHukULVw?;Na|a8z#{FLS6TLZj&H}o z%Cf(sm|xL{X3)*WQIXn%d^ zEG(HD^ERNzx&rrMdFhZb?~ix@uf(4wHOOpbR4pHN$D;o52gA3F8q0FSZ&9|qz$P9k)!H*f#=kSG-_; z1*3ETbE1v)>72jp5wt(Y1+}!%4xMNF$6_zYyjcQYV}G-T-v;{=1p9|5!2=3=z)zX2 z;NNG#x3G_Z5B$4F;(q`r693bq@lO=|C5)rSAO2}M0~GwzZ~=QuLv3S|0_j%($0qqB z8faey6sKkhQLz6ND`_`#Q%#!k5(p$bIQO;~Gyi?%70Y=(VxK)SN_oXX5JDunlD#=y z3gP=%31??Gby=)tU+zbqudo52HZ=xV70^4KGiPc^S?p%Rm`O3I|7SEw-gmuFa)ZE#<_>Z4A;egk66scR&SeP_7_Ce zCcb?!(>f@o(OgKU4=l?(iYxYMn0|RaXnOVYO#OX^e!fkAzfnI=*55DJ@5jk?pZQB% z)$&$YOAtXTyF1JmT^&nX@e2;Vj6mm+^0fxF*78+UyDDtATsat&K*uQ|{2~&(%H@AJ zl>)%;OO^|C2+sMyt94LI-~&T=8P5yFDWFf-M$&xHk-eWrgZ zF~2>AlQMjQN!V8oVX|Z#i!;oBU~${+>xbns6{-~6M-}Ve@6?9MoitE z6ikn#P{$MZr1)H^ z9S}ugiN0MVdjVY6u39tN5yw>Ai6f-T;*GI%Y-%a+8HSs_r3ac~s*T6;9K+?QDcB9# zGrwMFeU0bWEbA$bPubQJ{KoPehzBHas$=*xQa`21(N& z1yUN~j9%jyC8O`V4o+WPfeJ@==%?ZQnc``9J5sBZMvoeYD(79t6e(}9V=N0?6SsY>orQ2X+W9+{L(7P(qB({CJq&5kS_o7G4 zT#6n6NQHdoA29WFTGbHMK-weW+G}n?e6cl15@F%58v+X%{_g#$* z^NB9iTXV5oF55nOsNM?wQpK%w`6i-Me{m_2>HXzID3pr*#pJXFf*%zH|Fl#U*>@s( zdYCut%2B@zx8GGVq>w)n23^4sYa_y8k!2iBx#tE~qhf~BTiZUhi%7L`a zE7AO)*P=*`vuDovofIHyC4hh(AV32tV&zBlY9R#>Kk!NbJxAimb5B?2m z#fTpwV!+2x?h|gDew*kA{eBNd#s1k;sd>^ni*1b?3`$GEj!VdVh;gm*Bg~A6b!O{P zYu)WQ!7e{6KW`HEEy_Rcb3L;FoH}PU*@yuwE=#8l&<;$b{&$v@AIzqht|F>Ydx#g} z?J=+xJ>w_=NpSO`;|APliEWhy1%^B;T^Ac}r=c&Wys4;gilV~fue7DYmS41`!k1V$ zJ{A?C^w*oNX9m0eo{0KWu0XiVS8>1t32VxM)12Q$;S_q=#tBK;GM9vLa-u?LneiGY zK6chJcGqk>K7VjsBz|5*8nfG{UAx#oB05#Aogd>HM`uNE^B%ap&@wPhuFd8xxSCV& zgT}3KBm-4*YZi-E4?*7%Yw`{iON~#BXhc2#&4?5q?=_2ne;=377!e=usyBb)o8eL7 z;|xo?fiJ0}b*;0mio#>QN*`c)b%;yt=1RyR>L<8BJ@I`X>Tb(UY~qD4%j|m$uLCF{ zQsFS{m6-FlMzRfdN{qk?YsEQZ1H(^1j5BmkC;I1ivp+;Rc~VYJJ})>!gVyZ*Avest zvDh;|rI-GBdSi=^_J8M;J2Wv``Py$J{wd)eM$XWq**Gxp8E_(yVDR5s`op+S#@Iq7OLmV>_nC)PrVbU_kKl9^D@8#*gbI? z=d0D^hp_zpcj?!)&}6fsXMxOwEp=7Jh7O61u(*JSmPjS z=8Au`BC>?e=KHHH7~1R4S6JmEwV(zRrLZuH!>lCP3E%%YEw(b3h*n88p3!GMBz=hw zWgLcdCAk3XF3zbgnoqpHY2=c?AKf9{x$u}zU91e3hFvzA={ zM7DVHWzaUzd#9`E%LG?oRGcgD{%)*FdUM{(0y`Kr^>`qnG%<5dtNpXLxS)pN=;*Zz#l4|on)w$1Y#C; znReL4Y3x8F;!hf(qW~3S>BBOWiJh3fCYO_yT(LJuX0O!glxLH+!_u_1hcW2p3RkWQ`@u!V*z{*h>Q)QfdGq#r`i zAoWnWE|z>YdXeq-u$38&b6&fuMU+x}rEcgst4RgbO2oXQRzd>`22_qBC`INFjKawG z(Bp3|{OKtp2foXlMQ7 z=g6NlT?6R^ZRJn*W77BApP+Ax#g?7Z_f0EFC-j|rxy{*@(D+Z}&!xJUw)EZffzY>^ zmv;1haVO&V3m6=lX+rCr;81p_6BU7wvyzWF8Gc}!zDVms6t;1A;KJ!u7ZKV?s3sK z?0?RV1~Y5B=~9m>y%R%Tm%MpiANl>WLR-~m!W$xmW_4EY%a4)Rkl3M1d5nOAe2 zfEM{#v`X0SYF_LjE&18+T*Y>s$WP66X;^O))3PG|-@-Zrg0=3T&ftfUF)%G&?M}yW zmF0=ZLVY&|S1z{3%!VC2Y41wnlJYGsp^-9w*>B7h{SIz054?b6Jid8wixqa9XPN~j zIbcEBP;sKa`$e#R^ymI!`b~7TN(l9~?)(*w{+Q?VW)j@@#(gT2GJ)VPFyKJm6Gb)H?=-{Z8~(vtI$|hpi)9JeVUy^FE(6{hVO+ zS&l+Qy>C!U-GBQVwV$!hihAh7+IsC@>CSS~V7*yn-8A9` z`YBwd`*MDGpctVVm&X8*`RY>)1}*neE7dq~`UI`jQRZb7s!q-=U7S0k+Qp7CW2uUY z4Y66{m=EZ=O}o3{VZLJl9`a9W!m>+^<6++W5I*;v;E8zgjKqM&&5I5Op~TG_j)&CE zyN(BO!#t13b-v?KTuZTHd<`g$FlE5Kpcdx^?u1pMG~dW?$@6Un+;0-`sx;Tg-<<1f z#^XsyTAF9%ugvqU#AmZ>LG8Ev+>Fn2HpEn8a!}i9C-AOAdp26%y&IBImVAV@EzeQR zh4tY;BfPLKZmEc%h_hEn2?%^A{F`PBBu&y`2zkFdQwK)u|5q{me?eN#PqC7XMeGX4 zaQ`gFD3@<|s&7_mq9*DjP1H4cm=Y>@Xi`R8WtF?{fFW_>HT?!NAi`gW>0?_hc#X zXOIg{^$4_PX?Y2U%Z_A)z@l%JsTn*FD3@x6A(`)FdfFQ zoIBO`a(+LNK|kPT1_nL3G}n8mwW2##1kuPR%WGP@&g0?DJo(0(vv@FO!ten3_Lq7U zqbmO`C;mzLcOoz9yFcNpcjet4UUVLxDG~ZMlN^iHdi7D{AI3ye;MO}4AIhJ zmZOYubBP&uA`mm0?&}5ir)&$eEb zE9;e!PU{t7WUGVGLcLgiKUwrvZ=y_Cb4Q2)xDmy%vuK;H^=O58#*&u@5~mRM5xCEN zCFypU^CrOLi&`v0X1BKyoVi#XY=$p&^n;|v3FnfNXC;KBKa2{&T zLk+lPgY_jW?yo4o80UdrRgLF-V<{q|l_Yw6IAsRUaA)2zV*;48*fGZPuzvbG$dykP z&^#t3YfKad3ao{Rbt)ft9soRk1yojP2(t^kuvf)N8Nalkk0SKDe-?BLE{?(l=#_Nv zp48>&_(1P|T=+4(&w``L422R}gu8UM?L#3wQHTeo9@g6eK{tF7EO;C8V7ZAWvCM(_ zJSOHoIt^U^4*SrE5?q2D8(i6&j0YYQx^8d{KI}$_$^(e{eHaI{Y(oQ{=*D49GbV~S zB*hiaDQQZCFmyK4T?fsfw-5b-h~4ujX{*m|t75aOj4Rou4J_8Ts}u`erM|wUIGkcT z%I9h6O8&@FoigC5BSmbX2l1ukQ=G^zO1@{8OLuI*C3Lebzq(XT($eqO>U%xEUuu7k zkbmlXHNST#|J3(#e%JDEJ$RuHMoNHNZ!YUuleAQgH?1KA)hpNiP0xn0`HnOW4fH`+EE_uED@` zo6S2d?m&O6IwE?J`RzyGT`o;W_*3aAVH!n!PWPq4l1aG8&>#~^d@{G>+BWiar?GCB z7;^lb-1*#)_;Y^vB$!``_+NxYJcY2aqz+vH){aBG7!UNuXHu3z6_(WHd}|)w*xI^0 zmC3A=m>&7qi!({c=&pcLAK(tX{0Vq+zWEW=6P!gQ$?2z$p_Mc6Yp(+p;Hb@NViK^Ztrz=LJeK^6S#1|K(Qym{IwVJNrk5 zrYh`l6o&>%E&q)D^={wy5l4ozmY!Gy)@?@BCcxE}yZBkJRk`o#dVwM#)T{r(+?KEM z25-mcYRsbtZC;=VyWvj9G3FVS&$)5T#WUDH=sg&F-vW1Qle=|YXg(XRnFvDKVUZjs zU828Y6P)?jCR7JThJE}PxPKpn3;PUH+LM1DI9S=QQ-0g07GF?%rhq1J5Z5%`gCdG| z7C6W+>?%$sBz;_gl#g2Imc2kMlg!87t@v=nJzw#YHdW&jJ30}CVmPIs>Eutz&nCdu^0SPB5+miidKA`yWK z$NtFd*k*Wnd<2L*|AQ1mP(Nl2V$mM-VrvuNHO&5)ogD+c2Wm&Iu|D7DiTlwVxF*h6 zD*cO~wC7&ItYk zhRQa4qWB}z8kf9#(VsAHC0z7|V(vb`)=lgjAg{-mw}WYAE&p;D_FV7uw|5g(;D>- zXrZjd>YT`Q@Uh$3hos<@ec_)e`LC3G#oTHSxFD*zNwT2lfEk9#=((`BM9 zKqbj*ac<50|8U5xJdzn7s=I=&{MGrE||+86Wwpf=S(F&?&5F;&@w5*E`h zx|qCn#q3Cps!d3id82Am)UFt__CmC$uelWQHF0O&#h+>XnJORlnNx5T|B=b^qS?G$ ze;9|WIR-!VWT+11k@-rmpAbdS{!<*4jHT-#^QOP|d<mj2R8-do4!c()v-&}Y_8}E%cP;6sKH;`N#H0g2mO+5&KEEv#>_bsgFel0 zQ(+{#NAZGG62eb?jxQGuBn& zjCGj#>5O$%9Bp9YjP;nx@px1YI%5^957$P1Ad_MDO*O!!VgJ&y_Ebz`QH)|k$>M){Em1< zC4QBcNcp$Lm^V!@xHm%n9Wmw=X!)0H%Rh*{%FJA2X|pR3Kg^ZAYIa}P=NAdsls^dA zb%-ON#8$M-N>;)$knrWDx52({F06@?luvHAr3q4Ue7`y+s{h?~emhCI{S3RC^FRp^ zjv|n`c!T|qD99YHi_yaIyY+T4sj8U$y`zeWZ(q!`&WoXsT2B`9p*Ko4{x&R4(p52j zDF*x3AVFmR+Co_tkCG>eKV8skV^Gi(U67WJ5C7S&k1ps87KHO5MKR(KGpv0<&kk%) zxC$yg*v5exIa$z=xvECGAV;_$q+|Om?`0D%3&m`dW#~zctgy7t>Y$i|2(F>zU#3V( zJeq}a%P(d=ZaWl!=IbYSEc=3+J5^jOKaCc7({Q)dBn14hp z0k94N`>DA=0?QZtMxwmX^02^ab0_diH2kb+gTvj~wvpkn6>W_S=dHGk48&o;H4k8F zFyTGH0LH(v1?}6WGJfnp6A2=7_EOR1Wa(90jV1M*-c%nx zYCP}>Zg9?H&2Mqd3yf_=V376r-#r$=M}``;v=LTk4XrGwJ{()=as?*FLcVO9ab`GV z0%!+GGGfeU(CO#g4{WVq32XBDwxY=GDo%rTK_eQpdMPs?O^WN7Un9mj(lUA0hxB4{ z*eK7iOd<&71~}5^XYOJ2x|FY95{dm+Uex9v6#-$+YF&mu=Q5S#a$GFSlJ(V%@Il6s zS4oC~?2r-o4dj`Y&u*AY@!IePAQ?PR3}DWl0?pc3GNcRXpIiNJ5N08B`usg)~WQ*g6zFU&2xD41nz-%f9niv#urQJb`L`W9d+!9rCfvtK*aB5+%(WW< zmiAIog*Iq57j4js@~N z-L0z&e7ne}fdC40&-qa?JeQLT0@ufaZ$`y?vUkmBA?Fw7)!`UV^f81pj$q#_SZw{w zpToX@C7g?%2Z(NhgD9~1H+VgGuOM(!Y=JN2@f`{l{fKj}e7luRb_|?KV8>Js*?8!1 zEQpw#KbF|>s1PwZ-`t@gobvOalAq7oO6KZn$}F-)UY%Zef~;ciWZ!vGuJauYa#d%T zbE$2=n}I}0TqU^NzE7||c(TX$QGxGAYl(?-+=sq}yfEesLU|z0s0%#kXl1!-7l9`* zJ{HUEl@KFSak4mC#OdKu72X*&n*e)!ApRExviGMNPuzcG%zs91)*5p;Q7(WPVD4ME zaScA;3f$f5I`Fxx>F6cyf#11fcVPYS5hc57m^-H4t@a)mwWIMmAKuh8XW#~>{u&Qa z_pdkRUB&0X__zY>p^8O#>eGPVo&qB;DE#mCwstjs{XP+(rNTYuyGGo*o4!bNp9Bw= znBc!Dd;A0Po@Lic%I5_gz`M6v#qWmbs?05bvJNU>2}y#}siV^{%N#}T6tO4zp zC z5l{^bp_e`JLo3dwhIa=2DAf?4)}LV%nrmBa&xScR&yih-j8YE~5-&cj|tU=EJjw4Zt}R`%18 zcSq^(QyT4wLXpzn51nZ1?`6>6yPZKAVm!9=caYLWUceH6&K)V7FklUz1$kGOw?Chf z#ixY@bG>;a?kCzrnN6!8A|je3>elVsEDWlP00#$4q2PBZ6zU2KGjD;{BG-!QP!9GuM63|qc@Aj-_iKK| zf{QBvX9P)QFCuxYB!DWVF$t4~?KFe!BnxzHo3QjR3-jpx-z`G}2XgYRK}!K6!U%T5 zvKp#V_$aD!E~wzT`umFHuGWP-6My22!Hy)z8HQPlA^Xnl-_w zp(`NnPB3arRKFg#@EUJqBLotD&$jMbq1rm}INBQhd!g0ZfXf{%mf_v9|AgCZ8YR8e z`Y@hK>q{=X^~YOD(E3t7Tc1h8P|mfJM76%MYm7L3xwQVv40Z#86Gkv8Q7X6pO$7Zp zZ-%N|@^Ms7#&`2bKjijz$JUYgjwiWv1>Su|t`!c(4-8}Wf;iA|^N3D~9B;rGi8&U@ zb+P1(Adxe&W;aIUmwX_C;OR3E%psoS5-^C&XAwE7{4?$R9Z@Du^^4-G6lDmQ^OxX1 zR5u^~2%6rQuBelG9Mm!6=(xp>4AMt;^EwL=eiiU&MM-5h^i5V0)KN-fLnEnOGpmLX z^v$&MMAc83;YZZJCoMnfGF3kUmHHWk%JbeIV86hfVbr_@&e!}YpK2TN3H*Ql0`mVf zMTCQpxvsU85s;sY9ZvM!V~W0q989#pA$e`*z$aoc!oWGOxt}=4c>Hk%zF#KtU~nx) zFwwwKYieI%V8nGxq$Z=UR5c;2pj-M&!ua8^NZnGd5R5sFR>Js0L8SS&jy(a~DLE0G zlg;;_^p5ClP;14*kerNG;dfXj9@Nb}U#@t@d&sYd_IWrWm!$S((n|&{D|x~lrOZwk z)sPScXoL~N-j?e3x4S*gF+@ zc1!y?fhHRe(vb~_E?Gj6V-Y^kzX$al#`j?(%OHu${(@-&3D<8ZMwX4{(y7#85JO0K zV1bHHgrz)0`bwGns0<9nxI_#Lp`3dw3WJ zS0Y#T_KLGO+-_$Tm<{Nd!>9;Crm2^Ta`s@s^~{}_KZH_^rOznreQVT5vpaOl^ni02Ayz8hUB`xI-Y7x2r+Ir#s>u`zW{)ra% z*NaxPfZda9U(K72v?6!xI!|D}6j6}f1XpW0I|*BwQKrr0*esxN3!P@)GEx~+8E|eV z+LD?t`C#;jS%IELu`*+^)W82kFbHFUP|>AaYa}l~1Ta3BSZL)Lsx6*Dmr+9@QV!gz zc)VHjjpRWqGY>SZzH7ZP@3Ffe!t-A4m4?`qq`vDAZtSTe>|=(xIYk)R<;Ss_mqYr) zy>Njl#djr^5vDU4!;CC&tV1z~HufAcSdW;Dc>H5h)wpqGsu*}F7$}eeIolFZsX41T z6~Hkj++IOp=N5D3Dh3}s2(J(8yKF&eF<(HJN0WJcE6pO@qHp8L420i~mRosyclhlP z+(PL&hIi%(KOmYkBu^^a8!VG1*J$s|;K1)O?NRHS^Fcg4|18pL2$ue+S1J&LLHjF? zeWC4A!k4dGO9`$3!x04rbiWg`)>t&f@-%5?ZXQR7%6=6MaBKuF;wCk~u@9+szJvzz zt}e1xKDt5PsCl-MZzKQ3s$fnXoCt$m)ZB~@^uKh`k|*c<9JJ~&XK#kEx|(P(1Q(=- z6R#pVe>D<=^=zFezps`b0c=_7K>s<*`p#%xTb08M)`}#Y3}^qDds{I}-&rx#Dyxlr z`I@ar{aY;{U?(u}!6aH^7Jy4$!^cx)`WWqfY5xet8mhS5LQ`=z*zdSbVt1HhrO05(j^p>k#J3hhw2 z#ohD`94dQ1lH2lS-r#0BD9xLVD&++V;ZWHJhYP@=(v`id@)?)6HTJ&8-K~xAP7OW8 zej>F6Tf&nP_KHL1I1v!aN9wB3~n}Xc>O$^?UVco&MB}tB7AzXFK14HFonFNU1Mx5GW=e0c9Vq zsJ-@IB<9PZxFg9X^Xg|&ojI!y;?e4)rM+$c#eTR|{nf1h&g!abY)3Tq&osM#(h)(k zP?6BO#!-$}YA}%((ov~STJk5%^)K~NT<-~tjq_x0oSllDG1vMy{-s>Uiw~Zk= zM=CfHoDaAj_*{7SK-PtOSTb!`bokqBivjva==fC7D+PrLS$tk~w)X# zwD@-2x^%xlisf^&k7pi(SpeG4z%byQqyrFzxd@668 zj431&&UwbN&V>vj=CToQPoG*l|0d9)t$f1yU4Lt(d@^ceD+ZLKLaA=CcyN6@2;=Op zZ&Y;!wSZ_+`YU!_ovN+{|72Yee@0~v^?-d**2C3vXO)epWcv^RwWQXnSwl0qp0GzZ({|6+<_? z7%7H0{?5M{Vrb6)VEpYXJf_Frg;S%(-+y|MYBEwqj=%n7t3Rvpcg43>r~W@Z{(jI? zvqmT5?@QMAPR8Fq>}mbU@%JV>|8~f9NVE*;TOEwQBdwI3jK62=p7!&`-)VdQgYoz0 z^T%(WYRey^pKr?_Q*T1c|LPg=hm1JZ#*>-1M)AiVUqGsnNEOK+x1ql)d9V0mVd(!a z{&)$TsqB{>>u0sr_fGiZVIGeA6Z%=co&Q+;(a%cR34fd@{*iX1V9jTiGSZoTHu0PP zfIm3CR$;VND%z_Uv-S8IgL!APJCO0fefTVb4c~0F=H4gT@=MQ#Fu%Zh!BHYGAp1rz z!_cR}4A4)K1^9!l_*8FePkjV>F_(a_J5+MX;*?!da=VgVeKxWrrz&X^g07pZxe;5J zs z_xy{lI8%fx&ZnPS@xtS*xKz0p^r6TqFW?rfU&|IPpQ>qS4y*a3t|pY@8b?gHnyVu? z$^TZOuI60U3xBMp(vR9!lPSX0{lOWLl~w!EeyV+CNfdJk)*cn#4Lo)G zZj55=?ox4V*g*o+I?r)0Zz5Y3->mv#^G)ddpTW$WfBxM4ceLv2s!IKYpZ#pydD6Jm znvE+p8`tUfb+Vd`z+G2!&yx{s{0JAlSi3t|JKmJ@MyhG=zPls5`|gh8+kH3jxOd-O z3M||2z9W5P|J@^c|J{S+*lJxP=uwv6plreG$r?f6FOoJLaryG+sozEDmm9n5@d;u} z#2+SUjZBQyY{*2|mE=M1Jj3%o{jrE259*Jq!z@sd=a93IAJa)c&I_3c&tmw(M;9N& zQihMJDc~3&iQ&=9k99hysud=Y`XeSUm_qUaRo*REgd@O}-k{G&C6}kLu`mHFdKfjI zvzjA{wSn!d6Z8bo>}TKguq&WvB_(-oJ8! zg-|6bGuF40%|kIPSG|awVMztSkXG#?s*++=MW&Kj|7@Unk`xP@o7&GG^Q}z&XM~C@ zQ>cpBjH2=yJ*h;;aDo%rf6S3PRHbVV$`V;2A}Hx>SfD{rkCb=r5fk+axxmDX_K^)& zu*NiV-`J(HZ)^vY2ZXg&M{uoH4~!2h2Y%5N0w24`!xMZ!83M@PJJ#BCg)IR_?G`}C zp;hoFY?^&4c8=vpsRMq&3j<G|6BQb5???%P^Dc|D)4+$&2fodP*w`=#bdWefCf3A9^ z>Q|13Oa1Yv-#Q(~$*7?NAqA34I*bYsKDv+W&p2|K>N02oR4XYtY?FWp6aW9O!uA(r zM~7MWZ;BMyU-0--9Y*LM(f_-s{;ljUUA}7wcbc$3iRf=KK1Ou91}i_(sJ>Z28Eng! z?;!Oo|BDhZ4;Pf!jUtkKq?6=<7A2q)1Bg$N>l=>?ub3D`zYQXfhPA$YHt$d>`ewVbvZ~T9Q zUrB5v|9Sr&ML#$%N#9USJBavwF(ImDzj>i8e$Vc1OTRY{{}=RYlyS&v-><%nz>gCd zu#@U?u~mrgce7X=n%ruk_gZbmYk9_Zk8|LbTE0c87*Dm^c1f9wJ z0Y6Y1Fwv7nd`2mBpjU=Gzw5}t)hzs!t)mlR5KiYu$T3NTL70hxA^3tu7!kQXvt21i zcR-ft$$tY$?yXA1B2A5-_b6JH4;WJ(Tjji^~mh5WXpaZjbzfAVT zuJi=PfG$`a%3L3$UL^3Y20W|0_v*2Fi<-rl89vc78*oqGQoRJDSj(f-S<$S*H7Lja z4dTCK9+VLHh(c%2>H9d~k>_muLCSiUcft=Du z009CTWLt$L<)`W*&{{^yWUe>&pr@lnu`X#owVlnz70Nr?ES|~wq`g1tM1a)oLv*a| zN2T_*Beh?O-AG6b0yHpPAmNl3CHNnUHeYws9~UzVe!@a`gItx%GgtkW;W=}?_#omK zj`~p7@xCEh2)vi)+fkam!I5 zPp`|PuQ=u`vdhWCsSReg1%p?+Ve!R2fnBbqR`}xldu*Wp(9A~olaoIeg6nAU$Fh27 zl?Ehely2W=P|e)F52QKSAXRk3E`oDEPMignxxUSVH{=J39kHc(*`FG7U&lL4{Kf?O z56qW3Zk$m{PQ^;$6nOdj-f&bS1stUjiwlflIi5fGd@&}u8_hU0MEeFnb{kXNNEk0d z^DAg_T=vF-z&)+*roY9H_f5%yhr)qRAqS0`%fUTpC37%VybFBij`usV3Vb&v=K3}U zv+xP~hwi_FD%gl>Tx8@2w_3Z0IKtKeUBpw|{E@5t zs^upZtn2iGbv1?Fb|6mELo-m-Yt~OZpad5`8B3?fbr#9Uu1ay(WK?|I_Ax^L5AB~) zKMC4&oc2#`AB)j-rM$E3pYx*XiXG-K7hT47GL83*I}19MRXW+90J&YpnGMAuUjkd)9a<$NG1U~ElB z%7H`}-Ci066OdHqwv0?^dOccEci6Se2t&r!>K=UYLh4+7i(H9 z)-gzBTC`X%Kf`{dGn9m3Wr$&9v0C9pG3EFq6F>}j`v?=|R56>Mi}iS@<^%Am;}scb zC{uW)6bW7!_4TI)Tm>(X_*K4xO5bGWaVzbd z)$8!ia*CJ;{~8EJY#=((x}*JTzxDPz+-a4ev{_5J`rybTQTkkjYA3gpZ^_^&rQ&T1 z%eOL=OfIP=SBiU}ybycWeYkCJ-?>RVscwfIA?!afpo{~0%4xhr`%iHCY5PyO@X)#c zMD4Zc{{`@8hOY&!E-7no7ByiVFTSk>+)2GBGy*;w#=P$(>D6|82TwM9dA8ss4kWYA z4}*ioPTT&*_!ZZojs+TPz)!ka!7mf|A3<*^@U;*=JUwO${A;4&6Fr~ij6nZr8}kCFBV;aGG_ z)jT!eBsQVlJwFitENgz{-3?xxvzpDU{6B_66Pe-|hTo~m7X<3NGctdzouB?65>?1@ zPAfDQd;qCL+a#CJlvskESp?{)>$Z4I*B;4@nohp`m|an)s%YV6R`g`fNSH6wTl9;` zvZ}3KbynGkO72D{i17c|6;a7B7uz(7s^3dGE49Jl^#33|`7n$R_v#1n44EbMQk14= z2sBNb%(v=pplv6Lz*L{uT--Uv*8iXjTR#u__Dp9KSx#7Blf`QPmUitgOX5Gj{l$IC zZvW3CNW*xug&IA~aS{drJ@bo86lNmK0!dZy0*SVtJlkwz#?0W%H)V;ry|YdvXWFWZ z(oe#KJ1Yvmul^E+-*)JMrU9QA?N1XgxAOK7x`Vj4?lAu@x6MrZ6+4M?xY>?d2*zVL z+zi`D&e4hd9Xs3vKRnzn)?g}g)R#Y~ z;r_{y+;r|;jhGl}w)gr5ExJQ5Qb4zZpDZAEm@iZS{@Ic6KbaE+|GAO1gunCNX!zrz z;d6ek<46AqZK##oM!>a{+o8A@-6(@M(aP;mTO%BLe9G}ov(+nj2 zE7-5S%^*?-VEgO%0Ne<#7XhpjoqjzaS#*P3mv-PKJ#LxPT| zwRix?Az4ZpLX3SJ)PTL^jbLSWU?vucj?6wC#)dcrx{H8@L1LHNcLW>!^AVBk9MRe` z0jMBwqk?)W9-v~4N(I!li7EgE>5KRZM(sa9Z_!&|N14T_5@Rg82zIc{eF<1vT<`X+a}RFjS|EF(+qc<+xX=Gpl>HYPN4cUO)Q489huKg+0Qbt7$hLk-du+PAIs0^Ki~tAFXqlK zKj;3f@%|}&u(#~SM6_b?Zg#Lh!tTRBW8pIuw*GKnfSxq3^Fl)(x34OqMr=Xz z>JU1L0MKnjzO49~+RtvPJp1eZr z(vgL^`>a+k)v&GxV_G+W8AgbtKovhL!4Wx_t6@099)_R00|F#$rsUZB_eM>@;2tgE zm4EGKOSD5rG=q3B_xu7(1A1hX0xIQjq&D;_<&sl ze4A{J+r|FY3rfdR&k@gL0T73JB_tywn+~J{Br{io;ARUlh(sI2Wn#NfAi5C5 zho3}(ko6mv;%)`yjWCpzpIeCZiGUJMC=WzIF_&o&-2{;Hs!E9d?t`B0Z z1rnUmV5Vs>i2~*ff>H7Rzy~3WD2e8s0!xms#o6)Wz*;HY7Y>TWe!OJR>-{GLzRQ<% z;ORlJ<_$Tj1=2}CxGC!v=#PTWM!{yBE{+x%Z_eARZ1S!Di&gPQm)RKO6dYvy`^SoW z>1=`is()Up=$9;DriQ`HwZSxg8U`Z``AQTRvr2=&o_KOCxcZ{k|F9Gr!0#P8|wn5x+I1D0z zcx>MiNfq-o4MGw28iJ@q2p;rb)rzkPBx%KT-HPL%vRm=or2-wTn2nd%KMV&UcBC{M zm(&jlO=BbWGY{vh8Y{MY zJq(~}r$w~e#g>sw09^p!)o1|AH2{UdtpWfN5A2`E`M(Y2cQrN|2nLaGLo}2b8j2DK zjxZV*+W;Q^jST?j_$CaD1~5zmP#yWJMw{$uitNJ#j*vY~lYQ3{HrYpsUk8Saqz!nf zCal8WM^=2^8tl{I*kH|Hjd|{{{6p7BID7Mym=y*Z1Ph&$FV^kXUJ%A0nK?60kv~D& zZwS#=3^y99*-8)&g$^Gj2-mhKhLaXN&CJpuR09OxCkVU$9NA%kxxgC+BYayO4d%OF zDoj)hJWnvC^$M3IHjqBggn^tu<{udioaT+jSq%FbSH>|%~934 zB??5}Fo+BrL`?(;gCPDG4PuZ6p(wKLJ)5ZCVy#&b^;}phETSe8#PnzoUunCgs>p&c zh~L^E5+bnZPY~xvfl&OvP{UE(%M*rkgAJz-*2^ta1`^KSHboJnC<>L61ccqb{cJF^ zePJ*-wknX&5DlhB6quENifG@h+bptN5&@(eflQ7D@@H-3RAiY=Ac{pEwLx@=0Fgux zsnH;O8ieAri^CuaZ4k?!3RmT1g81a4D2j}U0&(D78;c|x#QhNC=jZBS7`gDBFI$2QPN(EofQHuO6(LqYKxuEWj%;uXCz)i z?4;u;ow}tEIWH)YBlfWpWwzL>4kF7Qmsp93pw=}rTz<^ZGQ{Y!#r$3M_STxlinBRq zOLzH4Lk@H6bM~0zig-93_Hg;H0g&;jX3ZnpTSGYA4MieoE}J#4L>6cKmUIX{>)+q|LZ^gZ{dF=OrP>F z{M!FD`2DW4@lOuJKkI)D{=zVQ7MV7EK3II5^x^tkiM>8I3!{dfVx_|7q1nl(or(8k zsjF$w#7t_9ZGelIKea&N;rxj~qEA6?>7Q1l=oB@(Nj3d9%dCdrt%b+!=%VKLf3uNK zw2;UAK+do71m2JpTXLyU3%e@D5QjtH2QlwEX8%aF`tS0tDAr7zy`5bmy5Bwewx*c$ zyU<$Q3xxl#w(^I2y@@Ci^uI%Azd(2Pxyb;o`};iJOP5DT&8Jyem;WJNO#efjbo`#t z2+UImuzX|QMuIEh0c4Fp-7c$QFV6uEpWGaJR}ZJ+UnVNPSg8fVQ9mHp}0xA5#; zXcZ=eNGfFIa8@8Qd+$x;{3gp>p0T6Vn=@>wmYhfxN-?LjPzra^nWn?+G6Mn%$F(U? z0tF`TK*G%R7#X;s0Bd#Mn;+i87{?WpT{z?ncxJd-of-8jKq|qZaG%k1YU@VqVeAQW zuae(82NOTWpXiaRFoi_Th1|Rvf^uS-%YP51-7Qi#w3!pKGLUfM6EkAW=g(4#UAp*+ znU7wga-)h@6R)q)J$zft^E9?XNCjBRf6>55d|MC6gl`6n}gJ%Y)_*@PY?s25?0=Exgt2 zxhSp-Bq@CR+89Nwc`u;{;H?v@{pgtBjIwsz(;M6a`b<7c(bXxbglj5?nzcj8Ge;NO zJW~dq$=GD`OqmM{B4M7vF{goqiEG&+9xiPlFt+(T0&AAmBOrFoBH{?oP8@#@g1In8 z!WxeFsiU(HpAJzyaeytD(lS1dee2p7Gye=4SIN-6u`X{;B@sa!sy9E<7>q^ue9X^% zqqA_vs?(b@$-)!{oKPQg9?}sNCs%y^leQmJ&FCpVnY|+{Ns)i#DBvJZ_Zb5Ytpd5B=cV%Mij{K3$V$$){b_fUt=j| zw2N2RKbZ;D_#0A7=bMgdNWVihnpM-iK1#I*C@g$_G$i0fsZw#033iUQ0 z)8)IQ!kWtyJF0Ag=^lg<0ts`sOqcoX8K_?%>0{v|IQw-Kz;YNdP(U?6&WkkkGDS|t z=w>f+;XlvQ7JhW4d2>E`i$sCyEKH!5vqGnu2mh>yQ!d%nYYib45Yo-7uK!GAgj3VL zqwcficb#;fPuuz2we3H5W$3<>Zs|{hzzI66%Q2HG*7siDi#)6eKn{j?E z%%!yh$weroo{H<*Rg`vS;l+xz$~9{>tRib^9Q_JM^IS#`lqStigq{fwKyvBd(O(T^$|zz_S2?r`~suY~Iah9voQ%5Nd$ezM1(i%Q}H7hIfp zlZH3xd?QORg|0vq3^EXrF7G`VF~+m7z_K=hVu<3J=ON()O<;&3Q5;8^G*|Y%S%EO$ zm)o5@!JK#|s_$K05~+@d<+EUH-u`;WTqXqs4SU(mW(3v#7lhm2iNn6Pa{NV|Aib;+ z9JZaaWAHO5rsJ{v6prPaPFD?7Lb8KI7=?ve>2P1`g(3t;MPoRPfKnKg2pCScGFESD zLWA04^*}`Hg#4|zh0_=BeHk&8muR@soX;~cC|D!|ocTRQcH$Q+m@;9O%Rj8Xbt}U{ z4+7mVGzM;TUnmu;=8QgF*Uf% zMNA4U`6t<;8|KQW;+Z-%R4WK5{vRFIPs)fx6-6HxaWKArZq!PQMJzX0;|;wb)$%lw zF`!<9ytIyi)W<>w63+Y$J&ksllTU>v0FdBD>u3QudMCu=v)B(u>hEX?EQ%uV8T4BS6-V~9dkpwWlINECd7AwVsmFfx%zl<5tJm}AL@fXz< zUld#CxhRg?7+5*CKYpLvU%U@41D<`!<}{rV>0uM7i|*Bk{Mi0d~mPIafwYm!F!}3#yt6|FW4E&M8EoC z8Wz$61IA|H!@qvBv*VRTHb6SZhYYjjrN};@Xh{WHWV4Eten&f1TJh)8VfhSn;0r^J z!eBy9y7-FwQGOqb%K{05pSnH9bexJ7Kq3xTS%|Nd3_3uQbEeX&hIdtInd?J1)P-w> z^z6`#RN{gY=|cl3s{_4##0)2_Z-V8Ejl3Gc9qmDjM==uG7M zz^J=8{(^78!x%LDW0TF$Uycg5;idRC$8QBew?c7jd6fwEFuMwZP`it_LJytH3T;g$ zfpGo+;+zH7L7?*yBjgV7f}BPcEp5yf+BI}=cqhX^g#XKDKwkvmoV|*zwVz9N(%JV9 zLg@P6;XA48BnO~$sb-45h#o3Q^W~Bfz(t*NP5H=e(ul3lVqORXD};>dna(<; zJ2~qXi#*_AC=as`bVj6v?rbDO$Whc3GU6z8K|X-~QZ}&w13Ar8u%==xfg^&k#N)UH zYr<-Yo*tl}k@ZLfKuvqJYCkT<91WirzQ(f)Xf2c(TiC_%jgluYmw1|rsTpbA$%#thrgVZpA0c@6tbZEQ2;rLb^$h{lyq@>{QbAW7l*=S zDuj!#KbmODQS`)11<5{2|C#x|?AAiUqsjEI!MQmA=<5ziG>P4|uO#kaUM}enM;X1f z0CQ_JH@j^)H0tjS@1H!xPK<=1sj&aazR;G7Qd5566TDd zc-af@dhtk|UU7BtBkS7Smpv2p}9cEZvZLEdw-6*m*h;b2C$Xa&Fdkqvk`hE9zN@_r>XP_>gx_ z9KKZM;MSAO7sWl}s6XbT$N~7m0*Dv1;lj`<5%>L~OUX-)Bg~$0S*t2;0GO%g#Ns)x zXKY@UIepCCqwvtXXV!+h)29zm?dv@nUzq^^snD;m6*;-`>deMqI`GEaoru@3iU61 zB@KxnK?%+~BEem-e_`QVkCkE+rm+VitXzhFrg1V?q4~YGjb^yAn`d>s?|BP)6sDm^ zT?l>aJ=k^j$>{2ccUqs16LUkMudDCv+FH4*`rdA>mC(sXcMsl7m8G>2{=Z0^#G`AG z@bAG>@Vff`u5brUlDlrW>%ydgOS=buq-LSI@mcR_LC|9Mm0RiDM)+;KddtE6(4QnN zZ~rd0lJ+b0mR){3ZrgSFUoLFl<&E~HDE5EtA8#A^=j?4H<6`d9EPQJ1#d}7A;L402 zn{;6@!KwEM6vUy;lbvwuU4vq|E~#>fM;=MAk3w$`FXP?V=G!I8Yz!c&* zmCG+qtiKpFzhVPpf}*rK=vGvw2!&Oy;=>|&P#TtSH<=iGs`NBti6Wx0MC)lhc}o;E z%L%?inrlD`22M|C^&QOxidLRBV}LSLg=Z^gKGlvtL>pnhNhc*UL_P#}wwtmt{t&VXN%^?aEG?SOLZ`c-~>tH>uT!?}r&MG_c;*xw_q*akpYHuom(BDzF3OebQGm0Oexbe94Gw zrLwo;#in4Y_lteihj!CGG5|wP(v`$vFu`ZInnGDFeMsqorkeGY@im)6$uu(MdUqRA ziB$l6dNr8+XeCa#_29!7jn#)5E4wYDQ;N z_5+zHxl=LbR-T3iOuVn_ibQ~Thd*SbH1btC4)?g2GFPlV*du{BeD*epSa<8X0^iEW zpyu8+iJn;Oo!ID!-NqdhShG77^TWHc(IesizvPtstPK@Qm$3}A9oSw2UYFY(%x(S# zUn}>!0`bsMot)9bW`x2ajow%WVp)~Tgg1U8j#Q-7cD1g=UXHG_y90RlQ}S!pS9}}V zN>N_fTzx;p{svFr`tAjRl7HH{J=`j=TS8?7KM~O$HUDYb;of?zT{E@maKQ;ytA)E5 z+wZPkx^E?#-(sZ=)qyvKZ~@oHEU=*t4TTt={vCZ{dl)wFG9wRjkNzZ293OOi6e>)5 z{@MVtQ_@qeasTf!xz2Yq$`x_M4`RvYwQ=4UIZV%7%3~hDNDuLdTA}0^x!MPhaRFL+I)lv*i!_W{RASyVW71bb7q>m-# ztC0@(BIWCuColoCXYrh-U>5(xg;U|#DxDfk%m`pSE)f7j7Z79#F)mb+*0;r40$h7N z4)z;;0!=b&C{}=J3DGP>h%xLh*d0ICS9}8IF4sMY*_cst7TC*t^etIa8}ILa0;exQ zZb~NK@|58g?fKpS96PrDn-!0C%ss)$?Rh4$8CCzk8Uj=E5QbIDzC`P0HHstwtH`dP zBDWF*64qQ<6=OD?pjJ-Gaoz~yTR>A+mP_xUE|tUNxpdCO6*pFPtG+j`97<&E`p`JM zshnce-T+?V+j^sx+phTOI+yoQyiv=gM#)=!amD>Zn7@3u%4^8Og+}dJD#u!9B5q>V zI=j=2FNCy}Q>?T-x^ge`cQX#syq>o^czLhH#XiGW3EX+)dNZQ6A>R8^0CL!kdFZ_cPNV46zD>%_`b zT9`(rDk67+4{1F6=qcDD-Iygo2GB4SNci!C${6z$qKm505SU26Q{bL1-t$0>`$qtw z9Hz8w-#n{A6R~e$vZ7UoM)UDpE@z9rbTumR@?*3jsQt-1f3MeqC+bz(++;}7z?{M-KVYGd#C>YqwQ_rqbjcd{{#p`ByO;v_<%%>8hi}aheSXV4Z5)#4Av?t zR#Zf+Pbutbe8R*en(eYSwzS&9_hxG`6aofeJ~gHM-pt6fMELHXz5a43x!HDrmf*4 z+e&9(V1<8pk%iUYm($rp(|^ba2}#)!NBhlL1x0DlKcIC0(x zWI*>?QE#$(kX|Yn{VZKt)87p~zJ_7IVRJJK*Z`j#`D@33>{!E8l6<;u+iwNkDun6p z_q|Miy9+GTLt3SEeKR-UUpCd#)V?1=vC6>__Td?+2acv`mgBFc>kGYYqbhtS* zI;8)F14TQWIKVp26!qlEodzt}?(r4>WU!0l4wI?d*}mK>^=-+5maU(%PsWwUoMS0k z_D#{kH|-^hwx=GlSGAr6%L(ci)~E9}uo0XrivB1kGjdnCI)r=}vB(U)tUXeCdS)9X zb8PMW5#8&0FvpPPFvn5(J(%P3`+G3QUib!>MA|cRJpZ@dGsivSdoah3RRPTLGP}>c zm;>uq>FHJNGsom|$vJb?*hPL%d>Jm`fK-_}*o@$biwCep7`;&Z(XwN3Y!ePyTnty$ zZ~C&X!q5|4qOA5k+;DRP6REmDJelYx_k}$%bHbRBDPep-ha>*^zw(KHvA=DBlUg8-K;o4jh~}+5 zxc{q?#;M40d9p~|e_i_h?e@kI=8wEBJa%~BiM;`P?UBOtPhnpZg7@q1?O`rR)w43| zA-s7p`M;5c(V@2X~~MzIP?Nf(OYP?|gQd>8FQJ`=RxdjBF~F&$o-}P`A$i*ZS_~@^s$_ z48)Hl%oJj2!a}Mpw6FmP7GlZHH6&OnqTOthcC$^|4I6AuuJA3km#^TU-)zg#ZxAdB zWg(6f{?j=>)XL1&)@{C`McR$K=LFO(Q%Gr~Gimry@^pp0PP+G)w(3=DlfEVkZhD%5 z@V$RJ&li5s%ymgp!U^@!DI4t7Ui%9%fqS(rSO&-(pPXSBzARfpxKiR&zl2`hrmeft z&z2ofeHGQ~A4BfN?{`ApVB^@CVXSw&6Ze7sY-n4Ppo0~L4qYn91l?)r9H$9nE;oUd zC)2V&Z@xIsTew3*+zl~wNsyKlmuALrnC$)LEjRx-nz;j@!TjUP!o=yuQj%0$=T?P6 zA|2cW7sOsDXvsh)S!%Z$2zR_-Pf1y5E6qR01@ljJT~1SzMYp}{=ATZWu&`R4zQ(QZ zx9*7IY_WBx96XAS8*Yb^k5`hRlG|E0Lny_{ZQ}CYeZ}UjrT67j0+Md_B>dP0qCK^xd;bzDjgB&hq&r6|Dk1eVSdchQfq2r z_JE9itfjkOsP$a% z-OW8rB_-rBwaKyj-ozjM%3{(f4)qMb4)5F>q#yK_uK_y+^4FKQxpKC*%3$NiyZ!FI zRfg1=Tcs_0p?+}CYqZBKW?o10SJw}m{bV5o^Vgsy;#*`SPN1@u*aiiQG-GI4nUe*3 z?Q=cn+dnn&`4$EJpi*R4xU+Nbk)UJBlPO^z?021NUr$>C@al1`9c5X~>QK+3Z;YR_ z-dPgNs$H%nM1?aB+#km{Fz0h?Zb{!}B;o0MD;*9oG}6FCD|f&Eu!pyj(Lc50i|tDp z|HhKu>vQyrdBj_W{vhNPH;Mi|H9SY(^AV6feP@WijatVw8SQ+ByI`Fqy>y2+{gIuf zv|JClw=ZHg8U7E*jo#!NKQ<+Ga?kXN4uc}SVoj?kPy97MIEHWE_&=gUZhVa5ASy@G zy`4Z&RE`#N38TBGO0BIDiWT0W&w&IzH&uR1hccfp{05P2EBnQYB6xS!CHSwZFujip zUXvc^(ny@(ax1+f(6Rjafeoaj;mC3k;K$OWdw+!u>da4!gKpRG?9mjMsKAkIPKFVFbt?3umdv8v_l@@y^LK)m!+n@s7OTV2lc7s}f^O^?t0T z(r6gd-Nw=O+nB#TpZ76n@)N>(Wf3jGOfs-Z+t8&GEK3?k?8z8z*xVA-NF67<) zAO3nK_da3QTNlz>hbbH9gUrjX9hlrGd>%!DHZusgQ5aVcxuji)O)BWM=iBHtzr%K2 zhj_=#7K~l_J~gvXBUBIh(u2S8$~XD0<~sf^zjIgq&at0=h`GUETy#>%*`FkektN4E z%PU;JSn!yGByy0*$Jpf4#Ebr!^cFFAz+9{Pcl4vvk_D0D-Lk?L?Z@OVt|FV6+TTbM zv0U!b@mIrZ|HdYWIu=IWV*25D=>m7rvFdT63z*O0kr52s%^zy!@=e?P_PTm?1|4~< zH+>D2!U_#SyAd0UshIzWK48#Qm#Q%MtXc-)Q($b|vhC9tuG(Ophfxgs>X~#E5E^)1 zvR>*d(7?GXeF0XHov}mFSZ^O}8tWZOEUVO`F{@2mO&_OERXR{`(rOzmMXdou5a)0K z+*{=vSWr|WrK3?+j}|o={6UbTqJ|xZCkqxVM53&a)*`;h~80a5#*>QJn zi;N?@Yw{sKok1f4Q&?bqi@K350PF;Jk}#UtM5$apdv83T`s-ZY|EBw!J2*$LIDe+m zY2(+1c6@+Ip+YJuK3@EFY3=&%389O+r$rJc9l?}~Fy{zncl1mRqVjOEz8i;%&^>=v zg>-s7JEbGKo3^s7DjTfCS z-R8z=PPb`N1&M&>{yNZgh&mucc<73B3M}J{^AhjBZ{0=yP_QKRiaYP!b9M~;A8U7= z9|QmOmL0Z#yMz7P4YU=@a*D*T-a!8`HbZR}>r2aac3&O?@zCQ#+2gF1Gh1yx{!Hp` z^kK}7{Pyt{c=mFV+Lj%~Cd+F>kr%>ANr%c6(ev6bC>>S9AUXsOx6+Y#xRr9sGcch# zoV+l4pf=1$X<03SBz;mGNo6W2mLJJq%2K{Y;3f#%*#dV?IEhB{R597pL+~$a*{-AO zY#Ew)uuagA03{muI`THZiDUEHL;J`ZdZfY(8B-P%95~CLpLV3zOX=0&p2i{5pUWEz zHk@W)vj*NpLy#XayWeiw3PoNLKe7$@ijIidgtx|Pe8hFx!Q2D9O=!Vm# zH_)$f>Jrf*n9X3s4XQVFlvX+2%iQ{Y+u%C~%d&2cN*kIQ*|GjpQzJXpoFu7YYh0zc zSi>q!eZVBAx^lQOyI zCRq@F1nu)#&hpcor`0}bpKc;V_59wglEi%R*Dv#IW4h=11yL@~NedEW}WiO zJJ2;B`72`B)TZ6Cqnu63z1yRGx6gRe{FG87n3a0V&ES3a`kRhbvOYOTEp+-@!>qpa zH|)bOzS}|^joR+3aOJjn1V3AfIoMLn!v9W?okZprXjOaUDo;pYaF3Ys@xg{rbw@Lyn`gLf^-n4H4i zCl@-*e=ZDAi>x1*qSX)Hg*Uw2%gB8JNSKkE{n-OWwnl-aWvc!up_sZ=U;64nS^qoq zqb5F5@1iME3;d7Nxn4hN?z5CFS4$l)NCbcq%i%+Nl=6SwUFl4z^rg9Vec4jK`*%ti z|K0xYlr*)x!?aV;=TsU@-y;I5!to)c-Y-_{()ke?B7$B(nrM<|&4Kw>w2PyaLK%%Q zv?+2fvT+xWmNLObN{h)n!W%;b)}BM+DxH2xR(FTT@082my=#m&1elwA=3Io>Fh=uK zMRKX#Cz>(L2L6fJ*=3@6THQd;Vw*6mHt41%{Lb(F+#q0#w9hYl1Iw6Z*?At=k$o@@q}iAGerU~}&wAH3n`>PRVPzv*N9&XVyD znW9frh+N%-?dTKT-owp9B!1=LCXCitYkkVndW}ot0FlAFzX#Ya*L>)YXJUaD`vNw?@>ZY_Z$S~8DqG3Cj^zJ7xXzl_H{maEa#+{AMrT!>aYLz?57#~U|;Z;APao> zTdw>60sies1s{ILzX_j9zu=Fc58V0r5>}J@Yyb52VQ@L_3bDb{n=7ul$@gC7mZ|SO zH!8nTE9R%Gu8Hl{)Yva4!?ntAAAJEIHmmEdMka1denc&=g?tihby*7YQK=cQ|4l?|CZ z=g$5sgYAvpnMRSRE0gI6mnrn4WnwKrtqVQW1>{4i`8O-A=KKZu(IG7xcd~lh-}}*W zqjK40EBIRMe|7Um<`=L0TZ~)hsP*&jute1U*q1p!AG+r?n&H!bs!a;KyMCAqJ&r=a za^9V9_E2sQ+}@Wz`yBmHp?8M)9n31c*4xj?;mb+=S;pq2JG7qE3JogP>xtoj|p8BVtuU)0rWI@H@@GjaG{ty1| z4f?&pJBwGXZ+5i3(e3RgV0Mtod*K>_;|N^PyE2vqw$HCWWcHYbg>T` z))Avr^yZPNJ$Zz9STZYkL(X?pG9K|i_Q@hwK?n5{UDjj&CiV9o8#Z5#KR!ESH~jJR z4ESR`r~Qf3(VIV(o!gr~1|8CyKPC_?+^g6>Yxc|V$Ggqe|DBfw{Bi#GT+4m_I7_d| zf)R%X{BffHyU!no^D6#$qXqu>Ou!s}{P)#8_(S%IJh;WJ-{x|P!iGrm=0@u&UmHQg z=(KknM@T!GDhLx~@=21ivT1By^dzo~C>bP^bp43t({8!;#%ZzP)0=M_aMLZZqNdvh z&Wa6sN^G1iuy8jRX*zjpq865JtYDfNi+P%2YndUKSnnt`6YCUj$JhI`uf{5*DhZiz zT*_~Dy<_E$@K*F)E?Q*9hURD0K5gU#dYEgO)F!ob%sPwaWD>4@ilkOUiO$br3hN&m zI=#BN;@X>H*H$xO&5B--p33Kf*f72}Tz|!lu}OR%P#GPU4$D5bb5N{`U#_@u+Ds<8 z>gL7)H(eVWM3#Zmq6hGUk?Iil!!5Dl`e7EkaPc)*RRT0+SNXy9@L+P};aoalQpbCz zm7YL&{Zc=$GorPn#O+a7y3PnE&YEHNFSKk$wk!`Pz6oa(Jz6799{-q<_$$oMm!9!< zcgq$|>6&bIP!#wQZM2|uT}OI6g)VZ1CR=jW3+?LrTgF=Fxx-EqLGzg4LwJwfVGkkPQ0^uPs9SPiVa#-v8IM{n|MF*zB^9*5xXteA(j6X z{%7l=>{>BjDH@2Tt+vmi6Zsk=Y-Df};We|PnO&ZCF*_qeblr-(hJ=ezxU?j-&Z<;5 z_U-`L^N(s>ogU;rM8}E1ZV23p%sfulA2e6ay6O5WVuwy|zIDLNYhwpA-HI6a8pEbH zG{-o-zxI)_&rdl*rI#RdUTzlVrn@V%%qJdKC^-?n((GQZYs_T25?QNi+NYHsQPX~X z>ESi)ca)ZDbK*$(ymyizk~mB^bjW7r9I~7%m5bctuAYn}9x2_(?;^AEaniXU_O<5I zZ0vAkX27gi0msbJ`|(5n*zFvgnRa9BCJxQaicRBtsI^3sg5coNVM=T-~- z_bvYW2;P;ym{gVPUB{*y)tVVli-cK)=hQ`jR^5gA)8A^lSEXfsKb|26N`qrJho8CO z))_a=ir#odxbn2vCCqk(H(brSp$*^1rKL?&OZ+rKB)Ea#{f5vp;{1OCK(?N+FCPk{ zaGo=UrH&P){g*LajE~fN%AJMC)})a5CD_>b1Cs%F?A?6Y4byI%l{pz2YK;q9+A1cC zB(5wY=y3D^^5)0(u3pNwywt<|;cA}LJW|G4*^THC@(%I-{*=}~tD`5Y$EULTy7hDo zyOVEIV(ujz$ifWo9a{M|@yQVVds$`9(E}Vr!YVbe-o}a>RX#y-29j-X9jS|N#8JG7 zkwTBdN!9T`1-Ns*{Jl`yk6Z@WEp-95<_WDIME9zV|D!JchmLf0I616|m+?svj*6Gb>FmC_5=`P0Y&r^2;rw?+tr~-v|z889Y zTzO6MoM)<=wjOXx|CZ-USXI40riH7Y9v_f5AsOa}Z3o;kpt_~2q`G2j^f~maZF`vm zg-!5@;gKg~AJ8EOI3ME%Vw!TQSwQ{$lc_#It z_1RpLhmv;^vaIF`Vnf-MP;t_5Zes<%9?c0I5}{bc`L`Sm`7v}vhj%ZmX4Te zF#qG09fM+Z)y%%JtFDSk4Zn53)exlG=HGpmNN0&8i(Vhql9!%Ew%CnV+#G5f1sKbE z#kHZfeR)y#>!W9<2C5#;cq8RS?f56*-`{vsbox!P8>iJ)j)@USL?^Xh0U zcCabSGjEK2jb1?0u$4=S#Q`$}VPEE3IeY}(NKe)@`JgKELEyBctL7g#R63st?BI84 zLTqj079jQvFe3_)f?8xnHOif&y{kCQS-VUl+@~>b5J0#sh0vzUt^bW3?qJ4q+>yG3 z-})MccA8o1liPM@DsH}LH!J+IkFxun&ijPRk`te?Wk0ijG$At*J~`oh*ffCrogVfRYr!>Xrix??JL5ZGD6oQb(SJSrgnR_>FtGs0(#=+0D3_Ta6{9-)D zuDFDaa>dX42|L(!YHp~DoSUESci9SgW#Pa9|GqH$1VmpUry|Q|9>L$rTSnnD|9H!D zYlu3*+U2BM!p$Joop;9{f3JkF6^QgbR6D*o^O>rqotnCq(|adhaZ(G5;*<8N zNuC`{X)8;rDn5=r4}jsZ5OdHZH_f-m1K5EE(F#^UFOFpuq(j%+KvL`mLafeUe*reMGc8WV|bKGAv|9A)Wpjc{i zFCGwmZvM7EwhHO>rfvDrvzoT`i=M*Bdi;MFS+AEevItxfJGiN044PJ=;30kPclh7C zgSNAKf(&TUE=rK*{AB&-{otE^*QFCV{S-+~3+|sgA{gY&o2608&M5^%^NZ;w^c$-F z{L&`>N4Mg{TQVGaYSS6B4yZ+~UAu`GD5GkhYP#z;uNA3qKEX)%A^Sz~3|Ji=Qr-Lx z#5!XFyoM*#Rz$s`FJ!NSyF>m;(b5@Ol{RS5Pj%G@nqLjTJJJL7j==<&L$WZ5)PiI{ zUbB`K=b9URy#OL3@ayqfPu}Rq*TFdohG48KKU`6jMIy^6Cfu{g1>-@Lj4)Rjfi80% zC8N*J9V3EE4S|=FiSL~IOWpX;1m^RAp-a;Vl#q>|V5?#T!@5|ZAKT)1waR77QZN3R zx4CvB9Js*(N4%`M5qp+VyA#->X+B=l;l!n&y{h|_jw+OQZf((EaIHlor$@?ZI};+; zA1lDB^8Uzdqt1X*GYQLgCM~%q_PGaxh~+yC0UN#AfDmW^T#rDbc&gw>!|AHO^zSe#h8Y-I({?{ z4%=K&hd@BliCQp;V0GVGi_dcWlUf%zMA2(rs>79YwYs3KYxc!b?tJ*s>GF<-!G99| zd}nxk-rSRsy4#dIWzV6=TK{V(!UE8`!zz5vy2TqF-q@XkOk(_^x1^_^{5ulaAvm1r z_JHP`_=SOF6@ae7YdP`2$wwruSmJ2&*i z(CN+FuWcY0$gTZOiWa$-uk&(B?6}%weSWy|wb0$CQ9d&Ixo|h}>bLpveT3 zynb!#&r?(7wHqYH-syPMh{Jo;qzdE-rMJfE3UeZ_E!##9f(b>5KS35 zy$WAg?NXv0wCFA=zd1ktX_lDJTiAjuF}qh1UH8sY(PxM4SKYL|eCDzIt-R&P^O8g2 z)h)}{5G`{Z&*#?SNhvJ^E5qt)T~CsiK9Ks`K8p=@mouaO>{SWJC885?PAtySGR`+g`W{EJ<(EzGNWHOZOuXDNr1`hqZ65Vw z!n8ruymFjKOWn+xk8Ku-YX714b%Ggxa19em*5@ zKP5mzsO{JM;PQ$qE$=)&O>b_5FGFqL_sjWnqB|QHD{{3)>r!1Jhbr7J{A5sJxUw+% zb^7NK_ZyW+33tD%lE6Q!lC@|Pzqq<$joA9Ui#e3q|M$+$FCw`k9BU?`kh}9=>YucK z{%eN#!*!V*tSffPj79VL4=aLkWv-chILYy-pM5b^x^sBNjJI{^{k;<(pu%L)b@iRp z$8|_<{{US*)MlQ9uuF$pKp&`I1N<#0k}a$GL0#NjsU8lsee7q>Qv(zl;~o1ji792Kb%LCi|h)48okY*1%#}5$My*mTnu6TwZeD_1X=SRr3eA@DmF1??XUc3zSG_ zY=)%6FNLHFm(s%LstQM{WU}bmkn@oS?O^FsYdgD42PC`IcBMB>ouF$taGEyQsp)OHe$Ij09+Qei6?S_jZ=rwEqB?L`N_G?8?vC32oP=$cPUmiHB zC|zJuM=|i$r4F$i!+-xhRkkKJGpJ1Se>75;7{NXC(VA>+>%FVKsJ5R1E0P?39my`0 zVyKpZM0lz8PSC+D-C?z_kKGc~j(k%6->gfN$iV-NZ2cR(cQHWiv9$-f`qP|>1@=k1 zL1Rp}grN{gj|3}m4j83}$|gq1>?eu!h2W`a9(2!gnVs$1$zx_l%+4rh}~Vq zFph`H+p+@9{E^ZoJ$FAVmNI5wJ~~H4F}U+~~feS@+2X}m$bdF`FD&qc5V*}k^yZ0BIA zXA+ug>s4+4ROO}a0!Z*lEPYHZ!Tjm;!)uA?U#p1z+qN@QR2rxgfEwgZ7uXsa%YhsK zPNQ5626-%a)@I8@fkRWwic7p0O$Kled{^u*c( zTWDR;qiYkFLcebmdrxw4eL%kg0Za~m^&Yj}73xXGYKjLXMMiOBE*T%?2E!aO{!W0B z!|%y~w;O8yOUljesd;K|YW9C-y7>oDm0!P%ng{*m}!yu+`M z)$QvUy4J=&nHZk}X`>*5KsX#A#-AHPZPzjUbNKU-T>kvI(bs*F5E{p=Dy1Uu*ST7y z6bj>h?p?SwOXB}*Gm^}*WaLsMjCS=`PfDLBKv@_fwuX8RvCTd;cCQ`;uMxcD@Zpw> z{I(Jw`fljn#<{{>=+6A?xVR&Y^5`A|HvZnzu<_Nu%~E}Bt5x}*mW)g*@vF=d|6qvU zFhRs0;r;S*arEI66W5EQuj7V=k&jboVjK=nea6<0k-Coow;}kAu``7dePnq;J4YFj z^#w}H)bmkVcKo)7(z0k^A4<#PHDK;ens3ZA<>C+Dc3Pocd+97kp95w+be6id4?=Br zK^^yW{84&%LDG`i5gm%{H@~zAFuO|Jp6KInZn<wSXH_gzp~79T z-M=@sro$rR6_N7wvoeiS1!zv*Wv+30?bW!tvwJr#5>NL~r?k{E^|M4%3f2Uyb!NBI zimytxi?A-sz}PdTbTazWlGEM#i`ivLX^FbDOxCt?S^F!r{;QH5gO#AlkY#cz{&9}Q z+U&0f1ol_@uBB^+cg^47f|g7aT<;>kj>7bs+_jsYTl4T-9JsP-Mt*t#fBUWIl_8Rx zR=P&(yPMr5TFsj^iK?#_Tk6LxiEj@l@4#%5ylYEF_cQx{&gsKju2M@m9}*bnWcf_W z*peLi$9d2-S@hDl(fQtL0d9U)^(cNdWMiW4v2^wB8SjWzD5BAsfr&Cz$GW>m3yeOe z`t+#~95exJvxMNSjeq2p(9~b&>Yu3kYgK>CvlY%B-@9%zlzIibLBO0H(%;LXApgpG zkaA1p`GYb`Am# zwY&~nS$9TDT~v_+OADdNyh}B6Yd%-E_tSB*xMu97{-T}9uS&TYS%T^f6H5WobRp1| zMyM)_Et9WLJFBI|Q7}7t_?f_JiT_2KjbluRn0Dv5t!SXMi_}1EQi>Jx(B{8Et23~f zpm4PM7|b^euzo$HTp;8SbNZN&>t2TyIC^xCMi@jIVKq=@J!QS~4%vtYSTx+x8+b;5 zpkKNYi>w6dEw&r)wVL;7yju{dEArjBfqi>}!HUT&C90!V)jR%Id@E0gL;r=O?UB;U zy(7msfL-=OAlW$QWbboqZKYY@@|NfOwUhAww-I_Te}|K&=lMGbF#D zm)q_T1_GNt)av)fUaX;#4Xxn+-17!dKO(BFP*k^NnUlK0v-=q|r!@umu+=fnm@ z5=V^s(J1bo`c6rND}*EQV@o4Q7UYFi?iHWjooAuXwN|q+O&@6dNjulrmU=luoTAH+ zHhPOTGrkl+@F@GX$QQ47SO~CF3%F1D{72nH&GJE1eC;21tN+!tZdl8@P^9L{y0FOV zOb_M!uI-Y$cl15N+$g$NV~PIQBr}6gRW0M!A^L2NcU9Bv@37}9NQ8RLJgB=PLL@-I=tm?J2StR z1i!0E1{BI!T?|SaK~QX~DrM`$ciG1#6V`kuYF&en+^C#PGU_suVV^DU7cFVo^skH{qbkP?jFsixYyC`OhfO*nWZdF&gToHlF$s48}j7=v1c`&fX+A#0J+^=pIovG3li<`Tu;R6=!<8 zUtxT)8EAhetAkKjw5|p#4kOtgPD^S3f>VqbyBE_1dEUhr5{HNd7fWv)3^wPt79Ex` z{dmdO@!Yt%w_21@P^6!fvygZC$yHhXBuotwzf&zmr?7NsX#=S?9@|Mx9B3%mgQj9E z6rtAE{>nmF;~qr=P!5D7N27sa_P2a^aoIa_iKVUzM)a*eoe40bbMWqWbkcFR_rd<|6#Q>hWwPLq{Vx;f{e95JmC1qyFGusdcmIp( zl0|QtYGqZ!Gq;N4i4_ zK^U?(iA8VT&yjr}07LepmR^_V-K{(BlSKzvzh1-5ealeO zSF-Fj)dQ@YS-vGS=zuaSGS^UY`pO7z(I$xj=1OZoZ3R09i}N0SXJ|Nd-ZJljy`=&> zH$-dh48yZ%l<8PmeY(Lu2k+(!R>M~GgTvLjSV3x&+WMV?oWPl^%+#o15x5?zb2LjZ zg@r-nvK8#VeUw76I>*NhQ0B*}xxj7w?=brMIW?Y@gZ?qJ{I!7h_D3QcqBUTA5v4^tYp(1!_C!78Bpz@0=tejJDO^WC}Nmo(AL^fG+gkg^S+11X1qEr0hy>B*8;;mENK!<^s~V$OW|C ze-8k8yvvU*TlLmnCGu1ys01Z6c&O_mvZ0IebO0ax`&~nAL|({X5^8c!i~_ymyD% z`9QW;+T@+Ws2uYoqjK}lY*hZiaxp5Goal?Uxwh_{xPC1FJq*#(ss8-U)fsv6W$152dv5VcZSmqVXDdDq+A|(nyPQ;1Q+N6L1*3OhP=g~ z1Gm;FBl6eV@eQY44wpV!&$Jmu^{7R8MIFU>yK5*v*8C&938Qm)R)&EQsr!*nyL7-8 z^3Oq|5lD`Iwv>H!{!#xnIpuaLGojzVZmqJ^S6UX?bS5RH*!sdvPwM|d-mMF?n6ZcT zJm}z`>_X{pX)(WsFSRYp8A@{8>t1eGkh0T6U%#M5z7!#zcSsruo`j{Odz;O}#0jfppm3mw~jPYr*7@|}4Bn$d|GE@E;2jSW#rxe=2 z*P_l%8MBcCGpRA0xVXV>g}ih$lYO+%d%s4OG|kg+^&~j$;xZR;`!PSm%1nkbU$E4( zmifMZRSY9{qfPp2+Mk?9*5Hd%7b;W)OzW{aO|c@TybEn~h3owMdUg3(`VK$&Yn^$i zHR2!I??w+7;?R8KWA>1O{fPNaW>*%p{GU%PG6|(bJ7!2Cv;{eI(x6I7*u9KTsmS4BL-3PsDeSSSe*u$@< zg0sW5hi$Xygx{#chLP+cP2P?xAj z6~R^YZTKM)f5n}93Ok-gmF1kxtt0ZHH=B^{aQG6SBY3b8OaIw2-3cA>=7anmAgbKHFkGMp$tQy574;MWg(5VF05#^rJ2X;XNMR4?90<5DH+4G;}n+ zDWx-*>_e^JmeDJD#Iw^n@eq4A)b@MeAphzrH%0rSE2tP6)tNKA=U?oWD4HZjWv9Qsw!V<5`b*Za`5J3M+aBxiL$uer(WCv0s_;m<9ei zPJ+t4y8IQ&&jyAqL$qP^GZj+(Pm;GT-aitrax+Df8lF7)?!7zVP|9fFH~xP^q+g$a z$4c$}j!64kJw;3J&D>?-h;+Y^Ht`d~!(2Q*L!4=z2!W~THKq=t+$0O$OhNX~J9?1) zj@S1<_Fwt1R*db7>T~p~C@Gp3oBl&Sd)<}nmj{_MWWUie_auArR)Pgs zv~()hw~ng9|HX$tHFt~7?}F~VzFHRqENc83?465W13vYV1Kmt-6$D)D_&YbBy1dV6 z(0lQqJl!uHI8oDvkdTRdD|&cphO-?O+TuNWl+R(#{>WIZtQ1MztJ9cuLrb#gokP|8-26%RsWqIf zWNql%R+*M-#Xn#Y3f&_keCY9dLYJ(I?d!b6lSSKRJ(SmxdJoxY)2{-x+QUX3o>UlB zl~0|anTN@3Dq#T#y3vp0|9ffS+DN0iy-V3%(Xp0qC9oo(_D|Ja<;azGm69lA6@4&s zYyW?)tm*%+&P))?Z^^d{eR1yEB~-ZdqAg)xKzm=o#+D@V1^E+`%(X(eiWgAAPoztIX%}q3It^ zj{8A)?fc=;JL#%nGnb_tbrG-=tx zi#+^ZtdQQnwxz4QroHtf{YI!2P8T}*scqce@?5rUwdfG8ZIR@VAJndWr*8Br!lVtG zxiobRN|YW$EfzN1TI3)mC(YzXV9oecvzenzdBm8nE%np ziUu`2#F`IRKFo@IGWn48fB3DqXH3aLDSCpUK{>ZRSGSuoy`uN&Nd_!%^w!t$`&}qBOFszNg zQv3Nkt|v?B$@l6;zf;??eb~&WQ|**xe&^=MVY9v~+Y6SuRtvRJo18?i4iNBgGMw$z zH6Z4`x?bHv2JADdcGsbZ{5o!t?t~HI0C3QRXP|N{d?+R z=55`q5o-I1J?+iY_j%$9ks+yeJ!BLD@A&Ffp__|?us$~rtZv$Rd2C2Hd11bZhK}?Kep^GXy>1z(uj${CBxHl`q{q$oVY} zjTQ0Bu<4cG7#4b98NnV`v-WR!wpbojTbR1MUz}uY#3T39@!Zi@&$w@UaD2#CCebZDusI-ujkk}G z$?}rsWy;8a!a}3WyJ=`HYxOd(q$c&{1S9-I_q+v5_-z1QO=+2(S>!6blU9YExOtfP zC;wxZ=dKUZ=$v1-Z=*j7C%FJVIT_|gSJ}dRIr~OVY39#nRW;0ogAuIa4)2zK5#V*L z2N_CrfF5JN)MEy7v3N9H%^~603&M%7wTzDp7mW_`{&0e=slth|_;L6o8plcf+ebv= z{Q>`p3)Nx!bzz-Q-V(a+D%uxG4ESV1=!x*KNdC)id{l0~^DpWD(~D-_gyLN&mHKFR z`!k_?hBNAX`jiP&h5kTv8Gq=5u=nX@Xs#$Q$$}lzI`h2$TFRy$b5w~|DpfXSQS=Cv z(iN^;Ir}DVyAR#-J7^wGjC(%x#9jM>_VVe~m5uvG-wYE_@?PirS)o+ z8~_Xj@bEUfP!Pe<@Q=JpPt;h@32f=Hb@s;NN8a6IcI8FygMD_T>yv%aH5gHT$9(zm zeN1+I4`&oJbcSu2UU_bD=z*>tqvl;k8AQ==UeDw1hVWMyzYF(u<9GCNUv2zeoW*3K zFzLmMIpg<#igux%y3M$#Y)|9&)$I5!7kJ~!dhusiuVtKAWZ(=yzMb@n&7<1Ng{a0O##=99Kj&XQF| zHqP-MiVW!JMJ#X5kX=ZW+PVh@)B1KRJnh!EccWk1IBwqDguc|y_7Pt?yjQm>0=3hm zm+(X0liZq!_EIqZ4OTi2-ieChU#t@*Bo>QB4PAFmJG?d}g|Hk6F+Dz{6w_%T!Gzg} z1~AT?gR|hg`geEQ_$*dcVJZj}Lu{?3>;0E9y-f9AD)iEzm&e`5)~;Ka&W8W;VR>C2 z@hcMIYaTML-^~ny;Sam7kC3F9a5--3B%<&;;-6bMe=$81) zUi7a%8Ik}Bew6*|cH*t$*dDuxsj*+^ZacM~{N~PZ^46WT@qgBS{$}m6f1Xj@@?O8% z{AX+9e`bYO*j`-IK7*0CvNpcHHtq-7)jCy77Ky(biKkdiH&Hw1gLI5|%xc?2=kIoo zF|vjy_)m~yg?w9H9`jj{V|i`-4aLs*B%8q?xKcr`b&751*YW=WgvFw;L~#*9p@U&p zEHWGaEGg7wfbL6b;x559dfKN>rI_~ND1QsFQ zrdQ4_JrVOj_UmE#8u+*C=acw3cB{BXXsOdn08W+~A)V>^`z6Qa|IS#!bh@bYL;&Ud z{$2lf4T2B=tb7H}0F52U5#-WbQ&f&sD*I>(!kRlz3y+sq+^nk5{IF^( zO0XmkC{E6P#^FamI7M4iRJBi{UFqMNu0hXcMLvkyINd42wcBlUwNrZ6(;h@%fBDbS~VB*yJ;*HoL2~J!60oJA&Xn`!r&O z>3bkkFuFF(sNC2CGW(J_oYQ)gsW_Qyi zqoo6&Zw~*X_ZWScH!LS5Bsx{1#!{qZ?%3*OKbaJi7Z$%aT@}X@W22l2=utjoc_g>~ zp+R}-w^l)TYZZ75(7>hjgO&2T;l+2wCKZ1BS-QyZ%s}sj-*0^W)8G*I8h?7Xb3R%@ z42pb&MK;mO*c!-UCs>Cfm3-;S$d`Z8`M!KvY>ctAw91z+WxjkV_vOoxz%$yc$;y}Y zdz3G~J}OI}5kLv#%OU>r?&J%xY}Mz&8|^pzbkFwHdEPJT z(QNr9T*Zyb^9=ar{a&S6etAD1^&Z}7>OTpGNd{w)dmf*JP1u<* z543J2&Cl*0aH|dOUhV(&;a>>=OZTrj58Z=F-dUhD z|I~jT=(nLEnfa%Tz0R6;T!6VaPiQS*H1y zTa`OGymXN(tnVtkg_QsF(_9~}<>aS4WWD=oZmF_YKLsICGg?c3%!AH8Ew&WR%2Fs! zswu32+*)aL+B@!TmU6y_@7zF>dL1~1R4&E)kng`1r)m8LHhobZ`7--n$(N$Llz`bn ztC?GjNxdJux4{_AKGGxlh!7H=Xfc4Boj%|QukKm{j30Fg#pMfnuXU)2Uiq%K6!QVcXlFiR|V@ z<7?hWyj!G9=MgTw#PP0eeT#j)&->|&lrx4&0h}tJa!{>ee7?EC?w3BvbQw1e1mi)g zn1e)?q6JvG$dFKTG!E1pjSKI`m{rV!e4^>OxYk$=XoWr$2TjK+Fjeubd#yrR%ob8> zEGt3FEag0_72({0(%um_Y8M9)HzN7VaZ--In*HKOt{xo3*ocl&uQ?26V$nz8lGlPz z5PIFO8dDX*w;IO9q#3c7dFUbkIGYym*Cwd1f8sSScup1^pMM>F&-Sdf0iR=1@78nB zz|a|5wQFp3)=O!i&dH`cWG2WD4)!YmZOMahoNbn*Z@7~@$e@*Z$i;7M!2dMRA>jH! zTDxP?r5WZFv#J-xoZeQ1iLG*_)4+Z`&_g{it4UVEjmgyGbU1Org}_nKQ)sX@v&R_$ zd{BJfD88V@o~5j&XnClYe(?Gs+2$J@;2IptpYOw+?87y9e9!GYX)=PJAx;;i;jO+*&HI9WnqWR&2%0bMr`-M-lc|6A{nKFWTjUE1Mw$9&F#(ajLjT+! z@G0okt6g8Be;zbV5MkwOgnji-We(il{UdvU=y$H)KL)Rl{t^7$_0Q`$>~HYE+u-%; zA4#w#)r0U@Mf)Ut9ltyIVuO3FhPnMJZT$gpHVX)`i+Amkox0qu)eYdvg4#Kw@y7EG8A8ETE;9?n7EtU}~J1s?(HxjtI^gVah5{vc_ zG`alodWNlhU;sB@0MUG=DL`6;iI9cVV)FZqxArt`A)bbiQ~xBY_6?pB1wU-Esc*bwmn1#j=b-qvix*?(6u(cD+}T(&TV!@?YYGtra1GXl}{8LVXYl` zB#ArP;uyzgBq(zrRR&Zl@t^lVmwikh?%OZGkA=IcpejMzwf|63>^r9iNWI24 z_JE&v$)0{SrBUOCe|r8bcuo`?Hrp8RaFX2} z+&aUcI2)IGtI^(<_GuW?nnAN?P5a!^pOAVR{&&{}isXU;K~ZZGuwI5T+;e;=QriV4 z_03O$B}=e%ZmHHU6__TSeg1yrm~TI;qR@2C`^zHGKh!#vUpki1TY28-$98rHPQ1sO z;9KfWuP39WLozH9#GlU2>-Puzi!<-EfPpwLHX3a?>busA5xGhP6d_z;Eh`$z@7_tz zzox*_>Jxo-ewWHf^mk%+75w9N_4de5l{7yqpsuS{p_1K9KPiFz~%WcH;>y=f8_(Q0sFnF+T0x%^|4V3C!~ zVSy_8F{6IoAB?Zcf>XEwEXI}r;S@j%vLD9>uYQ%t&Q2Og>buEbyi6yF;8WF}N@B=S zvjR@!w8Ogyjx-H;r1mBf1@GT#%-|^@m;ohqFAkp6!3%j-xIEA1=Hc`8w^`8}lw@+_ z(@;1aXNY32ZnNtJ?5n&Y|G(&d4E4{{PlNF_gz44qpAk0W&M$4mWFVQ)WGN?SNljjr zSq5_^Ew{%EA&)ROtsC;1ZVTr{hgO@v`Ief{vY*P8p6fQ{GLD9is#*gBJg81(87#ol zYpAJ{2U#K>v>Jn&15DT@rXZ*B3l#&}rZM_=vjNFq@KmucD)p0kFx$%y`9I;yT$)B5 zs%_q?O~lz_#aIH9!yYv~N?z@kj3kabrDaq;N1#RD2Pjy|Axq zI>ETDMKsZJ^(4^G{anO1{~&gQ_2*`PQMQFNLxbG$b#*9*sFs<^1wKpMi9T5C$Ia4p zne#p*%{OmN1qeSg%RJDk7w4qSy-F*KqE~JfqmTa+i9a;Nkys++4L7rDcCmP70j<*A zyt?x_3)d+G0^LJ@yUzzM_Tz}^|JrV~16sp8H6K{j-2{l6lj#Q-;_Gpp-0G)e7zl~hDGP&9Roj0LoC zy`>BzTDt4}erpb7gT%NpNI>|D5BWVGvO(l~mHGk5VM_@bnrnqH`JbiV0Rep3Iwt!% zLZJ#G%oZEqFbOgIsXZL7WddPab3NpZhILc%FmPW$wHgDk~W|4RlO_ zdda=oX&@Yt@Wz58Iql5(p}+s#FX5yKCAJMv3HRy_kx?WtH#U~FjDI31!hvHrh$1Vk zhx5^}2qM&i6^Tbyk(#hJ`fR$&CVdT3ui5DdlHByv6b-smBpJN@SOx9s?@WR0l z2X1Cva(OG6(O`ASZ*|5pzcaRKe9)GKU(gx9IDpPrKDl>id_N`9TKog+3>W{v_KA1j zAD37miyx_mK-_C75wuJ3BjZ!eq^j{6iBG0Kj&k)xxV)2Ckk%z%wQLc_q!7p0^gq}2neqxc!ix%}n2>*=V3!_lmHR_`b@Bj_h`>81^?00VHiTO4y zdOxF+@sFW@|JU!|JRt^EzG$#Lw?F;6>B8Rq`#hq``}Z7I z&o2F2Zv`{`8}zG3>0KNjT1Ji1AA}I{w^y@Ojjazqn)PTXwn}?=D=J(Hzb#1MXkXoRVjHyZ6SQSlEuA zt0FPZno~=9xVO>@^|x0=fpF2LtBb=e?vx4Z5pVh1{!%1Wfo9WVQJ?eT+BX3<^4r&_ zco&NE14-M}NLB<7TFSNpDGtb|=Cw+*xr5WD$>Eo__al!^oy zB_6bR)u2FngF;sbih@=*Jtf^8i{|5yoVltP$J!~Sr?N5R4cv_FEu{HFu2CJG9q~3)=Z7jgJ|Rc-itsae`)vO+YvXS3{a4i|=r4xJ zOm>BCLxP`42jDrvK^bDG@2FMuFw|5|BEDJ|U+?|4>ur;hA6l7+qH_2E;yNd75ns-w zbN{|cJ;g#gQW{S0$N4jzP0@=&2;_D$lyQ_`bpcFo-D!Vi0$&|1#NU=9&FQ@$Nr_We z{F*qOU0$2GwXrtwn@&Ea9zz9Rex_Rt>IJ`dXYh&{!(8%q;`UC2rE`ZwSD_u|_H_cs)W6IGnu_U_&In((y)SsE%2 z09dw@KJIVO`n&|4$G3m6-167w^2gJT!$y>F#7=AJJ;sbd9Bi!n721 zi`3Qy^4jtpSDj-_M$%8SIge$S4k~=&OoCM09eBeRem1TsTfi>NR}u^|P%0{9&Fi{iTm^H;-z8PlUhsJHwUv zhJre~rE^v6_u}7c@zfJV7hJ35V!^j8sU6{TY~?n6KxwjIO^9hfJ<(13?l)E3T&3T4SEDf>cQT7J8JVhAqK zyG}>mtp~|eOJNhGiSkIIs?fNiSmqM29YKnHBWHa#(Z^3Uiiy-Y#%xs61r(dUj0>qx z+-LT?c^{ywUIUOO;hl6RU)t&oNppsz?qIbBq5Z;96Z4 z_zUqW<&6$B*XY91QS=Z?7(J2&cYfmqW2RwSj#zUkawgJ>gsvp=4s zZO%f5H#O$dyc*irs<5nS76mRx>RY^uGOi~{o~Tz4sSd`E;k2oSor6Lnzd zM!LN6BVA`1jM|wn+W~KtIrdy+LxKSG;m^e=?v(|duJ@{o>$bC*3Xg?up~2!aTn>5f zvzY+?lBLm7Z`WC;8fa4=(6`Y{zV7)|G(g!g`xm{S{gm7Uup3wr7#Qe z99dM2+dudMt-@E1OaK@W@o0aiSEVe4Smlfp63|k%KcPT}J%#S|-aqO77D)ki9q-_@uP{tfz_pa9)b(`&=&BdldQ zPxLm!aZ~4|@RxV#IlaqMv@v27oBg^!G!emo=MvP%J`uItE0KsITvN$aB;oi7Ye<@l zO5AU%pH`rjjrmOCPJt-uh&Ws42OewC0#aSW@!>(bF)`fzT!b5>lLatjUE;dJ^OEC^ ztxMjOU)$Vmea(ngkT&SoPAQ$aoGMG1)0{b@Tbmd=rYjOBPT7ZEVXK-%G+~|g2ZtHq z%C)-KZ;_Qvj}wU}3zX9j1CXz{7_!NeS3Sg`!LvkH`D1U$YIqcjDBJ=j$#dgV2EtQQ z)Q|YZ*&SZ?w*drgD+kFZUUNup z`AA3}#G&PKoyrc!4=&e9oPf=<0>E@j@11qIQow1JMZFJrNq<|A+5cLV6#=q9%Ij~d zrOp#c^YRwnrPn=ZX=`aAMI<6T-fLU7=0^wfmkYkf!U!^f=h^Q8oUPK=%4SNown9I$ z$fdm>dBtUdMR<$;(Q0+Jl|;e{1MY>FOjV_vc4q~`jh^aPXB2W+iF(2!Wg;U{^v>m` za&59CP`PFpTCk2FB?~Sah|1MC!HF98n?%ioSE0C5xs(wF>Vhp!%;+_%a=FGy<@#E- zgz%-rVSWj{=BQkn+jK$CiuF>U+|{~k$ifbrZUt|C)_>syDgPlRn40-nx`ObN&Y`J? zvx@-v+r4-5^r_v(Q5S!%F21oYo~ny)H~yp)^5GyeLTt17*4qAYIR3YchQi_|GkK0N z9TBaXE33Id)t!A+*M_Yex|`vFQ67Yb3YB_9ipB?H1 zQG+QF<0I;7WKilo!4Z4TJMkDQKC>{y=IcWDY$t%blqES4x6?UJSxBOT@y$DEfy(;$ z!lR~1WaJS!(r1cRjVd3Y0FDlY%y>U}9wKR>$dnODRsymJ>0VN4vHZ6m_O z`;^`59Ql-bL0TMq#PG1*;5aEG#yTjVX)ke*J?5@?s9fsFy{hP4;n$PQIg%^P+{4bBaxm zwbcXPw0f|hmU!<*64NyO`X!~slfj06S1q<@9mM4?L68DPg{WU@SA#7i_Oc%FC!K|q zj3nv{BMHvoJ0V+_yb}9UY82TBNk6-yuJTWzdr#IIf#>rB{;I3|d+6?A`Z{`3ZTIta z@z-iU-%v{!sJcV{d|qL28?s!NH=|Z|`YLs_?(m|nBZaY^f(dNeTh}`M z_>I$H>f}lD!pU)4xPEax_g}7sd!rK+5`{^PVIY~l~eqnk`lNk zJrcub9?7(+OW|bPlcBcqO1ENcAfN3rTk0_DU7qMwoNpI>1zj`23{p>9v;LYoOcQG* z(En!gEoc7u4LX?lZ^vJYASIih6$!AUWvFRtOn&YcI>S=dgO*|_CsltmS;~Z9-N$ zUS`_OJisfN`S<7Wj@pj~lpifNJ!r55i``p(hT~vwj&_=)GnJc#!{MhZ*g~zRv#eHs zsAgM$8V1}v@g`gOk@%yfh2{pskxu9;=adRdyBHYW@ZUKT+TqgH7;9>+>z}}m_QN%1 zM=K?MyR)Nh^30Al@>l#o^fDtZvSZW}Nm8d?IHkZ_T~NZ+DPSg12S%+P{ru2@ehPavBL zubGDaf7+Yf)1RvvP>`+1hi(Nl4?`;fN|*Mmf#s`1qsM1yMFUvv>=%0cj-lNg`#&kV zH|^u$6fTgo53$4LPVzl#Y4DWqwkd?Zen=ms0a|x zC%b$;p&_scExZc_mvS~h$fp4_hBzQ^Fc?!aZHN@LeA8AJt(F9<3uP37TZI7eN4Ig2 z+kusCb>V)~>f-&?Wx?t~8CffQ_O6EhTq~DdT{yJ0y7*nTgxW-jXZ;d-%~@USB588u z%Y?r>`4X%^s$a~mKqT#SimK?*^Q~ErS(3RQyH~r8QoGKq=-sZ6VQKyc)-LluIOq$S zwqaF<7=F`In;bE|sA;|DkE>HX+jqqayR^@lbsOoyK)=hO&k=rk(XbKe+8cg>|2x4` zOK-sr=YDVAY3_OBtrUPWqMZlU_c`$Y;5qyV%=6<*6_}^s0g}`Y7*^Gb1tb!RaO)AC z$y6Sxd_GzwRuV6YXI&TgJo*37_Ac;IR@eS_0tp68oS>pXL8C^+3mU9wqDB)%o#22` zsYOM_8^wA@b2+4}7imaUK@8@&lBarW?AoI5Cf9^xSezWg#)XNw1j`sZ3 zuTO~a4lGKGBg{#SYYZN9+8fxx7^90WApy34*<q5tzE6lcU_)Py&&z?amy$WvRM5PZL->Q=P@Z&01$r0N&HrWTP4 z1ER}tvdp16Ta$qV@lQjom-9tsCGD_|6vvK~!-^zb!|a<1BX=%Mnc9&X+XQ5zbw`eGP z?kJDZn;T_~3G{;+nr9T99NRY-+;ldEgIFPJ1a|>7rFa7>IhUTc1Fk;NUb8I(Au6K* ziQqM2@2bz7deriB{pwG5budf5$G`7SLro5lm-Ewp{!cc;jRRn!$erKRl))^CQF*1` z|9fVBKmI+N-%s%9ZGO|LKfmWyRao!tt}3@Dt2Cpp?EIc@v(0@Mv@Acvwfq`_%4vR6 zX>Q+IARgeCGrBW^`PXB9Thkdm^dLXqzdOI*H%=ey-)wt+LpS$8obvd}iJ>P-PYJgjgXeQ3k>H&v|KPKd z=Hj!P7>^G^mIwx%98ey~9x5KFl2_pKZF|~YYKF3I%*+sAipGKd%vvTkT(DQ&g1y=j zTTvf0t({zZ)cTfENIGSzp)mT@g@@tT`P7c+A^yH-)+Yp;3D>1K#g|CiQL!GZ66}=X zF0Imt7S$pyQjq!`e}ddXfjXne)m(bd^@@H^9HW`%w8>=M4|fZ;f5u-S^Cz}N^{)0s zI}20cpJbMd@t$bGpTf^T$M(oJ<=`NiQD+De>33NMTy;XfIOwmBBt8tpjOudm!DgNV zr_}$*C_xnxG=YfGyYbbPxYltKjMLd&5AtFjL8sE0KrA>sJ4dUmj0*^`o^bJqZ179sAFO@l+ZA zb0kq;iMYR|<6ihD;fTIvAfeW&C=Y^_L$Zr<9(n@N0gNZby9z@s_d`UaibE~$&@`zb zq1JoViDdDOP0X>g4`uw+P;Qgj;oMt{H6^fIhN(cdI6c)NWyEqR{*FfUHxx))&sFo; z5;Z|0tQsM9qoyv5J;YqnC)UTxQ!ap$t`E}Gy+IwTeO)_(jkHjiHGVs9i-D*Rrs!2>tJFXmLIWLuT)MtI(1Aj&(=iG1b{*KjU1KtD zfjl(1t_hLVUgnw7c2z;D-ty&6zaL$`sN=lNl=P@TsuFr$R|1 z^}sNP{ouI_6{=6(;Ymk@R*a5V_8clyHMvx%LK!O5XaXwKph@Ra;RfVEmI~jMbnvyZ zUZ}92IW1lV|4A*hoW;AQV3UW-MJdZBC!g92oBU`Yqu17|&n7wlVf)nE!66@3QLa&1 zK>>H+llb5bi?}-Db^$I~e49rv?msZE7w?|ZOD`_%(Ti!@+lzzzUYwZMi!Yy|7yVr? zO4N(}@_R9%w_dD&qB|@;S-qXo;#Vpf?a%$%l*j_(Ds|%)(QLAK_J>hIE6+b54;p_t zxff`h-J>6uZErvJw0@L$N9J|ogD1IVDu}a1*?n+W0fIEtuiPO z7+OEAGJdbIcfT^qg?UfC{$ck`gPbh{?H?4Ny}SK`2Y|f4e=vih+;Huj7U$}P>C|q| zS#M_+YPsvPX7k#*O8jZ20^H6d_IGmD+d0ht0zXGMIf1jZ?>s84G9p)Eyp{7>h!WO% z?`Ap!C^O9UYtuy7-=DoqojZT2`5*21$eUfMqZmQXpmLJV|9u?!ZCvq>>nE{`H_>;& z8KwPMZo9R*bP0akBD!4oDRokSFR8_cp=FEGX8pGxBx}RH4j-E#p4t-oz zb$T~%xt|?}bvz~c=KTM4x~+-MXot}*EWIFGmT_Kk02Z!jp+=kjcyYv}X7enmBYpF>Xow@LKbTQHGJ%;L-HbN99c)e7&nheWrd ze8)YNs7T$=W6vrFJ??(81AW|-1ox}6T}w!+w!xt%P6SLZbgiK|d59lI{b}~RuB@uC zYsm?3&9&sOqw(X3j|#h``>hMzh442TKE+jcG+ z`6pJJv|S~Q1o~ggGei5KZuXPg);Q&Xg-(MuA6FTDZdnXp@cnaLHMXWS|6EmEm8-O8-Yi^elHw{x%I=#+jKI#%&hmxt z-N*MczkYGKi9kx;3m6EW|nJqsv-f z&~D-LX97xpQ8m->rupp=*UNIMReJ@a6Ar^y$1QL^~p z-vSUGZQ>9+no$1neFu&r6;=veJ6RK4JBVje0Uwf4Hxr_;m03AkNgG{7NCd!lLD z6E9nyS(>=h55TRXFl^V;20Z4YJ2~tUys54!)`z>@0W|O>+V=kIes$9S5kyELDWHIU zOr44u!{ZH34TvHbJwWM?BD zrqPhmFG)_FZeehC*~}MSTZE(>B;L?BrnWVp05ez#{APfUs?+>Rby&8tM@QPe=VSH= zwsVc~&_~Z!yT#RiLsL0zPc#*(b-!slx8lKJZbgFuiHvN{9{9YV=U%hhxo(8o&i&wb znG)&;CI0!GE1}n%?c89i_NNbJw=xB|jI*eF@rV9M8`P)$rn!)oafv41sy05~h*0$> zwZ=?m91hMz^d(R!6T$d2wfdMjdl2@3-wy^e6w^Ut zEi2q_WjFl&T#67k1D8AC;{7nbUdI7XH6ycS-MRUOBMPDfIK#(`k>X9$2NNOrg$>mt z%y~zQ=7pmfJNY{b26}h@hwq7Lor1=!VFJig%8#4Fg;6fNW$@KbuHlJ`f4VPxeBmkq zy4J|8#X#mPt6yE5HMKo0Rt*1;cn&A?Evr}m*&$Y@IOPk;%hhN7PutUpwqE7a2){7q z)K`xS;tRd4zO zfb4{CAav2ms3*lWEvx`sIq#GhMHu5FYAKI{&I?Fazxo{1<;rl-%l$0IAFN^93{(N} zQ)o{Gd#;a01m%eR^)L;)^0Pa|IYYO~87R|v&Lw~+u>i+~Rk64FY{!C~F5!M|&m3LQ zAmu9Tv}Dog3Ii<`JUz2V0|s1!t8nWe>dLqZyPST>I=9ANm% zVsjAY3aI1VS*xPst^cVz5N>E$(bwQzx9^r`3s^BSV+(M+NoMTPs?fQ<`@HEKs@BMJ zc#~emWLORji`VU*Eutw4J3GKHqF2YxDg##b;{DxO8NGY;ReJZ?puFB4+*|J+{Ed3Y zYR`2C`**qbWXHGk?>Z}l$%*;x`Zvcf(o6pi>8*c9sefnW_wR>C_5!`qUivrq+xqv~ zuQMR``}e`KZb-fKuWdmO_`#`+hTv4WQ!AHGE%oL9((RT1_o)NhBmei@_WhZX|KnM( zIQf4m_8?#WS3*8+{ZV0rL|i(1I?E1cs!un&>jEa9{y`*X{LhUA-k)}HOn#HTEw8Vp zOhNd`g3pT&wp1cq!`FJIqcLu)67VRScWr}$Ag>FxSSV5WuK7GOA=@o?acZ1YfI%PG zW8@lpaQZ|)CQe0R`X1JXL;nj@MMK_Y&uF?4)N+SLJK1=&w~I_&P?*bqZlwYh#Owa` zE9EcuMp}M$aYkdpIE~7Pb%3C?mJ_2V$LrQ8qo$qf7N;otP$YOYTg16jbX_I&PBG?V z{aS^lEl5hogCXXqNi?Q`%x&&*+hG{dIe72d;Jb;rcY*x7kU z>)nV>oDoj^yqN}w|6+r}!ZZq~p7%e31ZI|>&*ewg!yhUs0s1yiud}YOAmubP0u1XH zVDEAi$IN|h&~$qYz0e-+`uT9;6#8^FFkkpf!7$`~_Ox2!_)|Xz^S#VIFdwC*C)``C z%+8ark6Nj2kZ18~{WuZGpQEgTJbE4# zN;3$_jGy4!Ex7DoECGxHF);Kv*S8)UU9bK(Z{9EZR|IBR+c})>BnR;!9i2v>F(IKU z?cjp+l769QJl4OGERFe$$Zg;3w4j z8Xv;RGrGbX-_Z5d@psF^g-gQ8X~-8`0;nD*rpKjAaIbEt^?v1k^6HDOx@_8IQ>RaA zZ>%lh<}Sa1lFO#zsH>O2eSrJFw-knMn=ir&h(CTqN#9WNYsqthR)pKev&2~8oz?L* zwAB@L?twI$T4yI0U@vi>CYh5RYzSnhWr0vN4 zVLYt-u#y(ctd|%bx^UAy1$M)%7C^2hyws@$*VKp3yrrPQyo9;5z3{AC@G0Z^mU`}Q ziTtfAT}^qorz^uElrpUA?&`e99q^?5OPTUse@bKq+csKOu9C*Cj!4^pNbTZj7x+gV z&>pFUYr5G+47Mc?|30GqfwG+9iO~@FYxg<=FMrBpI46}Hx%DC523OFDvQ(FrViO|? z8cT*z0p2NUOibus60f_3sxTFll<;n=op>e%~r~y6Bi8Cvb;ge zO;1XR^*pHJ@YDAxV^i}C_^A%CHdLgu#S$;1ZpP-tNUyx+nk!=8vr)#T#Kziv_b-IG z|9Wxf3GsLEF?>;rLTf8=!Fc%1#Bkwa&i`36=D&KQwM2){#v-hi#x`-PGqsnif7)di zO^wa4`Y)LryGAgW98R7FFj%9g=gHz@F4J*eZ_R)lv@bugk{EQn+EDELeAY)kEjkiTNX^)8J93^zv!QXKa=g1cRPHY^SIGsF1|$YO+7opQ4Fye z*TTh>W0Di9IE?%rhmj){%#D}ltHRwBO0C%HoOQ741 zVEw|)%gKwxw1M|sq6roz1yG3X05GO0xVy=>-c9h%em513SeM3_gpq3KPtNBs2O4pK zH)x{UOConr+$T*~sfs$^AT`jkE_y^R|L^Pg+@eihq;0zYU4=W*X9r7(-&=jeq)u-!i0Z!+C=nt}1Ds z255d`Ui1Bf=8LU)hE89 z+3=~U218%xPO$^CA0xG)*uJx8m0Wgh?6TNkDkz;6jSaLNvh*d{Y_u~7$Fg6b(g zH8w3e{Gv-EwY%pQ(s8lE)Gn@2ae61Un$0Y5Uv}x$(_({ZzgqDQUGG!x%C!aLS%LoP zl7K#FY0=f!44-=0mDgMpsogtP)jX@@Qf{rxj9PKF3RAzLcs66^*Haq{Q*%{wAVl}W zoGIsYyZ)FK_~KQBC0%)XvhwOwSV>$dEEH*Bz&mtg@c? z>CIL|#6n|PC(@gC&Ogj_!Q=CF?~IAtTlXVr7r{z4btMksxpwMr-CwxzaErB~-O~;2 z|Nj1h+dtQ>#6vQblwS0=RM530X~+m z^D-J1UoC))V%Xp2EmQ)LQ*C-a_x&Y*qc6#(LfM}}xBNkG2Q7v}<0=wx=*T`Crl-xu zK+;}W?=-z(>aVuK7wvd{fp=7qQ}XyKi+I1E zAjq_PKdwqU;S~=H1*DxV+<2R0a(r1hu#fikf{hgY@w`8RW^WLnPdx(r%*CD3hQA|x z*jB1jz;7ucLPoC(Kc89P{rp+=jqfc5-q=1Ya4m3-a>5|+&$`{GkMyJ6>kjG<%@G&N zYlFJ>?R<|m%Fg>P_L$lgvCF|kte-`uyGWI@gwf6k{td_Ci#Vt+oxn3n^N2!sU#5Gz zP*}CEVr~p;e(Zw`e-1$Q{(q}iq)j1~{E?YhzC;RpEx(8~ThsLUTH@;}2^<6E(E)Zu})~{AX$WuZ3C@8Ws12 zmneuE{ArdC1w}N(y9Mw?0fhl2S^P{b@Te`!!|jSoGVma?;IZ*Xndu;S^ncJzhYUQx zbG;UKOy5BdP8MW1jUdQ?>dlITWfMjHC{e@ZS(t#oE%S2Go&%LW1{KGDa`4Y6Y@LSd zjvN1uZv1EVj(-~}<1pq@{8EkZUywK6wHJ3E?+)4VRtx{XbK|Yf!T|9=ZQIGMrXYg&~f1v01C;hL- z-_|?2w>|z1S^A%$Er@mzIp!Y|nk*dV@(xRTx!hnex9MJVYbReCktVJ8@-v4hVgoE* zN6MY%m+u#(#C(E$|UfjsjkTw>o&Sj1<2(07IA0`zWFL@!D+} zc#Vf%QnvRzu4;ThFTwmkbgBX7{6zV`U#1xK9hxak>3$Jy$*+)fW9b>U2%Npl7o(wU z{1c){RMmS=Cbj`miO6b;fTE>jed@t(GRV=_YYffjuZ)QuOAXaGuLY(o;QQ&W2H#<) zXW?r+XP&adbNY+tq-I-T1#Jbqz?dLh0xFP=YT(6N+5wPCzTStZybHEBj)kJd8$V)|##&*W%u$?K}n2O!N7!fUaSIymiSSrj*_}lyk z{w?_4USaTEG3NgS-_&=2@1khr;ZN~xz~XjP^Fz#4S8QPEDP8n8mGxA2?o-({f|6V!}5)r-H37t|2l#m5W> zYL9)H2ep-_XP`ztL2X)VhNhZ;S?j%yrr6Wi1t$(Rd&IVqWy2?AU>44S*~IOKnfHU{ z?FSe8Q`!a0aGRcq?S$WVk1+VXbn?Fszs-jLzt|Uf@Jo#C4!`fT;3ZP-usb$Fc(Y0PtW=Z@LAwp zwC(y&{6Exxo$4>#cKz?(w7vZg&3TmiviuGH#g_X-fBwA!*ILJY1B8VNv-psY`--kt zWRPKLpo~)#YrdaU_w=EfnKr}6lbaud+$>@EOpq*7vH5{Dc%*G2dqk6&pgK7}uByZ~ zwf0-*o7x(6-v4!WtFQPDTh|tg%C@CaUiffqaPegUBl9-R^hcUHtjGFS{x^ys;{0#k zUn*zG1zXBS7lS~5qu)&gAu7LPbllXC+%$tKI5`^!C!zj^b&XE(xJt9{E7)tDSq zVj1zM@OR{sBfo06w;(oxa>ZNkDexw{BFE@&)@|sP#haJ|)Z2n<;si zl?=5Usc$rBgKQh$1hU54ZlCw@$4mo)Gb|}KqCKV%F%ZC{B zkS9NU)Ap<5*T50^S*8PaDw4%h-(?r{D*x*$zS?MNsM`|tL88gJRo2&zwz?yAYFzbb zS6um2Z`iWkX-DwXdn@LTTJPiScVcE({-{J9250ZV3*P9`m|jqI$>O>S9P<`_LRXVz z*J517un@1i_2yw{2zz9_2!dLnC-pl$%zOSW%^0_NZq7>%+P1;(=fZ^ode$y^6Hk0t z_-?e27|$&xRo2AL+Q46+4zhQn0j7s|r&-nRv+bw5UtGZEDRAH!)!uIp<^UMfBG9L% zK#SgEmuMGbo`VLzR9K~V`v(=DHU~C5i{|o~jfh(U4?UHGfv0cRVvs>N1COxNZCPQ@oB`PZa zlArz5AzSahIXw%LWZ5yY{6d%xG`_Fk{ulR#4<8S7t5QJ7LM6i{^5zzS=Q)2%>D;qD zCKpbA!J#U6Bn5|%(ERs~4GOmvcNCc$$YLJulI;MMDx3vLH!|@CUz7`r?Vymmj6!m` z>Q6s3t{Oe{n_Kzg#N1Z8LApB~W~#A-Fy~FnE5E(HOg2@99uFU}$Z_#i-taek_J5|a z|3Qzf_Jx}Z{u6FHwcNI^p48??*Q?sUQN;chw-(6v7&JU2>X^Xn;rm7o2c6fKf&$pjJJipj6?*eP1 zc=vsnJ$HC{v**80a{@ZZLda7Docv~}!^MsWQ_SYY}!6JnCRyN?gj6P3R4fT>4 z8mjr*svK-$>K$&NdhKPPyYw7e z-1bdO!XsB;pXac~;E$Q}M>FRuNO-4>%`l6C8;n_WUJJ88#mTa6S3xt?z=(@eX`k76 zB)lDi@@>WK1;#Ia#3P?ysC))(VqcnpfmrcU6LKN4ZS1u#&DMiDjd=7cqqh!FK104U zuhMR$)SW$S+a6}?dvEErLiea|JK>gEl)36IciEFkEB^Tgr(7!veV|;E(J&rooRz&4vqIYsDkGeGg2A83h`D0~AYkCPzgQi)3_|7y90~FI3n#IkX+PV7 z{5LEF(gofJcc4J9A+w7{P>(9=!ws!INtG;S~H1o0%_NY68hiR+c ziq~LrP#`N0nL67BJ^ZJ=&{X?0$cvfN^42YCY0@$$o6TBc-QtC5N5YSupp3k64O{cy zVn5uEUi<4S2=T-coYPRMBJ3`6r--u<+ER&4V($S|OoK$dMpCKq*L(k*Mw2#HsTwcQ zvN;rlEDA+a&qR)l8Dp z)daQZ7pkgeep7y>%1frMQ2F%epnUO^uO%FYUTY7^qzV3%S3aER6R+!>#_YgN@(8xC z&3%1ziSw{L7cfBbUhP|QTUyoxEN{CSSgy>qh}io2P#<=c!TEl|mq;Q6kxJ6bbquz8Qo9}VCr}&*VPDJ;ZBD}3S9Dg=Z=+t2#75xt!6YU5#$rby zN|9Yr_QIp$wKJVtK#fp1tQ{aez6U&a#Jj=~U!*q2>k2h)fB#8#?VXdFaDd57PW0UF zd~AXjzcy98*fy$U?@iejuSIQewy9*@Pi0-T%Q6TX&!O6Q5Iljw(_8PT4S>*jc?tvG z0qg(XrA2!-V~O|5RsMuemE^3F4ZcVFV`pe0a!ppVNotD=x7&f{pwJmkY$Pr@yNnIY zi}#)^nsJZu&63JfA{dmL{y6_iA8gkD^uygcA^XC88T-O=;tCloXMenw zDeunrtRjUM@F@k}!&km#YswCruz|UFo~>}XOT8o}el@Z`57x~C>}}AZP9_=aL22CF z+V?20S`0T+h4pXCSi9Y^mig&LRo=Hw*S;PtM*mJ9%&mLN{U20^ckoD&smq1^7!|;! zM|7ZLGqK99Rc@%gU%0J*d%6!))VlKK{xCcZ38W)!tfIo5@C-B4HA3qV8`3=gl9Rh_ zXI=dZw|*53$#YvB=9;U8%GWlijy8g?3I$q(zYYAZcxX;fIki0r|F$F5UB6+2g8;xt9yR=l#cwZCPu^*_>4(p4LN9vdifWprPhp}A!^Dh?8ix0If3?0sc^UpBbg6QsszdhM~wAn5<7(SA?c!?{L?M5@*JLzaz8%4m=wu)i*azut71DH=R> zrV<{sYOi!YS2+icc2Df_fERV;QE(q zHH@Ku)oL{8yv!MDfAA#_JYcsSYwpiJ3x&(tCOz%@IR#udX{K;bGT%UEpZ0!rvTzrDmeeC;+>rYW5t}0#TclUn5aj#=Uv+*r`Li1vX z05RSswJLK`xD61GhZ(Q%j`Z(+Xlb%cExsL%%K^w|hn~y;eZ)dKTj1Y>qD#ee0jHlC ztSGZU&~DF1opB9m)D*6LIdq$pIEnNb;>HGZRu5S|tn3$LxZab2z zm56C#aFQ)M@LkpVXc7D?A5=QB)y4fVpb71^sS8_BXwKEe>e<~^3CE2pblfO#ebk5Lal3(s-AcmA7Jq56Mg3d1 z$KSd}tV}&8c|c*WP@AmAF^U_s?9H_ae3Ai?E*6K>IH7>j)v1@@sF2ZY;9=TdZ$$5qUR3Z zmDq(oOivsd!tt$01)|@m9?%|+ghnlwmxDe?o(S18J*%NHp;0eL(i#EOzCLZLfH7W; zCRPO}V=k!1Cj9!VvS#`gTRYI!?{a2Sl;czN*q_*Nw`qEWyS}@R>xs4QccpvF!nzI+ z;T1Z*B$7PO&d5aCF0Gn8HgV}5sFuH(O#K$oT=8**?ew0CX#O&r+rgJHiTxsNhxQqh zxPq|nReg*_FCeES9tjd18c(u#x63Xu;8pOd*yaZuBKVbS9;i&HyuKu)Pzo;XE(}vi zMy=nKui1X{^N@G0|E?BP_AZ_+96mmYr_k4KPd@??aVLR=svxlGw1EM5yAA`qH~baw zCePx;-@8S!Hygea(Q@E$&-aIkISQrql;!B^pV_MpUKJIvt&|HMPXhu)?&?+bwigJ1 zSvL+2C#e&leW9L=PyM!YYWAID_x2==gr3Rbzg?1roQ7p2D&%@gh?(2Mk-g4IbTWFN zsHe%wT2xhQE?NBMbQTWdj}f%}pQ*!jr9?q24B`WUK4}NZ`ij)PoJiO- zzdFsy0ZdDhtJM`3J;2~4`__%NUF|~t`74tE8iW8<`}}7|(FGApgM=Cq;(6**Frze) zR_J@O`1y;!2`Uc~Nmo#L?=rgLpc1yaa-p(322@V8dqezsU!sKUKb@C0fa)2 z?^=?a`fPpk*1^|(7++F3ch{2iTW)H3r^pM&W|_@TZ#wVoUiE1hZUUL;{c_@)x*u)N zZQDO=eX-5^$+`ZMg+&Q#j7Ki~_s>sgeIb$OOe_b(Nd5H%;PclPl?Fd*K{F>~6`^3khS2Yi;GSA^=z$>cGCqg)9tA7C@h@-s#6~85 zc~M)3q7e6b92xcch`susc~_^@i9+v<&%sMu@t(?vvRKSz)+{Q%(!u~`A>iXK`~iyK zrHVYeklOUGXRqDBn3pzccktYo0l{HX1V#sCRrd;e`q$&lUM84n)w+t?ZEv0kf%I*k zy}6k@H}ywoaY^ao^ay_mOn{TMcJ<k+_B-MFBtFpqznq6BSsZfEq1PZdDJuc9Kwvim@DY|LX!~ za$=3Q>;4&upn`!!P+8I@5nS=$oGf~#` z6&<9@HD6@^=q1=c1m$G5e~uGWyUfT9m;W!r5EZ8%rA|8WEuOtW6`~?oSzUNy?{cbfoNLJuq%-e1qlwPK`x1AlaejBn*% zdn)Rl<6j%j{rCBo>JQENEhzVGOcP}kk-r;SGKw~C^8oumcoh>1$cqw@o{l-abx9BA zR0?gZ;IsGM%f^>xLeC~^flzxC;m4=G+fz)`lQ0SfU50RPt^sz+E@ZRO(d$)hp zBKKDoYRxJMTPlvU^-K5TavR{UyAuZ6JbH_|5BndKOm6V)w=Ys`UFP}W|iM%O<&K?lwJCH_DEoIJ`oG}kx_34JU5tWz{bU;d5%_vuIb3->wU z_iH3iU|a)XzHv>cgFT3u=-QeRqXa*E0*qEH0Dv5=KS$||$M4?rbjVfSlik*`< z7blE+Cm_(UtgoH!n>(iBLOu=TQ8{dC6FtX1^HtQW2LgoRR(KC6oB>wt*1K$E>t(Qo z*6jSs7a04J#U&43%>99{a&JW4acV;52gg*=u&=Pj`UYPJjEY~f8a+{yuWY;&KPYO% zO0Upr*nFN}199Qhg$nPWpa%CP(soLXi}P?wjl4;xpafiE*fPASp;hXsW|YhsM@dEF z!}&|ME0e06+!*g*Vu{+jIs_W^L}ur3dxZOwle_rrquvbO4WV+APm&s>>&rt3tNZ+y zO1(Vdzf|j`gO_mI1qj!`K=8D0qzsG**!%&_A07az|GkeSls+WNvmiXTMupWL`Cd5t zk^--Iz*@LJ^AGvhS}T(WU@+1o)Nm#J_#b5PF?q**9cK&kgI~o4cH16N$FHSzm+rgJl zljYISVpsbM5JGV~+0hr{ZTs^Nr}AjFXyQy;SU zW3mN+_ahcinIV07Uha^}X>>hbl;7*`MzooCKJS?`BJ77f2lIemlN-$8j#!az6B!o1 zQpGp$dt!_CW4ls;&l<N*F*oY{Y@nprcm@DWiBr}pm z>EyI(2(FZi`5KU_ME~A0VCn&q;tT)m6IgiTd*Q_&^$jPFyd%8&gYZF=?A&$g^XWRA zQ+Ay;9D_sk+;K%z5dK((7y?Iy_gNKAPTZ$H}sr9Ry4t8|N#v~<|@l)ap_{X|+j{d5R{vf@l_(fbxoGFLue#R^1=J9JD)hT{n zhU#wi8*~#%9iQyy_kR2x>-bFG`Fz>0^Ey7gBERED`SrMt?_-n($%zf`$WLf+RerZ? zjNG6y7?HsN3KUVLcV&4TciXHwP+1REAvDJgKKyx+9twBSVc{+kZ=`>pB?@DX-my)&lwm9}^MS`CmD<7+_=nS!3h{ZRSVc+}Lc40x!mywv%KzNr>i`Mu`mdE}OCeo|2*#2v1&V~FU zrq(3o0Y%DJB|(k&u0jvZ$#=_}E&GO&-|*@1wldE^KZTzq!X$ zhHSPykI&v!W=8N!L3ymjl#x!&kQvd6CU<4xpIIrBr^*C(_GnagXODicVGZn~q(&7Q zc%rFO2H8u_EK*$}JjL%@6>52yq8yM8CtgxGITs7rkmE~YwO^llRq=M1IO8>O+9{&` zZ-P9>cR2DKWZ%k;xhF%OWYxsk?Tie0svORA`(NQ^jb6Kv=L-k+AkV~Sf>B}WD7vts#A5G9%tR+synYd%X>fiBR?}T+%6WJC%`T9NFJGWg+a8Q)s|fceVk?5H zA@O%vG|M9;{z9b^;_;P(LH>EqGI)xhV2VFNv8b*fZOFzY^$bp+t2C`696A|sxIP?z zvCqaOv`0LflfN*L{8G`zB_-~IpQB{slJdM9(8-S!d1LQmY#M?nW!MU~@WR>6I3g|X8b3%UiDFeydMR_V3V}Q7J$C2p8z3eoL8dvd9#5?}0|2w$vA9RiLA% zexH>}Spu{5{}n!MRja~!krh;CW{4We^ zSiV(`WFuGbAk#{FQ$=(jtPV7JG0Fgpo<2w3mT-^mroIp8{4P5Be~gy$`xxI+6fG0~ zi*G59orTxP1&YT4`C{)G$P!@s$mW_^p*y7msL{5%ldN-Pqg)?PRv)!T_eCV}lJ}Zo z-&#gDQ$PFxeX{CImH1tlc-cf3y-6YbO3M}F?UVFd%`*mIe~P`0!%oUO9 z0Ut(cqv!l)8B}nU#nT=G1uSfSU$riw6VDr|IT$E_F02h24)=fVo^ms}9oej;MZ#%+ZaP2m_lIGg3{Bb#!4Sjj*n0wj& zr~eRizEqu`B>Rz13$fR&`)hjXzSvKI&~8shAnNh1%{5)I5Z?TS@pnSaorReWZPP`r z=lFg4kk6y&+aUc-pDG6M6D%cFFLxiuJOM{{R$_hE|ZQLndjQZTM3NoB{CZVxCVOWyAod9O42 z_-ilpac;Lk<f20AA7JD{EEuPTNXucXYH{=B4*F$;0iudB-brO9qz5xbp z937Sno02Up-FL(*(69O2jq<)A!XI4S_sGuVg|iNGmbWZ3pNyfQw+gMUj`aTC_b~)f zm-#R5-o5l_1eZ$pDh)n45m;u{*(SVFofOD{NPaSyKSfwcHH(Vra4ECb);KKr9OK@R zHD7ss%U98Vr2lTXfZ@Qk*RrrE4aXOMXM( z;JrR`qgdu+4tYG>chuZS6}NoWMK(%wmW|OPS-jK0^9mM8v+|1m zunwyn70hjd(~PS+U~W^Hp8L;jf)|ggs+!vrvYc8}SnCcFSyA)LhMu78dA_#i{PFpR zRuSSK^LR?KT%s9tg@yiZo_Z`IV;WIHi^tT7+=h;|N7?CmIHA#2e5U*9Eces6+@Cfc zXQejTqpVX8E0qNxtl5|b=XWmAJVSC^m%}f>r;{A*>GuquZyG*{G}ck-Bu1k@r5yfF zXV&^7MWGud^@atu@0Ei((VlUlLI@h2wP({By6uQrjzt z_%)cLTNJ5`WXAwAbT&Dj)wgKmxgNEoz#8loR~c- zvoItMUFh-Sz5}@x?J;Vf<@IxqtI)!+_Qjc=cE;lhRA*P_sJ2HhhFWa4l-{(PitO&> zLqqeXuIL9TPugaDdFeBz*}U-$x~J*U7FWruI-v*knWfnJX+bAa7inHQ{QND8pNSgh z6o@T)g~JaM?G(d;m|Ri%7y)C3%LM7Ken;RJTwW=2J8=g;;@~nv>N~tE%8taklvbiB zhG3Hj@T75>yWMcjX6=&n&Xhm!U$YAq;l(FSQ2TtE;fI3%&hn{|P8iDA%8X zMO9wa#b4X`WN#g|Kv$xzJoEy#%BQG;8#Sq?{~BiY9|vPF>+l}UWP8e1PKg)2eFSoC z7B9h|){(v~kQ-uFC5~CWZN&YC5%*u5;81=eag-zYPih>5K00|^Jy&fOj+z^4OpeD7 z;`N(ZP8_$FR?Dm3Ye;m~cYIoeajT06#34>4-W`i8m3 zoR&O}W%Demcx~$aX^g!rURG-(w%+^0hIL&oI=y*fGd+_-$NrRKJA*#~;Qrp@COIQ7 zz)!~f7UcgupOJn`vcW|lsD`3HSmlA#ZbzFW$pM>}~)Q}qI? zql`*0yKqNG8RZW-%3w{Rl`@o3&x~pCW|-jsz`}F9w$Ije+2Y;FC+yqD4#VO}joGig zz`Jo<@P3$Z9C`2##br+I1?Im_L)wBlJ!$xq?&i+?4P$VtYJ1ojGh{Ht|7XnQGG?&M z8z&B-%eflsWz4YnGQ%vs%sFiP+gxyljPk(zw^(5c>`;m?iVb<`^8@6We(0^^y$AkI zIkqSM&g@l8yZNolO?>_f>&0q;t8wgLb_8ayrFGW{T3ZvLzQlWo&1yM*FV`Hxt(>mL z-3l6;2Ov4@9|DQwFO>+j=O>8XI^!W{;;;oLc;$ER(lXi2imEhihiTfv30U8U2KKR~ ztL9*u!v;_>hCHs$60=S;K%))VgZf#IeE(1D5^B*1x8NU`)2n3h*AY;%>AxLHe8cRu z`(*4(mDra+$>YZhB^(gK*Ck!%tzaMB((agMxiFqAK2sqeGNa9zEpA!ArnU#jjiIJ~ z-YeV#Ey= zsd<#uT!iw@6|h4O=gn0*viC}1=qPZBEw0}3OueAB+gTu6ej6mSLQ3QJZmj7Yt~r8g z;Wi-b;M*^->vO-b0M?|ICI|c}R?PB%!*x<6c0lkfV5wxMa-x;U7e)@UJ5!_hDhP*K zYwY*bS@vNI_BuqEtFZOIK_ohulu4p-JRZg``0=K`wzbAV&7oU4K^tk?zl%p>{9oly zip(2B5q2Rit*YjlfaqE1qt zC#=DaE|m)uvTmS|v3Zl;-H@n#8%*eTcBDTa(UtyEdpPk;18zbGF5N-!#TJuJzu!Cy z^TAuqv(V|$hL@M7U)03zFuMLP)f;O4i9v36x_qi2ce)_=JqJ0F@G{O01Hk8aG}7e& zavXJ#-KBPE^f<<~mxeh+!`wr|B#1TV1CZhZ1L4^7Ks1Ey6sVqCE zR4o2%0|r8yfRH*J`bkIX6DSUKz~G0W1kK;n-H%iIBkiRVgj)Bs)Q+SElF~d#4Ip83 z6(i#OmLlWdsb>&wW|m1kTRdn-@*zvY6wl36T^1B>3&OXjMAaxI`;hIYpJf%&%JY~0yGq9~gcr$EI;Pch zQ#g!2q3HcO%{f(H>G;zJbSJKJxKN~&xpi{+(5}mBZxzY*ZV2{{wS8S79X^2`!h$6A zVU}SMUkW>a7&|}ndvg&k!;hpVFFzoqdoH zNxVG9tiH67S*~Xa_oyw?uagxxn3&=z+vxMnm!&e<50J_Jlk{I3ns0ywy~G0^w0unR z+|n`0i@wZMFedTFn8Z8Qlhp1ITtGg)e*0OLe##}OAeafLEs{^VpH@(=+u3woK>_hIZ^cKvpu^bLHvV%LfTq8M<4CpCE`+~FXUqJYthmC*+6!@A98 zvnjmDqD=%4Zl}pDTXp^G>)u(vaC`zKSH7jVj;StIw&x;1pR{#ra?mB8%q~cAtd|*u z5^VG{Uq{O+QX@r|9^#!l!TwHs(p+#(a%;NepwWqYSWwjM!o&QD2t?hOSSikB>!LMp z(S8OL@#Q$^%q*Q?7gB9tN)DKMkb=Wy{c{NWzVThT=&<8_N8{?ZBL^*qf_I&|EPaWd z)0#9w{`e!0FTr1j`jTgS%-nSTIxIXV@M+_E$;v6Byu;q56SiayxA_HSVM&dGz%sr& z2c02~7$B zL3b_5+^_U%=(g+lG+nAl>F%1O@Az3&K4tVTp7@!!;q-vNdzTIOr(tSQo;c2(dX|>_ zn|@QSZEd_!SJ>P4jIUk%1@0n-$cM04{d5zwTsu%Fn9e|6oC$xI9Sp_i6;bC-uB0&@ z8L!Mg?$~J8mT#)Y=GG= z3Egs}Uf}Uz^&7=HsQpFY|20$9FNY!!RxJ2~J`ZmfozL4S5ZB7(_j*7)s{{ad0buj$86YQ~S5oUWs$_A)@s}60d&l1E7Oyf~ z;=9wtxnA=s;uxF0*!uOW!?k`jFXH?7h<`-!XaU;qf`wppW(8eaGIH(_7TF#=&R!-+ z8tYtB$4dF7d-584Z{J=TOY~^$F5A)mhQ{{n*;v=|aP7vMY9*ez-)Bqp)Wi5&d)=_p zle^y05MQeMeb$jaOZ3q=o6QVdyj zSCTOLL}Llf^Uoi26l2J)eF+`3E6v_OGkM5e_Ip0Zc6hduw{-Ed%{(Gp)G==k3G^HC zE9k)>GS0P(PgU|my7;MP9wHHAl#?@lN%75G0K{{T60Lz+24QFp50oqf%h z0Te%@35QJ*`LWA<_>D{;TBlUA@QOmEcINtOGLAeB>{S0}9(GO+>=?PEkRC2lz*ytZ zVfP=Nx(!;GS>1yc=wyvs(1^ns4)F)m(H2j@8y0f5=-(PYp@dex8I`b8G;3=c;c0t4f@U1${e zu=wzbA3H=%hH)>ogV~8yUW0+#j6B4K3RjMS1sxD+tFK__$-2{8e1U8G_$c?Qz4q52 zLECnaHtrJ1;)nkpC|dqc49t7~0DnxTac9|ekCe%uqx`TzE%ClMNv2x`Jc2;TGj$?)U|Ul-=<>Lq=jBYE zVJ;7I_skjO!Pn^yKhN(nd2B^Ij0)@Hby58)3n~l_=*}UNrCp0qrN)sg8@n^WWj%-S zsuEzkR&K6^qv$<>xs) zlSl9;kHMcjz<*~y&moySx$yt;z&!Z(BU5kif2lkN{+K{^3n#V`WLTU!Idq^dO%hU; zY6n8!F;=;E4E;K}RQHl6ERB5lrfp(r#lGKwrE7X($<2>5v-p7|@2+aL3E;a|YpS%^ z2`xzsZ#0?^r>;URotDWLz+q8Iy{KfO)>g<7gbp0wZ~p*a8-J3AuknA&;A@7_dG369 z-~flOrSJ*2-uz5HhqKW>&cfjA0>7^7GI;VQ8_bbt68!M~7v0o@vO@F%1Aw(rpT5 zZG9F#jP=((y(3FfdzftmyZB*e^~9YxoWtKmS^U9vq# z>NHS4KZ|iWFezq%0;9~56dWEO8RY^Y+YtK7Mi3}aUw;gGEADjYb&Kq>owL&soONS| zFDeiZ?C|f$=b|^C9sbtx;Jt`^^%i9^f?sSq;10~TD2u~gJ-GWRne=PD!(A?x&&}ox zlk-YHCu;}s;xO~BwoH@Ko=m)``+H$z+vi~-Z7Ue zpN>QQ@MS17$Knz_>fGv4`)sjglduas$phUjzc}~DnsMF5^uG4hQ0pG{%TC(KJ+S)EeH~VJV&6K; zWb?7Q+RyXRaY3G3g#J;#W)b=vnZ5y`3Cn5ww_)4A{h6OP2c?sC%tPsTAum*Gb}hqi~`?eAo|-BW&lwT~NqD3iyA##9uouGOz@btu@gI{eVKhu!hX zfMSz_K6@8RgEN8Dm#(v@>2r$YgRMmTSOUgsT8=VeBgPFQR8V`F>x@5dDG@oMRN1QEi3T%l zu~#OU5f-O0F{#hF#*Z- z#N9D|p0hG}40p^0;cke2b!4eK)(#_+$Z}$UHPY})Nt4g_&g7g-<hO2j5d+Z&v;{Rk@<=1l7wsO%_1r}s|&-S=UJBNb` z*T31iU ByENd!n8k^A@!(vjr~a4^*I*WD#f6I}i)ywfZe}x+?FdewaTiE>h`9u7 zMw6$Xds!$S32f#awu>td*+O#wf1~+&wom@jd_B7-FJUSxO}~(pAJb3r=O#Anj_3hl zTY{G8!VaxAwe&Ot=^BnwmK_eXY#r$~b69Y{<=%5fHn$>oWa+zuvGn$I^s^;PKgh4A ztD1!rCie^{%-RaPaX$o!l1e&xrMBo3b`~j&ut~9j{A&U;?f3^%q-;F{LyIjkQ!p4tl|iOwubEJUCdDl8p)w4FA#x!JWLf zoug@R%-;JKdL!9}71Zhl&|!RCcHrfXzs~<*@AE*=VIG{fr-M#(WEMK()W;^K!SVVr zD|DO4lOuF1@;j+DBgWE|7)#mpz+llyz+7m@glkVl*E?~yTq??0E3V8HHL@>na`xrx zGeoqkSwiM6fdnD*h@Nc)SR1{a+C)V}EY^kFf(O)Q!UO`6sDs{cG7uIf1I&)k1}wbPjmg~V$v+HpAkadR$X(`>A;<-UN)Nh|i}P1tx-cI_Rb z-IprEa#*3`55EN{K96F`+mfoh`Gzp|-PrY-I2=wg+BTu%6p>Z%&)i)-VG$t@M z7{n%epWbc|v+`wU-Y1CFoy9|dm(Pg%q0#*?y4w%m1h*^!Ic??OowotT?1I;{72?xr zf4?`uB`%u zP-~iI`FvEU^&NG<-yPt_fQe&T|IU><@f*e$MDa5i=wxRkIb3lhBZ&vAnw1}gTIf=+ zJojE&1oTsB-wl1t*RVG&#Wv>u#KCK@E~ zUQHz*v11=E(t~jpe}5Kc+Y`CiCSJGapbV#xT08u3A&(=?rq;5jg)9g*v7nM5sSS$z ztf_`6;kI*Tct1HGewQ5j(r&?G#?LAHBmRl(u4c=A6CrsULffF6ZTLrL^doqWahRyP z!5TrqRtEPslr*-TH9pd|hs^HQ83=)MkGR6LH*^tQqnC4;S-#Mnz8~0W8@=pF-}3a> z27L=9K089UyO9;d61&NLMQq=&)Z{k&1v`sEEh_|VluIr)BQ>HUr3bmM^m7l+$sN7Y z)X=L&bg+JAcdP6_{7l4&&QuxQ*{5$5Ryc2Zw-Ft98oq+}-BPyW{)vj}|BinPdTMDo z8|NRT|88zR>&?rD(?d(}G|Vq#dM$2gmj6@Q|IkXjVCVln7e*G@Y{i?^*sg zE&r-*fX_TT-*)=N=)lM_`(vkC_|pJ=wL`!{<Yowj)$Fje{5+?e5trZDxO#Z#c-jY0=TG}NW!!AlfrdA##}ZfS8^1pyHrbGh;Z(> zs#78~+iv;Y?wx3IymtGV`RJlU>pVvrL|}3bFaFKYsUr3v1v!TPYpKS2+1XF95NX>C~;YVx8Y{FTp$rv%7>L~(yE9| z+el`!TQgBKhu27L!6z z$toA6F!dPhT;h4M^-tE;+BaN)1_43Q{GE9V&#<6x*UzPIA|GDpC6pL2Rq|_Hsw{XhGMc`6gROUu}l=PkdG&~{5{mNAKY?G@1;!R9{M>-iwm82g(O(e!aKz#pdh4@~( z(VrM=^)q?MJti4uV!Tr{I#D!$_y=WBUUZ;0e3-QLJ;%0<8vvc1RWdrEDC+(QRF0YK z1|E!cj1I-W+=vrGE{p<*w5LWuhSCkqC6x10zx%1wvf>Br(O9AD`Z(nT$E zXCiDFCu}5){bjuR<`xUumj8imhocQR5ia@{%vljKgATR4_#fSA2!TJBd$m@;eQ?&S z%n_M;*b#9@WM(g0KqcpMIq2Gm94b2f03YsajueB7p`oy6*nM@eb4l-Wr~B&Sg*=C= zZ>(7WF#lM*>D|#+^y4%;-z!aotuzrP|5+!$%+B%&(nxlecg)U$G+K-_%AKt})8E{_ z9Q(0S(+k?|C+XS4s{JvCk>xTu!ne|hB2H#EX!~yH#7UwP` z=2xM4uV8mG=j`ULV`3i#{x$kVKBY3g%=s?$7~Gp{&U5-{sO2#spU@+>47VTU#1(Zh zdymojbKPIM`*A70f5A<-5s1QqU8*M74+{xy(CM(VgwWze74o0ja=lyW?xAMbf&N+M z@Q=t7l6!JMhCG`f&lhcrnLD#Gq$YEN)Y%d2(=;YJoNolXq~V16>N}jB?;X*jqs&!# zJcQ<*joKU5!9VMA?dzeIcj2|x_i*j{Q0qqV$J)iATlN;9;+qOXxAa#^F^T1;`G)*0 zi6A5Gt!Z?!sLxa4hfe>2zuxk)>W6#Oh_G#eTNyrxiTNV2)WVB939Ys|Qiz!ctv%@P zdEPB+dIfAKX}fU_xH6NeUze+agQy`};|dL?DO`xgng@nMdaw4TGsL>E91#Xub!Ybf z)c-zy^@{hB=xp5hdLx}SCpzIFS;`)s1_%49cAh)7D-DWo-VJs$c!tC9V29y3+2~e2 zhF>em!*I&Br+dTj>1^BNVVL-_YT=3N@>q17H<8<7CvD&CAS6q%U%!7*)05{ zt8k!aLV02HmSbXQLM%bESxu^b@7jSRCn*JNSHl_Qw^XNmRgUd(N|PUsCy+?EPs!8vdhIVZFz<_KB5F zntcMciIMI`n)uefu`8NSxO~=0p(l2Cc8MLEXJMBZRaj%We#v zyt=_sV?rmd!bvYRg8HdBdP%Gw*{4Lu@e;c<)Ow67KP7rn>Tr@eQW9$2Ums71&Kjfw zQ;v)tXwRdfd#85f7Zv2=&h|XYmp`qaA$Dj!R%T}lSakUzd$P8gd=N+@_ueO}qT|2F zx7NE%a+y}^Z;qpJ-6v8+LABB-T>=zVdl;NFtr~%iMM*tR?|UP8K|Z$Ds-n!V`DKIL ztdJxJCQ5;GO0R2cOyY$xigdh+MTcViOY_k`GwM7-LLWQyg@2Lc&|lJ)7JteY9DR_v zTe_|g-N6(6#8f||l~uEXZGi~dtnE0J7MkHZc=5JIT+MRGw5q1)$^_y&Ub z5#<~~+-kC~_@a>Uzp2bShN>2&7Ou5taLuV=ed~(9FZ(dPaqB1>YWiH+ zZR71ve!lnFk#+)}17BskbJ99>4w%R#v<9EhIuTByyim(CRFnEhvdW0Ig2>x>VWNpZxp^&OcwfJwq7bcWtzFZBH8l3t%ZJy^IBS*8;!5;LKPm8Oweg zQ%)tVM@H@Rh$qu*gzHgy13mg+%J%f=-a-e|g?na!y3HP4?H9P!3dp}jJ-WPJN_tCG zGo6wVp&q#W`kD)z{^FfyT`}J+)(VHJ26uysvOE2s+Jt$1a5yWmJCgBQ^Obz@D(PeF zKxpq@vx22^qup;ee?MB45%tfSal{s~7$IZT5!3_Qym6~etl=4t)V8`if3IcE$e-{a zPR~#E274Z>Z7`=AQBvVTTv=j>x1?y*=EjB~u_;KDsA=87Gw7y`Rn#}=W_t{s#Y47L zl~Bi3KvPmTI-nS2FX}nF6bZEYDprBXUFS!VyRI6OJacWlZfnH+GHi?q_5iEG4l(+IrHj_3a2O%k^i%su6ZV%#@gXBX%=yL6GtD%?cCMg zy!j}WhRKnal96?&)}2D1GmYpZ5op~IPP#zc-q=rp|LkQB-@$Rf?7Q^z#7kNSyxt?1 zU9Oq=YKJGk(E8%WQ(xmMPxFARd$=IGoDAB)Y8>JSkqbNg(*5hYyhcj69r|aVJGa1l zJnf8R++V>mbK@!%w;Ij?5cFx47$P3m%FOGZSy_16_J;OzdDzYPm( zFl(~yJYmhl-3h$hz)nBXcqh2mZ{{0y|Mp{e;Ja6BqvQYeFLivtq;_u++sL|BR}#fG*Ts&_Zs*1TBficu zmw4@#)v-Mr!+#tbjKNnuN*pte5lpD~;`9~pH}AY{bz`Vs^HJa4iO;t=ve4Co z<~2zk43GhDo;*4Wo^L3Xhe*l8oQ_~r1>PMiPzn8ma8ne~WQq>LH4)CFbYZ!gPBL3@ zEbADt5-~AT^L6My9#E}=KGlPB*UwnKP~`J)5>e*#r`k2qg9QVY^}d&xI}G@q@3&j6 z4mDf-lwl+8%2`|^7EV6x6uacC4dKL_HtXr1R|SF-rf<{uPzr%r|@lVuVq_|+5tw-efS9*h!k*aY{tz3|-d)Noap zC#3Yc%SOC;i{OV#lMmi!Z@!)te%^bzZvtkC*Yt%yIa6~oHcH8l z=?D6@0hr|YV8ZX)9%BhNs9pW}-@4N5SzTFGVHbO^wTr!9$w;G~2`8V* zddjCf(WLdjWZQfq@IUu#tqIL}3FM*z^yMPXBSS5JjLtgiq61Q-lToTx;D zibjnZTq;=6M2seiI>8`8QR7mJ3y4}R;zUqDgA(^RaZA&eRUj-Ky zQ3MxcaY3#6j6*G27lhXQ-=A~uGfNWC{(i6DpO$ai(yQamM^C7md2OHZR}#N*Fdo(BY_8ie@X03b&xROKMy3_fk6JKI zB(0k{LUD2~XeFxfInBB_u^jO-myV?%`93W8{6I)DUQs!sJ@Pu=Ph<~bFucA(zb6Sp z3>GN?t#y$sy-qcg!~UX|Y$i0d)clpN14wpx8#CBb!> zwp{II)sF9{jWwvEzEa~^iG^Y!+~i~CL39{C7#i#(WP0~ZHRH|O7aAfA2W*ml3ukSZ zT9)}gl?a;!h&6HX?F)IoV{RYhkIn5Q%iKMHgMkd$2P0w44kJjJq6~d2_KcK0$1Tc-|WU5o3rS+&AGTm8jk+_A{B7QplD zGYr*O(q$)J%WY{8nX!@=K`&sD8N9%%4Io+M?Y>DxMDU<~-0bt9&h=nxxrg<@;@|bS z$Yw_ExA1$NHV=L9S*Xi+mZ%D%f1sWP?Fzq81`bi-7qK^8W>;LBYuZ}kH zQU7!}t~3{_6O<5Jt>}WyFV%pU;S$xrf}3a($e7*XcQRb*@f%auQ;oLWNpfB2(p<`x z(62vaHPb%m9{VW1mk;bqCAtao`XMlNMY)n`;KbmlrQRbL$2cyuzl=u=NiEA66^k~Y z;>R-9>J_9Q(`sNv5TM1RV9TXon|#hc7~F@+DoRMChi55d z4jS4IoybRh;y)#IPl_x?MH~JjP1rQ5dP6)udu+u~N)C0Tl0yv}G5frVBQ#pEr8p3- zVBtf|MMK-W4Q*crCt3(|80W-$rI|X)t&X-bY>O^9lD}$Sx27CHPZz7t@#=Ge`n*KE z&{SvHuhMqEJ>x4;elnsa)}$kr1_yh>`Kl~xQfAy7L79w9`j^}dWK>@mymyCPamyJ9 zqv1(5wJj90FC8k6(9*0(XibC=Cy6=8tGn6d-hwd+gYYJLazsU3Ik+OhD3)>J8JNQD zxO+pm)uf@^3F;)uM*n(!@~pn}EOIgip81TZ6JuoN?;Ynh3egYq8$(FyqLs??^O$$1 zJ{jhvsCJRx|H#{mPMBjaerB7y?lH^4UrXPPwW~gcwL`F+7-6=V^6q9z@O;X#C$iN- zNX-n<3SG8{3HsEf8RHBItMyTB#{d36Xh+T5PzCPAl9Ox>?(%;3Tl@{#kK1kalK2x% zbGJ(K^KJX+ESkIvI#FJ!a3Tx0OdIMqfYOcax;NBLpYfK1*- zK7+Xmf^F~52BJfv=G6i=G+BDEh>a!wp;9xtT2n^jHg!}B?4?_1gflJ*uu7DdAjd(^;J*Q=!DbuDk5UR4Q1ChTeY2zFVpX;!tW$BQKoD~w!h_RO6Wu{BqOIh%Vf5_ zOq7+3Y5%hi!2B{O{+**a=(p8fft!pB+zidlJ=f8k+h8iK7?Ghlii+kYZ}2pCyVZl{ zX7&{?xW~+9GRvCOM}lCng)3&j8rzIZVzfG;;~_Tk9;e4o$9U~O*kaRj5HnCBq|Fg# zz(j{(NQ+P&>_=X<=toMz%ePo3(VYtQ-hSVyj^Ko?qV3bC1@y8mXv@R~!U`x(X>Ldo zi&ADAzg6KsvDp!OM zE5)ac%=fvvVdnF*^CZTLoeEqvbx%3X-rNr}>Rv$ri~2Y*Mi2l-N6e}FurE{h75@Mq zcKBcd!`?R-d&qw}+Xqx2EGrDKA@;WxnW^8ZqJJA(v2XNmFG-q)S&Fe(G#RzBVy1fA z#UEw>s?fAk^R+?qd)>5t^l!Z2ei{sgEV{aV%ZX2Z2&yt9hVjXcwM^pA0m1g={_uK&4;+y zZPK~jIkOF*Z^D@;;BD`CFny(p_EM~f&|NDi!eL1Lj0JL%y z9@+UO+YFDkzvxNl>c^Qo@KKBCh&C+O;GwOowJ}=O1_{kDO@g(Gcg6x4?bkK@mMNNP z?8|}Co24kYfXIfOjGXYPo8NV3Naji=vK-)GI#x#UTWd4~2-f1|Y{#nR&fz{^id3Ue zr3IT%N801FZewQ#t7lTI?QAIGlJ}vAcxlwmkKb7!|8Z|JYL(Ozkf#L3=7)V(sTADN z7v)2GafY(BjyPuYiOJZLq^KJ>C8$d*C?_fDF{9IOSdJjlG%N&z&kf_A)A#OwjSG_T z62Ndaf0!3lvFcBvvvd^;rnGxD%~gt3FjItBM6BSTB$ z1wq4D(S>ug+*ZP}i%x@;CyM{93>bk@x_eK8E8gmPeq>%& zrnZt_t znWuv!e>S@HXTR+FbGGQg#~Mf!weT#Pb%}kt*n@0LLg=gZ{2v-?MEh}~bdMi>rTHNU z0~$npWe&*@J;?l}lv;$J2||eREptewza5gihq8#KD0WtkWFw9cJaW7dJ1U zUv$U_E9xG-@t8}*@BKX_;+f9~nWC!@P2^gAQ$k8D$$oFKPlvpq|Lcec$e9ao(Tz?- zCnKMqGnM%uomFtlsS;)Qfkd6PviP`JGJU@3OWRcqd-F>>C-aaKu5`ZPbbHb_K3$ z^;6r<3jz*LaFStB0}+n8dG2YNX=v}&Kt7}LyFtD4-;d({=vnH)E~HDIRXD1>Y*hO= zJlWhEjen=1dgaw;$lk=?b+J5Ow)>4+%aj9q-(ev2E(|gFp&uO@!h61&=&y|ap=5lV zvLq-R@So0(+Ez~E>aeniwiZX5+KO>2rDE%ms_A-}HZ9hy1!(EaE=6ejWgHqx@uer#}|1x2< zQdnh5&7@K?uu06xY2}1jux(FNw|!qp2Zg&Pw6vFf$@hnsFZj{ zMQA!_5W&-{y8)c~J~+wK4$l8^KQKEL@fZe}C(#v9tNe(8eGVezlGhF_f364c z`XK=Jt0@N9lvUb$a^QBp27rrx$M0DHB|quD;{;ql>54Z z?%e+UQf^;MjwvCLe|zbvhwoL`+RGFV0_A>(mb1T{R1myUZ)h2{gWxh;7-*)&f3{YG zWmf$L4|5!rBzlg78aK_(dj^nzBzov?jr%3dEAE-0b~a7aW{y^}o9VhH@R5jafI3QtY39 zzSi;&vq3+Kc{TgRsv~mwlwV4aL|L)V_Rj)H&v)?I!L*NF1L-b)8mZD5>~f(d-tW4( zKn?n(pc+;MI5gTiMqiSp_pQT1seW1M+Hd#l`%qo3+QgGcRE$PwxG z(n`K$&T0q8KeP(??Y0^!7NiLt@O5QM0Np-gFXsHowEZ9~Hjs743deDX9%@_Nxsqd$ z!!=Qp*s6s-oYPZhslwbw-U*nD>`{bSd89(lXnwYVCd;z->I?%8p?gSTXZG$j96cHp z+2A}8u_|4O^eSjZMrB5IKnURuiqh>9@*-@gsiQ%&waqT^Y z@VQ{E%)EtMOp|Rg+B!J`_7c|>`Tdt@>jnA&w3Zoq@2Y6g7?Q&hJDel=9jl&e)2#@I z$8Dk;+R@zPMUL2w=31vrmAv0*)gsUT^SiXRMH|g;pWp;Ri5dn3l^}ZCg0XpA&(GSQ zdP%o0KIQrUTUq{Jk;gE>%LjZVrFV&1TA{w$dvR_s8JV`_ih|&g6HPk2sKt>9&HZmw zxT3B95T7Q#oi~k%XtNz{_vqa}h}kVOtwvd}ePV5AdIBxKP0Pf8xuyqXntsj|WRCZ? zrU@I#`oINQde7jbE?sz-or6IcRU6BKdv087G$VSjfPj$Qp)z!npACCk9T_$f8viy+ z^dtBZT=Jk903`sq=V~T7IjD5SfraS?5vo;0)TpA(U!K+`{Wu1S%)=Pu_ z#0Ll8y420ELN3jh3o7!zMWFfP6_}Ps^U+s@>SE~z6-;vhR6(!@d)whJquO?8Xd}?n z=??B`hV0kAV)LUPMbyks>LXV}kJJ!0)`M1xmsly9Zm2H)cKu$3@tyUT+S=bm5P3Zg`n#9tBmth5PBo-7)K4mUC;CE*pT=^_3flnhY3*K9Z5@U!CJGwLI)Ncd6xZ{!+_h{iT*Q z{!+_h!b>e}15z@wQP`WKahp>CIuwi=>)wp;?q6)f{rfpd<#FJ}kn zl`ZW_^dw)}i($#$+|~aFuXLjh%+DQ!&?PKBm!`*x{8}^<$w9mK)g-KLZW89CNnPyM z(HQ+DEss~s;gbsu;di ztiwv!%y{5AV)&LQa-kggXkmOSEsSqjm!+3I{`c*V{O{ZUj)y-+$RPtihjEVt?CZ)o z3XwQKTsFCKRQv7??IWvj^I%@Qq_ih^VrzxNs$fc)D2r97tyvYgg#W%bWNq;_!Mvr6 z_@_OMF3e9W7WXjFWa#kKl2DVUrE8UU{Njz(svDC-%fku8r^U$yhvnE$l*BT462h%{ z$H&ke9HJ_HwuQ|QE=<|nyO~oEY&{T|cr<6#w&S894y)DcvH9X=wp8?Zbeha3+>SKC ziq^Fp9q+hdfK}jF+93Dk$oPQtNmh&B`nfMhHXk9HsS?e=#=tM98P_oJ<5bbDMiJb4 zI1nNSE`(K`8=3nT*RlJ#=@`(*?nabSSRy;F@w*$gVPW?lz92D)*~I{GQ!e>HG|G1; zATa|54O?NhUZ&+5E@CLS<~z*8mbLWoQ{RK%Kl$4N-$RIBbuuQ~iF~0K`A(cKl!a1q z(25uHI&oVV+w_O$I7m)k^3514oxhRc_Ag!lGoC&mgshJ|E=LrO^5CzATU^0E7Y-p1 z94I8hgFc4OmEG7p2~(VRqVRqta&x2!*LR`*%cver*y!H@> z>7|n$b*$cbe4_)i47+SxlO_(R)Dd$70 zv!2q+WMoZc6Wdv&bO`==lv7IZfEdv^r&C@Xe6ktr7a#3N-9>K~Uw5{`G!Qwr7zoS+ z$X@cCkZlWaE%i{&ul-#(aY33Hl)Gd9xYCo6DKE%UTL|hymz^`XOc%bH`B8V&F(9*v zTKo_vnr~b2XASKGKGFSY1coaV$U8La+k4gH&N}cU<=go>hM2UE@;vj-YnW9&g*%V1kPR&k;6>nS4IbzQBYWp<* zH8fWw>MId3mTB(FH90x)D=y=V2sHTQ>1{AhR&z_V*J?Mxoqzo%_cKLrTAS5RQ?(xI zFzWG#BCv|?w`U9zK0AWgPS8l+9!?B4nY=$vN!!C&a)j6f@u7)>v)mpI+s*)xDH6Ep*i&RIHO5mU zKill<9aCSc(IE-wF!e1J5hZHV2wc4XIh0skcm;90m-6WX)Mi%^o*ckj_G{-v#myTcI|7-fWW`A${R7x0{NI+^J?nR%&i5P*VE4%IRWW{Ch+7sJ=VcYqe zbK(Q~X6*|pE6G9epH_Shxz6n##svfy93(GrxIa13!Jdp9^aBr;>RXBl9Me$XPHP8st3Zw3CXg(%0C!zwwUnM*_<>< zsvSz{4D(MtU?l&2O?ar(vm$e<6PZ&(k$FWMXD|bStaDP9_l_+@WN-QEDyCLGl#MW&_(@>_lN#%OC&P;-9wcjN)Jqzhf@m;~A>_BJfe4dS3am6a{^CX>SE@%uJfgIt>T4}(^0jYw#*!z_U8|>hcC}ErKiJ} zi(^S<)zjzoieKS=f?pb9wZet%HXM=`uzu%PQ}en zf!Soum5<@39Vv8InTo{!U0r;s>JOv-#Ju`9X6v^XM{sH480^bO8XGLEZ;TQ~zWdl; z;cgqkAiE^<<9loyGbZvK;!eG9<$f8($9H@h?hn6{%}*29PTk`bB`hkmKTyu6M1^Ab zWL#^pp`IlGNoIGCfo8AVss~P5(%g)cU zZ-~;a@Cj7YdpRlp7J}T;?yN)s%zQ>)yCT0!H);Dl}95F+h@F@Z~pkh`p}`3gtC7l zP^s~NebOy8w>ti?zJ_#}O$G46D}vV=$l~ffPpi>KZmGCeLz?*|4yl6Z&41;=@rPo+SGGdC1*zfyZ{|%P@LxJ1-M%3*62vM)sR9N=^E21oR|9K2GAxAV- zqx0$L--sk&coVci%6AQ!?>p=JeeU}Jv8EAMm<(5x$Br=*yjt)unffKP0zTLc!}py7 z1-S9C$|Pz^1Q+o}^+010#qqU-Z(a>6j##@XH5lEON4vq>P%icn$XozwG9Vxi406V! zK2sYB^THtbOA3>Bc_qleQ@E!pB#YyhX51%EjLLn|_Gkt@lChxYj+Y&J^q5imey^cT zArEI}tB9AWGTv9wqpMPG?mi`Ok;f%M?uO9g;#oEsDG`VV=YzO%Vhoc;{fl92?gS6}aR-$wBbnYtD8FKb)m_+`%dv!+%xu&`NIZDmI# z>z7I0|3x+oP4-0r&o2J#Q^b>ZaZZ)Gk}JkOamCmt>dQWH#qeo5b%;jkv|$xrGt#Y_ ze%e8<`yAXw{!w|J8h;gS=IRl;2~i#_(BSo@n?UK!6;{!Q)u1m0gz3xR z4_9Wjg7*wVB_qcJA^1NxAHKq#;M+CZnTK!xuY>R1KV^pG z;rqmPo-ty&!}qhfJ-~O*+XmnK@;v-qa6u3FyC&P2hi{heY^(S?AzQ`6ciPtB`{FO% z;PaFs9cFaq`8Ig|R}!a=jJm$`arsW9nZ5!4>y~dziXc_8HLmw~=|M!%RS`5OHqG<4H1q6n?! zO%fw?1%%Ttqb6qc%Yz_OB50!=@>Gj zUsNwR`C6(lvN`Ig?fsl_{bQw{W4$#M0L56T%q%|Vi+K7FeDl1rnB%pKYIa{g-|8z$ zXWUJjx%OT3<~7uHibJggBhJfL8}o#xWaJM6xw&Wdo?TVO8Gpz~BNaqiUToXYM49v0 zO=W~?Li81C3X>AHVlwLk^y`;UQ#9{@rg(VwjHXbTM9rHII!&<~opsj~H#<%7*z1_= zukMj2<))pNk#dq?Zr`{=t-1YGF=yJ@-*+x@nnFMIs4332YPPW{hG6UyeHA@+(G#&ejR)RyTMnvb@*QRLpS(5rDQqI$rY~*9FpDQV+A23TVH$x zAOBXE+{!{DwM&=8+Fl1p{x3j9xb?+fm~k)vjbRXuM$O2&)x472mjIAYN&?s9|0Ibw zx4xLl*KNpu0<$vfi;|4|Uy_yo)>MxCS9>|arOC`VC;wGc^1spx%^_ZB=7G>f{`=}) z{@>*U6zhzQ2ot})*t_fcLTHfuU!sUYyd7Y|d1B^PD8I5+8y2&O77!>-3!HpmRtvmh zG7Y@hr+jju>$a=?{U@`ToK8?J>4YU-GQQ$vsanZtpf(phSNZzrhh2{e^+UPv(q3H5 z55bTdoPKyvfJ1inPV)CZY8CykgwGPEAF_iv`eLsi?i38Lu8kji#>HwnJfzn8^@r*O zAIK-UcMDUjIDqJ^PStFC3LJl)8t<`ICcvPhhwU9lLu`bRhRNqxFwMuoJp+)Ibf<#a z8{-@kMQGt>1K+`6@$(je?w}!*hqvirT0R!3hh*fjE7hW9o(oR3Hr+zeeo;s&Q3Ad& zlWWZ|scw>8b1tgMEr};fwdJMf^gQI$uSPUDU+; z_h-eN=b&Wd<5z*Me?D}7KBEWd7XP*@bgQ2H8t87%R`Jl?>#OttU92bQP8W1n4#>mZ zfS#ZmobAfvuIlTc`}{YV0eR>mTZis}|LKOikb2+&qdQM@UPXi=YO#)`#1acQw7f7@ z_*JZW*$p3dq&nn2g&fURg&YHBOM5zI?Ii~cv3qJ)a1c2d>ep<#DbbFg(T!PVG)K?Y z02J=bMAwiQSkHExn@`(!9%nuJy0DV9N8aa#WPfgn+qr=o-x8N;3s|{5RGBiHfXddQ z!%l%Obb~=+Cox*soi7Q2s-&)wYg=aWGgWRaN$atrUD72`O6#XzZ9^-vKH8F-%{pgc zl+lkDSFCo*F(>)e935z$pFgZQ>+M8$!UG|TQI*Y1w|5cI8OIHVn9n~42yQ1jGzn|3#QLvn;GB8q%u45l-|n?n8^^d?jTYINF@vTV#aXJbM)8!NTdoGGWk&c zR!=!_bh1xNU1H&i6QhqT<$Im{H}x~Ye`mq;#Y11Jo2PH-ofI;$on3a3jywjK1ZECFjdPr59@$G{S6Hv*>9UB4p zFBj#4d=GDTa&NEWt!9dv)Cw-YBnvP2O*MnG;1L2`I)X_zSpwcU07abrJ9oa$`M=a~ zR6}>N&irEW^Sz97C_DNWYS4tEVq6 z{_8xZ(d^2^hL{FFNvN3E(LQYdUy*V4b58vwBfImJAnRQkZiRmayuqX>x|A`Cf2LO) zW`9ZW*E!IV#KfWvgqV-5D32vaR2;@FP&y-`b05K_TDsYft_77*GlaI2Wk<2SL)WFZ z)6N+5$0^Gh1EY_`_dIMw@+1=5Y#KP_y~LvO+S&Y)UdJr7U+uF4ac(*C(MQZwzYA@q z%6t@RoaU=P(N$)OVAR=`WaOp?2|C|rN2g2%(IedT#W=6(GGXm+G2)!C_K)XDQn{cp zov4v*qJ%nU|5^$G8*~NpV97&Q8V20_%qQZcqo*B-;O(FHEcsFsq0Mlv-2CX0Za+VW z6H)doU)Sm;d?A}lTL!G7|wkT5)2;rvg zfxT9J7tK3^maT^C}+{QsQb*9ZP>s+GD zn&T`ppTT{lxkI6}tK~qH;8QIr{ahgYW!WA?nGEVP_=V8o)`v0BThDbFZSQB+FgeS+ zKbcKr`%i=~1M zjHxERn5A=nexULPbJ*q-@kx`_5Gjsh-j3xZ%n?1Ac{|$Q$_&AqKvM~baH`29!=bv+ zM5>GS(oa4fRM>JfCkc(eMPGZ0zIJm-pWOTg<4>flmjr%3SD-Hu(P1K+KV@fbCnGQV!)0m+Q%zefXMAH4f?9Hw)JxbxOo9ot3oE_Xx~AY z6;bpL~hhv1Y$-id^rnA1KC1;W&2mmkV^o!0bpVWf>;Nv4X$e z`g&(-NJcAWN9e|PcXoU+3BcMMX~%$&F&NIW4{kU5Iz;vXU!ku(kB7dF+TJl|l|VN} zGZ8pMBCxilro96@C_cDuo^JLGp1aYBA`;dcMRu(bkv#57gwSvo5rD<^>SgVEHl$* zlrYoxU#|1``Z-y;rz#*a%Cm_&_6QpYBYKm?Z|+33tEiUPs2QvL&eL>G-vy5zz@OkK zbzURvaWk%aZ=8jG3fBF|k3KcDr;)nx-AL7teg$=7RzKq(Y#qgG%v%DD$uFkw%sF(h zLhavKz)D`JOO%+-Q8y!o*dbuqN7aMY6q2c6J6p*qOM2-_p2Jw>mBF2txltKWgNRCn zltIkif2g(J62=Hc{psAR3WDc*Iip(3RQTi2`pj8TBrgncP7~+G(IHJlg5B_A%~Mfu z#~ih|cNWpWWeM{l!;|Fdm` z=OO-v>v}}|{oJSo;@dvhCgSh8Wh;np%hkvZ|B?ft4no;PTfY#d+I7FS;IK0z^z<*_evncr610fE(6Zmz$ z%#Sl=z%z^0F%Wn?1l|aNpXtkd-^!42BxaHtGK@jsReCEtBe5XxkrcA;E_V!aKxxYd zTnkPU(w;n=JVpo}RQbLkSieDV-2c<=F`8ll=Y=i^TA+JmIK{9u4p?>Y=GhaU);7%3 z62{%$1NPZdv+o`LchBMGFO6xnnhzYXf|Z>pgv*#CE#8Nnu*TJBKJ*y@oxLixKt6btlY|MPy8 z%;21^h4W|h+TmP6Wfg^lbA*aYdYsSUVzE%3aCFkikYr@(Xv6*kf8Qo~Ki#$!^5#5H zjzavu#P4L`w`t?n@cZT&;P=aa=i&G6x^3Y1!KBbu6g>MsUxVL-6$HO`TFI{Xy;!fa z_`QZg-SJy{O^^7!^i;#|$alAi--~Ad|AF5r!tbV!wuay9$AaIVZ^^^&akbmPZ^JDP zzvJ)w8vO2O1;OudE7=vlee^nu-(4xx9lz`2J>s|DD8uiEZ*LR7y>I?6@Vi}BK9n1$ zzaw7G$mdt|1mBx{e(t+GNE*l~re6_*64J@Ykki5DDVy`K`SGzCY<8E=U;V&gb2oP8 zy#dm*GzkzwnD zVE(LJJf@z{7%eIQYjbp&y4qxWs?@u+`z~2*X4u7xR`!)Fci7)s^E0`fh zkH0B;o5f!ng}USK^vONqZ~92X-*?{H8vdrWegphPvh;_5w`ENcwt(#CX{CAgmrO*r zVvre_j6B{5&R+Y%;mjMou`JD@r@Pn$KbY-scJDnIoOLsLCs-M0e@)Aj>u!G?>)Sdj zQ^xEs&?>{XTyKTev1S(>P9giAHGDfKfxN8Y%d*880w*Ut&c2y{FxneJlQ-Eow6Izxv7L8G7eN?SG`7=(eQG`+;V5e2Z;6-J4t) znXBbmXEgefp1Sw`vGG~@iJ5FVo*x7Z$9;9*EC0ocI4T(5w}HIVI1HNC{<7c+$`BG4 zoUP;X+A*~q#3uIgkby7hT4vikw6l~kCSN&rm$<752|=$pJZ!=_w^*_OcWtmkm(~(f zhZMw{V~MHd1#zPDsW|^ApRC>N`{6^^b*6W*7wgw}pn?PVQQc##aavi-2v}nfpjTBn zIF##`UwN-=;bGtZ9Fjj07=;oVMSCOv*T$$^7S>GG{QXD|Nd5@w)p^2pQj(FY;HCLy zYr9{7rzrTJmMncLaaI?a$bEG7(e+^3(+G%c0v2qvWa(SyLjR=kjDXm*82(Yp6*QAM z=IjznteK45Rd8`Z@WqSJ3qGp+9Gt*t9J3G_ZC0@r+bkx)Kf1vKp1RmC_8ojL=fanm zTGY20RF%v;`htrt8sA(qVdiyxCdD~|n=DP9D2N+twVl;SnVs2!HJHoTJ)5XZm76bV z?ysl-S)P^O>42s(!`*mJkHbAQXSj!UUQ`ei`Ef*sF6hX~Ihs4(2<4o9TDN>#xY3}$ zygnRsw7Z8x;*d$V@vBL(r4k|xmX2GLH42WZ0e?DSnLEWQr;05pM zkb4eI{5b3-{b26=4_(kB+h&S<-Ft)Yk`O+KAP&|il{K_;(7(ynkDteJT~2kdP9K|v zwQm;Iqkz?&s%>Z^ltW7ad}EN!kB9d_-AiY9e5G%E{`s$i@9W+h{D)*{ANHy8$rnB2 z;^+9;O!Ds^YUm7AfHy#D$=?t{O@6K>!}aH0)mfqoQ+)+vr-e*9GLK0~06JtF z=zqRN>Sa6gv8MZwBXnpNJ!$x#kl`PO-K0qvXWMkbqq`LgH6g3ZbVV|9^DURKl1Kea z;Qp^?!M{|a`I)CzOd9$*X8=dp&imanal7t*7ptqRATY}HCYt{KJtbzcTrEF&8Fw=;q#Mnh-{8dBzBpL9)q>p^!2vYipKSVas|6 zQ8P16QjbH_W2JT!AmF{Y0Jw;d8AfJltCZcJP@6hZAM-PE$``YptLPY6_{bP zB;7mKcDSW^j!iJJ47fC8>A1SY`m&M9BeqM_>|jma7>uy? z$XI-IecQC6)Rhp!6vlHVV!dx{@N==j?9nR_=**JX7i(h+Hy;<i0T?OobzV>Gb1p!hB3fkqO~2zQ@{*_Tyd{0)283$en&Q?VBKbfpKU&q!t30h){B^?+zp;3uWhI~6uy6%LVEb2R##yWwQ5WY5^zF1Sg z@JojLcG)S(V+c$wv(|17#?TTdq>|!NQ&%(O2^~{TjK^I#aWP#hx#kR8Rz0na68{ffb0+7P7p1}7G(F^T`9`oR%Yq~LGYWHmh zK#6~%H@yMXc>1qZb1(r^HuNRd4|~N1f1!Jb+(g&!voSXK{>{H@8x)vT z1<}_3H6)TVMMp0odzrJiA@}JS8YeVK*AN=J=;G6*!GpGnqH_tP zN|ANB7zvYwTH>9uj)u17sRZ3v|IwS3_;XZy6S-H*M-5&!YVdQTxQAg>TN4wtu72T` z<3{bXW>n$ZiJGgfb0~g*4QJ9yk7_3&&*>C|DL#%Sc4f9wj|g~;Ly6~y?GtEgv1VUB zxDAhMc5s+-F^J-MEKH}N%@vM6(a;VAbXvVKdduZBbRsU#qEUlaCTjkDt#KHg1v^{6 zyVNhH6Ok7AKKCa6FR`g`@>pl?KxoTguZFf-2rUDDUEZ-!Zx|`8v(hhMYh< z%;1XP3E;d#)?@J@JU+%#!N%yHc8cEqRO?HeT~0|{Cbq&j(-0N02v)XYvuEI<`!$Y?j0|!T4?dQN! zL*QoA99GsW$QOG-sCLzUCdl7DfouynS z1@{?}T`kmANr!$u3b7hI=*~#AM(E5M8pkk?;z5v(Qy`Vayz($HmbAz?7fC}%>`{fm z^2s2OceUykAtJ_ovS7!}oS`R5v*R+MH;kH{j4D%x;p0K*Lg-ibI<;-7x13&ta5c28 z8r8O%^S5K)w4^F$gJ$8iHq%0zaunMNcq9{b+ciSH?b0-neCrw8^acp+801gd_wL3% z6MfkHOk2+0F-Bk!>P6v;Ec{~SsBaXv2UTg0>)WgA+pi)%w5}u=e5QlwL7_ew85A}b zJZvDk7-j-1P~_N#=7oSct{PGsy?v1)X)IW|QL&pb#i{N7z9!$-Lf)Yz*?>;eENo^# z9Z>3*>|oco5t4cpl&W+hXIEud=!c)e580Ge*EXc2Jjy*e-y!bDzO z-+i-Jnd-q#=URBJXwMU_`R^u$w5yZdd9a#0WvZBqZ8T7}8(E<+%7C&UILs1zu8W@{ z@`lEpTfBM#R|6mME?q*6hz*@s?-S2Zqpqjl)i$xI3{A!dHuIuo!9?QlR`k3{@vi9 zxN$Co9m6sQrb_i2(-_Nzx~kw4O%!eL0@W^QW_jp#&-N69?;3nhG2=UwSlhWp6fCh3 zZ@tH0ZWF|n4*~VG5ZL`nKY6wcOr4VNkNR5r(#qG<*N`jzd-}5YScI250&y*V5~Guu z8x+ea!MjmtNk)#im`OP7Z6<-=%pO8i>Rqr|NqD&2$UmleY-LaUN!4S36IEfJJ@m;v z#*i4^<1vQBmz{Bp6D>SA$FM_3YCU$VremUdP&=tMHHJjHMKjo?`G$%jCZXi$pkk}d zM_X@G1L^|)rkCiAQ>>2=%w-(cO4&9tJ=#zS`UM-%GKMmj2snd2@lK&FPnO2_H$R712kkI%-=w%j0kIw_kiUf47gn#NXoh^Xb08F8ok% zpXejgi#o03hgS0MR`N~h7c2crEIF+(R=qiT8AP1@ zfMe4q#gfN-qC|I!kSzzhu>2>hbzHuZhv-h*>1&mJJsEoNjX?*dKAMDw^)%m+`UBhc z7TaI9g*QeLERHooFmvJT^}m3H`E{Z#bEWAr17 zIt^r1W*{pBgnDa8_UV=S3tkl|Sl1NFZ=BhOETmn0RZI1`@nZ8mkaj0^0wWV+bf^o$ zkOTWvmNOPSqTufY7glWz-e{|ip{jSQF0l8ccj6pb*Y(vmT5M5^K zXHAho#iX@Z58Yzf+_4Zo2~4bD`QU`UuhlMu?P7wrYerx+VhnSMIvAOBGR=lBHV^{cQc=oK&pgj zQw0Rl5PP0$1g_}wTAoS6E|YtQOD_a3`%W+6E2;>!wxgVyTaC6~55#(F+cbJq7HCZa*dO@5e%J3EVPu^6T+B+}YwI(fvM zvE-gG<+-a9HT$U!{2y&S-H!Xs^(Wf=L&wN&lXyt@%xu3RfzVaxY)-=QxN75x$c(!Ha% z93uGy9~x;mUEyT$?6DOm$J%lXm6~Af;oao$h>Eg|en@QM0@$aFpUtb|Wjbq|CY#?o zNjFN^H)k`Yk`Qf@gXy|h(w3V()joQyDHu9X)aivLK*g;79@ux#G{U4sgO&yiPToyE zdu(Uo4>@gnV?y00$Do2=j^21V4<>}>P~N`WAAXrMXDih0hjdv)nti{QUz@S+usBIR z3xf;qV&QHJN5>eSgbk&0FH&;ryPWfvjVe9PbOnwNh#uB`N~TTnU5)vXBX&VpZr}W& zJ6j2iwX)aHbL=CbF^9mLZ1}uqi4^3VOio67+p6fr*x=Xj6Wehs5y)UDqp>q%4y}>^ zt;H5P94~wUR*Tznpxn^zJzP z=p_wpr(*8@XuOlIOV|Zh5DF)4o$LI}BHKU$TO7z~QKZ7b*saZ>%cFt;4e$dR7h8Nh zR*I-%p$SL?gE>Z&`(p_?K&%aXpxhQ_{5OqQ7B`{6q;a8Wx+$|rbND|1p7V3a=vdhX z7t7*DKC%>=^`*MQdVu{Kah2DWHDFXGUo#+xXC}mh2`>YmobSrA-6_fbgwf-h-UwZC zke2v>85RdPy?lr@M-s%7geh z8>av1(b9kxD`N2$G=S7P4EZvsUs#{JJ4^fI){^|5ZxyY0yw9SO%4u_BFhRDs_SE1H zeZVDO21DU@kI4hR>oH0GvJ5J_x-RV5_~TlS+aa-b?%#dFIkZZRciT{Do3Oe`+?sf1 zh;uiv0J2qm=;vZWjQUDErH@sN&S~HPN2;Ppw7uX+e6bmpdO8o^Jr_dk6FTJagAMVq{MojP`EK!7B`gsg9WSmeQ#*;8Nvh$>S5p2)Umo|Pjz$zM zsx9YWG^nzHp;GiI`NfLEWL41dojg&skH%{F5B=j+DjW+cAKU5-`2Aoot@BM8Pb1aJ z^%K*evm=ZMjJp}AbTa@c>kaoyX?xbD1^~nDWe4BJ^YY-kAcQY^(=B=UM|BEN1lx4j zgdW-HA-Cvx5_y#pa^=xS_5?&Nx29JV&6XGD(}TKcdCJ9-Cn5b*3mKX~h!w=5qc#dU z`|6wR(B< zhdUy^+{_r`7@8!nqK^!KQ_P36C&#sPb`b0pVI-9VPY>>jFvCyumS2g^sm=6jMyr?1 z_6PdBG%tq$76xUwofmV8zG zOmGc91w;APk!9B$%6jeWT*grIj{1SgsWn!0f2~YxcwND8lfloBS|; z&zbUo>0X9!@yzbicD>gGKOmAMXPCj}rrg1$PRVB$!w1_MSUC#?W~snTPJWVJ22M#Q zo+_U`peX(B)+12d_|M4lmkm9pyewL}=C35Q%ovpC?8ASzef(89@m2_gWh$`;p1v~k z^nE1%UcdMUD)f#Dy&-%xp`h`H=>lJEBI#`1tKu0GnZkRltxvAw>g)r$a+)SM%)f=h zG}<~%^-WI688lPOX1G_vj72Fk4DjO}tS;b%vGl6jPM3AA((#+Nj#*>|CQm4o z{xbiU+!k`=B}YP-_&+`Sl7;Bw)bD*=nzU1@HsO^P7J~FP9qr_}e5d(NNNXRs4!{v< z-o)NnM=&ZsVS0e=GzpxEb6U_645!VX%h9V z8x9j?4&DNP$Ew#(9r6f?`4+>WdJnCIo39j1}jj@d$(*pw0T$Kwme7CMt;|pq9a;{UrExIian&p z(hSNDL}BpZXdwAS^_m&iY6LSoTbQ&NeH(D$ruRXS?HT;y^>v+)JWhIQw=I^ehBut7 zACVlrqAu}ezbS{!)VayptILxEZmVlsx$>RklgErs-ms#h`nAcCL}%wUcRU8+b*2Zn zkK&;VY+D?x0)jR@cXJI)-cALMOPBInyafEZpRchf+geHWFV@yZAHkQhG!{Masc;Zk zsUGYwHkU#=Qg=dAS#)>%CjUs_{3FkXLd@Nd>GsdHD#o9DAnWBw$5@uI#rzPQ^cjRo z{wfo8F8|I{99lmzw}?fCg}z&RaJehgOkuFYzk~)>#`0rWe6X@sea3acWUZQ_$zqrz zv@eq*#P$nr-=`-bX6GmK@>Xpy*=5_{)`;>}HAcg{RUds0+{#$hhHY7<<&@%9()+j( z;*)SrfL^xsYXCy>m^&52A1!9kWzs^8cP z3xbOW%Ii_m(YmhrbQfPvbK@xVvvAmkuJQ5o?5oGqpxQP|J}z6C@+EUW zTu=F{=6@uZY=3=7KF1O*}>0GKd`Wa{4c{bF{~&=l#sWxjTq^* zyeGVKWFg_5!DTu_4S|l^itpcXm)KFU~x8?bKWx zrpP#(5t&Xu4e5$MEikh9`%fve$KKxqey5De!|(n7SNJ_>z&FD0y#pP7=Pz*hCB3!ibLJu2!0(k~9DZ-U zeCzlf>C0S{DbpRl2Ur=0-{DrSD}MW^L>9lhQm8wA*Xx$HkbZaB+3@@6eLdiJw}!3a z*UrZ?{n}TJ7h+F$S;{#2{w!4ei47>;yDD0QEL{4g4v|?f6q}b$ge4XjNGuG#R65SPGD=8*m8*8|V)F}7XO{Gv^>#dMFE zQGnvFBI7*&QqdB2uy2HMB?i zN{Ip7I0>*JaypdhM&P~}f9ukxY8)KzPezU#KOXSRHfRMc>Mc~7rFhp;WRH$nvitzthA>l7X%0B z$7Hd_NwiR+=Cf1PJGT#;Psr9+aVa}eRHZ9}CIg077Bj?K3&;c-bnexNd`jUUD1(KI zaMU3o<%*Y7#o@%4N_i;=|E(?eAXh3po&bH$BU)FzYzM}M$m#|txGR(}bc-e)HJIT0 zktK3E=mybbX?s*tyQ29@wa^zkdTDxs#z*5)TFJy7PY@-tWbssIy$VdhebH=a&VXudzDOR_(HOSTHEZhaMSqU?Bm}M|Ccm_4y33)35nKk|B6-u!dT?zXzF) z;7g4~xaq{(W>A{L9ur3P&AR5jJLXHk*d9;t`^#LeDW=G59LjgtqAZpicAV>W*Usl= zy)=D0s$#z@k=$-7Y74v$C{^*_BoEVkL1h3*y06}cu+E1Ahuu(HXLT@%HlUTb~DCnFa6`3OqQ=Q zTqnuMiGX73hhYAr4jylx{qfsf;kkBXM)HXh+b{0IiOE4#JwRjQ_uB#5pGihu`k2v= z^1b=dPw3yZw;ilE8+~m$iv7Na?++iXXihC+@aH2oBG_aLo>_kTGYlm(w~(xS?S0;ZHRz&+whOQ{Epl|5}k-U^1nUhE%4xX zBYcPHdqV%`A0b|EU&mZ%Y^_^T5*k}cqfkO*Zz411>te#7=zZoCx}1(mur*fkPmM2Z z14D~C!dl@_Sj{b&SHEkEeVxj#@|{f{NR}yGWihxR!=#Akh|Lwi&o%& z_?%#$>z)5vSsKaD{ET>rK!Y?2UV7mrzDAs&LZ_Tg_Oj8jnVTt6a6L}n6}G=ANmQ8& z;r0qD&q63!nfrPx1K4^IbTy}fu7$rkf~ya80knSj!Mn#>{77nejxibv^_)+mpKZlw zPg|c^KW?o1@7Is=zxe#&eTi!`BAU5j4pXAIFSjLomygrpRwzvsnP3C^^kHiRH*Dg0 z1luaap3HR-w{08QBG-YTEyO;FNM_w-LfjV8ceye|iK!y)(2A3TUCL-$rp&RF>re!l z-gOWZ*o(YNi7$IcfAW+9V62y9q#}qr`{vxgB3}@t=oN*SxoQ?lczf*-JlPc|&u$#5 zaF2}!b7K|dYW3{K(Aboy`Qk)LAPcBlPa(pk`r1yp3(+*Wpv0tYjg3l3`>@*K)`-?} zs9v#t3;4l|u-(K41Tn_<%D7(*{%EW1ohH7FL}&er!olMI1t;zP`fNa6ttP{!iTaqw zGdTeitapdKl8fqa0+T^d9N#Hd4(eyf7rmo*KYjQs1&%pI=R0u_{#p$ zwQJX<2BZFh|3MJ>t}q-k2Dx>0aHgv!VY`L$IMe3v(Nk9;e!7n~?D7_ic~tD9b-h9D zG0MTxFHQho<4b2hjgtR= zJS?SK42ndc8TNI}BGe;C{gHLZ&VSZABz^pW@WKua?Y}W*?|>P;WZyS@9@VyA7<<^z zhH-h9(dsCa$w>|E4;oL6n)MIlFSb(p;`;VcvgUSONVWR6=Y~o=za>Nht{{B zVpTN4Z&YOztBj_48QJxT&OXgM%{;pK%1ft4TNSjzHQeb_`MIch5MS%(>&+#TFSw$i zdiUld>)ZZ?e!5z*E*-t+CqXzLAp%L~q{XJ@&pSF^5oZF{+anhr5pvb0JYp8-!uEtj%2(7@Vu`o%DwDKO0C#sv3+G6NgO_w$}I5 zIU^%h7myt24rHynXNY;}PV4D*`I(xkIEdLvgecG~Z5|!As1+-HP}XH+>DpFs>J!S1 zxKx*z-D15gs*4rsI-MmfSr8u!083_C{$qO+A}iKpUWMS`2Q3IHI;$z7LAhpZJIKU2 zqH7L~=p-U$3ij!=8m$*}l1~RQo)rh9A>0VBuR_0c7B-{buCKLk>};3*I^9u_9?xSh zto&r@FZ6gOkCEnj9)GOIll3;cj^a+SHdivP4`eXH2X7wFjzpWpH z*V_V**KoFBNk;@Npe{46%#f}kNju;knVCb9T9^KZM$&eEDV)ZC>6a`SY|!J$)_*Uh z^#S0+Gc9bd@v6W98lNMhd-a?pgH}BX-1G+-G608Qb89s4@o>=qan9~=W_nO`?-AHS zd)SV*`>jVpcvSUpn0#_ZPh>Ft=OG!K_CH1j!+|HbZvtd6(s((`D~6^#Qje^naF$gf zFX}OaqsS6HcAHXb1`I{oc-`Tr6bgyVRB_@0VH7ANav_hb|G`n@#rK7yA}3v)eh_VH zRAE#(Prw@ZSAa{&ur+Tor0+TkmwiaL^rKG+EsHK11h*_dw@a<6p!4wMgg% zz>NgXisGy(i1#q^hqrMORQ}GnBsdbJmj3#23uMda<@_|~;QQ5rACR1hhz<1F>9X8`@TcVp- zF9%N@(aorzf>60r#AIhHpFvQjoGiVFE=^+avI}xPJ(AzGI8+8?mL7A z)@@E4ag&uj`x876KnKqP4kae%?uuXuzMOFX*!1(xv@Gmc&Gs=USnkDAEA8j=-H{Ms zl4b!&_Q7HccDVeiBks%?Gjh>sLXUeCkpSR0 zZTz;6Y{H$~$U3Y~^NurzJ7e(I^v0Qm#Fs_Q1MBC7W}y0SsO}wYy-~0C<@NT>d%D*$ z0j+=DHy2HqISo57em+qdoutf&-gF?Nz@8s55aVyt5%ClGdu04L@|s}g?Sa9TtU0ee zH1O8GqX0&ww@VMQS7X9g>OYvDc`c%7avn~`<#0*PyDa`Z+AL7XRwRp@S-1M;Utx){ zxKLS}O;~geW8$#BsJf}H^JSZ-Ce{Jchf_@uhS;-Rk&NYax$F&Wrb}{6H1fN>3Eyn| zZ64pu_^2i1o0#L9KOU)B!mUqEgY?dB{^r~MFhAt6&3Jic6B}BzW-JYoeti~F%}Gon zr<^)hBL4y9!aPtud;?I%dr-WeZ``J?pzLR$*aqz+yo$qmgyOCKStuNxV;W{{HJhJl z_jr4)R7C1UfGO&?zb(tmuOdbDiOpS2on7C_mEWaNJ!a&0X^|e0-oQ!E6htqw7~_b{dd&D1p7Yo;-XUKuE7PmC?Dn*@On zQL*_56=KfDObwz|a2H-q)l2yBe{Ylel7s!nb4=b&Uyr=~;JaSlx*5#<>rCIAU$oOO z1z!Cof-hKp*f)}SsRKAD=VYAZ+j=M8W@1qL^|KRckDHW{Xj{T)v|e7JQSs?SoIBsB zrP@6GE}xD(h8PV`ycX{7#j0P6&bmjx(#&iXV;6{^iaxkGM`|tIV!xe_`Z(2u<0%14 z1g627gbyFK_hDUEUdtwdl3nZR8UY2Nu}+|sCBgnI!i;~6ZwDGwkxBa!U4QvKl7}O{ zty#m9>B&}mf!^+>l(s8Eub@MBwvs+f_HHS%U;ju z8<+3&?aZsunO9EDn8K0kgsnlyz@0(Ud4_OFjtP{jXueOrxs0N5gzap>u8PL?+42;P zBe2{hey^k6u>FGtagI7?yaCC`_N$Tav+mAQH9H3_OuLzAUe%m1MDvr8?`MqEvVHnymfm;zP8- z|l9uB~S;%KE2#6asMg zjqO@Q$%t3A0V@0ME=S26qosl3V@onSl0%%)bnT%TN>(bGcH2v5?=535DF|U$AIZIC zZkx=OI<_adkB!^o@P!M_ zI`l*SPG-pL8Aisu0^>e^XWno}6Z+~I*AMpxhiJIQ%2nwd;lGm{=d$~(ASD(=8t;j{ z!|~QiutPAxpAYoIO2ydf3n}Ekgui$j@Zb6}@b}M$|3^D^h5xyO^Wk4-+rKQt^5CD< zs~h~E9I$oxMR^|opb2kJt4sMyNQB#VKcj$Hjb!N$xo1nkFP9^+{2W}Q@|9wQa`5)T zON=4*i@Z5lmJI=*oPuBa+89iD>SSJ-A3}NF5S}W;2D0-rtX)KTVYr9-B0eM>ju@#V zbwtjbgma@$H$Od%4+{s<@Z)RlL<%QM|Cs)o@%>{ZKCL zX>i{7noe*mls~>+TN~eOP2a^8et2wQFnzP&ivMviU_&()_bL zlx*6*D_efMGJ_Hw9zBuWb&2`Pyea?ZSHJY3Tt?9Or!!C6FK@zoJB&E`RYZm#f1}_+ z-C%1#u>bjwptlU_&!vkvT=b|$+*~RDy|>?AQn(?vF<(`b-b<1@8(!Eb(Y7jP(LeO2 zz{2EUEUfCMnc+a6Rq}FRU+?Jpw0JZ+Y%OT*Ye!dB28BDg_^(=>De4m&e0&K5Iwa75Rz+w1mVRx2 zM5hNhvyzgI5Fk}9u1u3^ek+?SXliff>eS`T)zY6ZSKz)JVMA=;&kyi3Lxd4C^ZQz% zIgB=9p+8pAs}ZR*DO*q>kT?2*F*CLs%S5R3QGAe4u9Xusf_!2$A2+l;rJb{7I_j6u z8T$M&3qo)SoeTc5VB$WxGc8cdQUiL>jiLOy<_tggid~Oat2t~4Kqu*pt=Core?8~l zZdA&dsCh54Djp52U|qQfCVhLZ+zh{i)XUbi6ewX*kNLs1 z{$1hLzek{}4bYhzWFv<0a|F*vc%!A_JWZjXX1`X+1#~`=Kv+hiRp*Le^xLdm-EOQE z&5OWIOsyoF&Sq;uYI=!Z|MkWqpl#WK!ZF@AxA<*nuVaI_9#*iJ+?w5I_!UYlIYQ=_ z3t|Y)U7_Vln9ak?xjxy`gGUE@eDo^$TF>gdxS{=s{dE_+JI6fz82Qo$ji3HY7gwk7 zi8%%vVW}|E`Kwxdru;CpKs)bE!Gm;{K8(8b@5*ayEm_kLLZ`*1#$tQ+6NnGg@%EX| z2%}6H$q#~le#Ex2X2h(X!bs)*oHAyUQ9F$;j~n?h|FJFje>*J){@EV>81Vn<)m-@1 zmEdm-HULftzbo&sdkcuL=taTrisQ}({w>RM;ZOd5)V&FOltuDBo&g2TMdYSpvWN##sg8; zHx2@#E0>c0^HleH%#j3<-S7X$=R@W_`t7c+s;;iCs;+jWeFkoVrG!>%-6;+aWB9R} z59^<^g4gu?J>e|P|0(2uq`XFqmBi`V{QuXFz&RC22>Xs19EwZD;QLce27ldTYR50- z>x7%E`c>6%sB(urun@q4{Pz2~ARpGl5+jL_4p;YQttchZ0ow)}}fMK4qvw&~86o(`SWmcn*T&orlj-UEa8*0Od@*qk? zk(9w(%M-K$2~SKA%4BMWu?4kSKXujYBYLJ1*4Ns?TG5ARdukqn^o4wbt6U@%hya4E zLe9~Re!A`<3^x;TAPI=W*vf!w-*-T3(hP-G85x0ulOS`gbxSx}R~|={B`Enu&{4O{@+nr9o{q02lVWy1GqT*|k~%)xy|H=~fCK&drgL;9ey;(^`@ zwG~}}N(%f_p#KPa*Nh!U0#mZ-Ls2 zrYqD^OTdWwbzKvvZNn}@DD*hHam0Sxjb+sSx3kP*k+^+JisAfIDHD#{IecsL?rSI% ziQCDpsJMOVbHVMjaUr-B(O^8+MI%_PJQvx*z%j3wmr6b~i{C!j{~H~@bzcL&zuX&w z-$y@e0>967Rrp=j$3$GDV5pKZg5TLzu}J)0uB*CD%7o)Lmv3$S4nv_x{C1<^D3W&v zeJ1!l@zxOh%F1v^XOn+rWq1hrjoj0k#qTDW8l&;=q;0_OgT4^__Fvlse!a&i{9XzF zcw>{=2~tMz+s`T%iQj`qtE#$4nQ;7WN|Omc-6T!oshUo^n#~30nli`vtK<(C)0U14!3~{67SgcXsi|`ltVHa5 zCR7*CqL`06Oc7D;&R>lOQ;_+eyZWF$>EhFVU;sI8MFbkR!MIG73uh~BfH7MoGD$@E zPQZ2P6ll4AmLxCc6Zf7sLMZ;8~PU=&ApgwjMtWM zaVttWEdc@7SFRhd|EsHRJW)3;zq;}E6*+aus_~!UnU>LDHI6cvggqG*IrCY@X5{z8 zi4E*2B`r-UX=`|zx~%(UT_RUDwvCSxooKFq%AC}Izfv4zgq@WLXql3Lzlmi?R*ro( z!EOs^oTpU*Wm>751#~k=nv{yYZSQQ0WJ0l(8%lQuKP|t#Z9~~d<+rzMC|m0Z4}Y5!JBcL&qul6SyB)O-L5%n}o~H#8tmMOi+191pQuQSuX@EY|1m$Vuk!>Y^1T{Gy}r-9z7J5t-@bb+rZD^0G9)*-2D`j(0#$PU zyUW!f4l`CIc`{qlu)Kn=ObnS65X^;>Cn^o|l;M&+ z54Hqi1|gr17x81*de$G()EGAj@?SH7S^FVXT>l#kVyLII9YpQaq$DKJZlvS7Uol`i%el^9RMXxqd<<%Xfm`fJP$LLwgr+OkJtRB7Ubq%2{eD0mk; zwEe@82JjfY@qh;Lm0-O>-?|!x{)u#HRBnXFoj%{DIq2-TQ=E@HI=WmjWsK4fUI)(X zKA7@T=?8UXw<55VqNVgQ%rzxE@o@wa0sRBVtQTOv0)MhMlwF0>ySP)MXeEAsu!BR-X|0$mH2>&PSqEY?3qDAM&Yc4n>|6mE^lBO?gQrI(y zj01rO8s7UGat|%_EO>v|C9~(8z91j^gJ;k8I8Csd2M51N);CxYf#y{T6=HnzePUeu zmBi$fP60J$e?XM1Dl2BaP%b(12VCF2ZtgE1Jt+hkU+f4+#?kF9WYGU~viPkX{(8`V z8{C5MBSDpciUS>Z6}ZF0F^--n$dpPt8E(rpTZK|_0898c!gVRyJvVG1zXzZ+7Tpm7 zV2%x7F4RX*YhpVKz)S#muQ;Bu6bNx$_9l!iC5~7}f!NGxJk-iLWb4P8$|DA$$dBgz zSN}QZR|rS0AWZ+&Rr&UlrugC_h}ms}aue>MA!ru|o=H#X`2xx(T9nL`i|-B173HksX zmH%qG2_2_2RUCoeW8nXp>-7K7f8{k)k41OIcq+1{V_y{i)$9#T!T)Ws1AeLngrEMa zFBUoBXH&|5b&3OiRbKh8-UlM0`mg$hz#niGFOBZMdY~nGg#jCXSpKU`3uTtT3fP<_ z%*C+L*Q_|$nE%Q>?KAXG%fBM3P;ai2`Yl8o5lf#Qy26 zEkVLavOIBfW053+L<**<1#2t2AVp$|E~rD8(%kb4(vNk|N4`_|dBvY@%Nkj9uy<)j z_ZAxC)ZY?i&E%es7xjpMw&Jq@^KoG1M*Y_!pBnf7-AeyonfU)&>CVCD2bixGw|O-G z-$k;{2Kh|?-%3m%@c&(kAKS)ZTor5bOSAsJ2}5k%WwP3$0V<0Y!zn4?`s8O&WkV^c z!l$4J#*~yqq%w*aXK`dSs)iY##6)0HR&K$m+W&ZZ$oxttIbDy`f83P^SU2Zfqa+1a zbbWoLAIWqHmYYllBEJM&?LUAy@FaqY>_{@J1rn+;R=F{xbou2A{HON7dtynzzO3g6bjjq4hi?U`>az7=ds3~D{xgckFf^XDx#{Vl2k zsUwNhBGP|1=|8Rs`lC{=AUeYaz%0VpZ4*ene}Hf*)zLcj+)QpC4R+(TgVDjRAJvow zs`T%XHva%<23y&5YOvGh zTSM3>8yQ_RJB^KCCw~jYPEU4ovJ=$#V#vL*1-_!RikxeujP|civI>%?P_Tr4X%x(? z$oaFb>|(2o@D$jdJe9_`il-P)bOs8Mr*u3Kc#0ha3uL+Hvx6A0MVPpP2+`w#r(lpw zu-Hh`&b5UpRPnyuJC9*mlCb?^VKlssN-WoJjS%a`Q1;T}n??rBW5uM;MDAtaqzU^L z{}yDs25vq+R(72XX4Z+3T>1$;JS?9}PQ)1Bi_oqD-_m^FhsIURyMitPBY4lKeWanl zhdOi$pM9c^a78DJqxT|gTcVNqYxGXp!P~Mjtj};TB<)Lj|KT)?3741CxTG{Lz3-6x zSeYYyr{Y(PD z03K&aVQNv>+}tNW2U+^CDXZ5nIw+ATr*Qc13dpCdn-mMk@-mQc#(YaYfvDm1|4q|B z#Uv{<8AIvP zr2?s={tdd>5~)bc7lG8f-@@ZS!d1gX5aDSwK_tj9Zrj@gE$c@$ML~{VogZqANko+& zibHq-$i=P1Tk)%+p#nlGwdEH>c0@YF6|(h^u|VKbXerlYmXRnaPD+FsqDY?zQY1Fz za#n_uA1VL%Zw#&}EASNZ48whTdbz$qmD-YsHxqfok2pRCkHHPU0u!Vx2NRrmLkJU` zYRiFFq_QwR`1%0(pbgef$tHcl2#nnU&v+qyI8nVNg%JNBW#HdLq9SV8p1`B&<*Mx^ zUyP42_T-`MKtc-h)j|-X%nj{@IJ?+F zKnR#?Wc|_v`-r_#`gl%4Cq(8A>2Lz_+$QcuKs+Q3b+v zQWBg7RR#9B1mkvH)*%uG!y4oe38ICNV*;*ImZEFt;;?(__gdiPz1Bq6_U~0)>tul) z*|m>#nVs+jJ7gU=l(KFC->R*W#67l3t`wiKV{bmPt_70UFC@@K5X;FgohO%M*hvfm z#EeyIDqDE=3`=5N!cwAwH7eSKSB-~$YK}qcOGCKQo}|?LbSqd%^Ct$UnO<#fI>(S= z&9j8rD$~pHgsHSB`6NDZb{DcE7G3HPB3mD!(}qe3XDXI9XR5!Q<>bj?@+45=8viy3 zci)&0!d1Vb31>>YFt+^j9!0y0JD7Bdq}?&P%$ZghVar@ayI+5?*s>U`b`%Pc@roVu z6owbIl?`^uu_*bCcz8#ok5whnODZaXgclhUr&egtNtTz$WW^}Ogbnja)STA~gs6DY zG*KOyFc$pS9C>YzME%L3vzcT5YH11~d;Z!?x(2&IAX6`+SWc{)m};?>LOJ;F>t{D2ShR@Y`SitD4=ES> zpJ8zkIWu*8ig3rH`Y7c}*=x$fUCTO;!QP##-Bn+MUCSr7C@DR@elsrdE)FLh;fk+I zdY87B-?Q9Ri})7F3#x>h;XPwIsNQFYl)=Uw;W^q5Y5qxA49>{7QgMbh|NQHDi!*r6 z0Ih!5|Gt}KkgPo11K?I{~(37{5(NOp6oLa$4CG2o1Zcz9O|OR8`#W*96m5qL~~ zbCP5Pc#A(GRwnT~thZ+21FAH>5>5(Z>PSyc3R9O8Q4|(Sz8lkbc>?%jw3T`ECb0f=g>6(N10S7I9oNT$LnmP-B2EPH{0%6v z54Z*oB}Xq&5Fp7-uDnh-d;5v8#!MOa&`Y|>x7x{BLX-)>N+og4&eY<+mNdZ>sthTm z3qhC}#UX@AdM*lKhWr>#m{IMb5(Yd@!W<*zg)l`R%qdbB4J#5t8%k~ih)@=k>KY}0;r^P()`>* zU{$Q3Ty2;<(WpY(*E@*{=@_TG|A^<;n(iPMV5n3`TWFW$6uL&2R8y#AmtfA>RmQL^ z5sLmFfe(C*xnKyy-6VdEJ^XX=nH(lO4r-n(0z9I*U%Hv-qdsqrgUF@3@zD3tCrHYt zNmi;9Tj_CJDgEbn#P6L_xAsYuqwpw?Vd&Fo+Ezm3bc*=Rl4y+nNV{R1=0J3M~xYaW&^U`CDKOR9I0;Qz<*duwolB>ItM+BKub z?+rGby=f|bkNVZaI{yylAw9WmB{3jA_sZ|w^hAn8h85z>RHQp{S6+q(BEOj{27xsQ zwe3|~-yJnTmc!5`f5*yS*t?)FDPJLEG2ElZ%Fzdr9kd*kLp~tBr-evd3Q~ylhowzU z+X2_HXI&a&WRC`WLZ;8b3wL6E`i;negK2#%-ao$c_*mnSnFrMj@(Kz_W3}eRI$UtN zn8RPx%@Wkws0j+A;kwqm216CI&?*)}d-5@mAk#85Mk1lIWkpVPkmI2nn*aN!*P}cMt=B9K5jr~L|Zh$rVa#g_5SySJ%`8p!(teB%ZxADb3?+=~+2YxuRAM)Uka-QyT9cI$ z<0RWbyR|O`X*Q=W-->5VEGmp~-#U4k{XrveS5l|TsPEl~8b|)t@sSUKewx1({vK7N zcJlSV2^d*AnJhgBe>U`L7=%By^|W6IJrrA);94yMdO zeHGt>SPJXnNT%lk>|E;Z5Ql8&@xO|6%%o;3<6sWHz&uj|dd%NW5xUWMc?RmW*m>F9>wy~Z0jAzBfLAYKp-@!X!+T6&vgH~U%%2K<%Yx@iS3L4}qz2q$oOZDS zyq)wM{jLdiN0mkH)xHgML3q4$XT&fKzqids=!0c%6S7aBrB>DDE#bQ{gWQ8YQkPy_ z6}ks~X5Iao@B0`j@4P;^rjbZ_3#d*?M5nqj_3P*aug`ES5gqdDZ#I3mqShwm7bT7@ zzm6N!>zhHne!#?l^LBl=b;#b+x%icVs& z=h@~;V}_jLO9cs#W3~wy;oXo8sfReVM6!UW`2NK5J3KM&DxR~8 z1Ek!QXYv9VY1v=yLw?bx20Evuo{wXQQ z*O1}yPe?Orej<62Ab8d31RUM*?hYz{I&V^V!=(vtGI*mVR`W0eWv(D=>_Rhq&xwln z@)7PiH}Rg|@x9DV2q?x$d(2QN3oiB?`1b2{3&Sc+G?*RJ9StbwopIZx0DS6l^Fyn5 zjBh_Mhm0&dTq#*Xz>lqYP|ZIWa0w$NmQCQ%3bGU4TX;NDVo^6E$E$H+F2>CzmR^)w z`W+p9mV9(qZ3HTj1zsHql8*?_r*Pz`$?8g+X;$Bgk`}8A7n`h37A8{)%VLDgk&>0- zdm=44Q#Hr>+~4A)CXt|6UAm=MofzTNmnFZtr(kt9XiTRHWiQ5bmy9<~pad58x*n7P zSNEOQ(tlqR!saJuTWk(lPBy>&D~ruJD#7N}2T0giGDvMU-_1M*VKxy5Mmzmt^LV+S zLi4y{c*V|c@OUwiWHJ07zz8&P@b@H6`4&R_sdd*0e}9G_;cpYgsT&0s{p%}uEdsN=C6HE z_6?XtDBm!XVq=B)nbLg{`O>qcHGh)slrKf{J2!nSe+8q% zfYA-5eQIb$=NK!K!iS9{4O=%KbyU${|t?ad3fzw%UV)So|hHvFOnC$HSI; zM;?z*m5t{w3_)VT>Z^s9*Wf3NVrl_SO9hwFltQ^-jtI!t#UHET3KfwhAvUt8jpv5B zBI?JRJBA#_JzR2qqvNlrdMY8fyqqKRVRAS|!W`jrwYl$jwYjgGX!h72cEYcCSpdHl z#Qr>MGagO_N6g&VDSEFShAN8h#1L5UoxH1h%K5*Y$B)Gbk~yIawDW`a z>j-;(!1qXxIx#-RJ!@&uCA*cJRdIf8Jb%*{13}A$=aQB)H(Rt!gpu{h-HMhG`J37y zxgDmu6m6djB>e3W=skg)NvGjQo|94Hjel;`XgZYqP0i)6L4Kgu2a*qwp+f1Gj{HDd z{th3*&x4hKbAfdsq*?<(+Ic{N-7|n@HkL>|DX^QKRKfb6z6|T6f-~2 z=v|HD_gE=~{8v_)Nc`^K#G2xbPEsZuzn}4~jo%&O7Y@ho0!HFR;`gfu1;5KqHs31z ze!uSbK}uZsCqZ^@bbFC;^M@MuVFsf5zcw}lDE__> z+LB&BMBtyn$)s$N@k(Oz_@6!-_#=JP2m5MjSBzce{kX-kr2fyU_KW<-m`R> z^Q|((KgyJ-SovJ|c01}aCtGEl`2TrB2>x54P&E9nUF^Vr_X2XoeBZh^$<`Rbz%B7sF79G#hD+8NI*3BcbC!d*UL- zi`OcfZw1dTR|+YN3JBNf(`zQf#9bXv65`;k$SWeJ@g*hlr@SAXSYm~;)s_0;k+h=* zqUiVg;=@;gg68^@ z?@14WssnODsM_Biv|}Tv`kxOJRgZ$-yD_S+*JZx{&Mf03=<9rI6ZBmaBDtdw)F&k! z@x71evJR4tnHNG*M|^L=U(vN|`-gPxifNWSitO4k8tgMIuoI>G&J7K}ysx_Nw#rD? ziXdmetDE^YB)<2%f3tVt@x4C=2(-lauI(Y09;lbI8G^zPikCtBlYtSJAE;-zv6baMEew1BaEuA!ji2aW>h#+A7I_r#M|w zt+lxu=~9XBegAcmb0z1Hu=w8HeiAijW10~4_r&*Zez!UDHXYxq&wpBI8y}TvLnpk3 zK2S^S!qh?cm+3*J33w~+X)HA4cb1L=#xcUlQ?ph6ba&MNRLlJDF~JLvga=0ndluOT z$U$^?b zd`Z4iJvK1_2V^D=ZfRJL{6NU9rAxyoC}@K8f-0hMhnUB8tN||tR~Y;P2i_Ad@plIc z|4<#KdzseBt*FyHzZygD88(gHRO6T9X`=ws)S}_!p$^6 za*$Wkoo}LsaEu^(O<5tGzGZD?{S0q$Sq`$v&!ZBcgxNB~%DI4nX^-iZs8qd(=MB4CEBvAr9=L&oytK6BNh`dh~9L6!T8MAs3 zz8hDU$1KDg3yi`7_iv-`I3}>r4%%`&hp;+v2U6g~o&{kAE`UZ|gfx8XS5QFM=c6V| z|BSk=YA)cHB2}=SPks6xN{OY8o{BgBfKlj1oq^P8t0Ld)$i6fx;?U0~(<}-doL$dl z*AbtMND|rnYCOGENsJVVr8HVUAoTbJd?{I+5OOIoJoc{F`i~k3gH-yW?f$MeF(Zv$5HG=uM9?emDrx=Rmz379Bp_Q^Zi-%G zUp=`T7-5=yT4ZikSy>a!^=rlQM5nrKtf+NL#QKXJ8)}u=&idO7{Fglz27i0Pe^ONV zcP&@&w+VqiUN|CQ*@I5_U*hpR1X}OE4~M_ik%IrRN5kMR;AtS&o*51QnHqjC{NgtL zb&{lYPdnk?p|Z9%3jg4@4;B9lI5R}GtSSxkf*Ar9eAD(@N>I=Bo z!An=aLt04w>(8y;SUK+RnGLK6&LtLAyg};TR-}x(-wNr&_~<;O_~!!jLc>_3WdZkV zBC-vR%u$(Qq1VeS#EYYK2xsMgLzXyqRXus6;&#}GD;ax8ATWZpPXqb|H6REQR0zN4 zuw018SRA1qNIw5|SeiLNIB!B^cEqz$v+#^e7d(dRV?1}cs~%&mf#h~i;hhi^q9Bui zreQE;e*l&k(MzEbOD6{!QvntCXpM)_9afL zh~1WwE3JNf^!2gBe?wQDBGU45+kd0?&trDvga(r3F*-6Agj4c)b}v#7M_Wpsz(Dd) zn$vlx3Klvdz zgWeVj%K71>-*apLZT}N*O!^fohgZOL`x?-1*6E6VV?*e7S*@bq1o*7=kOqa&Inpne zFKyj+nE16V-4^s?H>kF9LV(vwb_h!l+GtTP|Qgz}gma<$bXr8L<5@Di6Tz-Z|B&&s70(wD@p!r7iE=Q&MJZ*clH|Z; zDMJe-ub{*i(iY|)3`GO>pY@PW6`L9=Ys)%|?r>B&m?x0%U0;zunZoy|`6vdY87omvpwH{DmeV)|ffL^wEL$Pxjrmjk=ZfMq9X|lUd|IWR zPIEpDxNfNuvKfB?*(zRbifqQ!3!5NT{TPcxiaymgeK0Z*kwL6Mt4u^}Ey|8# zfM6*@L%ts@{@x&d0I(UJA$cq~1W_8oPg5_ouoRT)B{d{#>ZM)`#|KZJF9*F?9OLI_ zTxt5HwwhBOB}!SMN@kysz8^i^P3>CZJ88D zYLn+bxu<;q1nc>+grc_^_gs4^ksHNzUJTdyS3;Gm$t>d8hG;Tf=Wv;yJ-!??>!0pH zMq3sA&g6q@3K#@SXZcT;i?iIzKxcZ&jgCKxmS5IiN$P+r_V{bK|K(5guJ&GR$wJzK z2aCJgv;`+BPr2TVTftw}5l>D|sw75(Oa>K||WMiT&r zk@ZmXlb&IZZ=Uhxu55<~7~YKE!pY3P3Ayv>N?T|AiLYp%{9K-LrxB0|JgW0JUYH6y z&x#BT7{s>frFPaA-GXST<)gldbyPv?YSDH>DYujQM9I(Rfhs+IGWb#Ng-IBafgLflw&5%(-yFk*uRKwo9EB>6L&TqsGg#-1miyTRD@3= z^L`@y9Kp}f=a`v0q+er@Kj`(4o}Ch=Mq9^{sgCZoJDP%l?ZIsfPcM^rnj%j?mbQ}1 z-__R5c>*IaWTNr1usWnujPlF+vfoMeuHj85TW z;FtRvrElE<6AwS$8-@p=?_%|7?@;VLWqq|c{42wUFTfE!qH=_BgQ_o#A1<`&yCI^! zY}Thn*h?>g7(OR4LhwJ~GA(2wOX`_CWT7~BHnHj z6%i={$dng}h~5wb8KJaZxX=PKZq`~v-gAqEnc&NakRBE5U@9v9{KO7UD z4d3*p;G1E!6$;;Jy8nqjY!+M{Q3F^$zQ)+_R{$zTMPk+%h`RV9_@>#_sK3(x&bt0I zqmcBuitF?=r+#QJGK}DJ(U~ClMx*t+r`?ZgbsHnKjS9+@G9W=0VxZ3Wqc8#c){wHs zJ+pwafNSeFT4#}mvW>AsJq9U|Q<$$oh>}uVUS|-q{%P4&+e4wfS{OsqXmBSh!|$ zgL__ndKcs6cjeW2FmQ+&m+;TlZ#x_JG^Ki9GfzpEO}lxM}1om&pmXIZQAiHR|# zsmAxqq>^`&?v7b}66+s@8jRlfB-r2hK)pQbMZ7!%FQLEiZD+nc)_7UH9exmRbMTh! zcjfzE_(DywL!W^VZ)FK1!B3Wne^NUG!NRRx*aSHja2{z7PDHMk5X zf?$N>iso~S9!N#g*+#cMOt@Id8ZE(BKnbGvjEA2BD?I368pq{-t^JBet@cy?FWPTu zxBu{y&Gf%W^9K;@z&|ZJoTjw<^Hu+EBnfP^2+YH;S)rQ`7 z;gNY7)nfxa1@^dA2f%;HUCS}pv)7lN?8#2(g6p@+QRMA3{PDQ+_jslrIM%-~u9HPv>Ltle!l_)yXZo92;Aa^Ukx>mXeSk zXqhto`CVV(wbwTg5+~tfexTt5n3O97@xzq@;zZU85HrwJDXzmntTg(3k~1pxCB-Dr$as{n7)}}!?YFGzZ<3(@R8u` zdDi5^dRuUogrDl_I#<2;-@Qg1_rolh1WL+w-NS^ahQE_d`2M8eJCp7CQhVd4 zI{DA|Tan||@Odowj>U5gUniCaeBAKm#9vnh-||T|e6_fafUmWJkL!kDJf#aRVrrB; znSl?4w)e3XpX=>T0$VM9s*_jaZ$-}dCl&5qgx6Z(?s+`du>BpEGF*+oJA$pV6f|Y6 zrInyd;{8T4T!{3UW*3yIN^urEx_n%#Dy+ zm>;oVz-+&3&J{7n3nP>f5)oc86*)`(Nw6`L6O9dT67o)PZk#=`9I7bhQP*4eLexfe z%F`|STO9U@Z_Dj(AGE%`ev0|+-PX4lamZgB@@>BT?IqT?XItM6w!S5p#vYw&fgxuV zIq~u>4suHr{m1%z_+QMXTU(#g$!ILlpQ|pv_YZWr4DqYb9N<4a4x7h}&Qb}`fM=p~ z`jfw&K>c$#u#nvSVpXv(VJ#jSZMxB8aW|_OQv-3h5H4}0v!3&`rL*?NrPyEUy0Y{L zmPXltSvI+=lpRj}HW8QDE&SCmuI>}I@h9N==Z&Lc7AF$?M-o15See_NN}6Y->&u6a zkL6=rex@%ga{lv#s{S;q`nh-q@LBzHxJ31LtLiIM_4!uyeO2{aIT5dP&9SS0%&PuD zUHymf5KB*!%k1i}SJfY{s!vzde|v)oeO-Hj9@V!%^;g){Uv5=@wywU!s{Smy`jb`l z%P$b*yvv_}YnoX-_Ft;{ff1slyIudWR{fvMQP@ee>i^{-3p+tvqQ>5=k=z1Xx^WLt z5`!c^ta1km$cvROmgObl-=)fA%x{YqnK)T$S2|Bs`sMYGO3zT0qE=M8(5{qaRi&qE zILBI5-e*@?p{ktjs8aD4`wtDJfz{q^S9_OL?dHF$?sqV&O}JR9m9|m5QSP?d zRTY8zEVjx7uc3U3;XI3aKHp)t)gAtlw<&szm8wi%Tvz1mdmP=PX9!E&V2W|F zc8tR_gcPj_r;N9TWOrN|H{zQbXf8{(cO$!B_u%pDRg7n0?4J8?V^kruzhXSB$a#YG za(r)DV2^q-JpSF9C=(tmdVEn5H0GT!T=u$`&wv-*xw z8VD^fMkh6bw*COz*GU@Om_7t8;0nxE0yz^!?-^#|bw0{e0u?(RBPzsylo32y+5fu& zdRf*{w)+tr#N>>W?RTU0#R;gk*L%qCAHo3HX3Z!znm}BnfJjzAc<{(%fcy&q1liX( zLzVdgl*VW2jxw)7FiW3|qg0u}s-74}nXD0JJ>Op?3{a%Xe74Tu-&T6*Q%aaM;Vt@Pf(KE#^8_v;s2oB{ilo2H5o@MRhiDJ%tA+*!pl*H z>|^{>l|goI)^p(_Hs5@DzOG03ZxYIpcV3%K-hmN`4q=!9GJ~hc`>x_o$3xL-u-zGR z3SZ0I=uiFV77mHgSdD|Nl2_mkqXNkpjdvcbLx4t1{ekHF`pp5t0Klef1plwU7yE)4 zKMC6t4m`^q8ZQTdLV?SL>v(udS)NwY;NA52IZBah2pQr8|8^&FtZRoSA{am{>%h5D3qoBo2n!}Q?2EiC38z%y=rTMj8^cVxW~93C8J_0 zWmX8L>Ye^6CBNTw;>YT_qR;)?Kp%JI-|QZb19-4V34EUH+p^qMcgo9gxwy+M8}FVs z&Xb#Uo2TqLkZ`0Y`}~n*fARSLQUvQukrBL9dVZeSpJKB=#btfbjj`y?SYyS_QmCg{ zsKhK(B4^2hh0dFZf)ly^M$xFf?(slKuRB47FbAdM_Yd=LSJj_J`S-x+M&P@9W(a&u z@b83Tn|ERU>7*jdFrf-}mc)DfRCU(jY$+pflOXOS6LDZk#aD@fI5Ge2 zw%LSz*F7y{{6YqY%eTj5e46rYhTIipX!)F>#;Jjm|@BSYy6ai|0tE{0?vz6I~2()Y?4PMp^_ zGJcsFCA(c&cWdV9f-4M?p`faJz9(f&_Rth&MnOopGcAfmK*nz`Q2CKZno8`{?X|=Z z;s`g(uRcEsA>8Zaeu?a{!hC`C#Ht3QMum8E;bRX%Fr|b)FHtgTi2jB6T;h*Dun!mC z7-I}+0sSwK@HO({L#e39Ir;%ACWuVcTgHGM$k#`uCam92Fh;>`ZN3#H1qGCvq6$Gh zfkOd|?JL6X$P}acoGmJ0^1}cZc9|vVbIglZ*a5U89rIrR8mP@&4I9J=UL=2usU*SY zCMVaL37aMR8k3O*@SLJ(MS#ER6eK-Xa-Vs-6sK#0zH7jjSgkJd|6x_WlId zBdt=bdZCAB`5XuCC=7}QNjb~?;L>?vH5LIsEEv#k<)Py;R z2mb+irzW z{@i-M@aGm^1b=>PezJ+5?7c>R;&e2KcirL+Jtu z|NL6>=axV-{CPAy<-bdQdiwsK@aF~3A0B^>iq-r%5*LR5DvLjJX9$00-xI-~XPKY$ z;U^=_PyDXWlZ8LOz|a39{MqlGX8CiMn%`U5^Sj7&%-P(PR(z%TGuva)Z@2pAY_uJt;z8V+!{y?$CkFQJ@etfPnf*+seM^pix!iBNQ z{KW4n>?Hhn9)6ts=*WgmQgSM%R)Pt7B>P#6dDncdj|lUt*;qe~G8-GaD;r^?g^e6N zAUdS1f2{RIp?^$TVbwQfeVCRHDjjrSr0t_Zij4^!n88j3v5Z;3_!L56Ofs7d&Mm+( zNEwCMr=*wFdVT5X!9{36>Mzvmi%hfro2g28M1My^P_VGk$%A9hr~t0>_||fZ3ZmtG zUl!nCmfMGz+qH}x^UZd{bP?m{ibi_R^&bJt6~OKhz@}R2vx4u?`v2-VcK3Jp|jm39s#6^eychvu?UH@Ra{?SLQ{$AM@{QrK#g8#tOBL)ADeXaVZ z+4avpV)fr@!+)Y(f4?JF|JfG&E9P4GsVhHH_<7Ya{_XlF9YXzoaQv%rM_0~{*Uf%K zjQ_j->*N3aTnoQrEI5owX2Xq-pAh>-hL#5Isuhs@%>VDMoFh|H5hN`_KljI#CgE>l z8O|7(m>8Uh(>`!YOR&T}uXFW?^plV>d~j?&A|X%2)p;%Q5gK`dd)|bWxz(lV2s_Q` z*PAm=LVx}s|5%~v=lyBN7DP#+g6g97{5`R{D1pBxR2Ln^-}LGt_uGj8WD);(d@GcV zo14%jLfIJinu&Yko+%pH*#Fj5%hxQ*DRp6 z@2Ob%vut?{zHO|26>y5=YLK@{rC0ElxR^!6eJSGCq#i+!kpv38|;qb6C1F-3|Ucvah|1LwN$BzfjUNMHoUX`-?_i6C@=d@ zZsjkaYoH`H*j~qV2H*8Gtng&7z4OiS9o_T#pOIVHQ2K-U?m3{tc;xSO4aU!}=w78M zJdZN*%)>?O?nGQse!Hi+p#6o-!S1S7c&PYqtJzf~lSiIp*|53Bv;J!ivNUP|2wKjl z0Xw}k6q{w?fNuq6(o1~?wllyU7&>VIoqt%{bn9D=VsLg~$2(oHLjwJCJ%PKxwr+1= zB;t_P+&Kt+Jr-x}pp`t|zTDcKak=h!4SARdaiIL$_m#&CK!Gmjy63e=DB;HOXPp;F z%FV0pJ2cQA4cvt)J{k91Fj*Q|->cTR@N_1bSqiKNr+IvPxdZvi$HAoB^Sa)+7?;Lt zFI)V(a+1xzb?_!w`hmNO+slN1w<#}!%zr0q+{K$S`N`yDq^d#u?}2sDlPkDmz$mg? zxW;TD_!cWq5jI>cllbxw8nI@x)}vW#8=MpSn|oI6W$!5a%7K?mc9uFmlR7@O>TrJV z=J#>E@Tu``=vV)iueMrW*%#8kW5fG*EcQ?K*dgN1+zMgLyh9@`xJJ69^CwZ=TQAkG zv1_%j8n1ube?sd&b||Lfpx0)5k*zB_xn0peS3*Ju$po^AgMKE*~erO{WVQD<1Z)xO!H z6Mk6gyc7Q@{FBo?3Vv*Ip5Y}zP&>Tdfl^>16W{@oPP+L7pAT{HbVFyW8)uPOeYZ8Xh4 zla4_9ru+%vpJlZoSVQ?IA*8iK#jjbvCBG@(2B?8;$+y?aG$N0Xd~2cj!>WJSVbvc^ zJ{(c`cHo<)={vjh5Ajzt_>ZW3JJ1Y&){Xx|@HZ~s{;@rZe7h;6wL|64Xyeb6ZP9*Y01`o|qs{n6yZ5tVOUw>C}R#kc$+`bLBQh|0IF z&B*5iH~%5{8<%g(zKbH?0wJv(Dt|U5-)1+{zpf!I9^Uvj$47{M(L+rfq4MotH#xC+ zB>LBt=MOcpe&`p{;^Fl#8h%arR`*5I?JvI3+2g}&KPrA(%#R}93PV~uRQ#Ithv;v2 ze<>Zaf$n->QG+Vbvc^J{(c`)(-}ZrueJw`aeY9Xz(9V`PNU7vC;Kg z*FOe-Tipi>0iH)7LVZg8=w@MQ2F-3*dyJ)e$C9U zqeEIey#7VQuPNUSY-xu7uXXnL@Y*-!Pw4#dS`_(qQ%Gxvz&}p=T?g9lVD-<1%rRPG zv$n$l_>GuHz6dvugxjwXvWz+|7aKdwrbFma@OS&7vL$v*j_>83KOC7c+pl%czZKz} zA5Um4+XjOj7-~2iVVxHwxgXM@hUUmvMf+(N#?UBJYI|H7*Z$2kM%Rda%P+vGgfL+c za{RfcRlqK+ZEPkE-Bpaprv16}N)ucJRRi4qUl7={J^r}06*-HqNAy8yH=}oz-sF?? z1!D)jzDbE5e-a$U2nzMZ;XwKRYePW3y4nJH6fTXqkC@h9+jB(!fU)?R2>z%)7dCaV zOpTHL;aqOh+FlTDZEuu*1KA)eQ4ZWgrC%WtGQdR0X(9AW29?n3_G>|@ME677QXr#S zXf&R2B#K63acR8sut_5!(X&FLe}qxT-2Z?0^yzw?qR%Y2!DUC+A<}30Gz;8?xHOUo zu5Bn33#-tl>(zgVJ|h2nYu>Z;hhc09j6?T^ouR_-!K2NRTf?07ZDx@amPX*J2xuhQ zG58Qkt<3!Y6jVQ^P%Z7Jhqn($9sEkU`0q^#Y0o&tY#{iqU1M|h^+WC-dfRmW{&nS% z?q6DH{|d|o{ww{j#DG(c{bW6!j&g3XBqzokgrccWF(q!1fOH;*kGjnyG{64ocMM4$DU%XtVBuY z#{FZBe1FZMelPtu^ZQu-rDCEO^nnsXBIQEfQ}jrZP$qpxP=2FJMwLc4?k^EE5kVxr z*r1PHll`lQM4z6TJ{ElED$p4JMIkjTr73`niI+!*CHM~kLqK>*Sj0*jX0eFL5lE8? zx3j}hx04?rzVJJ%Xw(bydpKhOtQD-LDnfjLH2$?T{&}iX?2V z2w`(0k&9`5F*s-)_6T@=tGvE_1&4EmHGZ1-Ug#HXeSlG=^oMmqzR2~ZkPq>p zqa*q+1Up3kt+a3Ezq7^<^frqd-Sa1sGRDjgLjW-bm< zC1WHCEp-3tF8LqzZ@1zz6Vb+%X2VVP&naK6`LD1O=0EPFmiZ6)IUS-pZ2mL(2b)tM zKYV)~T=#?E@(|^R%RN8WDSmdz$KR{?(5CoH@+UV})d zf1~_muCE*AFA*Pze=wUly!eOa+g}sXEt|h}`v)$Lz^{^DhZcVk(!RAmz;4O`@hbji zwlbq|NxthMBu!h(!KxJfPlZRKrUkVIaI^JKDmKlSM$Lbt{?QYDT0gL67f4735CQ_t2Zt$H*yEXlPHN#(ft?C#F4nO8#4! zne6x@chybi`uytf^|?PDyDM}3p1ACxab;NuGUx98Ouwgn_R#ia8JKgp(-N~YmVVf2 zS=Jd>X}C&bmJSc}=Ajvg#lktZjpaZP`rf7IX9RW2{^o0l9;`(o_c#A5Q+5;No0~{6 zOX&U0WtrCA=4w^wI2x-m-1E320ySj~2T%wW@18ZZyA>%8%7$hY*gnFE!9zQrz&bxF z#XT=Et5X?v_3JID9w??j2U`BKvr9}dforqRhS|g8Wm$uLvn9ahP)vT%f_^dvp592itA{%= z6nxwos!=b5zK7HPJEt|${*d3@zI)mn%!QiAMB^;tz`^+A(m^dExSR;M&O3NZjPcwG zwW9~v5(dN~(0BtCFn;q`Bqa9nJy;9hd$50Z)WzK2gZw$w0qS}VUe3sj!tbTPTdPH_31mA*=TS0fS_r!uPjYB=-KU3I3ESI26y-jQ-Y zUA8yl*c)sh8XJFppg-1F2=x4Qd|rX?#q@Gev%t5iz;^)0-V|U5b)e67j)0SvF??CK zjm_PJrNFPsdpU!>@8#B`Cv^prc}Usx^dgiR8i?x&=~94PT}}`5ogf7cIxQD~>^$S<)_7T7?9HP}!`E9&h7OjB#4Q=M6Qo@Tw6rZ>NZ-V9^k_9JtXgn{FV)U6?4o1=)xS#)WG3TO%PWiV6>rO zA=xB&w6|huW`6bb_AKfN3~cZ;yoUpAJ-*#uZY61j4JENt269SU@PQVX9^c2_Jw`$7 zGSAZeEvd&Y-Fr?!&t(OHxS8JdTMK(G^;GOj8uv{7qiD+-Vl{l|u9$>p-ilhZSSc+Q z;2<=pb8u5_@%DTVuq1f`w{Q3Q_IsD^KL_Hzp!<5yo-dXCa@Ba8xV0p`oPc6hn@F0J zVBaHT3^3LI7+~tQH;E}#M$9`~IDbL#NXbh1R?br7k<8>RPap}C_M@uzJVtVzFr0DO)Kyrfi-5zikxldDgH?y{WwSpt7?PC812!VO?t;WkFNzayRh+DQ-2il zmtmvHLd-ld#?2f|=FJtnX;{q@w(eUXhZ4+7@0eHq>*;0n-kux14QmR0pLzFu=3V;h zIi7}P-tHe2#%`;hfr6TMdQ%2@8&-K5)}rMC9O$H3XMgOJZ06&zScjaoXQwB2KUoLH zH_y_Bb38rw7X*^PI@=0+;@qc$N#mZae-=WNm+p%Dc?Cj?B7?2VMVZyJq&*5E4hV8k zfqw`VRI9x`e^eYa1srt1yYztKpfA8dw2y`G501p+;dD0t{MrTdID0Yafp;bo@l3iB z#YyJ5ej)rbB#?vzCXXtJ6#sOR@Z~1?$6XkOfBK0>JPQ9nCUF0kQ!JcMVDDXIGmm1G z`2|WW>>A_b4Pgi+7EV`UAq997vCxe}08BS>0lCtW2x@$?lqWEl5&=2fJih(dx@AfP zjKmc-S#fTsXHU=*`>7)9W)D%{^V5Prdyw_3!k()LKZU}R^>dLoS&4$jaD|~EqJT{u znkdj@R05i+GsHlFgN%JT12ZKHi5a}JWk3m)gmQE;Dj7{NAYE2uERX=@Cdud-N-{d- z`fcJPk50o70^XMlFyC7cPQYJ=C<302dhEd+Nx(Rhfbl{=r0fv_E;dEF5U?9dDFVuo zY9!!3lYrR07EZu=PwZ+%z*U~5`#`|eHUV+|Ud4f=aZlBM+J^KyfRXtYt_lKqq@QXD z#~px%V%g}q8A2YSd{T%g--v-oF?bf0MAAajPlPjahW4451gyM1UlWffy0erPj3wq= zOeX@UuCR;&7>@y{AmF^U&zLC-vnDBbpO=(_XWR~M_P1Tiojknq?|6{ z!cCI0dQdni=ZmwraZ*}(`C2!?Y$ISg1;AOX5tO_I^)yAvRVF3h7fND$M3dhvb)@C@ zN_dNu{C)*jru>$c4qblR!x8wUJ_I$2@_WHiz{*drl6Xo7=ULxSpOj+Tr2G~Ll>FWx zi=!qfw{{>Y7b?FGh(kFF?I=!bAy)I;i?+6KS3E(is%6$7b7VFo0Pwy7xRadMvYFB( z89&Bs)E`1qvtC-exaK;Iz0J*=ihMu~=M-M`o@c@1JD*uG^lV=qVn@7t>M^&*doi&V z^js~Yc&^C=3vjW35?$u+`sWEC&kn-6h=BUBfj(FCzg!dE^9k?0uY^mI`2!UD?SiYi zNl-ZtQBMzBByh&%3M1T5!uIQ5-f1cP-3YqLnHBrn-ihW(H_G;()P#9C`_rN}Q zvs-(h>|$mvw0KigdmK2sTGm~*QlfZBECoXXy{X?TU?^C28E48mFPaTw1l1B6Fiy`S zdt!a4%~`TO94&6_s1~i=CM(s)!AOZ2T`khyW4MUEVSZ%$&Undr^Mu^!mEA1o%{_9n zOI3G=^X4YGQ4J~n9_@HyoF_NB$~@;yZ@JM`p5(ka1~;%%@!%><`zf6E!Do|cB8KaR zT3Z%nMK0G}o&pppGOq21KEXH+UgsAWKWWt4;S}K)c#$PzimNbB0g4pWzwvz|R$Q^) zn(>36nalq&&g@%(?fo=f1YG^gaV(w0ff_&dh57cwQ1h?yUt95Eo~bzF49qws4MTMz zjMPeg$@t*xur{5y z0{>9$yT~H)MtTCnk=j2$J&o-E4k9MdXFMAPMuA&+y@=q9Hy>!1*vi~A6z6vt%If9GtjOue zZ%gBilTlvEd3ZG55^avt{))g|>+HTO{ndA4`YsPb3U(P^NhH=yF~+LB-ZztiAH%WKpGkm_6aN={BfC6*He_+)h^RM0h8qpH@{Va7#7^YFN8~_~| z1fyz$1m$?#`5Pe~cI+V9^MCR}3xJWz_fxRVpkD6{>a}4|uR3$mp_%$wfI!)ZynU|I zT0@Y$_bMKH37GfD zkO%0<;z)cXlT{K>2j$FkpO|iyCF!-S58axBU&`UJqRCM&5Ge6QIo=p2F?TE;azqsP zd(bsR(7gUZ_yq>MuFm`cL7UP?2-X*}_dc7qBgk+L;Q6 zGMOsidVBK>P~K(WDZ+%FV>4zV7J={D(76#4S_!BG)XCpW`J0PzDv8-K)YFLn4B{X2 zrljJY%z3jElcC==p!M;wz3LV!$;rt(d!O_$a{3dpi8tOz227%CgiY|&s50s=#?r(| zG{?2TFa7saYzGYa^!VQaz8y!aUJ6X?X$Aga8OG1`+lb~Ue)s*E5lsi5vs#e)`)mA2 zzcY>a?WoJ2JgOBATcQ8(ODszkv%kg;ShmRJF-H1CX)i5e&Nu$lE3&;utoFh$r2Rp< zeW09)+JSP9G0+eoK5|6>ah(Z-*q3JCCV*r_0OG*@Ly;(uk)yDGd*j&G`9Fti_<(;H z<(;eprn!TIUop+4WEv_%Q0kx-C3g|v<#0SO3b1G->=9mxB$FEAJ5Gc={WZ9=An5kych4cP+s(igkuQ@UgGDz?SL#(1D0cB7|a z>0Y>j;fZutZs0_PRZ1f82jA}A7I!7#Z>+mAi2M3y@JIAFJZo9jitmHh;cuK=w+yDa zr=5!t@1A#2T*bEIsz>nn>WkuPzjxuXGrw_9J4W8)7J9)&E%TOcYY9k>%WJbCpJn*0 z_WKs<<79Q$8ZQV$3-`2jfR0%kllXCqy!G20-zM=R<7LIT5qI2!{Edf#@45#svC*qK*ZO0)+ zV`4R`!#C#L@L1kpwJ6pG{c-zIgZH@gQalJMK&qW_y zlRe(R1qYywdiKy^cTUANmnU{NVRKis#R{pu3N!yc2%)&@jA^)lt7oC?I$ zAYR`n{9guY={C}+uoMyN$R7w}WUmIbBnpBxmbpZ<1V9V({1Bx3bXQHr16qz!EP*qq z*EjVQczS-|l(fRYO$bT&t+jjlCwS7Up}rW5qA6PAu4;)pF`x!pfIaPEX2Px6>?otuER^6~(c!lQ$emXvdxVbSSZE!Vq9!mRp<-awQ-G@_dq1+^vZfd}iCy;P$ zUnH7GfC=>zy#vD2>ixqv%%N0!-3ZQZ&`XA zaM+6ZEuZMp(*=A5Vxb5JXG0 zx8BuzA!w|jtj6y=aD^VfGISv|VY%y73;Znpbc@PE+)^fpjZ?Y<5tus4_a~J8Fs25- zZA-uPWdAhbI!q#&$mJXS#FPEwI8-AtPYFE8T80JrV3l7%szONrWGp>ED+7gQ_A=Pj zARe)80xuycv3CM7L$C~7nCS4r7_?%nag_h3l<%_|Wsx_z9q@W|bwOg9r-89{ zX_I&2{Ob&*vi@g)sj{9NW2vlZxCFGL5&`YphZM9aA<$l_q3tZt8t3b_5gV6!t_|xD zv`;v@IpI9sQMN0}HUeN*4d4h1z?ls_aN_1r5XE&5E)FY0^A+$3f0Ky0$^OI>G zxAsR5<^Jf?kzZI%SZ6;FIbj{ln+gQu{MilWoMo)L$l5CXZ4b=`!N<8-Mv`-vJumx} zo(zFN@&7Q)A)5Z+zRA=Yuuyi-d#D^lhKhF_dJq0zip^YxK`8?pd-*0et{=20X8f~*MojPQepUsEdA00 z=nRHLnzD%pdUrrUSoP>4$ll|=`*Cm(LCb=NH$iG)u0qI1p>LUY&t?hP?7qSi zyMn{Lh^`gDw-NE&!8RDZ2m&wk{p!u$IHi+&ng>-O3H2$7g}(2^Rj0dHkp14Boj6rg zFh4uSdR#A9(n`Pe_I$rE5ZA3RkQ-Z&z0!U6Y`kTB2`qcS2vO7!EF9HBulwb9Jxh%fZrIy5ujg-=8Bg>!ye|m%`rhTZ&cX~nxy_)e zAKaA-IR|EcG;Xm38n0LK{{R>t;|80Jja_mHDE1jop{W{D$|0N75`Acz=1k584p&Y6 zxTwdJ$oM!;^CpBO?MnWHr}y=UHS&NFjIOZ#Pscf{$NJ!{5O$Ba;rV3c%6a03mMslU z-M*Jq!}J+Xeygf;S2E&==6JD(Q;fs+2Bj7F9lZ$z!$9z`yqHh}!&`Fw;aU1UHcgFS zj8Oa0o`AOvXRciE`*l0W?`w>uHT+T?El1NR>#l4;&PQEqEB+00?__@64Jjc;LuK#p zB?gP=fI;T;UEZZzTY}1Yiy++_@-}XR#2j>V?V#?aNP5~&7|3FZ-7-s<#uA``OLP4 z@B`_HFzD%&5NoHj$@j<2$je?=x|0rIc8g~AOf1yY9Qv{Qz8xr^?@xNDCa+@uUG5pL z;F#+-jx!=2`V17N&P}--^{np09z^I1$I#l-mvG?wQQB~Le_)H#< zNMObqXsE%?Xw;z5W;E7BKxgnwJkbH8VvGtjDz8?Q7!pJU2?UhWVKlwcTfO2fw%Xd( zR{O155UZIyfB;I6S9n+>_&8xy0;mvP`F+;fd(J##l6v#|qxb%ioHOU_z1L%}wf5TU z?7g-dAFm#_q6Fy=t@nTIGW<}yRs|B3?Ow9G@|pGqltY~9E&gPn!10;zGmHCJtAL0pMQA`X?dsquDmY6)x9(`U-8{^3?>Mc6^>AbpDywruwgYeCgazP zgRU*hWHYm|Vq0K3x~6v6BGVd27>ob-!nbtDD<+iwQK&TbCwE&MlT8@QQ9ug*zej7< zbH(lIYSh=y!;feSray6ZxOL$d< zk=mb-53&(XGE7_(S1JdY3U8!t7v1u(ljeIQPX+VdprIX?V@IOq-4p3AxX8t*XlsE7ZU64|F#31FTxCJTy_2o2^UWFtBuorW!^idd9QP)Lv zYY{Ge$f$fxsB)gDJZbWsCOsdOiQXAlJ3+mMM%`#s@aJrLDZen|O4bmKe>?(>SMjFH z8G%gw$NZ5W(HeX?E}{)#-l2OA6QaoXg-x1pB{$(G2D@?!hO`I?T}Z1;fXfx@K5jwrdIO5rZZ{IOu)Mq&uYea2(L=}0@1P1UmQSm0aEbA4`nWT8HO%k^$xJ?o5)O1=a2J&qnTS1pjSVQsOcX%-M zUGd7NfN>xUh62T$AR0+SBRGeqGkrE!EMAiyR&fqh{A*OjVo?#p*0mHu%@7qmYcj$r zj-iTkqbhnt#dK7}NkN^NvvUYlbxmei#Uxau@lhWYRaq64Gf)`^+{1zDw2Au48e3TX z#!qDZ6H7xZC2|!}KNIycMg1&M-?=6$tp4I){WVebouWQu>5($7kF_0-Z$wSicUu-E z{=>I>4q#%9!4+4d75yP@fuHRTb}p&gTp8b-0DI{x&%&Zz8$Nf_${Y+-Q^*&^7+6N0 z6-kPE@%1S70ES+g-V_|IxKZ`p4qxYH{P?f}nurDi7m&kN%J*pG9kK+#V%5jM;>hE~ z2YQRyxdn6a35gigI(ek5`MjF+@(?_3{a#XKt@BMM>XLk)jo)G%(Tj%)E11%LfuW*8 zKSvm%{dqCDX*19*N%JysfORjn*XeS8=BjB+B0x5e87xCU2=6|QdY2*J<>Fmi_&ZdoS+^H! zBWZ_K&1Xrf`GjU2>rEeG*`O6CUF%K%0o|lr>z#1EiSE+yu7GY}^`zTn^QI4@C+YMA z9~mpNGUO9{dBW_}up$Wb0!RyzjOb)7l1 zbOwG|)z!a$vUAD{Hy(c*zcK<>s;j4en)r(HEa9R6g{2g(Z;k z8?GDQta8Ra3ojw`H#4Nasx)76hX}X|N2pd$pK+keZMm&$ipQIGK9+Q_Pd9_)rc^b% zaD!8eXrrPIa5xPOHu3MItiFmmil`j@CvPdV@5Hy40(^V1sRbRX#nT}|C}10${;ici zZVyut0#ndoSws^&GPULENQl{SWAbshNUJLv*`b=Z1_tAny1b0b;lr78 z-fUtXmeb1QcuqzTQjZU`ZFRzGkknAA4BZ|NGaDh3k3enc zZ7v$w5<(nNeJF_UCL3Y!wi9?`CeRF>BnaXb-D5DeKU}E_r6(TMj`k!c} z3cNCEi0uEf_$};zl=|u}OE;SPk}*1L+C=`()58DR0D+M4i8eG&E)Y*&vBHw$6qwdh zgq0R!(VR~8;p;m#ytm?B|K-#e@sqW^s6ehdmf4~sUgP4%3PG&T3#|`)60V)<#ri;s zeCYIb%3@8*l5-673ePaA-{MtWCd=X{2nYCLjFayc*wbYK&w?!#Sa7_Uk*p2i!@syi zpza+~LkzgreSiUXQ8k4}c*GZEEf(v<5JkzQVH%;sJVZq>f`IL-sir=Qmn6$_kSs_% z6<*lbhPN05L)bt}LfG(DM`BqdGB!K`GH>n$GG8xz0kr1!;qnx`aWKh+&wa^ zbCDKZzjSanBJp*YNQ9domJfM8^puc%ECm7_{&+fg^Ac`UuPP2xcH$lK$MAo#97i6q zjAeSxY7RbK(mN{3=xed!jvOG~eWU$ENd59#(VlO@8&m<)*4s@7PTKIoe`HOO`Xm zVq*G{OFx(&#wp9be)^};z`IUyvJW+T(s_vO6Y%wbOm)8u>+~gh#XKT0n8%I z=|?{OAdH|=b-0kzO95F(F;tSi!QFR;n03o1cWNx3a9&t!AgOxH$qbs3 z;~PWr*SMopT1%5lQZ6v#qXa$t%y>8!52L)7O`8mVgEk5v)tuZYP(RAxbq0Kw>M=>E zjKxiAKK=M+ApfYikfi0ctXz~JZOx~v|G)sO_P`mYqleMjem2bor!9*|bK#e>Xi2<+ zh0=<59H!W}Vs1SNQ{$fz&)+=AfjRm|{td$wd%L3^MUJ+(%sUl(2cDacDH>{R^>0p4w0gz9(Z6A^qWKm3 z7ROGJJm-eB{+yF@4LNX`rB$s)uqP4mfuKk5_G_HK|s!6dME3jtkEK({IORs!0l zXa^PT1Oq*w*pD#KcE#Q)fF4k^LkzS%2z0N@Tn9*48BRd0V78*wxfV9uSzl5>Y$2fa z5-6Aipv?rdj(~1e>@5Ve6{%_!?Fa+ir`Q7w^drT7NC4fZXzdL2qae^d=uklN7LxgQ zr-RvwcFeV~{?M6+ZYQ=7(Bl#)m;|7H0(y*qzOUHV6VMh#`%uvW40N|*-_JmIk;pN7 zce4mWkah)u?nZ|KlDCkC8g~Ymt!N#th5i>7UGpEr76N)$0tJ%*w3C2#5YR1(y^erF zuy-ojeg+Ce_ApSq{73+Op9GSmcS{iHE_5g$c?)Skb7z9til)03)@`4h`6prv0X-mr zf=K{+h=A$@v_-KWBcQ0VS<&_|&<%=xD+6sN%9zp(B#;EOIS8~B9STU^LK^|Kh4l1~ z1JPCet*2Q8G|SLa^PM%{>wi7XCZO4dp1!@rk=6ftnnOTy3_Wd_pLT2i>uD|l%{BD2 za?;xs{jaBa1T@dk)6;+bXLbMUX+8nXH}v%P1NJ`K|9U!_fQ~lwwDQoiFcbZ(r|x_* zv}clWKg)mM4DX~Q$9ip-qs6~*Af6pa^f!Mm(VYeD-kLbcWNy{mPD7>rKYjM&ephMt z=qUVB;^3Dp@Jk~66hr$TyY6j_NBulXyPZ+^rNzN7N8p!2_^F1WSo@sc((i`C%?cXU zzt%YTO^t<_SW2r<0 zei?D_%NO{i6Mhp6OZCUamDl&XrE(WX;g=Z)ztIA}48pI}Flu}M@an{VH)`$)QTW;7 z;O7+hWfFc94g0ryY3H2&w|}Kk_+`bxPZ9Xp2){DJ{@r}j)lc`o{hJttUv?b)RDoX> z;Wx#wfA_6*ywv~puPh3`oH+P-1b*3s-web4t-mnw)&94CQ=;(8je}pYz%PgJn`zj; zbqj8Pr~mEWj41r_;@~$y;FnAIl^gc&$e^~h{crzfM&Xwq2ftE*UmoFCY1qH(e)0S5 z{cr!uqwpIY2fv8|zkI@Pu3`Ufx@QAsK>a-Va#u#-=Zu42nZR!};Wy8)f73^fOz(gD zH#Z7DB@TX51b$B7x1<{3DZ>OVIpgma_P+_77loo42gMlzMFa%2C5stF=my1V^6h6| z+V577xe|q?Ck~b~1(qsdxsCHmgNFV4`I2Cv6RuEvj*qi z((e|L854!&gg97M3M`8W%UZ@#hL0x9K4WUX+eKzf6qcoNu$(KfoIqGEXDnsBY0Viw zgLl)<@g`+^73L*Le zBPtE&4by(m|L)_Gl>ixq=*&2Xk{J?+&LBkTE1cm+mV0l2PW5wOoOu(4Xn7n&$r1@f zXA+_>GosRb{`RJs5Q2W5P&03$5Uq@ZC>bMxXgMMJDkCZ_=y3f%w)DRRCEi3KIyVlY zWRC=*m4xVPjHooCSp%Ng(f>x2coT)_yf}!GJran{B}7*-qSB5oxnjsy{clH!H<5@w zS4~L8MD&)dq{kf8n@705g`bAsS-$dT*8Vr8#GWWz*=)w*N>+(+Wnu{3I!0F-)M5S? zhWEcgB@RWQ%f>SnU9wFAU80B3ZDe$%SxuRFoo6zCE?gzkD= z4dd#0P=$xz-^P_V6ooDu(pYp!7X`XR523q>(Um6l^|xNl>wgnV9Ew7h&1o#Uq>%z$ zqKD9JVRWUT{aadQ|9|OZ4n?8MMl}{)Qc8g?(L?BNV|1mtz5b7_BPy^kilK+g;*N6uN9+W6>q06zCE?gzm?TuC%+e z?s;);|J&U*fQ&+y4QwpBWVQslL=T~><7(L5^ttO7_rKjG4n?8M1~wL5Qc8g?(L?Bd z&ge?Jo070@S^wKz;!qU2Y+z&2C8ZST5lc?JjXB3f($9 zieq=%=rP+}qKD8uiK}6E56^u7Hllw+2dY=Da7)ArH>_V%60yon!(Sp+x@q`J#A-JU ze~DP}rr|FUtKKyHC1T~9hQGx5nTm!La5Zb4>ZsRv`J83Z=dDf zt<#KHdFPw({W@CEZK7p(1;;ImE3C-nJHR_R$vYm)>4V1o^9%Rc=>Gvn zo<}+k45$Bx z2Puh}d8wNl_q#1?lib>7de}DD?fBa5*x7XIbR!oU;Ii+;Bf9Sx<~Fz5KWyB8t7TJ? z+wm!vPoTnIRBRcD2QIDAW#8mBA8h)h;?Qs<^)t8mh}(Ru>65^2D)K!y7WkP@U?ErI zwU2b@!|8tqkeHB{l=@-QKPt8)y0o42aKAueGZz>@(DCrdFt>f3V&2m9b;Y3}_H_W) z^vS_pTpT!T#*f{2=GOMQ?0bPiqkrnb^-ZVBcOGXv4uc@SV(xUCkGssr0qp%Vu(pdR zXdkX5dh$}5KAHXgS@iqRpwxA4ZJo=(sO%$Dn!cF*{+TX2Gw9HOrY{a|Rm>X|`-c*< z!^4`!9IU4bcaJe8&-u*?6EO!U?@MU(&p%zqXl--Z8;LWg%3F#VqeF`MgxlQdGIwIV z7Xc1%uN)Z!exxa2$cw zzzR%mAffT@^Gzd;Kfl7%^y29@#%Pn-ufI(o?B>T<9^9SKSbH zX#)-)8j{lJW?>CV$~KY|#e9e)1!4kWF?X_{h(0(lJaJ-Pw&(#sK0GLOryHwP9jsB@ zL82?{EH{T)Ok8HHPz-YAkQ9@3EG9Ru6k>7@de;yWm$u0z*doP5AqDD$q+s(L6WPwZ zI5Y@dlB1-qV7w7qV7BXgw#f&@(-2N`j)j5woB$;3QoDti1@OJf{cvX%fGj%Q2UmiK}Z()K@M zOGtJ4$(C&Ioh?xfHT|x(0mL#tDuC`=m|JahBKg%+5ES@b< z7p|>_OQt=;vK^@@(9Svv?U0)hG8~h zAYda8&xJ=_@<+%GfmB`_@rPspESQ+WhFG7N4DK|rnjfWSTre#75D zdG$}2ohcdpt*>m&B6g7Pk|_+;U9hD0@px) zaLC7SElI%WPJ=o`iM_!#z~BL~0~B%BqgGpjbP<@MMk0v3QMdw3(IGLaW7H-PkSzQ^ zjE-TZ(LF%y6g<0!d@eb*9~vfDM$Zz+2f)BjG=O91d2(WCm?xIWv6{wXG#4DI-3AR} zKxWxOV?I~qw`0QuwU0pc`|ZEOwLpb zuvv)PY)#}D#CKB0iFwvkk~z!{`cE6vQ%O7fRU0$!2JH!z|j~EnM>cQfrjRN5J&T94*ngr@9|G@-dROy)A3ms;%}A}{~omA z--29<4Se|&#RhISebQKelj)1b`XbZUjrA_mDZ~Jd-2H1)`%zT>mWV^(rKV#Kh6OU- zl7WnFwh-1F$2RdFku@+M1_~DZ-DaI;DR2HO{=I*8Q|E%s(=1n6HsH*gtA_0CXnJT? z@;D%fR1edDOr!sy17HDiWtIbUQAQ?2^Nf!)X&MhU=H&!?JD4*8x`GMMhCwZ9dOEUHj9!$R>--G^h8z`ShF#msu&n47PR8EsojH93)I$ zMgEn)g1M5$a@tp44OmDGHW3$Ci(~(V3=X%9+10hqbl;RKkWO|57w{s{5wZp$kyS(< zFs>x>fYGhU1Exge0sB2QxDO2mn+i*e6_p3f8IcFD>NqdfEnfh<%!{QDz>iwOGesY@LCRgbBi{aZ(Z7>I{cGc-QJfzu zW#K65PtJw4?dy9?`YU5ZE~Syg58vRsZV$_)H2X=;rDWq=SQ9P$g&8SQtg7$9W1L^- z^ffh~CV6~Gmm|e5t~VmvRWP?ZQd^~`AORM#T}3Cr`aCQF);RO$iuYa!)4Ph6?XA2# z$?~37j;vI9DRhIZRCzz3n>0_sKHv=Mb19Jx&WxNw8O@PGcfZIj_0rdZCCHyZuf6oz zcjL>U+)_o}v^35wwE?N6z{g^Ayjm>tOA&>>DFri<(?I3)uTcC!_!-jRn10#50bkb()x>spX4ME~T7 z;2N4HKqAW#r(mKc2^{5NDlUd4MIxpJ^h?@N&d9z*_UUXqsby0WCEmKfsT;{&AC_!~^0%~#{4KA8i#*6I z{Cp)b6nU2Dvniz$uH&mneS}m}=ts&=gk1l~+2RaK(Q*fdzhDX_r_?W04dxVq!Y`AD z;vsnvzsE`I6`Y@lKm~Awf=FKS4ygr(gAvOy9F$&3CV08P!dx$N+$6wFScy_1NlUbH z>kW2;8+tH33U*~fEm8Aq8dBSq5al`pn@T(L8y%s_*(#N*R-@ANQQ##*xqp|-dodD zN|o}P6nwSDXHD$`m-Zf_hKhH93(1ll&0~FwO>zm&>sQF_k2wi}2SCbZO1z zR+nSfSl{x5lE1IhU3Nc8<2_<88~pWYE^QZbjX3;ceap;y%57OLJ6hXCF&V|&?DwDP z()?yT*)rC*BJs=j{^57on^79?5v|$iZx{yX=8Y2mE0%d*8}JduiH3jC+Q+Xm;3K*d z4gajd+?NdanX&NAzbrguz_-Q1Z+*J@rw072Sop6TRlElL>{$4JMM6OXeoid>w|7p| z4EVXR@XtN7_Fe;iUM&2l9(Wq~OaAA_!hho0hkj?k9~}$dp7L5z5dMHL@YLHR1={BQp*#Ze{`H=(cPi7@YCm8gJ>06yTfb!iLIX*cx82m z*Qf7(WH<22?+&jW1Fvi_@Jj0rug3>(|H{D2)*W77q~GB-@XG5BujKaqe=zV$=?<@B zzdd-;z$>#mymlqbnr`5g+Z|p%_gv%);w3seyc?-+AxR`*V+)QWS$m-kmVwL#sX9b( zm${V$YvDH!JWe77vp}|j^n4K6k$RG+bMJcYKD^9FH8NCWWUORFSdP;2KRJb$NvK9v ziY(0c$%1Vpn96~-U%*RiT$q2@{LdTkGBYmBvK!WXgO}NHVV1x3&f9pI7Z>K*N1x3m z8yk9fh%aph>#qY7FqBaL{;KPu zYh9^m2OYlwMe=2l`ZMrI^z!e|TmC0kDr5uQPev$R7V%r~Nc45V%BN1cQXwG_f{iGW zD~mJ?#Us(<4Y%JpH5`|;SX};NQ`(c^xMauTGXJZCUE#PS#p1GM(&8oIxY%NGx$)7L zW`*N2Iu@6Up zHZDbj+fvh*GAV8-hUb6b@u9>&i1<(<$A`XniQ+@wyd8`WW$1%;1>-}{-^=kKI^m2G z#A7~T(%;=n@u3UfG~z?T|J)y%zs)6Ikz6{&cgo0R^d)C#aDr!FOz|D$$>#VD73e0u z!<9sQhi*lD#}g6XS+^7oCgh0t4mCyb9hr4KD!!ve#CM*cip{`;0z<)yGUIwwo_8f8 z&-<-Zu{NrrOtp?o)sK{lz|gzE1%aUqBPxVBEJcNeQT3a+Iv?J|SyKrKbK-hm_cxri?4^*F2X`($bTKml#V3BGE;iF$dryy5;YnM z3qA2T(SMPM2w`>>n<<^$aFHq9wFi)c5uvYk2d8QJ$W?M?Lh+0C6Je9F@QHs!{O^H~ zeAsB3mmiD|kvwpG=(YWb4?TIYh=p9lY#e-ZNmzX7mib03q^7gX!t0DVJfr%G)4j71 z%Rw@7Bt_>#rYMQ|cwbuLIA0M$MYkbT6g)~6p`y$)J-+D(740qZpG0ExkMStyJdbYy zLPZ}IA#b@0iOX;BdB)I^N%%tVWVrkm19hFhp5AGiZsXo z62*>iY>S8;&D<}T$FUiw+mv5-+;9Y129r#edb+6al8-F9KOf>S_uBcYO3d(u=BT znCQ(djca>I1lay~$ zoBoyflMz)if>5=!`jJ5~8Ja2NipUW{RM(cN-Wy6)oOSfXcIuOwPDF`+1)<0Ex(+86 zb9!x@#A<&JNs%wdnQ7@bCIuM2YXU862ZN0hW0ANNITd2?@Yk^gr%EIUIaLZB4`ZJ@{E0 zH~!@MTQ{l_9e;XN#GlR!8o7m^uO~b)4z}`jMOGVMgU4FEC6Beb34O-r?Uh4KU*qr) z1nuXkF@h!=5~;w8DQE@yM1`>6)pKO8W&ZDCeLsQpQh-p&;vCCKl>ggF5v&e=h2RZ; zzmV}OLQ%x8=0PS1o(vp)Q5bv{+wT1o$ojvoVoicZ}?%xWY2Qz2q;RmaMO)q*?^o5Pb_g?T{=Fg_!yo|rr zF+)~J`ClgGU!3*^lPKig<2BKd0gz|NKg)C|m;IJj!a?N9F4lKab6%W<0J)2jWu0G< zkOc#=q;o=$=`JY9%O8axZ?<Rm?(yA# zL#R5P>hN!h>>bKdB{Li6rr}9S#Rjxc>Z@4qtUEo>(Y&S_bJ0MO%cq*FJDsy{b7|{G zZmH{}K<3dc_FXu@t_24nPqe1H?HgUG8w;1>7Kxl))yMKHHn@H2dX#8p{_x4kHR}^_ zYP01HPg=Iie#o7=s}RS;rUzC!msVz7NV2&UBrKhnb%E+DMc>0b2Zt$~-;1hDY%c$Y zJd5J0*Gkq=u~?l+d~yLD;&~yRPj@4t|CW4znX+^k-Y24>JinXYFZwCi+5U4B0@JcC0Fnt^eq!vX+Um~y**G}& z(9(&y>5e@C-S@zHr{#@rj2!W(pJJ&Qi>f%v)NgsCGB11V(n?c$;B6lBgM8ALql7U7 z@Lon^ELa2kK*z=j*3<>Q4=c0ya?2Z+QxGcku(I?l97%|T(rV2yFzHE>Bb+O}y4Jb$N({mfuG8tWA61D{mN%|;BVV@v z0JsQX$C)#;6SxG9ZmL{-8JDPc`E~HI#g%$YSvo+iX@J}U;-Z^L0DnNn3-XLf3Ry0s zWmmE)G2JYqQKD6hCZpaXE7c)>TpIqv&OcJd{lh9{dy9Zx7f@2R|h5pj%=2Cw_4h|cw9&`5}F{hqZYgzmr zv3+5uiKJthpMLlrsP_04I>7<;=-LH%Qe<&=@cFr0>9ug5&gbD?x8>W9-tJ_e&GBtM7Sg!_VQYEF?3_@qz24inZLZmpaaWFY9)w>lallu ze~51{r}a4gSC5&unt~VKs~%IyHl>>bJF)AOqVOkvmz(A zo9{#3`!Kn~C!(Qe(I=t?Y?g6p@4B=dE~I4l4s%(Ms5?E2J`*4+%O8pS4d*Ckl&Evz ztH4;_%R`@eXwe-Ca?N{7un+;oCuAX}ivZm&@zKIxhw}K8po{X$zbDGqqkM`ipMn@L z1vTyMsO4`$`DPbsBDKHlOi>=+5lYfzd3=6C7!jWiC{pOJNBNDg_oDoYvqbp@l()+A zh!mscE&LIr-S0>F^)94%^^)E! zSswk>D|)kK`RrcOnI%`L7q#f|6>S+3xP5-R2KD4Db(mx?9O}Si< zkVDneWpyY|Z-fKzs200FA0J0nEQlSs9u|9{^B4 z#w>`+Fbe=hm4UtFo=sMUngMgFA7dj#W!Q)bS(#Liac9$l z$;!~|9{JV1TK9rm+_j82vn))fd%-R4TE?7N7N*d>;1;?zzBczly0~WCa)b-@QLoMyi?o@w_8Qc5T z*-uI{#+}SGF!#cAy3Un~l?3o3;I{0dR-)Y;(F)r$?rkQ9B_K?>byq4DQ?!zz+Wpi@ zwDTicVZ+9n5?9MH7tvkzI?`BsJGBz+5{XvW!m$7_Srp@ZY^bTH5X{N_Rt)sLTeoTSL;_2qo&WS?%6_ zbT>kY%CM&0n~mRYtajCb#Ekk!L4p>Loc|+JsZ~~^vJDmvjn~1SN8^> z7yRm8?|Z?oZq>aP{OVrId%>^nmAe=G>RzXN!LROBxflHEUX^>nux?ek7yRm8m3!hB z@+z43E9Q1iBXr7Gl@$1#HlyPdRBfR4lO*lN6z#S&ZI%_0Kxh2LNeIM6oPT)?$Igmx zsb6Ip-;%165feqOty;dmmi07WmuIb{s|?e5e95=G@|>wi>nzd^dwloPw`8@Z-dUt= z9ar$dILoyYA4qa}A4+j~U1=`wP1YjqQ;+Yhtd;mi(CB}7RzhRL z{Cu~`+&Ff=>3E|*`81wBx?ljk8f)cuR(^N5(LY$cE41-T8^5&i%L9%6q4K4ZU*_`5 zTz}I#UUgQx}svsIaIc;(KY{|A5TS#k5wZO+t@JFa+(`$O=|SJ51yogYnz%59&37i zc2`={sfwfKrlyLWKWsV`Scd{egH5Ln;`jW6op^{{xJ3A4E4jfDmM>D8PR;%h?cI7% zr!q}V+Yjn!?-aH7wYh0~#dc~B1l$_l9uw4#hr#yhxVCn^rV; zf|@&GMmDjn)La8HHH9~a-}4Xd!oy&5ZPeWUsg|acMpyE|)AYKoDf!?r+*BL|pOPzf zo&y#Ix~MB9Nfe83+@EY|K%Kz{zitB6O@j}1P?c{`WpKp~uJR4_u&iREDh=FMuAv7% zN0p|gq0ESiuTf=a#dfap1@*fVT@J=Mxyn$>T0j|bunkojns6m3U!lr~ifvrwW0D40 zrHreL05OmN?g=Rh5CT+z5O5U|f?$6cFFF!^m_U6<^$XvA* z3KiVP1vjwKSwaQP_T7#HV|__BSK@+{#(i@S2YjQyPbJ&9WJ?0uC7h3{kM)hd(3SXL zTH`+F;dWo%04nqu7h0EK-|09w)|YpIEAc0`#(nDH1HQ~r^!`(Re;RnfuG!Z*z8vez zJkOPQV-^$QOLI`6{aols0?{?rmu7b*-j*GYxG;?hKRGmIQ(Tyls*wZx$iNlHAD z8ex|CoDFjracW%RV7U*65$EZFxUzV}v2_ola7sK1!-$&^kGL?JX2zun94fSh==n8C zKwOfDODl;>MxQ;on9D-`qPmS4MP<#Q4*V5;fsacjcy%B|=HtsyE=n{VyRin@aoCmk z4mBDrjWo{D3AUd(T3v~Me}PIwilSquV*b>z*_HU~m*{1r96Hv*lW^>CB|b^%Zlehy z?l>JM6!S-p23O**>ZnK@{dyJ89atZ|&(Y~he7uoL#ZfLQWe(A@o{Gh4*1ixeo2W#0 zw6xL7NLqMQ4-xb+m55ZR5Ggvnj3gyQ0p+uerhr&c7Q)^HBO8rY=iRM+RnS zAEa)l!oi`z{H+8=G_Z^d2c0%>M0+=tQ*j1I2m1&1^{G145z07)Q6@(bzQ?*A z*f9fzdtkv#ZZFn5?1358RIR~qAbViPVg?fQF?(RgQWQ4a&>pz4jLI6GY7g94$%TW? zY!7^Sfl-!xZt8&>FQIS`EO?pQn}0CcYwm#=byTgvaIAY^MZWs4$^T<^LNZD~{@ zk~W&ggs38iH;O8#E< zTwAmaG)rj4ECLe(@+IN(TjTkWVxkk~O{T~7CTV6GawdP05zmtZYnwt&=_EL#R3q>wuh@K8A5J^uHMR`K@=_@J`Nt6)+3XyY+N=1?r zBIG2!j3gu~cod?^N<(SnFw)pSk);q(=~N_&D1@CtL}gHcNTQ%72b)4fWm1VKq7Zou z(UVIBBIyBNz787~^Qc55QAVgML{2`HiX08HSf z5nBV5-{$+5aydjwLF~7={S#4+f~lbR+vY#zRE&anp!wS-K9$^@jPvzC^IVkef!cW} z5*01%f$mzW!4cjb2wzSG$?xic@~0UEcwaqGz5?aQ2kU|8S4DHs#2!e0jSCw7SPx{c zLg^j|eoHinESDU4Wl#0nJH3T!u!q(I?c1mz1;=|Jz7^##KCbJ5^t~t+t;FQQiO^Ef z!lr829r39K^MQ9dsCcAGONY*gG<`)yB6T_}av##_V^pp?tv*RFBh3@X`~^SB;|^IW zYpiD|+_I3VN{{dl#h^kyS;$t=5i(JPfqP9M`u?FVO2&Lsw zk!Y%nFBBn)@~K>;?G4c~nqEelUH-NqSVN9~h^k^L8`WLxeue0oKt&?yV&5x7SSgi= z>?p9NAw)jjnWp66yEe5_*2*hh*dV!{FeRG*fyD>UaV$d$86kE5;H6C0d^=`u%+T6)r&o! zbFJ#gowR#cL;l7ORcx$R?Z;JL(lG2;LoP2MiL4T|A$Rz**cK9oQp7FgcUv#M36np^ z;1+&PULx%)tK;hmk&_L1-pEq}Cb_)(82jQnRqbfk`&5!*&$O`xyJ#k6*=og(Gum~C zotXt|DaZ*Gw`8@r9DfvMDhFZsO%W#~V&qbrmO0+4_QEg-;FBD{Xm#T!}Y zo{NpFzrAl~_+}#gsj6^3wtpBsYhEOW^d{7HwXDV%5bPoS z&y}*3z*@m)vA>HLBl(-n{QYA%f1Rp#kh-o8`?;`FZFkp}#m$v-pbKD5Yi*Fx-Vuv# z3i0UEN5P}JD2sz&HCR644tnoP-slUmz=ik3!_tRjA9%8y;Nj1oA{22?S$w@%y>JV7 zm;xSUGmq}YZhzG`Vv3y-=s`XonYj~Pn>;~09)rjF3_J?khozSWiDvWAo(eh)ArthU z4$(h@Bnk>fo$np`Vlj}0MER1>BD}S&df-A}y{GbW+P~>VW<+QXbL0$1vxBl4&mi6p zzSWWmff-YRi%f5U=d6?wc?zj|w*GV-OXn}H1!Yj-d;$)h;}!Jt5%IE8zEtUDF(B+8 zl4+*>pU5AOqZ*uj+#i2l7T z8q2#D!!YcbcQI+TP0!ET&lc6DVl@~NqC5!cagjx}^8S9me&v5auzbnZQEXaw9eviM zXHAc^q3N^2jY424F%BDWMgRSRk@3c(Ac#Npzu{>0q5q>Po3_?zGocS)e34bbJ2yie zdAe3DIHFo^{HN+m8>JR(s2HslY<}=Z>d524%rr>GV&BOd?&0Vm&DfGXk0zlVsBnvl zTu{fe{dS*mGS0#AO}U- zAg}MxC)s%&i`jCDs3o279nJiK@mTV_f8tP^C@WvYEtGbWN@b5`4HVmDS#|b z3)ZVtiMunOeCbm1rHj#hWz>Bb$B~M{s^5LD>?g|EU~Rt~-9f!mE_&zMVDDTNci1yT zoyU)CNqa_6o3D{h61)mY|(m@Vh4oSW)6<)A`(Do!GwIRF$rlL?As_qFKvE(WNiKmNC^A)Xh=V-k|N8J$5}sMY^%N>SC0cZWcKDc!Ynxq*aADu z_z%g#Gkmh=XRx!wR$5=?1%rLbQ}cMJ8h;2w)k9^GL)A}bgiBoe9a8Xl(6uc2Sy1rr zV!;pc|BC9lHd7TwmBCkiOtxj{C|m+$Mljk4i#bs3f(ok{q}{@3hV@S!bL7onw-{IM zpP$P93G$}ue#;xGZE^FX=Wst+-fjk&^9HITH(`44Szx!Xn{|4E=#`t?bNr;oqFf673)VZK4IAJ>xh5w4KbdPlH8n+ zAaS<{>G|E@68H_H!7BL|M&YG!)5G@!-||>8VvIo^3D(q{usu2y!|00B?5RJ8i=(c6 z9gSa%8uQPWJpb(3CVlQU9^JBS^cJoaShDTTUwZ16)~;#mOm|*6ypnAhZ@&<=>R62KeJW14(D-0gYS5<8a8sz$RaHG2_o47T{%CETL^ zc}v{p2yvAVM}t}8d{~{vcp|_g@l-qoTW9~s13XK^TAj?TZq@%YtW^&%D=osoX4=Ma zzOiP?<)Rd7IDgA~eYU5dK{PUh8iCNGZ>|{5jWp;tMKv;mW_Q{~_fn6kYn)GY5=p>- zQr4ofQ&irYBj`$xsEjg_O;DCHi8ZpwVXhB|59i9Xc^yc*tRF{6p0uP??Ly>P=Fs-u zTuvOO{MoxI@OcAu12&pn&fxnX>XQLoe`YhW6t9*}NbGWSAtE3Ss{y7dwffnUr2Mwu z6fYCDkY9U9e%UG_=W}P`ypm}PN8No{)s5AUB+RZV!lV1DhT^z0oaXsRqNDlEpHbhm zFJ?X@FJB5bcUFs#)eHIA;NQH*vMR!ym*b-d5X*%Nf%7-1v`d!0M3lb!g0O7b$wp~J z!fMu@#Nkhl`PHvCyj$>oJqX$|xYjd-1@Qprm9KK;a z_74=i4)KaJJeo5btsf1ZOmqw>y4%b}zRdh-IG+fqmKQBy66fY30ea;XWC)$4n&?oD z9q?DAV=NQ;=Z}l-!jMFdIkCxR?48)^t(39{(6nK~lklE48gLf1_x+nZc34X*KnK8e( zBgQ`R_rdnxu(I=7BD9&<4O22Uz0 zozx&2{RJ8ot!*6d%gh+(yEE5Qu+y^WegX#6a4;ZcZx-mjl~s){_7v=?w0g8w0<_2g z`Eh?4}DWmQuNXaK%SW6Inq&p7npb?!L(7P^+- z;LALNjPTqdUmD64)dg@u9A$ZRKKdwy{%bz1gMQWFWVs@Xa+vcS^&9ykVJew_Yt@l0D$dta?H%gKL-Y{2dovT5 z5Jm{iEMvB7^l6xGb-<;c1zGj)Ui`hZ7JNSs2j=3z?7 z2}k0%{wm*!%-#C_@E<$yqn2bQg=n)9l^GnH!uP@3y3wCStUp5j_JTjszbK<-%2n+x z;aZ@%xhhr`RHH=r_esv@Oyl<+ydai=Nk!Qp-e!4x5kFdYJ#yP*9(=5hss!Q2y(Q>W~c*;;I(!U22Zo~fRXV(b&5agr+R35_s zBAsvA&;;^tKGY3s^t(#B;fx+~zc{~komhV{9dgf1TKG9x2Ij_G{1=?!8}bSHhCMYDmGWH~K>_RLP|@?_!| z($MA;vZZvV(j5%Naz+dR>odF)7nf?8XCSREa_XkcAGtVzLeoe&Og;Y~u)V!a)&8j- z-6Im{AHtY-BJsiIKq^*(5Yyy2DsXW0yB`GN$Te%jV|^%A=)CEqJ1-uGiL$$3c(xWd`AP%r_~()TwxvMahByWNgkaV`y|X@qv?i3jP96E4T340?={ zuj)}Glk#Jb?sznvmMPWYR_d3h;62L|Z{RnwVYq$8aMwq4-aZ1C^S|NCB}e#@?=4M& zsdIWuQ*g=lmZss7hJF2}n#N7Zc^3v3(Rj`suOXhf#@k;2Y9(UOl}W#lqp{RaB7teuR4c9x=D zn*`;d9-GuK7KfvZ)jZ2*6m``X)%cSzU{aqI)f~6Z|1**L*blKizsOgFr61%tqj%|H z7lvCrOyD1%i64ph@!%`9?eF3zKzdw$f4X z4J=uBs_<;et$pUEOv0yv{piv*O43Nci*dNn85ZAvW581VpCw_m_}vq5+1^OI8sjTY zO0vMlAb+=K*$kI?Ga%Sp=ACW`iN67|gHCdrTalanYO~^~7sdY}iz`qerweC?X~^va z%-v=`k>YeaHo5$bpn=30Wvp)VN5~33<>~~t14q%G1jPH$1eLWGdZ)ZFg9>G%kjuQw z?RXcwLEV{Im~2jgbmP=z%NsMVPE;KGi)v1xZWh3^ zGRK9pQr}RnhI(y>wME5`;3oR()4j@KP`b{bGQ;IdLXLIM)yY8u|Ac~QAsszoLx-gk zZ@?HQPEs@1<}F7qA*iC%HapLqi{eTL%L%HyM`b~m@* zB-{79k-7(cm#t_mB$co$NQYmKKBN4-=t@Y;7WCPKs|TSsNx3XFXE9*BqW9pbe|VvH z!txnz^FBA2ii%m(kGU{kLCHbygKsFnl9L7%5|Z;4w37OS1;=eZ={7eCuAmVp3DgE1 zOTY)a9mgQw$E~v$5cdHMU1Z*kOuGII#g~~vbPka`pFJM6ok4yBaJIQ#F(1G~5ZM~l z)i^a3T|Mt=9FqsZ>atoEouIW&+OgGE;HEcYDF@$?|EsT|g&jDtm|y(`KRjBS`0+gd zkZ+a;E9pNE-ZB66M}j}~2aLPv!8`bGcjBJh0B(PL@P)464%S>ezLI}Puos0@ApbAy zr#?jdAU``XbbIW620>51z%5*Dy4{D{Fh>LO05?E>&K2V=(?817)0q3rv9R@ma$0Fz z$Um7gLHZ_Ed_JtXN}NAuor5KU$@k$`&6qjGkA+pJv zC!cR#n*7Z5=fmVCADKiyeB#H){9_@01gEnx%|zt4YJ~+CzK9pyEq&>gFc##%zRFje zS&b`u*>5e;PH+}Os@oA z7A9wSuu9G2y&q22oLrCh(R@X7!&Z52=rLSU*gh<=iA$-t(9RgVGXZs6Xlny5 z%Wx_3>o(Mt0&UR=o)UrggN zFRJ1)QC!{T%Hz} zkHsaOEB<3K<8Tl-%*Q8>`7_YQ3Q_r_xa5f9bH(KaarsJIY@&^FT&7u0PqpITC(|qk zPmMD;pI`h{E}Wa@ym3)+@3}+b*gTQt&ZhO6+2V9sXm;l50ur* zzbKeyDgS0X{&hV?t>wnH))!=)vDN#4OqYSo7mQ4CY-@c%rYyF4ACQUWOnGc;eL&{L zYRE-w3w^*Ria9Tm>cuwL7nD}UZJ`e+MX~5bvMApTrMkE+^Z})4F15sMurFL{i`zmU zP>SYKN8AScf|3b#B$m&8Kq;C_G*BmCV^a>i|;4=6=*sW@(f zec@7B+!p$PQZ$#!<2KkAl&a&l&ohGHwffKq;C_uf}b#FDTW;ZJ`e+ zMRTboZi9V6sV!~`eLyLiOC50=>WpQzE*4teLyLiOXP&c zHrN*~Ipem_2b7|@R2;X#zMxbVw}n2S6wM{++eS%3Ur?(4t|&!v>0l$A=y&nA7JvAr zILE2h9B^8e4D0CXf@{5CzRBYqhff59j#w5TMz8>T#TGWM1P=J%dh1o#;a7YxHjvXz z{NnN<{S?1g_74%iSWZ`pU#yWgm;8skx#Ahz{9pWnM&p@O7gNR5$?||0z8E8~jz8Db;=pE3uJ_C)WG-9^jJD{d; zN1UqkC`HkfTBBR&S&(eeReA&(O=)g)3q1pMMpx+(Xf&n8(Jk~0v@E(xk3gd-Est)Y zXQ0*5ReA&(O=)d(3q1o}8C|7EpwX1R8r?$AK}gVN+V{ly|YNpJ_C*J(}+20?|_mMA2AyCnbL?^Xzzel z_Zes;rQOXl??2r0JoAf-G0%MIP-vbhzszF|AC~XY64rdIFLBa}KCF|X1;#yp^1l5Q zF=f1qt~6y_DsL|NiM+XD8g6=;GUEOH1Mu&va|=_<;%ZG0*NjAZIX;PhjZYJA$ES<8 z<1_hfiH+ZuWQ(^Yx#Dd}KEIuu#cwC)h_{pT#M{ZE6Y-VmbX$ZB^q?Rp|4~HwzR3)# z?~AD3Gr0W`<$DAdAuZrrVLsDdXq8;el3dLbT+J3-wMnjymRuD)FA+Q+CYhQenVK$` znk$$pyK8c$WNO;~2Bzi+rshhfN?|O7K#`~lVH_fPnj(2BI9?(+ULxhVM6#_UOE6XR z*5nLPcXEhtNR3UAJQcDL2(hDI^r2WD!j+eqVURurZf^8*MW_gKZd5JW* zB}sy*dHi;=?5)Z9lBqBb|NcxBd@Ga+UMOiVgy|!$rZZ>8kCvh;jl*~$$HN3uWq*{& zF|I^($YfzxCQG|AS*pNf*p+{OrV4>7l;Tz>t!AMR#_?hp8=o(kDo2~~Vk{~VEH9BP zFOeEvlENKwj*wL8R!o-0VKVyT-=C>sI4P8DE0h{OKnUt+A*flBr)ffk#|v335kg*) zC*GDwj+Y2Ao-FLjWZ7Gjr9GYuhwI;;slqQRl%8mz^ot6GVH__wGhT|@cqwko?LLd&Rm{r1e@`t4O^{|~F6 zeIwr6{)9<4{~j4j&3F*Fns(t>vG4u<)l*D*(J!z|-ZywG;+n|hK(k1^`Y+RXTH;@d z4Wh_P(V{p04nHyHw9;0-F;28H=S?gzM-CvpXap97KQ2*V_^!|_b!v!Ft zV*x$VcVQ15ZMuKpSHUb7lyUY>Kx##L1O0e9(r@V#GSTS&3(*z4Tc(z^W<`X9Ny7pT4Z;Ql{amMhy(X$Nc>F$CMAo!H#pX|B4+^2S-!#|syn zSv@MZa(?wFN9B+4vvPJ|UiGL6l^0cynpQczdQ@el4T%+NI+Lm{S~zOL&9}NMt+-ZH zO|48>II0rYs&U9l07%HR(N1f%W&6ohS1cS==5HvgJhIb`9e zY4qz%yqj7zh!Z&OX@3#bYbmX^O+QYV9fH~8E}>itAOKqtXcNCL`K_mrp8CNjMcxB! zO+@bxedy~)(X-f0z#IFEGit_MVWS<6$m4+60TRJphp*XuFA~Ahwgcr!&RXWCi>BIY z#w1V`=fPrf&-u47M_p2I^R?|WK|Lq zK6vxCM@@mWRoLPNHVnS0mDm7jj-Q!bfT2~=;q65L#}AS}%VR$X$&ZuRU&`Cs-ftCEqaF#vJjuo`bnmL;@uoEorEQ`wxeQT0Ax zQwy$m+jq9P>IS*@`Sxt&zj+N$WJ*oP*IT<5*HvOq=ZI;w#O=Y;`N9ot2u!68L7a&9 z4`aKa-0#fomQcHj>ZK+J-z1vUKl*BGSFLRDe9_dL0zo#d zIRo6)o0g(8ct;E|Iz|7bQB|b%HM*JWU&io-T2WT_0V8O?%~@i9&y^(oXCq;l$Z^bj zWMXN~3j!dv0}n`c;I~qK=3FT0!*h^GHg>&!k3r_H{Y+*sk(}QC{UDjJU!fZDx6m;D zg+}{ApjaZvxMKg)vmfpuu_PrO@uMeLY;yU6t$(V9?b%c=j8!C)P+;IM_GjH0#3qce zpBwBG`PCx&?~Ex%|CN_V^q)1@RCNCh3-AA*58O*#XY~5+VL^6m4S_Z8!p=V^4Jv8W z`3J}VhU~{yocsW@MJ5sXUxwTY4ctoG%uhT{78N_YX;XYL(n=uMDEG#){l-4c4i(w7 zI`osH2$B1+8Aw?9$=>KP2E zMnSa(KuwjG5_3xzW6$k+OU=*8Jb2Hp8MELAB!++2SLI0&%&Vsp0Rk^#fJUc@{#kR+ zwl3a%oy-3*CJddy_Jwxx6E4!eRMMDHNy#lJbWHk1hQgOTN-Htx-_(KUKn~`C$Ch2e zgBh^@Yc~|2R%p?ULuFUAFA1tM%iry?|6qNtw}OV*W05lqlAc$;cz}wmMHj2y0jhTn zo}};Qr1uX)1&#>(Pwd_b`K+_7s6(gQNU>V==>VzUZNO!b)Gteyz*!Ijj|mZof)C+^ z;d5r|AJb-FbSsFSn1!^+0VIQ>-TdCn^~4nvx(tw})pqTm&VZN033SnWC=HYsP`W|J zCYUorzd0^^lD`hIXYDT``J*jDv~PYTu9$4>5ZO=GDp?nr@b3b#X}%bl#=x<1oS5)F zc`)D@_SnC~RTpQ`E~j7<)P=I+fV-2*r(&10_1))8fh5N_B-fSbOq2p$Pl%c=U0a0z zaco%C_lZVG1Lbw_7O7oZ^d&1k>*3@F9YM&>qT4~ivEh>uD1P~HI zt(ri5gWy zjYgw9#H_Ls)Fn`}NL7%k=AjRo&@`MsfyY%=Oi%P+DSdK4l-SQpCcP~l3-pkujSg-2 z2|(A|GoZFwerO#|m%|r*Qu5;U^Rm%;0^(pahyd-0Z*J*c2(d}dDnyD*zK#-#58$;O zIIjg?y9RO4AJ6BiUqks{h6Dcaed;m)-PfvYEjXtitb>}!wosu+3mlgBuko-#Q- z2-bg>*8e$9{YTf-S&4>VqvY>w)T*r5Oh=h6<*Lp3&`Ai?E*Z{qXQBEHhl`}Cx?+fs zZpexcx8gWtJ$@IZ%;WdEj+$p2xbHD%F30&6<;N#6d@FkPQ8XF>J6dRr#(C(tcm>AA zxhg;T->GG!l2X1nE`dPCP`?x+0HHDPGA_=wpS~QGl^9m|FLYFRiK>=kKk$V#gU|&z za}Ou(pn_+Qug_X}8jDWzn7T7!`R{RO1o$k;QS5OR(~-Eq)APEiaEK-Ms7Qu5M3Ny?Dr*ND_@#p@;IZy_F^j7ds@jo?cIL;R;sXJIz z(_U7*W6q37Y^ybPtJN*X4u;BNAD8Xl$@8hoM(-^1;YuYm|H#-kB8jQp<*^NA``;{U z`Qi)!mydq!+(hW%&o-(KrI72wqi-P1~VY`_dOV0vC zoWGkm5Y?)Hb}ik_Jaz`h9yZ_fEKl!ZdCTMHRYc;`bIW0P29?LJkUX6*znyu?D`%cy zT?(0}P$d3s5sFp5;JtabmdCHjP5u(cQLD694Rxfwq#qMO`7c!ad_0<=kw152QGi*} zaA~3!1()#|Z#_akCiRlYx#iibvh1(dL64oYaBzk;*jQE11)C+pA_HiX;3`-6LPRIm{jZ@<`&Nb#z91<4UO+9x{c)Bvrn-=6htn%u8} zvs^6hk+gBp0`0P(FZiDQ>;TS^!;J{2r{axsr}7jUoIwWV=gCse@sB^=aZ#3i?@eed z=#E(;IgN!!wp5qJR^xas9)pP@XiumaXJe{7b8YtFI8W*PKqNL9(-Xh*Gh;_ZVsF_S z#xif;MJ95YIke(PY&yQPH-$P(%Tok17M=8CiRQPLNE}aj+#-w^=@bD9?i4{9c4ERG zw_k+a{#)$r^S9x9{`7f9UU{?_VtNeWcihDBLqgpl~&~>1nYsfPE^_TNbb zjl_>cl;Pd2~*}&+KVNMU918mc=k4+)i6t ztDThUc!avD`UPFZ7$4Vw2!vh(l8fzg775rpSF#(?t{3+=RnXtZ zV7v_7F6IJrwvWcdYTnkDm|tVQ;!_}&b-a@@emO?-2XDBERaM7QzzSND)r|-V(GJ4C z=X?=Hz~q%L*_&*W-$g<4K&&6$$-aG2&}I-SYq1}!lXrSE1knoa~U zA;9??`;$AiciX4Nannd5XX!@BBysGA@%tdZm0xV-v&H)CUwCFO)kpRE=p{b7TOa*G zA3e=Sx9X!y^wEQSbS)mC;d8=p%|L2AsN}Qz9bc};z|RD9{IMN5O^rVgf0h-k4P@2) z5F=a_cmx-d()Y?+{Duhpsy51EBf1|5<~sPmFQA9cD*6n!{=fyWzx6DX;s!J)#BO7C zF*as{FO=BBPL$X(CxDR`>VYSh%6(Rq0ZbO#gU^%tsC$*VBV#V{VrBSG%aRzjpc_f5 zVq!Wd<$KtVJwt6l0qiqBMKc!XTLto?lt9wlfB2lY{PDauwxW>nITh%itOcJj|L1G| zf5#Vz2|sPUPrY57^E|2O157krf2}xtoX405wLA*XoWbY!E2J?0c%{$6toSl*VZ{Hj zcdlTGa>7Wt(f-9JPN9mL;o$Rp(t|`q?7J+4LGNA1GQU)7>edP^oX?Kac;3h? z+;A9MF<}%FM4NLqGHSnDgG}SW#73OE7OY-~MT}#ABWI<<{>_J*jt!i%Xu@lqLv1Pb zkX?@6g49Ha{?PRkCSO1qdCs3&=`)JT4gh`!CvKnWdFbQBH05&2Ddqd6Q$8MWm8pDx zW%+Vaa7c*{QSjNO;OP~-S8>@scYc|vu>ID*XZ*bfzNZ=g ziTKU@EW0Fn^*qv;z6Q0SnPFJ2+`2PP_Ag$gO9wh!Z`kZ#@B<*F*m^~G=4>N)-YT%p zsGy6tuqB55=Mv*j8v8UF{v#%l5;sWGH$GAPJSe!{%8bc97?KLw7|bu_oK!R$_kUgo z@#9QW9d6V@DStG;_-s0m?ZEwQSOI6p&oaq6FVtnR$r9IuM>9sFx_K-wqMRyG7EAF( znR!j(V&kP%6htSz=VK~xpUhZhIPPzfCEe6u1{Y9`VPilesF)a?^qfS%yd~xp(Nta$ zX3(aopfTbIW1uaeq~g=Zpn(7RF_u%VTJsuj$;AM`crMXj;`%YW%0O4lns6^Ac4n&C`9Tiw zyD*I_{kb_&mrB42bfygKab+k}V%S6Lv^PZ8!_&CgchDFV+C%mI0`ndw%XC(WobR5G z+kC$TFvrib60mpnjwg0?+pk+}&)lVP4r1CfKi;aV0hNbj;1O~rh6POmmCQgDxugmc z$G&#lEpX1}2P>aPH9_$@pE(l0HjhHHuT7=$?%IoVe$zhqkx435V$OPB9Iz*ALMy>( zI$0@cPkCVcrEH50n_FNvOMAnbrCHC@!DN>5n57bAsWFLL$onX&>c`5nq`cz|{vqYv zJUVT8|BV!6{ozK&7s-D3A|yN1DK3Dzc)R8$ivJp3vY3b9=b6mA@|4UsIQYk;@P9-6 zM?Z92SQ-p?gItpAd2FS2BGChx?5cDk$(5fU>J&N71Af*2<>70t|BInIjcFYoQahld z+hlI_0B*a9#MaugmeD2Sgo-mYiFHFAkJN0CsmUqN(>;bhGyj;m;mRcb)23nBCr*(% zX$lk6>mZz0*$ z{)-cqQWSRbY^nCcluRP0{dlY-to%930%4%26|m#+FM_ZeLue}|cK9*Bai1)IBV=s2 zsM1Uv@gN>zBc`C}2=rCgh`&E$Su*)g*E{$7pv!rg~$^Hd1 zBw&R~>S}!_*GwnJyxeElm>WCJD@*(mhPsR6)t2rvqIlP^@lG`o_7`gpEU2sW!-JEvar3ZDunwsj)+cr>~rP> z6P-Kl-B?ccWCk;BoLGn6$mESP!l)>e4Q0tF$|~b+_V}2pw}WR&6Zk_5o4_LD2pGo& zmXG;|4?6e6Te6YO!7jh(i;wvA$VQOONaUGa&!#V9caR@vorPTG31qU<=+M-%4 z!(l*!D=gkXqv*H@-T%zzUhCHTR~vSkX&GtQ(SzAFUuWBxMW>+-vWSmAtp3YcSIw@T z7wkaIdfsS!=!&oARGbBVSlxkHHCP~4+1NprKYr}6pUaMzBk<#qLrT(QXNK)3OGMnK zH1{iRYfxR*Gsl77O7s#p@0WKr@ukGg*5oWU#HSa)2-5#~DGyfRAylvQKX46evax*u z+ez-%d33aQOV-uoQogu8<){nK8`}I0yIA!wD6n_)pijjg`4c{Qgv|yp#E>Hdj>X;X z&9eT;^=E$ZNIO!+MCfja0Bncoa)?~PF_Vpj#(xTlWJbK8l3^tJ9G(0%(i5X>&r!yX z=arG5WYi@XvvP%*f|6YBGi&85O-?5eDX4%XpHl9BehbnL5(d&{x^j6LuaEgD`m8k4 zRskfAUHa(FS)RMF;y4^Q9qf5X*ZyzrG9z`TIw-;hQbif@m1`552P)Ow}S6qbrUx0Etggw zp&Q6^^lLkCxtl)2d@by3_q<9gej(mX36*uX_P8txmg-eZUURL)iroy;d2T4;TNR!3 z-%pLb+Gc+jtMOv5Ziex^5tFCrc`j7z)Pd`EoJ27^YIp+Tq%lM5=H`%;dq1ZD^ZDqa zug{ldr0v~Xu|JaQ=MRW17OT~Y{t6fAj>q}j^vmZn13E^bpx~E3;!pYIBD(mT0^^qh z9gQfF^Oql~U%pUK=VQRUf2BI*rwAIZl2@O;VArr%guXkQO#>~uww z#FLIr?uYz|@fRyBdNi1b{MFNzm0@sHH_c^`z>8^W~% z&z0oaW&HbhT=|c|lyI_U2#tj7HLL$+!e92a0#V8!7&I7UOpx~lBivvP6smxUG&<;|J+Eqt}`TS6p; z$^20aj`B~4F|$!o@;i>VHyf0EpvX?5_;74|LRRvu=FvWo&>X;W>+-PE@B~il7@Tik z)Qm|w`%`S)Xtb~0x4k=gSdZCKkx$D1b#D8HicN<5hw|G8_d>tL|Fs)CAhK87YlC;l zou{vfocsDu_1iOlo)7KKg=`y8c76j;d`_-^0T0Nw;wV9JMZSN*Z49YyqbXQ%_&pds zbn=3-VNZ&B{!~X4Sof7_QY$_M#JTzQ`^)7u{D)~AD@}%e&jUj7l!BV^GOH0kcZ}V( zR+x@AOlMCtOy^Fl!Hz+$e_dW^KL{jDi*eH?z6p``EQ1jHBnW|RA(!SO(3m`?hd2)r zLs4`3ea#M|%I6-Gm^#`RopkjF)a}zTrN6zEQ~C#onEoJV6T({YIj<;*Lg%bk5@OA% zu#O=Ewer7@vn}NO4lfbfuc1Z_`IgDMJ2cdx?;14px`qY;$);&VL;3!HpfnfsRZ5P3 zDpTX1qhT(jt<~=wa+dBNP4A54zd(W$7q#c?aLG4Z@->Hy5Bu-B(YV3~`bSR# zH+>9=e(3ASdB!xD!C*}75B?dL@O=g%fY;wZAEmAsb7||CYCLD>XLu3I4sy;0llT+1 zAe>S^^v~}8=l6!QnO>7+&tldSliEt|Q!{TLy?Zz3P@WTKP6%<;62rb+uDzZ(d5Jv# z5)SJZi(_a1 ztY!H&&pR3R3!03Q3>%C5$-;fnXJzY}DOvlK9k|IHj-HLkaH_|^6=yv_f#Kdsj~i`< z(kxQa26{Qtme{P;~Bi?IGDUZ`Dr7>&X=dLv2|mo4Cd%Zg30wCBeVDu+{ITURXXqFE^ovD z&lBKbHaTkOcmi$UNB_78-!0kuD!KIyLjixFAt-pmvxB5LEZ}u-0lSUm6c~(uA(7O1CX^J%Nd-xfgReU)C(w@?9nK4znd+z|7!!IyNm9F%YY(7NmtaNM9`eO z*05p@Yb&}2XIB?!OsAo!o&f?HRQuzt2#7-GK@|2FzOS+e|hY8NqxrK5#LM@Mlbh86z- zi=!xhmi_llQ2uDw!1-5Mi3(AKG5kJhlmE6MP%qYKA+8n5?XLU$teV_svtGLQ2OXmu z>pm~98T>3$>=;q^`Lvp$*0WiGhhAd?>KItW@zZ8pOp~bmQr+dxin=?FLZ2`ZO^W|x zeo6z~>$xXn(eDutn{l&8meh3>%sX>tBYq3#d;|X%-*8Gvw0R>YR+=OJ$D6H0b{%il z-PGQ(8gEa*M}!MLtHGC4YdikY6MwMtOHO zRA46j=XYS1xAtjd*uPtlsm^asb>vvTuTa`l-gtVN@xwSIs_Wh~DH}g?PGMg=3!NZ)T_#h zJLkw+7}+}(Bl0vLRiH{ESW1BR*q}h%oY~^suzut+R8Zna+q&a&kM3LOU9bZbaMRHI zI6+X6JPU$i^TKK!3a*on_VmT5)5Nf7vFWYtzkGtGW6H_zkJ?cIclT8R+Wsawa*ysS zfMtE*dB>zTc5g!NhuTk~&q6ka;_KZxN5TmD<{fS1AMF}2?{G0*P=JEVR!0vUKKGa8 zsF?+%8by-#*u(zp-cfU>v~&dgPp!vy!`J@+5`hnpH`Q>VcF|R|*k4arJ{a>+C_ILg z2YQ;L1DcK}Ne{^;00$&5#~>aK#G;)@`RUb|2t1dTEC9p-H52XQs9<1+XPfuRKUK@{ z2pN!U$~QmxxF7Do(en?NVd^32>I3_iZ$rTSeV^&S?JvMJ_Kmswu_lKu(~<85P$UuB zc`D_@=Z?ka*|{=4;D?RzypwulQDn%zL0=waUb46=O(C9kUbBYqp?BBeHOB&HHyuMX zDCP3vIEmRy-$H@TR72Nu{D3b@SYQ9E7)8za{);{PHFy^9fg5XSv2&yCe#o!OUvp&a zrI!DU@IQsGa8}`Vu`YkdfY_>#fAQMbt1Ta7NB8pCpc4P$=J1fUp@z@q9T9t_<^7@c zdpc1Z%eOze%TN1)-J~*3L_Rrr)}kT%^M4_?eU2YA|GQlI=i5mHpuCR#?eh5>WJKu7 zX^vfr_Cn>zwRe623YCIo@V1*rV!G|-5%l{w!@9-#y|tg2;s`FD7h9>41w2fZ|C@Cn zvL@xyVvWY@tIcaZ!0V@47BpW!gq?%L7vTfPUM~v^^b@Z@%J2`G=M~5{7%FzUw!lbR zU%-5b-T5XYad^)TO3VKsa$@u^gsi;%tmIVd&%*Z;i>OE$UWQbXF6R5n;lf5WGE1Zu!MEDfdf^Kk!yV`v`Yc_;QNK^Xd# zgN*ubeTos|d4miCAHt9(v6Zc@Wf!_4&U3`#%u>q-`62&PukvXu&Ws`2t1G;cnZ&Zs zslxN8&2tq-OETbp+6&jDv47Ju_OXnO8-wNhx9cW0TK;GE95?rHxJ8?Bt^;ohg+S3! z$p7NsG7!%@TVZqNJ|RB4TV>8rV%y&4pmQ$8{IOmt>ravrJ}HCBVq4fQ#*o4lMAFAt*6 zQ|eha4Mr3Zcl3Gwz#IHNdGulO6ry}NpeD~jX(9{8hshE0W}u5twMl+Sl_7re6Hy)t z6cPzQB5)lKU_>?dKafp;?K2+^B=!Hpr=*r4Bvw)Pro?qVkq7*uuvZ?aq3(61Fq;S#lzew1N4PpVT(k)}8e04cml*N6wEAb!FR%1B$Q)zF03N|KQrVitWMS03*K-> zHN4u@F;;1QJ^Sb0gdoL8==W<-Y3%Zm|IOAN`G^J|>Q-W^{lP3B zBNICyD+AV+Js1YIv?O!Yzu&SKE#3cYdzSyMaBw;ZABjs!qFtf#kUT*P z6TuAcEr`S)4Ay};5}zHcE$e|drQwfH4oZF%CV?y{DDXP+B8ee~I}@aWv+XlmV4 zkUV!CPv<`1OQ_0K^y;zO2Fc6HU?hIOWKaZ^k_&1s7qvFTp7r{6`D7aNiU=kTq#O4- zs>1P40L!g9{+a%xl#0xP(M7F17p!%Ng$^;sAtr)=%me=rnad0eWHQbk+|}KU%#MS8 zW4`5V>7VWI$U>5cjB`x!yzNh@YC$ctx;I()VzLz!{~Y>p&~S#c<`xz;C+|8R0Ze2u zb^q`N$rr=S1jEc8WHAdru;)N)CKUc0`Xtam%bknGpJdm0`eKE!xbz>C>2P)!(*ELx zahZpa^cZFI3)*ppiS3tvOp^2!_=hBq7N#dF^hFaM@{deS_$|giFy#wV#4w3vF-)Yt zuS_F_Y0FfN-H3<$BNAzzJRuBM8-|5^i$5}u<~#?I`noXr3{xE*@{de)_+5m5u~(wI zFhLz+{ZU-;bNN0Tti?MeIHW+&nj=srnb+0M>uP2PuZPI%_2n9Amh*a6LSKKaQL}5_ zS2^#iey#6E==&k&eWmlh68;F`N9y~f5yh`?-dB7}-~06aS@OOi7=Ugli_%vr7iRTP z#JA2NNJB8!!$g{8LQ-0X*BPcP4-@GcW%`C7DUI-E+3S==3m= z{*E#oJNGauU{>-Z!)JT=NS~s7!vt(q8LDg^ZgPjyLt8NsbDF-Isi^8vb0_mg^Km5{ zIiCr$HO7v?_%TcE9z@bVWL6Q+|Le~!dOFg7CXWNOAavx&50D4cOcLbpN&f}hQ|t)_ zbDIZ~w2OJRU?%6{hly|WFp_=(iDNXj>+440I?qzRRu3QPUx2S=?=jd6VdQfQ7-Rck z(zCKg)qlzV{R?*B2L@*0-^9R(N7p_GLp=WiCL_BlP-k!q-yhOw#g>anp`FE4JlrhU zCeDCFy9aT-Y(8vNwEOgs|NeDYFB8Evd-6p3Sb&Bauss7>^ym}-(~~+!P%!@NKKiD? z(m8Z|&BZJ7;;r!Dk#_Jf{BBJ80fMt#{;#RIYwZ%`V(7>Cqi=NNXM8e|C4y+#@KO!&0Kbvw?Ge;PCO?=+rxA zW~nDLq>lqK;;5lrhd~0FnmkOTqslZu^mn>pTH;|MeY!Gb3)6>ZDpI3|iFA=Nsi~q<^4H zS~1@;OqPd<^h3%t#FTI48Jb|o!$z84hx(u0b(kc0wqcs+VIuuUWl|%x3&wy#DD*Iq zK0%qZYpXR(V?0cxuTrLCB)P*4Q-Ozx^bBPhB}{*sq{-!bm`E2Y)3K&}ry90^hmCZD zvZ+O13q@qsb3II?CkoSE)z8ZeQ=IvOP?sZ&aouO!*#x=fFhTJ#3^y%BKFyWW%)0!$kT)WeSKuUx%YYq>UaX z($^}}k-{|FFtvJ^NFT3EBZTQ7_d zyUM1z@a*?A!KEH1(rCMsy0*Xb3{#Vbi8PD_nN$U$vCemnNC}TUlthVF|)C-fV@-UG;Mw#ekwI$CnOqCuc($kfR`q7qr z2c8m`U4EqT!?WG7oGF|oN_rh1)URZ9~|u(T=Tt6$>^?u(E|f(PG*)TdXgbM92jsv z3eW`y{89TvdSA&sFjPQX`H)9(27pnAN(%>q#2?{E&jk%7Rrmi!An-+!#Q;v(qVJ3 zAhJjXaBwPieP`|&DDV0QwYH=>6X`pZY0%uEj{kkC;T+@PBn>~B zmP0#?wWAfTz{5oPPs*eNoXZSTzK4nQ{lc_YdzH=tMGAPBNMEB&YQJwcOt~H=(mzoq zP3|bel;vR}eT6a|ZS?CAv{#C&YXF|(&!N$eP@#2HJlQaHdYDL~+ai;?4zI&RGPdnu zB7K80sp~M?FtvM_NV7$zjQl}(;6&QyVIs|vfJqJeU1Wmps0rUaWbRl-+31Nv`tK5D z*Wv!?Z(woI?2eXbd2jwv)f}&(iId=rLrWh<2wK`~-tnQf_GS+%>B|IlH|DpbDIX4K zCceVMMtZTbX?y<@Oe~p}d6-DUbwizAo7u*|P{3U7!eC z!HgpOw@Hh~hgyUt460~YT6HguRHjA`6KU;kcdMpcYM2&! zm`GozNIHuDIA4+KJWQmUlqpYydYfUY^)Qh>RhdQ@{XNF8ReRV-pQUW-|Nr%9O>mZn ziS!g@QrD@(FjaY&NZ+MQ!zEYSj#8vb4-@I%D3iK#KQ~Mj9wySI%B16)0fx!)Fp<7U znTDD2-I=EehCFPf!^+04zd89W!!*&uMEWshQnmT#2t_LNFp>VTGU=$K!Z3~TFp-|8 zOxoS-{hA^bc$i36D$_v8)Afca-@`=uXUgO=3=#B37W17MmKK` zKk2~=QC{Bv^k~M1u?_sTg`e>(L>~i&PyV0`e4`B^*OL(G-%CQK=l*cGmMqJ|MEVkC z(w4l?Fm)jb{;}ndUIH5CNn7&KhN;uTM0&O|4Rq$09zj<}0NcYy`T^xrfloF}?H(r5 ze^w^#-(UAD(l!qh>3fuEkkra-!?e-EMEZBiq~q6vM<`OOhl%vP%A|eXU52UI!$kT% zWg2Sg_e8SA^Jd@gt*F%Ud*dWn9+<5LL;}|o!^MYMTPr;1q)!v{_AJZ~x5@nQEpSxC zta=!if&Qs7vc}qyM;WH29wyS?QzqjR43#{ry3fri*Dof)B-hQsrkzFNe?a|m=YAh~ zz1Q&ZwK1_C^d``lhJ-$}!$&GdSAuMGA1*0Wc~SsA`qsKRrCi*={1>*S5PXth;X4Hn zdB92EmI5D#5Wt@wB<}IJ=z-DxTiNgd^Vz*xmeB|*%qVd2k0L8DG+Zn`#wW*of@PB+ zeyl`;JWZ|rZ~i_W>ZxsbWr2nAw|8EPrIzTyp*XPf*|J~EyK45daHUlos2N&cn_GZC z=lBPtw^5Upv`POj{x#s}UM%WP{^~0W@%vw6mv8wW!CIWsq9oWUamzE@T19BHgBbhc zuzz?C_9K|B!sXc7!lF;~NR#w@#Nn!$Xv?@90D!5`!$kV$%0z8xORk2;LZ&euCen4v z#P$sZ%}P!+d<7mp(zhxf+jm=X4?G)!<$IV&KdekTNV>@|1w2foZ&xO^%C;nZMIz;T zm`LBGOgfx=7#598Sso_R^~$8f$Cyrm&BOYIMk_UedeG6!? z>CjD9{lR1li!za(rcCTL+w`PXFtvM_NI!yqK;k4wTXGQsOkx{;`RC9}L4zsZAML`n z8E6!Ghvjb?MZxN)(kobCD2o5i&9be>Ib&EtAr8iV ze3CD;d?b)EVEiWF&Y#PY^!<`^4r3g!<`mfL*fi27m|zSr7!-@aVEd9xVFRnlR3ak| zclyySW_@_`;ufqdBgQy`!Rk(rk&_Xlh5MM059(EVjFuh!$RxG@h4QU1SX5*$7B*`d zxzzNBCGy=X6@I^d1gmwFM!qL!#QBxMVe|Cn#g%Vzdq3rpybL!Ov;*le9?FQZlwU-1 z_|qrG75!oKknebdMI-0Uk1OB2{;;G>>-o(v@-xxJNF(2uw`G#ehLyF_;TIjHIV3BYoMnWHB7TSOr$H6N#_^W;sHxo2+)g>EHer84T95!AR475*cyU7+XoD^5(^rOj$;ZOAH3JH$6s9MvRY)jbk%O zkJ0j4KQifIpXv?P!d_UeeX8jXOX?`!U^KcIY2b^s-OME&Y^B^72E2 z(bOl#LxRzt19Sez+KQG6M!HsXMSuC|A>Um*g9a^OS+D%K^3CfHOUhJhFjlx2Y2^Fz zX3D0&a&5%r-LwwPeU>Yh5#uU@(b^|QX-14MxTAuji9RuW{b9KBg|itqSlfDGx$=E- zQzp3_XE54bj5PASCL_+1A85I37pIs0j?IV>F&LeFV!XRCQ+e9o*L-yKiSft&FnY-M zT7$)z8gGx{%J+i)uw+0m$Y5|v$Y7+A@34$G7rdwC;vAMYFRuMZGnvTvVaaJr12YvFq_ekaDkiTS!}K}L*vgTZ;Z^cW@mVf2u1z+iDA(2E86n*4nF zN~SVB+@WRSjHAI&`J!AH-x!?7GU9yS;Bb1=n-^C$Kg)=*=|7s6P@fnlWW<w>OnS)o)1>C7q8FAc-@E(668&9dFe+V)H1aLai1ST@Q|03H(!C)WF`lxuJhS@5 zcyU8NvXSzX8;t5cG3xun=po-XdBy~6d2KH&SH2Va!;<`5XE5qqj5P9nZ+)h6WgDD@ zE>17`{v{*EeS5S#jeTNVl@a4R24hK|7^C~c=po;hcQrpvy|7&QzWx&B(qF%SlEGLi z7~;>QvA>CoIM4rE^Rmpv>D9lL0V5J`5Sv@(e*_K!fnHa9c9>fpuJO!@d?mtwT{iBaDlMi2dr8!WpQ7WC81A5G{F zOWOZ&2BXu(NTZ+ct;4LT`o>9+59CVM#NxnK|FmOU6m1I*V~#8?i)ytF}gpD z9`da=STgzS8PU7)eSK{vxePWK+!2vd;LsuSpBZuPeM`$#;NtX>Z&^l+B7-6OJUr!b zeYl*A7_I-(d=&PXkCqqvkx38vo^PPk- zqpDAgKPpE0aY7IM!0j^9*USCzZU?j|32@Z+ZChQ#Yp4d49kd9VQ^|)oL>G- z+p0`?d3T%UrLIqm1sO4LDV4}%VV@W!z@UB?Vyc*b4viIZ==z@Fb7lYkeYyH(jE9Rf zwk?oL_o{r`Fco;1NMkbvnRG*K3l@QyM!tuMbU>MOlTD>z3V4`EV-=l9x?QJ(>z_c% z^)QjfDmR&Qr|hkUDa*q|8oOM`^i8uq?>B5+kQ4uiOBy>$xF>QHSasLKpUkRgr-zX= zwy_XTw-*!}CfmbAI$xP|kJ|?1g2}Xdm`G#&ok+T+_cMy^TDe-TW&RstsX|w$T0zR)7(hI)a+p*jr}KN((Ox+vg<~YD?Ci3p#)^o zjZkMArez)`(x_iDjdb$=D(61{w$#H%8e0XJ{~&mEdxx`z+T>v*{Wk^FjZOy;AlecS z6KPa3Q&nws)=(QgOr)?_1Cnm5yU$tZ%&QtUw>ZO z{1=?_Fg~}?uFtJ&sG4)0W!2I>NbOIz%nx+wqHH1~j(!=9?_DG>f`e~>WbVXZlx4)w zHB_w=lb2o?Il$;sIMUya5&Mqqe!XPkjv-oLa$%Fx%cO^WUoP|Us&L-?z`mO@)%1rY z`8mg6P@DUf@5vc)-jaEAj9OfrUb0C(*H5`5FEs{ZW1kog0i%EU<{FG`eaiQW{_@d7 zzKdl(UJX)u`R4V9C1pCvVAyV%(&+EYD>KRFd0GF&ehL?-mwaOxF)lC|U43Gd0;7NV z+B`NH4i~!&Z<}`Y*VkV@ddRoNV6l%%FW)Dh%_Nth27{ep-}-w^Mx6h}x6v#YdtPr| zP%hJ!#%9Dg&0w&LPml5LGnvZsGS3i3KIluN$M|D^7(L{BsllQr`QDCrNwl`qPaXRs=JVY&YGr%z`p)1w=-OjRyM8vpvS zj5uc)oLMeTFaP>y88No5*Su8siE%>hvOPZg$URbVt@9qyv z#&y3j7zddc@M88NOh z7|nfRT$K^yi?y1M);=*t_lMC#zHx)Ku@{yr-`D?d^D(Hpf z$~Uh+EGg5z7R?Vo7VlfWFE7g^n_CP{p^MW?e`6Ujjxreh1U|iNN;6_S)~w|T^@-u@ z52J^CPd8XrFDzHSPd=VWE}LG^{8YFYY4rD+j5sq4PNj>}OTJ?>VjO&4^HS9(#=C#Z zRGzyG#;iUu{@5Qz5BZKZSk=9-T=`zmAC~CvihpXEYF&&p@*S2Dr_A8gxj4P#+xA!{ z*|a~Wd0E&e#)6C(HyDh@J~2xA!{{O3K?Z9{FDzHSpFWzYOn+FZWomLU(#ZF*j5vh` zXQ_+ROTIr7jK$8p$|~HN)oZS4_OqIoWrC4zj_3r+}8!D{Y>1^JpW>D_|WUzuuGXntB<43%$>`LlB1oNK>n%-4k7mfY)Apj$_Oyk z092+2I58u@`%h>Ns?r1Oc{r085(Z#adVq&A0*o^N)#(9dWCYmocP&C~dVu3I0?ZbG zhF~3*4ZIksnxuZ%JOA8I&%pij7@vN&O!adiki7mHwniGeaCd(wf{`#7jV?x-{-rzv z&Mi3h8{>8tL+sPb9Yc7^K{A(VI9VFdA5_ovkw+fa@-_9sZBBtb`A|PnlJZS97)xD@ zH08S{BhKr8)4Xu8-YaW&UUzIpjM)ZbMV}b&KA5RI-H&NLn)}4~V}BSu?AxymR%uxb<7GIur=(?H{*;9?0t0za(M7Us4aoe0rP?!h~I@ZH&6Xy)z!yoo~=;OoD-iK}!T*nRxN%TnUCHuMuQ0Msl znfbi}zbmi;0im_nul)%DEQv~B9Rsr48E>9N0EcUXS_TR`Ijq=+_Em_BvtPpI8V;!f zJ5a|(3qHdk!Z=4i63lN*{s8N2&S9!)ezktzck8#B7fseNBk{a9E|brrc|ajQ@8;83 zeLMcgyOr|p>s0Z&ZfreqUjG{p>?wbs^6Dcib}{bE_*w(+%<$Wh|Jly#GAy|~Ef=?? z+24P_%Ue=w|D}l!76|S+VJ}tk~JrcIRJk`fLE#1>u^Y0)GI#)rF?>)60%xgP6R}fpp#QE__{sL)wHlX0-0^UCH;$qW;V9aYg^}Ro(8Bq_GkN?k z4!uQ}$s1!Ud9h>_ub7+_opf=OIX|A?e=q?n@mnzsiJX?x=OBa&)p;@6@(XdHD$)(P z8L1;5pH=vW*EJiu3iL+M_5(dcR8nDo^gli1P-$Nwa&UxLV%Zgc>>-!{gi;Wl^vtcy zU%>w8eo7WM$DNHE>UcTfbX@nc(Z2CdjHJS`&%Fl$a}Nph1R@C7J8m*s!_#;J$&UZ_ z&==JY9>HVU|3qujs|d~gA@1_}=KG_3{-+~T2Kb-Oo`RcZp2@*!Hdk83tv6h3jfHVp zZ|#SLIBU0(yQh z-CA?RH1}`Ism=kO8yoloa{wZrMa9|t4^F&7zu&*Hb4xeO7f#w7zY*WmutbNlZd+5ERMRi__;L=Ecgx>n*j zJ!b)O@`&iaP*xR@9wx0)(jysEQ2NEa$_k@3%?i4}qti2-vW=pjghH4*|XZ56ZydbD|70s1&YSAzbI zp{qcTH}ovfmm0bn^p%FL1^o-siJVg>pmq*>udmuU`X*ePuy{i&nN0<0qkAp+b+qQ_ zq`%#y^|SXLr+%)wC{;hxL9$xvkRH^x9WE%x*Y5pD=b~$JDu+x?4T6oQt@p(23Bp*^YypobaS0)2#` zD?s}VT?v|-=}@s3eis#6)X`VPj$*T0yn#Y@Dpt-Vd3|PMM^SXr8#ijT27c#M>+dc| zRcjoieLa(@UqhRYv(?Q+jP?&VqOCel>|b~TS9k-{yn(Y2XtZ0d$N$Nd*jJIpZ*m@K z|M+htZ2CvsiI;Qx!#~bi$t`h3ZT2yrZbAC=P_R)tF|4r~*X0dWsZ@c@Udfx^*Rj4R zsB%1__f`Pb>l{}5o*q17Jv=bcwJUk^So~g^rg%0e^#>2DA;gRw0O64>8F8A=g=AxT zdw9xIJiB>?`#RaC$ntx5COAA=e&sVNQSRXz>G0Y2^xzrm;qj$-=Jw#p@$e*n;nc}g zX+KI{kQrxmC{JKG-mf5b5H15CdY zWjxXy&@Oqd-U&%DZlKJb0B2?tDgBf`rwO+?8=ECF@Zofh8dHHSu6m$wF><54`e0C5J(*Hbt&J{TRG{wnm2dEI8 zAehl62!u{I?#57SJ(;^xW^NiaV<9Xt0mDQROWOSlx9@iyjH`Lyx5O8G2pz`;Djq zC$I~FMtf%kuBM}dFvhO<1uFY(H`+7dw-L0E;*9O_DA8X{%i;u0 zBa)27Z)Nmy|8vbH&xBCMa(}p`BRi5P!7YmS@>RtD&-G>Nu!91H@P}W*6GLgpq_JZFB-RZ73fnrJg?QiuQu zg0#!;asf+$^k^Ti-tB20R78nS4HTlzA*idSSqP|`gM>j~vmgNHH+B}Nrb-xU)x_r> z&0c20b^OKqW)o&A3~w}HiHC5O2}?YL112ob5e}KKJV&?!VQCqtELdVf76?m;XnCQ$ zHdFf1uJ8Dxf8i5eFy2l}jv><}p-3XzSDpwJmY|u0<0S=>PgIVvwPD1D-M`vxA*h0{_`>u<;n1+m2U^N_MXuSjOnE z!|3Kz~41o-zvlX!Ec-gcNA~qumQ>X?j!%|3u>rA-Gyl*sNDI{}* zaH{D*X(cH)iL0GP7{ipRHX+<%o7{jV9$gf?AK6Er>9l55d5;LjIkD^4u>D`QTFuHm zi_9EYtv&Q=wIQ|1RoHO9VFT^Q##H~k2bnYWV=42AlP#rjp|Q0}SkGuiN8WK%WbCVD zv97ZH+pxrYM)~O0$k?`s57rWA$No}ypOY)3*ib18VzKNnx%De(Sh7OA-^{;&!`_t1 z@!Fb|Q8`)L!XFC{gOt3FyR@N zMu9L>VK`*?B_6`d$cOh558-ALmgmDUIgWSo3{&G+1JDY!Cz##qTw=h5n^HfBNW;)1 zzl&7?;#!H=ry!LZi3@94eOFcp$=*(jT%K5%h5cIPv6ssBZ|5pa`RI-3CbIFoj@?S6 zxGmz3v_*#wEG`0t- zAa$Ie3@kH zZ@3r0Tw|-X^U>^+oaLjwFT}4sh0V&1jr~|UN0Q{|AL(LVR6z*4}ea!7_I`H~Fw>RF_ zSHpSg%JdBf=iBoB=iZIR6Na&=Mtc17*d2Gkxgvx&ZqO4`Nh=;2)6Z-4Z!?08Y@F9$ zXBwsrK>Ni{SON1n4)A)f`{IrY=RD9lOYHM~TRA_s&Pt%!rMjII;q8AOcOuuXVHy-6 z2G91rKQXdNR;N~-++v9TPS+P%^xyV2YR2*3SxIQW)IW|*=$S-6@5Vx7_bO}u4y$<6 z4Ffr#hBcw7w_

kSYc>9k}T8*au(xIvng_58(%^WN-(-gBMc=S-%3vDvj6Q7HDhw?;Ob)T(E`(r^E5 zRj4nIjyFJkLmc1MoNg`H=}+*qaC9pj@t# z>hHCF<9FU0{qkW^g8C(>s@JC0Ovw{D&wm?zaN^i?!|uznH(zK5;vTnQW~06G@1KkJZ){?*Ptk-ik7iKqkT`z;qRg#zb(R5jt{bkC~BcRelBRqFXVCX49Mg( z%eRG*=**!7vz;{)r|0a}E6_7(Xn0K@$kPT-Fs~vBq=;9M*wCQaCW6^NZg9wlpHg6- zP}XaMrwOx>?W)J zU{(mG;`WP?aLT_fUhltkl4Mf*Tx;xlEAbn8kZ7DRbh^*yrE=e<2--fyQI;5wJw+HE zp>!yG7*$BA(a-yJE`?#b$Jid~mur9g=)N4Ww9>Z0Kaoz-W!bktS;Prh0Z<`YS#F?u zotjks-N=u7BX4seQydxyB%{`z8R#2P2FBbxYVB;)vpPsTh} zv$&tCy{He-USyte>=LY5cq+qF6AK#Lno#}Knn-mkDZ<;oPIY3{uVLfC;1;6E()}r% z&D(BYdoyrj+n>z};rTn*?SbgH^Or5A4yGuV2-;oKnH@4htLw-BJr+h3 ziM&>N)1&`<;}%z{Qfa;H z-&pg$AuEztY+C<_9<85C3vB&+v0mC^t%9we`GA7tUO$uS$s;zb7*;UwMr;*EeFc1k z^#+QMEt3HZF}2lNiRofE^C4rZ35H$;)bAVnObaMt9QU{Mv@l}))Vy$C-PpFW*!Hrq z81NbMav78_B_VX}{#)rkN5-x%OT=hb=rzHC!oH)(=r+e>mH9wsv@fTyRDIc($FVyy zgMC?KSpI+6m#N;!+aN+gu^pnzA=vWG{DW95*Fp_T<#AR6Q z1j2-8`2XF$h$8V+uy)#)?0)Ub>JB)$SQl55;wYA}G_pRrlL!8|Rg$XsL;VB4Y=1QK zLsF54+JC1B^)xXz{E}lJF)>4b<(e2t|3b7#N00V};|BE~%2Bn( zf6!X~oJD7q^>P8$->AA+H>u$QZjQKwts@urw486n-mrgaM)6Bfr#%Ni9kig_qm_bH z)8{eXtqx258s_1$)pe7;nI?_hJVOI0ho*761JHLGGaMEt4d!|iX39K>sOd1XpPF1a z)rr(M?ofxt#r+EX!?tN(vErt>exJAg8dLMDhq?WO4Vy$qZx$YvL|d_%CMLd%kJHa@ z?}w&2b;DU_vU&T*H_Ur8i%%ARKxgsmB(dePq=+f+Z3u=?_nh*6ldmALEcsn7^Vz9J z)T4iSb-t#bl#`SYrBU>5xkh#C;bFrk=BbX!aMv6AQ7d7EWTs2f`cbnExqu`?Jh)>- zOeNmCey4hIn;cyB29iLtLu>?L?4OQ|QyMbNAkdyPfs6gmC9of~e-eg$Yv*%>iA#Ie zX~NAWoP{j%JyYR(j_??6H{m+|A}sOnzR`r`Il`1P-^+8xM>zUma5jFvGG~T2uD( zYS(@)gOp;@{WViwJx9PB=4nyT{hiD1?-)#9EtZN{B$waH2pd?KzqlDa%RQ!NVT0hT zwllax{yh5o>J19YTGcdhN{_@y8JI^M7WfZ%gJN##;P_P1hR%eLCfZXtw#rEY?HeDb zyf1mXU(^?Onc~#q2k-=XmY9oe?O$S0_7f)5vWH8qg;;V8SiZIXz#tkRHAu2)hPFtY za?uNV-%y2oJO8%cRe&sMzuaPNN@5BI34Fr1+?|8^=0ZA_Dh{KaB7BK|xY#V>gAN6( zM5QlT0JkJfYJXjDNNS46(G^oo?nOoW1EB)uJ_Jb6_#8u*qWf5aHv2D{5gpvJGA#xe z859J>ZjyHf1>t2TT)-3%Za3jV6YfMf`jRXvZ^R>NP^#ingtvX%Fh}d(Ywa1+Ywg>K zgdUbQmVY2Q#Sj7s6+E4l2<@qo^w1si*X=leQR61ij2O&yok>7Si*Ta}H<|ZMCM>08 zsR`*(P)W*7;&77$Y_KS3Bg}iNj-&75?h<^Q7XY%o00ERejdO%s4jaj_`W$99&7j$g znUj;n@N#}~p*pXhV-43hubn_(8>~id(JTV|SsWa}A6-d7Kf_dD(MRDSx`IUv=@bl> z>SnW1aU>E(7OgNK(8>{r1ZRZ-R3U+B!5Lw|6-waJU??1aP-a8Iu^GXtaQx9=Sl-MI zo*oABGzrWPUJB#_&;Z84y3fh@CyXS=Ge*S3sAM2y0@IizFOdwRwH5kWOMGvX_;!}~ zI@xtS$b3&Y?fg+buGz6Rxc+fpRLKa)@k)jVYNKUyV>(5vTUG~rZxwym(lVmN*B17*@=3n$El8DJ z0AGy6%m{5%I5E^82Hiw@;B&!jK$aGDm9#VmN_}g>Menq%8c~us{m8JdyF?!6vjS@Q zF7{xsfw9OlvNSP24*)txACAus&MPhYS4qo@0n}6-xqM012CKNFXhTWMni0HHJzVPB zRqET$4A4%L7QKupNCD9iK^aFfA;t^C!>KCu?Pg6-$l-yH2Dv#jJ}+1uE_%OZZ6FNo zoX=`NqEw&KqLvcKARM0&tSI$uDD~|N7wu_Tn-3O!HIg}8Mrnm~$lgz7L^n;ItV$J__k5!n8DH_e1fo}c_kKyyhgy_NgO`^2)|V>g z2<6L9F#sLYF_csYTwy5K{USN7U`U&?K-I7YAg=qR1|d@jOthhByT~gXj7&+4@Rj;D zDQo^&i4n(#i#9=Th&{dp*uHIEJ>z4`eN1JW7tB^oL$5Ri`-YgCCgz5!^j{XQ)c2oo z(Pks>s?tRE(P7^@eJ4s#a8@Gw+u>MtFkG|>VyDn%mH0M8aUf)EX<=WBs)KkdlxC^ zhKrISBUA*+3++vb=+YC=7$88=DyR>%YGX;!8WFW`PtiwGQ0NAVka{E8LH+H4xWvFt8L9us8(hZ3bn4JWgWPn{iVKxP%2~tD#ccbI)nsD zeXYs_jY0%+o=#2(O4=X{F$9&L5|n7v%Saj;1>+@!MlC=ZuAp9)S0X5A4PHT?XwuMf zTBS`O*0f;QQ7FEW%s|Giv^kIl8xGns1flk-G;!&%Fr~9uBpPTS%m_}TF8KBuof2Wg zT=6vu16K0PCJ!oKbqf2^rEu6QQ(E*kL<4a}s8a{RMXyL{W(OlBzE4Yi9jrR&6q%4O zea}jSnVQWu^l3QusHzlp6+^RpA3`Xjhyu)UK{7yz0;NSZdL^lWS!X4JXfwOWlV6&c zF#)Ex9WSNfp^JDi?6ZwVp>?)uwAnPc&Ks!IcGg<9zD6mL!dZ!Nklv%NQgyRjP^!~i zr8*s!jIt~#;!Cho0KU(|u@Nv*&^%-TwztH$g?UD1)x4MbHio5tVRelw@qJ_};B~D4 z91TY@ z?TI!)M_+Wbi9LjxhZaf&7K(}>Dn%}6D^x0p76U;|3tCXA;ZP~%LVq_S2THXIuSKb5 zh>xI3<$EjD8AE^F7pBkCm&g+mfJO~>HOeRro{oY>?U3$Z23&>2h!OA=ycz|a`$12Y zg6V}yNyq1?6#8aUBIs19Z+D}hr1L)AmMocAe1MPufu7TRB5hN`Dl zg^X5t4OL2~&^y3Ga17P9l(RaUrq+1_L$!_d217;b{?*kgtVTbBTEYAtqE=$S(N5A? zD)Ex+uV$&xsr(--)vUfP6)Z}6O9kiQ|7NLXu-AL7L`EO8Ihc4i?EApcz8?jUsVpLL%kEywK zs?yaQi~v1$3Kln|QtF#~?Nq7nC5}YYT&6cuXx6X6MetfFIsmaz==WgCU?t%qkOx9T zJ{O6^*sD2qWHyZy?5=p{9nL@rjbI0c8MFbg>tarfnVLoeyhS{8Ktc!p)rX0KX&Mvu zt!4j_TT-+iT?5jOupSPCeQm}@fkEFPqte~tU3y<1xJ0W(X7AxxKYeM!-daM5lI z839pHv;&?Ey4Rxi(xScK8wu}{Ltm{VjHYL^Pvd|YZ8aO3Vgm?XH#})6KbrP-mOu7k z(JRV_(M-pgiJ@bPUM*VBfe-8;DsOe;SNoF%gk@P6zj1M=*&#MML^}vfbdUp%`Eovn zO08gUdGI;@+%K{4aE-jYUv`ynn6d$3w1F%i;uN(5grIo9$%vv>gkRGzS07P(k zea0DpusnEEA8=|370aoZc6}nVOc6-51@jF5)@NKnEh!Rb!PY07b^>_5VC};*&hoJ| zT%M`MOEV?f%vYEZbb&iT7%Id>TPGfy32!?w(af49cjHb_tUqvlw<)zh><8JY zDKb6BSSGk_Jnc2X-Eo;t6*h8R7q9)l=8Op^{KTozHz;8ZebH)wV zTCrD4Fv-aGR&47`eBbttt`l>bwCCJ=9b)29YI1$5Y?9QqX%)#K>-Xavmijf6AEj<~ z1HE=J&jx5I!wmPiiA6&xB~}v^5;NNJbzZB|{5-E2efon;9Ui+@x=Mn(MOe(pNsEFk z{>;X5eDCt>PUyp0)IXlc9ym&XyGeu<(<)>wAG@Qmtp0OW)=K_Y=8x<+H!O&YN>hin12SiM~i;1lE5j z-bid$B(@bh79igncYRg)esH6(?@z#ze!?EtBg=dw8ut>E!9HxfF+rJj zyIsL;D6~&msr@G<5Y`1&>|LvVUoA+s{x1CD`)*oQ7K~P#in9>ETz~Ym-#af={gT>l zMplHN(G;THA!sl4Q}IET4<8;Z5_`*S@91{1UM!!5Fr8lbry6`#N;5G0+#h1!DEGxK zl6*EuJC}E;**fx|rkMk3LZb<{n{bl}Ge3O448M-`=NBJ!2+OLu{k?CaN1W=>BK{f?=Ilz&yKe`v``$v+}d znqI~q={3giMbBl?C#f-9ftN)`=Dz`33%6mB5>EpD+u>x%^29>CaW+jBeU@AT<5Pm$ z3$x~~E%QIy$umo_VEA7eF+^_JJt&eGI#3^O$3yP9$KI|oUo*Z3^>OWx@3G@PV8Wq5 zSz@{`c|Fw1Sq5xmb(&?sCZT;4xpcJ79u|2lH6b--mI2$5SJt8+cxq8l5N1q$JS zz%=N>8o~t#n`OX4WWL8TV9)j68)W~M9vUDhh|MTWohZz3h!E%l8}Z9Okd$5sB&_%S ze2YfX4wJz~A_=+%@)zi%SUp~)%tE)!a61r~K){4WS($wkZZhw=bju{P_LrMYBB?&~ zaFYa-kqUHKBfk1*W2acgPkG^!1@IIfoMI)IwTiEL%dphkVpe6@5?F`KNS2Y~MpJUO z4#}tqH=FP>6D~CT%_bbeFXUd<-OOF*wajyqh{v-G+f)AgWgC`?N6?T9Mq#Q%W3HAF z0z#K_Wsn1qxhPQxB;-F7Bok^DAz|1~Zdd;Ao90147L|bQM!r&9ggZ@Gii>cT$w0H= z4-gVbRG1_rDL09@NkS}M1u`u}6$nPEHhRIxhwfjT>W$m!#LYq+0SP!n0a4US3ZR?% zFsJ>)LJ|P-wJ(AHB?V>}1u8^rhKb8?$b<>caD@po6^5%!SmNDwXW>uazKTw86A)~Y#ks{~;%y_$GOmumfkh)dw|6}jn@e7#=hoH_5qFwpn6zsnz=9y#ase!bqW_v`+?62?89 zGuree#}8h8v1l9SvRj8NOF_L7k#EAP71~frZ}f?@gvFdWKZC!>oI3G$Fn`?fCYSsj z9->ESBS`Dh&oshaFT|QxqSjA%Msf`;#Evh|esq6xWJ#a0H{Ahv^C%_gFyU z+P&uvj-UGSKW~Bj3$PfQ)_4@~!I&v)ydE?RmgLR!;u^>+%fbXZPW^lSQsaoN)D1~= z{?B-<>2`&2tI^qr0)rbq`KTtfBL^Q~ca%$!erNG@1;_Km-5o3soinLeD| zyYMs(qfcqZ$zOEvmpkwrJ|j7QpS8;U*AGiK(jmWpcKz}63?_xR4e~LJ&nJ@Aq?R!$ z6L9`!Xnux@6R5wbhyHctvk?KmNI#<*4kH>KxsT<6@QyR^?k#Ex-RgLzQOv&@MyYBew(zufE z^Smb}PsLq4f1Hq!R5E46xc1bE^pT3+n9+}~Wf@16?9bEM!zKGGwD$Uv_zG=rxa7e+ zZ)rHC z=}O=o;l+n>GrV}!G(sy~3A|R>ZT7Oj>nsbr>00~llBUU8`>vAs$=crCB@d>1OB;YU z-HQ+7CVTO!DP1dV0A8!?=k~I|>nsbr$y)n?lBPnf{l}8{LT&GXk_VH$rK^EA*^3Y3 z3cYyMl&qDm241V|L3>%?b(R%AgiBtw_^aR*dKErMS>dlyR`4oig%6ucUY=p{SCO00 ztMEa}3V)5VzzZ2GWrYvmsl{JKZlVtgAEd1C*C-3TkegB#c=L$A4_f?HXSPVTqsWDNZ!S$uCV3qEwEzvLejofN!^PKq6i{;pwJbg#b;&d}PM z*yg*}-zJpZVlOLli>kjbgJ+6Pirf^P6gw9E{eoqo$W19LdKN_|MQ(~t0&gDa`pe+2 z$U>2uQdaPa{tC|&J}5dVcwr=vh2pDY=x-;T6h0_ADRM*GEmTf5X3cRuOSJ8FRvo7^lY`%N_-49tPWd(1S`YZ8G@jHr76+YN=x$g6arpcy% z=w5%xS4%FZ$Stb>?WB_;H$^8+{cVE&N-n3!O(`pOf%aHDQ}_^7f2pka2ZawxS>TPX zlildAl52<^E4mK6>Eu(%|0+5eLw||Cimn4MY`#nV?P>n|GWe_H8r|rx*nH3QSA2=$ z*Q4rhr{P02MxZc16vGkgES&`FV-qLX(0 z?P>l%{#VgS;e(=+f>(51@zufyrL0|l6`d45C^`wetm_e3D0ZxrHT5@Q^9mmnodjM> z*F_eJ9V=x;ZqOI#93;eVi!^McmIr@=f5wbtn{T7 zzoYnS;e$Qr>fZl0S^hzhTbKH)=wvtgE3#1Jrsz88&7=H`^jCP+GykiUjiJAtbTWqi zMr5JzA*%lF2hYUjyVqaRb)_um?aKdl@~JWOw+Xtg_-fI!F7;ROse)J0NwH&*g;KT~ z{Z(`lc%42~>=-bl6SOa0wr?~{q#6rBX#WV0`=_-f$oD*q*(DLM(fkcFa?zzdxe zU($p8mj}r9^KjOF9(>x*Lq+5AXy9zz2pZ-ZmrjFH^8_Z;Zc6;(e4`2Xqf4Nq=zfZ%i zAIGjM`L4oOmyj5_pO6?IdAKpLSLC5Av9~;w0;C`@A@VRG(G_{PG10(G#mW-<%9qa= z#;AuLCL|_BzTBADFY-{9c$7SpFiii*!-T}-$it0^M@JsY65X+mmwU$;Z4dK!w9F;b zbjEgmemJ8US8#$xLC@!bOxJDq(^oKBeJ4u!cr( zf9NAa(hqx#kgy*ip}vPhdQ?_Pf5f#!O=-x@i_20%qvGbp6-t*!Nq@w(C}m-r>8cy* zJ|s}c?P*Bp1j$%`m1yk zW9aXLC@UdX(KAKYP5q77e9!b(Qbq-DRQ>Igrik2>GzI)kry-{%@K+iB6ThRB1-;4S zA0la>;&(*GQKnSBu%|yFH>IrT8QKG$^)#h<8D*999eADTkKp~^A!(6Y6rb9S{`NE_ zZ-P%%(rm%2=%m=O_=jKOe-)jKp}!Ohn|{HRN>5Yr2jL%-vN80xlTLzOr%sBWJW#S9 z`rCt)JkN}8zr_EFf9T%-M*M?f$6fkgk%duK_@I=9p23&E=YnTq^F8yw!e67T*sE7_CKG>2f5qk%xhX!?)ZZp&S>TPOzlu(FqrW1H z?)@+6uaXmVqrXa7;X_pY?WB{yi?%5`DSpQ;i|+N8_$xNwz5c%JEDL(O(%()#74&wc zzY$+z=p^tu%ZeRK%u;-+;8k=|`0&3&(%?g$nV&(YAehizBL-?`TeDv^R92QVBYz9Ai%*RZA^qP-n@?)|2 zn8lBk=Ht2iSZ6-w@MG9~ypSK8jmKV8+ocKgdu1a1UfZ93OH%0f)`9d}nnu5O4QVK; znCN=w?#JWkCi#BjCN*f>q*uw!HBV(|#J-Y>YyQc1jp^^7GJVd{xW?4?M^xe3ke^=i zBYtlExgkHfWDkCB-PGzxMgkJu@8r|WDH(+aA0LI4A&ByKG#-H0El>Cal zyBkW<<4#Fg`8dAcF5iI{1>V}bI|A`m>HGZ~KQ8@YVB=e@yA61fq=n$c`fd^QB?N;Q z!3XW@8h>o}XLuX(%lCfMP?8!q;(j1#$WO(G*YO4XqS!L4f!|i?Pw@*#pSJI2p7KnZEpwa*w(+XvGgF- z(P2TbwptK#oDh8pg6il%vq?;l3F#R)Ep^;vKu|k6GfE&l3d8^>gu*M51diuqh;l<6 z;u#{H+tHa<0#U3$y!bZp$_AnE%8&;`%rFH0CqUR#E|pcT!>)2F_XJ0sf+M$k95#M_ zY|4yr++^rQDpQ`!inkjwQx#pL+^j&X`j6-ZsVYO*G+RuofHd2*tyfXp*3cf=mTcpU z;3(=IhmD9R_VO#HIhJ`vbU+O97M`F_cPH z9@Dg*W(b?1C`=NFI&QWJF~JF;FiHgBQOsf#AZ!}fL(>W?I6hh4Ee;zqP19;t4CPJW zAO~t0iV{Oa#BmD5G$({jt4-4?j+n(YDv>=jEzv5|Jb!#sX=pSYHX_8doVL;g9I=BJ zrmnf6X1H7EgisVm^>q@zW-vr7>%tbVhdz3d%}aE|G_N<`5bd|Z zolPUm;1%XNOnZ6OfQV&bbqd7QP6&ljVlN(pwUWyeFhnd1>kl_%TGxSP)COB=g-;@g zV#aRgG|Ny7I?UNhvmrha#v|S1u+d>!SEV6PiA1x2qdV*JC=kP(5Q@@>P{W2mggb7A zh;3cP5$g)SP9)iiD_SGgRcA;`V#^B*5!L_&9EWX<9)*{BqNZGbAb6a!U6&Y>X7s zQVb=5$&O`Lk+ffw=U=aiHdt}arqZTqRWgxg(5VB2t)V?MEzu|w$A#VFu+d?fmWSyu z!%!Mi9y={8Rv=ct;xI-p#TOEeM5CWLZjj_YoJj z8Hy6uCBRiONoK^l*9oC8N+bbGH_c)mirdt!MMO!OzIz-tPMW6GZ17$ZnD3u+ z7>c6gYO*g7PdXuNDs7Ik%Sb2qgPZ&K6fN9f+C<(w!GACXZ=T|T1Ki-iQ~C621_>H( zaGDm~ytOxsfyi}GzRehR-r4vk3`+h1L&G5`V>O1MD@y7cD{fuaIHP1shW{y zx`z4@CE(MDTZvC4U*PA~ZyM^8OTee(Tfy(?D;q0jtZyuzzNN8z2KYVw%f`twzHPi} z`oYGlz{gd2#7F#skE=!!AMp!5t{Opn#4q@`>J;K5e!<7~gv2VBjX84#EqO|2sYvCCewoYKM7S0#e3j=F`KB0euoc9M z3vCIRk83aN?SRKfj;D(1N0#pI*N~q#JKS(mUhTjn08v70JWohUzzfcBtv8AM#%n9n zpWnbIS!Gi2#&j~)%YpooWMeCt#xKL_%OU)-S$*l@mvIo84LpNideoPh{L-twJd-e%mSZZ>Yx-^C61ZVC=2 zX$o%SUDuK*l1mTtA=niUlemBzQ@nH|d4_!^a`E2`r%&H04+~o}kqqISppkx;hw?*7 zFizop2^k4M5Ib@AXB0Cgr#yKIB zz-e@d8N%!kU(67(GmK^h;+wxxJ8TfPxM*e=ajYa}Cce{vu=0gY9pWmEYmwYN=!8&s zB`JfK>o8M>ISdgy$tYGJPH{pgyfWm$5N4h+01%vKh|1aX3`6C*pNV|&FWus>@zcyR z!c2#mkk|zL;t#s-W<1c&}l9Jr| z0Vjk_8^pSlnaE0`cr4QrwKt9NEGLA*q-fdr5Qd0tT6NrP(-_zPnHXh*h+ z8Oxk39Jh6k!$ySJHTE*uX4m)D_$J5V5Sw7$K43 z4?Bx1T4M}3Ddx3^A!3_X*pQZ(SC$jPrV(cF3UeK%y_{%3#ImqD1>&72h*7cU`aOm) zBo%p+A#C>2sfTPIs+#UBt?)?%QEUi89OJcsuqj;+16Q+xUZ;R2bg!xWiVIj7OZT zM}c_62@%D*!iGSEnbiyt+q&R*%usipv$&!)>fnUfN(Mv3wytJFz5=oNG12^3b0w9E zt%MDTuC2>H6ItpktuRU0T5PaYgjviGu`Ej&syfD5Tw#*oiDs7rpB@<}|uH#f9duUp93XXq0qA)8O4jUb& zX?YBZ3bXD9j_%UJVg=$tCxoIkB9LZ=Fm2^@hKOZaGRzdQuI+ym3B*bb!(4~i@mkFg zv8^jkfhcoA*p$MIUCoMhl^76RTbD8uIlx(5VU(Cx9amr`dhrYq+q~d|%;Nw0198b# zypws^XCj|M>0cVPl$prU-6OEE&;VI8;CgxK|v!x$BfQGK06t@jur zwrN!|Ri-gkI3X0JG15ZCP;O(0Sf-`SL=JHlw<(2bS9ONKB+m6SAY$1S)ZR=Xm;au) z6e}ULr+3eDX`7LBN(LkSUI}uOoDd3!ND4-tEgsa5;x={bVKx|M!JA=Ef3RB|HZGc` zRmnI^(`o>Y?xI$+0#WLOu&K0ZTB6dXSrn^u_RzGN4QUH|f2vj58V!ey4%4*im~zul zwgX4(sAZptyw_Q}lUW&lPHbu(7msaI9>u1HJ0TQ}5u1urZ0dN1h-Fie6hn-p@d45L zSjk{mF{@V$h_1~llJ83$Q=AYAqbOo2>D`rFJho|7GD&8{igQ9Jj1tp=rJH84|9(YP zdT3getSTmsQ1>{Zm{v36FiqJ0gc4ju1=u&Ff7M9KhX>={IBC)$%=cKm-n zo#?^jL6H|f6N~XvM?A*$**dwt6qf6T|M)lNwIKbcGV<@1RXT{m3{ou_H1V&f)tl5vxMHQnT=W8x=2l~$=$OdNTX*PL#` zlpyV)OWM^02yCV&(Zq0K623z~5IdA8 z(@qyTiz_ZtQnX4KL8LEpCPTyyCv^(Mhe2^SF?&A@VfKF3GDPff(yTztc0$;kpqZsf z$THKe8x4q9;l!f^pktj73a_LCEUjpa zBx{w5t=!5Gv8}7lkd!1+X-){6Hi&g8(@sf7@mQu+%oUi%`0r|BQmj5uWWGVt?!Pfa zY}2aaW}C^{cqfFyC=rB*sWMF~9}qT;>!E3d6&xQ|b&JEsOw+WQ4fad+^#*Wsm#@Vs z5H~v^Y+5Z{p#oZbVD^J1szmnCv_z{+96tnGjbrlnGMe7sS=^@8Vp@@Is4((yrP9!7mJwwDuh|fv;P_+rIBay7 z)>UZ;R2W_g9Nk%$M}hD-Arz$%p@t2C2s4jnh}hNz$76=Nw-*vgw&IG`h;`K&(h^&F zo*`meSF-{!$q8Z82s1UTRBXj(Ky+bL=B;93HRUv64)h9pH>GP=iMW26Kw#ZY=P*|F>@GA1O-^Kyk~L)Qr* zMjDt%GwA#o5VnT)(6s6l92aztBZ_Hx42cS}j%Uhar-j7|MB{viF)CUkLTzRU(^g(# z2%D`aS|bo%1!9U5LQx#Ct}sKG9j_}GBDQtKDG)!;6YY-`yP6g2YBeA%dr@Y;rAO?I z439tIEUqw0%uBT2O!V$$h}h-@A7mE4z*$`367khO?KA?VZ5r33oKTr|dgrcg5p=RE zr=dIx9Ni^^mCSUrcXqWC!lu$@)bg-kP17n+>Fl9ti8`4$n(tKF8V!ey4l`;MGaY75 zxB@u3i(01q#TajOLMR#|h9XLAn$|>yh;3SxOqB`I#|fb*jgb~AhVsK)hoLAF{{*2- zJN?aB+@=&})T%QCCXw+W10t4PLG8^HvcOqf;S$-EJ-s`ROUJS)=d{!AIn-Vogu)?` zf->#&0gC@pyK-)TyQ6y?HZDrYa&CYtWU^yNt!Blvj?8u#qfMnv(-M_7&7uVmwzfty zi)aaM2%AEfW))V<>OupeYqN^v`%=eOWn$?Tgu*DYEG50$$;EAk zqQrFxaFtAw8L@&+h$yB7OEzSK-4)QY$|PSfcyXX#x>6`nrZT2mO!0p@?9`BWwwuZSp~kv-*7L;$kc+@Wn{gP z0p`-*N8dSnb4OLUJOO`oeF*(A^h_-f&eUp9L<_9Sd}HF+xH$daD5C`$(&#U%)1ONR zf)st!^V>U&zn+fA)<0r1SCs#_{-H+wDa%eoty(DkyqiLCdi}5432VyaRr-N{ZtrM) zKMMFe1n*vaFTe~OIa;8tqrC4j4_>wQ(?UhSad_dJ-x6gh?iAN$uMUoPA5)N#hWjgw z`%Eq5nl8u+v74HyjQbp7YNrPzAZ zkTZEzb~t-y_By#|Cg`I;Gq=BGVn;_uG}`IiGQt$&FBnPt-h2i>VvX0 zTMOQoQA^M9iCSQ8N}RiDBXCAat;l$kzSd|tT1}BxtMNg~n>w246wFHgFb=I+qYdAt z)m)RN)!dQj$38nk=pI@S7w5}ubKk#@%RMZJau2%~odIeVueYFxL(`sH7<`IQHkUhMeWLDHVzcAE41^VyL-7xDs zsSjU+JN#f(XyoEMua5HvH;{cSA42T|Jto`GL?3a1n}`ONWlZx2{irRJaGXC_Z#GW< z%hv5377W#?F-<@Unl@N3Af}y@lXhonQ(ePb* z&9epxtxu7CGXD7n{xs+-`HE-U)8h1#hHU8|Rt2>zEtLF&3!WgTb6M%}_&n^}4iTaPvZ0~@MB(_X<_>yJB*%`%1%)q^h&4e4`P=-j1vwZ~WA zFbvl(3bUJi_2Hp~p^U66LK#mLhAxe#B3kJ6;d?&1()Z?~PafM!j{b^J!b!f|riy`u z!S%lST?tcb{kiMh_uL8MTVY@zE9foK>OV`+a+^v|CZ9aKNei}X2S3&7JK*XL!-))F zChZ545E-E}`k-}iB*C@%I9Ot>v^w%@wZBFK57q}hb88(C!%R)9nOg+^fZ%wv`<@N( z=imrDL;8mQERE~P*rL5@Hr@B8$rkXdWf6J)sNZ(B6m|J+UCY2OzwK<!=epXK zrCom9N%5g&QkUP?@pl+wROBrOA&>0MEz9NdFkf0{W^Zow<6k!Z9Z&G^eMh?&H-h?n z_v=MRLpI2J4kf!6KZ{pm+^=iNkYlDldp+LvcQ0OSyzP&-9=xr^>!aL@Z!%sVh1Y3# zJ=Hz53Kho1(f5At#TOXg`{8?v^LvtevD^5bgzt&Y?}_fkU!ajhOrkHlDZ)v=`$cG3 z{ji7xp{wit+3%s!zV5|O8$f-56j{@uKJLZ$$g7EceD$Aa6=rXkO7yuvzfshMqM3!+ zI~4j8K)(T(05}i9+1u9}^c(QK0iWiC?*;n73eZ2X7vNKz@bT`&BqVBIJhdP2TJ<{j z;z#fjLIFS4p`}f}`jta*-R#fas?{WF*&8)9G}QmsT4>+`Ex1vuZy81}-+1@FtG?Ox z;tSfeZe-Ze(x|JIi+oI87OfW?_rBg^3;T< zjqFYc>v~@(A;lLOQdA3mky&PkwO~ExPx|tP?H!!t=`YhA1R1A4LwCJ#Hx>C2-6zo7 z2kFj5clXd;ANf9y?)%c)JLrz0mwq$dCCT?mbl;EOj-$Jy=o4Cgp!;Ncn@x8| z)7@#fGdu;yw_6>)A8sGcK9T&croVZlgL8tpS1Uto0p#XnICkVeXk3<=cJ1jEvUJ z5qI0^j_EtaiT@PIKM1|oYhovMChA97^fpB5*~Im%?}XjRPjU?W9+Q4Q;ex;@m!y;t zu^Q3*Ju5p$0vTxVNQ^C_&^VD~U98{#XJHnaZe-5It$!jivbec_XEOe3CxhE}y0d=7 z`0FU?rmU5!MHD4T^qS`d7g6uOk0;!G5+#L)o07uhj>e)i`DUw}|Xt z=34&|sWo!<{|f((dosemGnV&|f1{r0G5@;OUpNT6|M_<5e^-Bj-l@MesNxssZ};-w z+l~Cq`u@-4&-Gv6^gmb7;0Ob6GftSI z_IyQzEWclw`a@weOJWzI6LOm(JZ3U~Lz^iAXSV*{QXA`r z>%YyYKeIMFtlvup6G}d(U@48iYPoC6b1d zQKp{jT26H^{tSaZ7XA#%@TtFwK|Teu{>~pw^=pjaYhrvGOq%W2DD9_QmfF9*$L;Tw ze_hQw#QjIGbbwZaffJ(k$}Cfb^xlM?Q$FT~EgMQQo8Zu))`uc)=+E4u#|-|M{>S2v z%Kx0`{D1Nf{|)}1|FIw6y*uBG4C@glElatt-{Ga|_d9jgR45Amu%Zu0OMIyaOlNTRdh8G8i;Kd+$v4viI zNiPP=i}m#41A37zFY4(<171j9SHI?=?Hw%>y6C3yJWLG#Yqx;4QOZgCpG3_@`_Z*P zMnwFFlFX-W4GmZ4Zmjr~$OK=>G47snbsYRQ^3MbspXVWMbV+={wKTYnq{`#Zt)Da6 zFM5W_0r)96Eb>$0u*mrE64L@aZV3c1UBKZTjU)nN7TT{(UgZz2)UST6ixF*(3S5bP z_U~h8q#u~GTHKwP$oeCo0xHiIqC;@|2@9lt}hH5h8f4UKazZ^o$L2X{S9B4^`BtXzi+Trze}nAN~8TqS5vgy0p)OL<~*fVa~b^VO!O-@X~FOH z5z}e5vg~+6;yxa*&eC!(O>sY5-`XpC9pulW>Jh!uAFH(srZr^Q9^FvQW>hocqX#WO zd>GZxNJOaBk33+fjvZO+a~#@ue2M*6jQ$bJFIN0aQ~mdS zW_AC!{P!KyJ{S%S0>DT$BvKys-$yX7g();M3Pz+5iGLB3A^)r&xxZ8Uc}j>KxtPsd zm`%i!R*@%dnP-?1x4&Ee?TJN@KDP@Jdg{MtcO(DIsPUOO0{MqJwg0~=f5-IKeP(q% zl)v3Rj-mXq4>BE$fa)jLE9SAAjL-Tp6dU{$ld$@ZL)^p6LZvT+yGp8Fy{{7+WoD5Sg_Ot3mUIu3d3S_Nrms_e z5=FnE?c25BFW2wET@dzP)o&~9jAn59qczca(_{UP^xuwU@1FkcNTdi)4zyB)^H4+d z{u}Yvz4$KxGju?S?|zz3ueNy^OCMOuPt*yB=5=xBP5w0ASvxk$TL%=^y4dQ>KGRAB}kt zZ$*>*Iex56@amV`8=avMnbKm296tspye)^@yO`Q$B^3Vb#QcfDpJ~hD|Amz;M`=OC zJxWJ9!djjeuiW=+WQyrsXi41V9UaV)iCXi#VoBR`TQF^@vu1V4A%p0)Pl*Be=eVZR0OT@GC}D> zs8q=1+B{j-kLb%UlJBq&EisU{A%vl{@}mg?(~p?HqlsJn0H(M36;09Cr1*m46I%x3 z!?JvPTXVRr#oX3aMq6{x)^MS-txtczZT+($VymrnGo!Zk;KkBb=pN^G$(NU?ZN0i; za-7~YURnZ$0qfJxrZOSd;3j<9nkS#2Y1GIs@1sWcqZVl`7gGaMjRtDA2A+x!P^@Y2 zTgNRy3Vlp8MKGkELZa|wZ_YlD-O+kReqh%^&SVeyw(P>e2ma8wzL==<77p53IBbVM zX(QH|_=DTnf97skP*LE1y?+X3dK1h0dj?yE5`Z`e(2BL;$HL$$+sr8;smB;0WO8ZH~EKeLGs``xZPLZc5&gb zO_zrTLSgsuw8qxL;95Uc%<%jhP?X-%8DOO^G_aQdWFHtqlXOOT)YMyQO29>y`2e4> zlqtAXuy*y{PcdnS{vZ~w7`KaYD-&!SKg{(hX(Yu=J#p&K9bk6Z$y!a`{6VO%W@H6j zLawu_Pma&tN$uezmDcZEK#XvvtY22!9Zc)vk$C02<$&dbZ?o?@k6dR&H(4SD#1rjLrjfEa0RG4VH{huaR9MM)QCl z>(=P8n4Ebgx&LW2;|3F2!31-Du3@=c)l(+F^gUty^}A@Anz>zYi99@GGt9us_uQ%F9FjFD)Ft7AmsP1$R^4n@i7^InPYL`>j=e zcfo33XlA?v!M8R9{^1+7>H~HJNKpOpE3v`=3vy^CGvt~%j>jDIwcl^;z)Aqo1!hNU z8rBx(2i8^=EJ;Yjii5sdM?Ka^6hMA=w^xGqrTu8d&xb8PlSp%$+<_L{c$b_DUTx8a zug97lZW6C}^oM-${$cC2_?5M!c~~>F5kcWNEGfzltVaz4&-c~0poTT%-+gx<68!$$ zHKiZ5ECO2G%_=Qe(*Jy{jL6kOSN8IU5^}ZN59eG-4sLiorv9-2Vy)q3{liwGCJeA( zW#LBBp-f-yrm_=A3b3wC{@^NoyRp*OLmB|%+hI5cWaON#@6cyI1tC+;Ua$Y-ujVbc zUth}4q=tHJnp%e*O~vE5~uh5 z0d|O$hQFo)q2!&fECi}VS`L{FHnjUguEsHBfAtiL0z459Wyv8ygVp4M+7X=)Rt<(? zH7G5gpgGi#YyCe^!{5G_8cvrQ9v{-Fh8r9;7z>nxYYKxHUf)OS@fc%Q@BKBdO~-QZ zZNkMWWx+XwqmN(MNiL*+E%TyfH4yqCa(Dvk^nRq=p~?%Oyx-CK4Zt zC>D62;4}o)uOGTS)$7Wyqt99N8J>|ALLjRqO$FF?YDQ7VW}4rr-dQ$)G7%)!8_m$~ zC0A^CRHWY2gP~Qh`t2m`Km$HYi`$Jg9sJ56kVyE`msNCXE#u?vNXrRP70_;YAd>!`% z23#ur9xw5U<69=_r#??U|KO9)5G4&Shg`pheJ>wJh|wMLTD`&kuI3I3Z!pPENNgJ* zk75#+5Tyk_r2Jv53`rDEuEm$UXQv>)s2TZpTtse^-VqS0f`d1Mq4>9>=0_J+OKDU? z68ZcSbdrAR@8U+EhJ;9~agCeki4WvmTS;pd2IvoAj+xhiC*OUQ2Z=p~O@pr4xJAi> z$59fR+(wt6tEHIWP9nIewSc^aA<-{$ZNnE|a5Ny3-@z^3yep6!1@di%)E7#P!z{QL zBXCdQ79E~b=52>{BmT8q5L5kle8|0c9u~_P_D5sjYi^$$x16Rpve)VJ4ne$Nq=zRz zlMj!ph%;8Bx$00%A3PSRoGc3mWC*WF%RF$)V}6aIU=`*+#&DTqaE~&#*vh zc~Q#9Oqy$$t;~S^z(cTljg&bS6E)DapQlIKzc3qRXjQ0wvy_R0LZZwLTbb*vGNYx; z2Pls+ui47H`V;UF4Q}#pgQZ;jtF&vQa6S!8z?5MxtwZ?xJY%-mBhF#MILkTsa0^G3 z33Hu22jdfWMB9TQ{^xgCwrbd?2h{Wp!#+vlV4pjG6#GnreZp~uTwlEntNh!U#Bpz8 zA_@iaUY|!EgGPSzcQAkK3l7jisacm-#A(44Kr90U8Ex7dWTE;k1}vFwAn&dSY^?=* z>p3Rud<&K=S0AC&dr<^-f(08cG-16KELpU^{|r0Ly$BZmk*Pk;g1*;+?qxxf9qX?s z&<%H4E&dR*!_wlbE!frnFzSIIAYJuNlfs+vQ90lCR;BE%@ z#_5wR_&t8J;g?wO-p8QB4Z{3~LbgTZIm_3%} zKRCmzf6ZHF^U0Oya}9X%F@e0G3cu8Xf1<*KzsG_nH>2km@Z^62c|H|>k_8{S&V;|j zf+rWGw+)x}3w)9aKiGo*jRoJ=f+zQ+FH_*x%~jivX<=#qFbjUo3bXy>w)D9Qd{Bj7 zYQeWoGU>m^f+v@z=NRzh>(G7`ev$?M>G>x7B^ErpthP*PKl#BxUXltw*n*!u-h}UK z!IK-(mnrb;=BVw*Os};6VheuFaW~2S(*gu6q z1MHs~ilt2Yaf}461n)RCt4ZB*89Czd@PDbd7=#6r|AUus$sV}m&+niN3jM3Y)>w&| zv)ivUzP3-s*Oq}6cG7o$P17ed*EY2ltKHqz7*R)l9d=hefEzcqkYemfbEkMy=w>2r zJajV+H(5L^#VNLJ#-&&v`5#WQU${uJX!MV0{@2*Os2?w1YmKit^wkT;e*5gGGcMCI zF&uw)0}+Xae)yC*r>F0oY2?N&ryy(ehyKY!VKi~)uD%d&c;@#UC83n~^bepi;!}$B zN;qRg{Qd2%ar(sFn>*H2rl60LM~vY97LVhfSWcqi?GB#SWIc=L#&O&V>1!}0duMCn z>VmYC4y|LAcK4Auz|Y@{m;Jr&*AFbYE-MA^u|Ialg45lvpF1G5;B9YZ$DldA1FJn| z0eSyte!o7jy1BIx!o}oiq+@{j-`nl|ftE9s)^*z7R)%>@^q74Ho|+VFkQsRFk^#Oz z{SiNQzsa82z-KNku%^uyJdELXA2!kE2R=*G;|UJ79S*4ra|760)E{q_j0fjTnDAFF0AJrbzy9;y`GL=e zj!F6u8+tZl{~O@9z%mezgx2wxK^Caq`Qfj6QEgo4uSy}8y-;65-7CN8a~o!3e1<_M zE1=l_C-{2-e*%HVgQ|ovNm~fqpZlSE@vsQMfF`L36p=w6XB;jj7t z>50JE%Z~Hkk@CQa&Jz=H9BAlGoFGE)xeR^0mH-NZ?ePm!W&ES8FSe--AqlW@;8U;i zM7*Nm-&#EN#^(IZt=ADk_v;IK*YD{a*fZ3WAB{gRK2@rQDjW~-V4v4fc(FtnO(5Rz z-d=#=vR|;MQ>g5c@h-@_clayFaW2XJa`1Q;CZC2DB&`R@ls{^@+hix1R+9sm^MN1x z!D@hH$@m07_X3L{K@$Nuy$cGoYiNE_6U5yF`vCknuG56aezEfyp7{>?;=P;pn&cg0 zC$ASOhzGk-K^0E{EZ)Ng%)}mzs-QhqRb0~w{?0WS;|GC5*k863uML^FUq839*`<^#y*}``B?D?|$x8$dca&XDdOrJd=r~zO#lJxKw(MOa-uZ$}zJofB5m=8w?F5_+&rE3qm`!#)mrF5h3x;7y{`!%fTX}rJOXCX&4LLOChWQ^%r645I z06d1VK&)PhKn$6npW@|m`jd3>L6-{$^pkG2J9ZBJGLYS3ALt?e%+5A=lgab+dg6yW zJKi{nG}#=63Z=idWI>$%B5kzh9vepxrhoY@Mm4Rk+VcYQUikkiw8p5zLkveF%W$GW zaAkG}W`JmNt?EMvz*~jEwkF)rG6!Bxi1Z9QGqZQLypOl}0Swtzje~E&Cg`+6WF8&x zPe1i_-*+P3Wp}h}#KjP0*-BfxX^6Pg~WSO3E{FtP##rs?f#05)kAlH6l#y}LH_%J;qHNXA~ zc;v770e<(J-eZ!!00jIE(O0nKw%!ae01yN_9k83e5v)l-P41l>7V4i*zqI3Nb zG!*;8Tj4Um9BOv2@?(7+D_edC^{~P(_}xFe!jq=ME89kVTNWbWa3E~ zyX3|p=)K~5e&tUc<+ZIB(MavSS2lNG2t1U$2dCf}%XD$F1iw|yaoq+ zZ)w3`i_xkb|1#LJ31{Xx+0uCgnM@b6(a67fMUwvJP0{^~V=+?8cSoXiB-sDlVfY5P z17v1E%;3?`&`T2Kl>caM4qE{tZw~4%RN|n0^GHa zPIvi4527NOQG;x8bPkq;YQe+$vBXiFL2~asohNK$Xnfy|(Oc5;8%I)XIyYRI{<{?V z$v0+UqfI>@OW~)HW6Wwsw#UMoXXyz*$?dD&S&r-lNxzo6vJ|C2ZWGUMq8QFXlCyu* z=^JiSy`CSXA^Mq}+t3p0d?4}9tKcAvHsG)k*JZz55Vza|)trj?^Y1%40(oWAs8c;a ze|{15rja-$pPX+ECTS@ovsZn8qKc3j5Du z8qtq;t+<$2$x|gS;}(iS>r>Av!8q!0_)tqjSwDYc$QC@(61CjR5}|UUlf2Xh`-ieP zA>5)Dp3(UW7Q#l#8wt=8eK^XXKJ_%NSEtx*C$j&G>%YvXKhs=)dl{|d{gqZD z3j_5>nmQ*O*HX#Rje4!GK_WcyGUrw#2 zkwYscS~W^?C!+txt5UF7uODbjNEw4o4BxW1rL;6n8;*RGgnY}9RG{MHDR3UlvTM%! z&!B6UyZ;TJgw&UoqtqYns|`O)KuCNqJVpyG#FQQ_gbKNu&Z5K?E0lNWr#2y}g;T@q zYZ%eS0 z&c)j4%RN+)jIQj!Y+n$Ex`0Jk@6p=Z*Ad2wk&1rk?wyMa@<7?QzTs>AaHb3W!?B*> zGSIhCJBXuoq@H-L3W;?=MsfDe+Sa~Usggz`EV&yh27x#IPeh!ZopTB9;z>SO>Gv@f z8RAHyfi%Mq)=xi{6%tNZ@?V%FFX3p?vv7-pa;O7!3g3pQSMwomfj0v~6T1_~#DA8* zVt3B{pW~#I&wTY?pK?j)%-x(f4*v@A41{bb41R_|o%wFjpD~!0t~vyZCPJ1O6|Je{ zPzLN+UkCKHBx!gOWu}+oH2nAVcEgNx12{ZSt!-Hzbyzv&z0A(&uWoY~fXzSPn_& zt}Saiwf)Zf)?PLn&7@uxYaY5@m&R*Ny9ft$rY4_BI=4Z8ZKL#}F!4?YNQFv!bKkB0 z+lyHFLOwhn!qQA$x3>X+yU(~<=C9@%kmyuRAkD)n zyW1*pU(tuwNVT3~tjKtDH#9@w`9q^RT4v%C4}BID1jG7g&%(`yk}o)2hCGXi+Y>?gx>Lbv8n>r~ z14ZVdYJJP@X#B2S75EZO$G_?W`O7?j^0^E4`9ovdcxe}T_8ds;Kx-0KjOELwJuDBq z?{9=(1}fK*>!=4G7F-0qoHZR8c0v;T$Ltnucs<5fKAAHPA4~H!tY8a%Z&;c(Y$MLB z$%f$?Yqe-O0*Ve``}kgcAN)=qNvnIvboT4F^6hu}N#?5^`Zg>u8M96<;+#;LG67^)vcG z*c87k}f}L2K zw6pveUdTt4XZdp1mIhl(Sg+@nVQh2~JF2Ljm?NdA~KwWn^xnm@?axCkYQZEM@@QR9A%P-*h?^RGb$eEXXWv{zRKgWkAb28W&YLl9NPNw?|E@kz zkz_1?ZT&FNzHnjR|B!OFZoIp_qiZx@6X$7ObOz%A12ITp;*DA&Q|Xt=QT z5qeA^FzVa3E-_G3{A{7kb)?Vi-!xW}G@1V)eNUs+PHlZZ!^l_b=|nk_Q7lP?;{+Q= zzI`*O9r8ymsBi8E!+|nmS|m(`u>GR|BFe2_DEo0KUxTed(<%7O!G;F(t+0LynW#%o z{dil4UW6Z;o{&+c={v8sD+?h`Yk4N3F`VBnFnBu??U*QIXbr1j33%jiISo(~wHvTH zp&$dx_BQBWx+!T){`Jkn2e-BFcY*W=4I%mB@QA ziV#ZA+<}hAqD0O^W*XBus4GQ3%On=9l<|+AoNt8zBH%aLFju<)$0fo`a62$R)M#tS zOlbkIPt#A5Hq82KzQl~cDxLxx5<$bvsbM4Kz`6`3w)QpyEOkH-`COwOO zFNo;(%*e^KRT-6Nm%hVCE#NLVl56s|r)A(6u|=ybA1V92%ri;ZQy#B{uE#DF8s&iS zJUDF;?vfU+<7Bw1uYs0$1cyF>BwR+>DvxSzBIz#4M}<_F^T!SDd$yuH2pB?zaK0?o z-x4g85rbRWFn)xS9$A;=iAPru=YLMW9{9gUn5)%y9!45Kj+(j2N6PYg&9aOf86Vj{ zyA-(zv#m^9E zG@L6<&BF6-`;~Z01e%4-Hc$E8T&jUiCUFh94Xi@g$kfmNVsi&h3x&=hi#wJi>#lx=;tH01 zVjh#!1xd3^w&VN1@r_b(0Lyc=QAfVrqqQG2CFrzxb1lkJS57ZD# z18tX;<%@r(m(`^RGa%xTQ$fU~pYQ5K!~#ONKhDVrbLBlWzWKogasSBxZvDA^og1-W z6X0KV!n6Ga+9s6E0YO)lU5wwW-PK=`glk*_&^+)*pZ7&)bncgcuEdEBK%bm~1_VFr z+<>?K4v4HM5Ko;6h~uNwvElj0c>Lr@$JS2bzs>!?jnF=W{u1~7YlW#dxT|=nbD(W% zc`hkoL?3=QQFPE>&pH@Y9WVp)x~TVU?&?ob0e4psO%8#<4=pko?85;>PA&Nv`LABo ziPRd`!)Ks1wcRKgqHq0bfVn-z?;I~8SbhDa#vP1%Jy9r$ke#@ zo(%f#ZSE}o!h{N(uj#A-E&9XhfJlqdqWhp??7xou+^JQrg;dW;QR?}mH|kl}2_n!o z+gjL9>7-j856+zXV!SkoR#|3^Pm zQ_`uLn$)9DQ`rswu=MoK48H`rt)J8x-gW4o`T;CZO8q!*a6AUSE<7K@L$iu;bhI~r$px2%E<{XR7$Fj* zm;T*OWR`v-%*IJ%4iUNGh=WN6W#gI1?L?$Tw;dS%Du7f$9ma7kJP{j;=!j{P4Kwv# zQEHg_H`H*8vj&Xd;j{(x>$)aLyp7HrW+yyps{xuc_|$>)f+$-)j&EQ<$GReM%TOg;t3cFWS{j`|c_$*RY=#!M*%a#>MuP;9j(eDhyrolilrLC{NtZG5Q>& z%nrsaBP^zlk6e6~2c2oxJ-BFV!stw49R}@k!%6Xm6$~6o26nLw zTE-t}^@cHiQUpS3E{x2d@7zL@%;)-KP;kZ#<|OlSk2M$m5^e$2bPlG9&s;`b(UE_` ztExVMyq`3JA#{h>Bl7enGmunjT|{ThDX!sA%WEx%$u8t@3vlZ zU^=x(o&0`+@ej~Hz{Ii4>z@&!%OiBQcXL~&88A;;FdYz{vE%Otk|WM%Vd{_{ z=#&1<4f+W0sX=EjFi)exAJ`kT`D`>lG+0{WjnW!hQl^$K?EjOV9qDH{_r}t;#9n%R@}sJ+=?8v75%C7niHfIIZ;|+ zWd?@-i;Vw%&I|Tb`TR6i8a2`)@E-_o2CwTV(uG`a<(ZATy@?vN)_{q(U=~JT$^_=7 zY|+<1tzg&`3pT!&2|L7sol3CJ8?dq!=RXnH_c0AD+hEcXP1xq&nDve&*gFi^qqyEh z1Z(a;`=bTjo@GM+#eyy&=yQ~s3nDdNYr#I%*MyyF!Hy!>gT{FVQgb51n)}aa{#ppX z->UjF3;YHGUuJ;I{-JfFiD8lbUz1Jv-+IjI_grl@d^Ew&HQR4>jR$w%~dHTHE&`aH&5@g&%Cer&;x%X2F+n`we(w|Jx|F{nwf8 ze+yFyJml%xbCuct3EX}Io_0TC|C0*8)Pg_y1{3}n3;s54zX2~w=TqS)S@8dGneaDT z@Rt#M+jr7_5r2{jKiGnQ>?{-hGz*^MzrM_XH{_qMwtte@{yR=I;rC21+fP}vKG%R3 z{smR|r51b;(-^|PXDoQi#Pl2k-e|uHKgoiB8G|?if3pQo38CJ$U)nG9C#mp*E%-On zP59F+c_pR$ zKGRA!j^8ckcR4k|LG1su{k0YY4*$Ii1`NY7L|{Pa8{IPCqZ6Vq;D!|o5MT7=t&#T6 zh_pZVzu5lS;|$p&SEEE3gD`ToS0;_GglSO%4o}CYO!}0C#6tIBMS`2Of~Jc|!c$uBkK_(?7b$4h%1D{WAQX-CoQS+&eF5g)a+~mX1w*Ny z$bESq`7;EnYBLg=e|l8rpAMmGYRo@16X{rN(#F@SjD5K3`~QVWK`ct42_yRW5?}Aj zSjN{C8DYM@%4duDQEn5S=`76c^d6_I2;2lZKdg#@d9Nlt5F{NOMmkE*1WC`2;z|d; z(I0m`3L8DhdS=QYaPI0K@KFoo9E;-u0&~+m?y5KG1^Aj}tbw9Kri;leF|;tU3NA8~ zd{$qYg}@9Zm77RiR3xJLY5H;U`GExaTuh&*L5_pJfgI%s2U;uDi)(1tpLv_oL>|Dv zDO(uE9!uSM9*(O?9mV$(pbR0`^`mcw3Sj6$fB$X}00HA|a^`4joqP^v)tZ5o|0Gw< z6U=CuoFm3deto3H8c&si+&V8GY;IRX%I#-8tiCluy^I zUNqOQca)7c)@xuW6&A$vugO20AWib1N&EPomYIfJ{f#DN>WeCcqj;OVHQ#EIM+{6q z8N?d5kA8*Q>H}q0a)*Ss9)M}Tx7BdJt%m3Fg=si`hx#{zZPnb~sTyl;N1w$_-T{pKZf^Ipa=0xMonizH(uN{^Oz`Hszr|cCK9%E%z$(;llqPQMuuxG*NA6Mlp|H z(9twF%&~kS4Yw5IkgBqqz{d5%Fw~I+C}XHYe}9FjG{nan#8PJsA^~7YBgS2B$33x) zRJz71?8(vNjRufPU*)v~kOi)5v>IbOW&jyIKeLR1eZH*y@^b0U+PxYkGqM);RaRx@mjinhIm;wx~52AHQDO8lRlVvke zq1=K``a!H$LBKSdqCa!Cy%jy!e?hachWuecG&+n$bctX-osEihPv{%cYqU)U<@KBP zAZlWz9_IQn_QUU~1KGLR;Z_&N4vKSqXz;7`IP6oRxm}DR1?cbgU0{bk}8Jq(^hQHLtaBoxtPCi?SuPXSY43&p8KAM z!4+CNJ{*7bumh{QG2yp?4*ZMX#;47-VpC5TJH@#!nrj=FL-_gB*u#~xPUgDOu^_f` z*48mqo6Gw{e+sMDadn7>SblF*c4;U9I98RWYr|J-SmceS$O3N-3(4_kkd1}~cObu* zGy$>*w&~+>wach?wj!glE|g64>r+f^81k7$f|#rN$NOog29(WR-Is2laPI1#!3!FH zgCe@`tHi_dlklUz^BnoI4ooD#k|vTvLx@XWohsfER+YMv?w}7!@+oC4Uob$-gjX^@ z+vCgWh)2X1K1}#kBo_YQ=EC9Y>97OeFi^1rTPiLMotr`%T*ED&al4Suz`O6$r;#i} z$y3^|f&_UL86EM5znO6W!&xJ!0%V<3maLPQBA1 zoAUD=+CoG3sGF3}XG1r}hHi?5ZrfZ3x>FtKI@aK52bkoi6_d!Uf2{>N63hEh{9wyiyML5Oytnft2yxjARGDPzJn_6ArtS}25w9E^zTKa+ zl5Kq}tvJ4g>^!lSZF&u6v62=hmJh;HJn2R9O{-Zirs6_DYZV!N8hS_z=;Ji`c#HW_ zHV%+?q2&@dr(7Ep_74kdNt?*eVfAA2sRD7D2@y#m$iL5?V)*tPbAQ?t3YTMWECc<~ zY9qU)ehmJ?7SslP14%+duD36U+EMKD8BA8z7wdOjZ}n;)INjiB>k`_vM(aa)<64Zr z4@H!jROK6q04?JLeP^bM53+h@Z<G`z5!Q8+A=B_Z0-(JBTM}E@`i>n2g%LL0l;FF0%{ocWV z$Eu3Ot7%n5U~XcZySj!9G&BywA~=_s4>1mWmV&cxDStT3@ueCknY< z%*NEj`c@)jMMf422%BlF4G8_lk$Tdy+7%g9yC3{@;#edMP&a)~n+b@@pOdE9B7vq2UZdKnM9S&{J)qo(-ku1duK z7fI1wH3wm~azzH`vsi*c+`>5;Si4#ISRC(9(2pKQx>dyopGzhaa$WnE-{9|yJ&s1> z1C3B%b?gg(klp~c+0@cIkWq}K4exG+W5-wrmkVBtzqN4J89bb-zcPl#QL*#+Y+rB| ztfSYPM59(CIE}6a&Kf$2*nwDq_=6Ba?r|C+3^P|SxWZTZo5fgRgw43YeK^OK&Y0!q zm`$%3MZ{K81waM&&-){`>qn1jLo+ayP05}XGMKylV`8pR9!$o-2$y%3dx^^tXsMgShtxS&!+G|Z^bm5npMb56B4R@K@qi5<(uy@x`UB5*WoywadYDl2_`axqBl~95 zl55mL9>?+`STeR zfa9s7iIC5G0Pk+t1pXruts83`F2v&-M_^a9ZoOXLk2_l$qE9*5h?bt+%e8eC;lc~g&pFnc0#GNz+?vbcy`5Yl$3+~Yj zloop+FAMnwUPOuTVYGr%Wzro&r$3Zv@QJOK_{8=PU2@+;=hHxW{x9a<1U#xDiyuvZ z#<0W=OC$wQ_xL_?tM9Gl)TvYFoH}*tlpW+c z6NZDsMv!~b5UzWH#)X_!n>q! zDh81WRcgV5&`el*9@tKMg(vMmbO3N>%#3s9{_xl2h8B&;+^j>Fpdn%W=VH?Wib~Ht znhWR;=6GkwmHQm%jd2~xYxvFP0{vf%p}UnlIp4YoPJflHn|R|tZ8j12B$`NRqY2Gl z7r$`yc8trmrhPSVDCh^)tV}!|^H47bHl5_0j3kZ}sXzR{Q5+}C4CVYRvghZiP*TkN z6lRP$^#Vr-Y8R!t>`L$n`j(LkP2J}pu%E;w>n_AEE~0Iv8hzGNPi&-+v}Kwof_+~* zh)D%+L!58QfXZ|AdOc_Kgkofd8kQCNOq71Rc%t)%9F4@TOV}i?E;U&&UleP={9!mf z&YuJT4pmfKMS&iX`qC+^N@rzID{%D62Eoz2UZ#5_LSlt`FoFeOheJe`;E|_MvQVFJ zH^3?IM!S+{!5LU7j&{?QWuPGV8|Vpu;q(T6M(5uQVOBD`*g4Jp_l4 zjv)XM_+{o&DxwxkTjIl4fj%Bq5M1A}N77Q_6 zFxE26ID?oFf;!i2l6J_O>0x5-8AH-6I#2htWTr# zbG}`^1?XzhMO&NIoBZ=C|CHj7Fdz)}JU!T$0;Eh;*qhxiAp167K+OCSezeW-Qn>%= z+4Pn6`jk=R4FBN_AT2fU3H_kA@b%YGl_VOFApGHZNPyPr5hK^BIH;SS0mi^$0^1E2 zWrfrrjG6$ro?uaswY8|Ub`|7}2#S!|g$?OFQ}r4r0(v%|B~8yfnb?KU!h;n0g22-O zt2)yF6%@U78VxQWnXG0(NWwnAOzoku6OQry)5V&!lm})W4ya~2yBt|QwB`@Kt`k5O zm|QlCe9_8+9Sj(2z^a%JQhw$a7>3A5>Uvz5AP^g_h0-_!!>ea5Y-oUwp#Ke0X5*wp zQPb>vFi*JD9e=}7?dR}E_?LR%!ZxJUDaUIvNf6ahq*eGk2yt6&v=d_gxkYHgzdJ>2 zhExxVVeFlHL3t+5KYIZf))id{I8F*N?vYj=!Tq*!0jgi|tGt(=h*r{`1vWZfK|mE# zK$Vb>m8$6}8b(>Il@P|#@ZGJPIRw5+17E5qSVYJwIt$IoR+OwFgJq=%i8lUHn5$6J zs1zSan7oDprIs*38>z2~4ZVcZbTs;^>j4K@V84I9+POUzL2Hm>rN-e+C+<;!O>+-`>;Q!j2 z%_OOKX{Nm|I3%G^B4rIhTc3JSkFB6u&0di-WO+fmW<;a{$yTNUjVaQFE{JbJ_!}`V z{kiu@#cuV&pqB6lHN3bDtd}o%1!88bnt&r=Vq?b|nid(DWgrX@d1lZ{UtbxgzOE(I z%n)P-3Pm~J56+79JDmf{Xu>J-hB|b|6J7ufqqvA zrHhE6kz~~#KuTI}guE(2qxv$?g=SFdY0L-uzkq!##55%7gEDEC1D7F7t-ik~uCBa$ zb@o{miG0U4!_RSMnjgMkyE+8;ZYbv|IAEz3)gb-_;V5^j>Dcy$;~6q(?05GBhl4PO zB=NXca5w{tOen%hEp*Qs)rY?VYF5u`IiLrQ*8`d*HO34mJo;#3R~;I(_sc7xm90^y z0z{4(LRi86hL{po^Jerga597=p{`46$e?zXGJ0R;reXpB~19ll*F@-~}c>QWPUnT2Td$voi^ZBZs ze$}L3rSsL^E}u9xe_5Y5^>DJ%aMu>7pkwS;IdynwSkQ_0hK8;in5iC{4tLZopL=#mOO;p%0hYc;n zYETM%TtXdakB9r}aG}|znNW$iYVjcQIuof#B>8ja_OfS9MkGEW!wL5fgf z?{oDP_j#NkIzCC3^odgs7UXu#>o``JHR1?yEv!(O(mdXU;nDqWm0fZ&6G#@>Sz5BI zJwI;}^#--c7dxXKY(Rjqr_5u()=X)y`d$N4u_Bry2riBml z@e-_BGEoPTbkODAbrP>Vh0;=umlCW>%u4%+5U zu$b+~WAAAQ7}0P@qfr@Z&Pp`v=hbY?qp5(9rl>!oc8)+oRM&~TXw!h6pB2{7`*)Y= zd0A?&qo5{gX#yiF;03Xs#IeA{lE10)H&6a*@&|H~Zxv#Y!L&Ro4c;VjA3c>qW~fV9 zW4yXzH>NA-NKev`>&w|Ua{a9a`#CX91QwZ_7CfAuKlkAD6lIq~7fDiG&SZDBZN{FY z6SMRr1#N;9HQdq>5*+ByOwue4Tq^Md8mF_GpV3VuyOc~NX=k)5C}o&k7Zmp*78L$C z_>i8ms9UPFGfUkq2P<@JtHBCi(>7)3A>{mR(8kRgYY?aH7Ht{xcO`HFu?o1!8_oRn zc!J|Gf6Fmbp$c-gWveR_%`84o29Au;p2ektfJ)L3igFhQSjtvA$8stskDWd`j&*=w zXkY<8QPkMaK(Bg^q6Td!lmus^Bsc}JKeLq&>sG%|ZvU4!o6WupCM~m{CONCviZN~C zgFS>nX%ej(w8_loVjDt90Yafg*S@8W*<5VRX4>x_<9wz(4z%;< z&hDn?^9R`d78P}fna^O2)0PqKn9mtqF`sYNqxO5}@1|u(o4=oSX+;t(=I=yrbbZ3% z!C+@|G(eD7V0>3Xna7CX*X2-^H;T7yH%}13_rNP)%-*LaeX^d+11pyn^oaf+X`}fE zZT9gY_P}K~IOqXMt!wSWEd9URz=v7o%q{cd0h|rB)*9JnvSnB+4ni#=Jmk9IGJC%S zZ><3We2)TgP~yZ%TNSpqG!!+&0$f6fMInw&)y0CuorsuDX#V&J2DSx`Wr}RoJ|b!% zSHxH_6=Fhk9spjGvkvJXG%>DHg6C*%5*V4_30w`Xb%~o))I;|_laz!UZmqeUZLqFPo~v3 zRS2rpyN3fC^!mB?`|wYWy=Yr~)5){}|GxKP@!9g%ui|M`6BaDT&&Q^7^j;nHVuHb5WQi4@Y*UoJFny`-VJwR^*9IT+}!3@QcSBg+lkWA?RqIOSSh0&a~_Z({>k&psGoyAr{;|f!GMS{xjsB zIJL4;uMovXOIa7ZfQ~tm2M(?m+WSSBIPtyD>_>XjxIgKG=0JIa5Gm;5Y9g+TD`L@r zfb3E_`PH<8q@f^UPJ7c1qK=}5dXv_dSQLX-O7kc0^VqM};zDMSxqHTFsQ?>wl`RpP3Abp8;^I1{gxJ?Kxf;RMO7nECL2^&c__C=4D>|(GzBJQ+hBti)MUf@BN$l|n6%ehXYL8nn2IhEm^q5e=?p=E?% zxEFRu?8b(TG#6++20#CJcOQgZ?YWK=MRf+`Trk=XEesF8oTH>+^l6)$p()L$fkcIPV7i2%19{^~F2{XBB-yf`O;9YDjd- z=ul6rhUpptPMHU|cWvPMZX@;grU{&kqJA(#&iYCBv!I9jtEl3D?U{|B1qd+;Ld8wn z-^0y}VQLORK9HnCu1(cgq@N|ui?ZOSYYZ0vM~(pjYO9t9>+{5Z>?l@WM)emiT$v8G z0gAc`6B-2w2FG>vdJe}L^$(7P9yKvAVKX28iZVDkt9e$y?L)NJ zt>q}VUrpz92)V{i1>zUdIZg6$1ty4}-Vul&SEo^*4b(r9s!^ZqME!sJ3F_H_kgM(^ zu`YFDth#5pEDAKj|31Bqv6va(YAnK!v^fwO|Mc%O_%Fs}t4dFizaZS?2e7t>V{jE8 zLd#tE$XC4%gltWoBq*ixEyfA-%cDrhi%(`XgGqr7P^}KRPD7WJD~pp^sJeg(0*4p0 zpM?P^CYf1FaQH{YIlB_}wa~&e{BK0zFU5KdV=^X57H1)Jg*;MA6r0aiLusTafPFRx zKvdjLz%ekRp|OMt;DG$~H=qi@hj-V&N$rykWYcbSEOzO|PAFm=77FG`@~j|Nf$j4( z$p#P4%M;Yn6PdM#XGK0mD?>;6>A=j5U6L7+T0b1zyrnsOUW;BuCkWT4^Y!|acMHoP zP20Vdl|aaezzj`Y=itJFPu5+7WQ^O!p_?r`=@b~`QW$_voggN^TCT;U7P(F_c?+1a z;6~tMw9~zmwvN{9%`NIbQNhy)N)-7T?EBDG-SR=*;`s?^al@N2En5Bs(ee>+dX{IC zo!KOqJ%up$ItI`KAcMH8NJAHnMBp?E60#0js6n%~(}RR~xo#fSx#kCGePoVF5K3Yls=`4x(4{20YivZzxRBi;n0-S2+C*&FOZGj%b zD5@I3fDNj9Z)tOo(~r3x>S-S2$4cBd0@~~@kfJrQCt)@kx(K-rWusT+(wcmOHW&!SM=-u@=*4)VL>kJIX>T`F$A-F?hVad9$kE6yL%wFyR}ZML z8{3ScJss6_FX<`q$SQ3LEoINjs40=?)Ghk!XXb0AZH|MF+65qmbYvn&Dz*LdzN>MN zkhBOHQ)4ENK6$Dh(zPD5Qnv{)#hr7b1aC>v0d~q?JAz?l2*P$4!hfS!r6aEnKE7G z#Qd1v1spjVbdGCdbKK_0kpyBy@BSQ{W0)gHiO#V#Hb;L)j@NaLmxPv`hKHpgv_9C;Ajfb4>yF|ZGF zcjVZib1aO_5%0*6g{UNG<%ifD+eH~PM+J0_vkQK!|Bf>2beZc>#(|-L zBS&gyX?I?1j@ukL%5;tkhQ-t|%#ou(=ctU$(ch6H2{C8TyT@Z&iFf2E(K+VC*0EjO zA$9*>*Eu#Ihdu0e!qK~z?J_tH0IrGiZZOl*vhH6}#PvauzKbe-@@VpH=%oAx4YACF zD{-QH^k%Cb`s0@KtF1SB%qMj#7A0nV+fe@J@HR9D<>BGA5Q`z#3(eP|(}{attBRw} z2LH%LEgBy>+z+BLRZ9(O#EH3_Iw9A@fsl;*Kcc{=K%rzD)DNFx`1=}Ylt$>Eq8qwc zH~_1t1LGi@1Vkal0mOHgP3 z2g_kK;716sOQWvh)W0WYnYBX_dxq{|lZQ*EEUGryo*;A~Y|X=+=O9*VQ9~Z{p@i%i zSFu<*LdAdh1FkCo5}?Azm=C$!&4~Olsu-J;w12K?KZWh1>8KGO%V}Q_YwLqBCBQia zfaD7dtxfe}{S_GG?3o(+YkXIwIxlkjyS`+?R@|$kSwPSTp3uUEHszM zjk>u>2Rir5sdm(aakWNJ^=u7a6hGGaKi&Q!aE-Y4!5C>jRlSoC{s#VmJ?PH09gApe zB*W#yZX^|ezLi)Ur^b)t^uYFCZGwa?rjMJps{=}QOoO8y{LYD~@B?jOB}zubk9%fs zC_@HEMeI~5>nlOapXH(DgSVn(!5nB3>q~r6UoAV_>`v;C&KNBj?j({OV9R!Qi^t7x z$J8gGcM*hTK@d({FI}F9zeyGMV+Lch0nx>Wc3T4M$qW*|G%hAOectL}cz-mJkV)b+@IY-=W>F71-| zi~6v#%~~87>b%d1q41I4#?QnS^Anz(nP_|aa`fXwN83ecyT$ax{W`|gT7CDl34~)$ z9X%n0ov8A?PN>-16nlQUXYxAcUl||9ozO$02dP6kM+?=%_<`O0l(W>8@2+ni=Dxc5 z7GLn(lM&Gy8#Z9+Sl?D%uE#9~&6fgHHRM7LU-II&IecO#q6H7ewuNmD-xZV4dB47{ z6)Zwh$o=*QEs%7&oi92j8U^?6X@vsN@9!8N_sn5Y{s5s_K>lzo&H1i(F9d(sdZXqK zn74cj3N2O38lwCmi~J#rIL|u@f9Oj7P(FdPG;)`FVYk}R>1VkY-W#7+Tb_O zg4%-gGm!GOM^OFr0XW$7-P1H!B!16F$h82oU@^Ildg;2&&F+P$pth(hpJ&z*@=6f3V?zN9|&2WjLb|E{)-$njXK1I1wOIGMv~_ zT8aGbW9FvTZ`2E~*np-uQL3wbuywVOMK(Wfnb7#%AH{E;46It#v&rm_G?iZ}#E`|! z5q-H_7F(h%cjcRoxte7Qq30*G9(M-};U#RCkrhW3zM;PW#2XMHz z?P`mTQY{FA>dYG;P3=&IyL>ua%WV^|m2r(r66(eUlB_RAXCOEz2Ob6$MqTx-b11^! zL}^j*pJ(uHG3=6&Lc?za-gH8v)=-)hu>49^~8>qkkJofm*S0B4rEXj6KOc7>ho zX>R;j%b}6qwEwQt#-YtvO9&v-cE2EWZT$GL16GgUbUTWlK^f>?GChUgb@_F}+ zb7;?C_lza9s-QbCasde|)r5V>7fihK11w>vtFIL5$4=FLRk`$Mh~Q>-%}dg3 zIoTf+YYbxxrzG0T2#R&Yfco9o^Mr3~TEL;U+|aBIVQ@q;px86TPe=`1n_(kwK7WK< zy(YoHmMLjnhi$eSd~Zuyo3@PT;rMbd3|%ZCg3-_XBy8ZPsBkx}aTW?49_7x&>i3OY zp%M|jGx4LcqqZi*?G7bFRDc7yA9@QwjDz#-d3ZE7kOq;aL6^R?Jb8g`{j#ecT&*H~ zk^CM>n1A_t&^MSDs^1t=Ftejz8R@2oJrd=ogr3f6J-Hqf?}jUI;G5rb){lpSI! zBHCeeV1Ky#H{fpBgkLxD^Be3;Y!ff#q6v^gizfbf)Fz_rL4EkOlQU31Y5Uxj#Vj=c zZa`y(M|osYNA+v}q0a8<^uLn#1Qh~3c}63rIi?7X3ayg`nHu%>&&}#1;R2j{{=;3z z!%kwR5L6pXA@^I}&Q6}k`91hb%qDzv4)RrDIRhD%;t}sA#7v#qjl;@^GWi@aYI`1 z$GMv={&;PaKW4jUSO?54{&+=1_@l3(HGeFAFNQyYHPVj2{fghg9|sQJ&XFZ#tV?vK3SjB-e1HD;W0T}eh}_@ZWsin|2kNXduY%#-=gc&YA z85t~gSc6(*e`fJ$sLOAS1}6*@^_MJ8R#>MMVe-H3uSMC`!axi!ykb#X$k6+{bMH7B zMr?*y|7x^mUu?~XxR&J_Fjfp*a@0yWV;Ow+Hz-dnJ5$ImSDJ1qmZ90J{yM`v>9siu z2~A_Zz~Z{*I5bWKGE&b`o6s~++dhV!sLCBq zo*G`|mm()6G3qZR+0zTMgDqw!DO|4T6`jr=I)w1Vm->)S_vhNl*$<1Ox43pv>G zDVY3LJ$uhn%8(xFzDeMWR1X7^g?{l+4>N?kEgzBSI&#DSA-rWT>ERabMx+Za2aVMP ztElVH=LxF=P&`03C`Hsm_x zW^`?s=~{-3(r<2stpzdxWFU)R)B!QbM&XK)B(`BXz8`?800JHA#NQW^Ab9N9(8S62 zd||DnnZw2j#Z8L(=HE`7Xwv+?1!9bXqw(|bZ{cV1I6+DbKBnnTA1-Q*k4rKIAMd}Y z8LuHim=14h6CYb{5!(}bB7N7rZqcV6t@}jzBJt%dWvz`T^_LxbefLjm5>DGKOCaOf zh~?V(?htQAN9tU6&0|cN@Z!>6X!7vbDpvb5gtYH?K8Ak5ZeK?Ub%p-=;S2h!O!E?u zz@5X<<$TtOg^tH2fv;|EN!`c#n?QD`0d=Y4H1H4qT>}rgr055Qw!t(i z`5x7p@G__*OI>xUpk}S0riHW%xe|^83bG9fN@dHAE}~!DbTkwg4Z*^PHQ|-}Qzu=E z{15kTo31TV(DZ!(jUQ$H`;YW@hv=V&(MJ&XX@WPInieMzv{_7Gw)8aFby;hozx)&- z`qhF&2NM`~Lz_gu^Twkv0qkoaZ1T}q!832RU@IYhD0?CvNatKIzt+*_Y+32qkE3loSze6#7F3eAE*PNdnP6_8qgZ@Rus zNXg^!h>K#i?P*}ve{g&Sjsh4#nWt)=X*S1x*c)clGxTV1pR3`1^{H66QA|DAPrCGo z&?7-dWrVuj0q8@6TA}u|qXBHQsnSoJ)EK@GI-bRjT0J?xCZ1?`Q;PIMm5xM*c_`z1 zC;)9(pc7*1mnj^1t5wbVh17qssXvwVXQ>3%j~L!Y(>SCxjZ|tHxxUv{waM8*4Z!1V10e0&=eMMP){dGU|FMXFVRXruuBv`9jYJmyAJ#t@ zu?`G3jHzFGG7kRF8(a6~rD$84|4} zy}HL!g(bTGrdeW!j1x%k+Qp8E6WwZke(d(vdvz_w=*tbQ`V~H_m3gPd`MNg7XEE^? zd%jL6K~0Zo;Qx4h=Fa%_@#!7YjHb0#-uUJx=M(X1fsh8utnuxCa1@^2?Av)g&?FFjNpUGi#g=O zX(*l79tzOc*!9kFXw$!b;wdrn(^mBBE6^=9W(wIKcV zw)RV$mk-H|QIREq=gV&s1P9QHH+xK&s5%Gali*rK$W_Mcz^Iiyu*;FaDS_`i3h+CQk^gXBi*A&v9O~m;8bJn|B*OV z`U>lCl!NcO*R~q#-_n1DX2Ab=5y$@&-~0g`-yCK>x!*$HVsNO_WPOXlzvLDJ(I0-A zh$)dg=XUOv4|`Ut_aI5j&G*f|O{h2KKs4nVDmZF7t_;ar}MgL?MJsIy! z(G!rYKZ8Y!b{Ht`~IlAy;Qh3)o_O_Swzqeif z_GtO*S^gs_-}H@id4VqfFDd_bNBJgfE$eOvqUEQs{CX)rSC`+U%YP!}$2rQ+wadR4 zE&o@R-y!A4>hhzH6TDrChd=ieNBOaK`AmE>xH}QadV0~J|GIp+E?*(#cdd2w-!AWs zmcNMQd+Pr0lKzkGrQ65DpZj-5`KGYd|4e+d+DEd!LHA#mFW2QOr2IHX`MGv^Z?ybH zEWcd$Uzh(um;X`9pW-M#)-Jy)TK+wjzwyp8_FtFpnIiBfcKL9${O2tH znePAB(*JXH`9V_t?~d|K%Ibe7d^7$3h2=lj{nzD3>+)Ah`Eic&bM5k((efuESx+tx z`qt&kb@>V@e~P30Si8J8TK*!IKVHiB*5&8u@{dXRT^~96ZM~ z-$n2@2oH?EqkPjhcK`9s>VIeC4kn&8mP|Q0i;qBJHz|9ElgficZqd!Yn<&k`hX>-{nWCk3laJ%QX)?&1!Nd>8NRuD&5lH;2lsoVtyW2x$*-buV zmrM2|S$`Uv-2bKYwDYmjWEVVe{>v2oahKK0FYThPtw^HD+jWz7=q4k0>Cdf^a=d?e zv6Nj6=KSr|tbiwZfy47=8S0Hhal)gktYyR|r-Et?pyz7^)(sJ`P(%CrOayKd4 z*+4whZa3a8m;4jT)#J!Uoa&&PeYcY|`yL+t+_h^oo)YXPAIEzOzswm-oTr=o3m?F* zl>3t@w+?&TJQ5j9e8?`B>_@V`8%R<8ai`$-Gz>S2o-WjItttAL6s3%6Z&QQopr)cs z-Q;Py$u3eZUCI%^W9>!{A-e`Pc@OC*P4L@Wx7t&;nk=Pvt#;7A-E!D2@A_P~{EuS6 z@9TU768GaJ;@?Tx9_q`ltj>O6mrLG^WPJ_s`|KCe*}fd8K;nsbApW5#`hpZ?XMc)z zHbMY{i5Kc7b9Ixy2)O5)a%Fatd+c(_Um{um4)HrsH+hF{@(k1@ZDWzvhX-&V2 zr93;EX_t2qA9!<*Zn;diJW$FGHxT>ncGK)~$;TlH7s~efphwc)(PYF3N*r%`1OJGG}vne<*b@i7bjEu4g#%zAJeL)gT{~PWWK$~q<)I)bgFjyb0@6S1M$jEi;;}_i>-`Ziex=+;81sM7i^9rF$5BCli|-cMentX zUThD)>s;mxCJwqv#_&8o0*RMOxj0iUN6K+po^O{+9>8)T*I)i|JN)12!UgnXtf)?n zqNgL){yZN`{G<{;e>5(}@WtyJhI;_;lM4LI{)@&>A18ipb>w{)d4U-CRSIHKff!&V zwQ8?F_qr7tE02F+VWnW6jg=fE>*;f-uKrxG@;YZ_An^^Ehy7R-=WBbYYwW_a?3w7Q zV%}il8CMEk&g3JI_^^~z%XOn^QjU0;YL`ncN3#AoHoEgOX>=~QCyLG!=K88Bx(hqb zTInmdnXBt|<_spT9xY9-;Ukb(CFLqix!0r|o4nI5mwY3V^>u9W9^GUuD+(kAr04~v z=mfh-<~K9=D&`C(-lm%@)lCu(e{MUL6a3`Zjb3e+O!gsJPvfFG{BP-Jj}FpkPdxm& zAACR*9S8bVN3hMTyBcn9xBEGgXt((a>1v#AcRybGb03tVJ=9Vu$F6>1mrLG^WIdg; zRE=)+zpN;b_=^-BX^Pg`O)|gf>Kf(@CeGGPhWH315)OZEFH^3_Zt`QhT=G&R>k(Hb zPIc2we#?pii4iIK?`4`6lI_gN`N{@C<6@xy*DvP&kv zhGcy<8pZjBCPD8e))h$nL`sj7(waZcmGb0|FWTi@e`W4q;@?IIe&_Q6x|g!28HjJT z+kMI|m;5-A^^GK@blvQAWVC_A>xH%MU8*~qVK;f6&01ZjGiNYyfNt^(-Q-15?k!Vp zAGW%6SIPf1l9Kx)S-*izzVWH_bT}0S$PrNus!Y*;Nm2H)zpWa$QkXO7T6H;lnYfyd zfa`QAS0Lqx-v^{5u0D4iFC`fqGVxfJf3l3;%3~rkf+$jy@yk5 zPa$%ewlC(HwRMVh6WH}MYUumv;7kr%2?DtU&z5-9Siv8{Jr`p57W&`6zLoEV*z;68 z8j0@wi{*>{oT-r@uL;Y5i(Y}ga=hYK?k5xbbdG^9$%3zt@MUQGVM94=4M{e50vjBV z)lF>xrtW&T6-<$N1SeH4N_#m^7aJf+qp&VF4`Q0L&z{eIy6;Wne6(q$(wTU?6)Zy&98@?zlB_A|884 zmG)aZ;FOhLJ^Xc8$1JtoR_MtiPU$#)i24x2N1fJLwqu^j;?5x*&Cp&E$nWftB-6g< z@DWN}+-`E*`#sq>j*w>O*V7BP5aEmlj5pVT+D+7?S2J61o*47g>7AtdXJ_e+plnv3 zM=}B+1@wp!r#F4};*k$=ItivBG~)D#$tZv|2v%Tp6|Cs^2F~gvH42;4Vh(bIQ1!<~ zTai5nV~oaeOR;|pUflNR$bn4wr#=AVZR=sN-w6Ha^Pxf4q=#sqs(oLxnZ|9Ft)Hg+U?%E>soAqeyM5S?n~pMX%wa0!mfBsAkz&BStd1QEZY1sgoP36cAp2&^^! zMwyK|)HYA@g>o;uw<_*E4ms9$f9B<3<=U4i1B&AKQ+Zso2!XgfnVUfp&VXBt9T&Q= zn`Ne7NALT?a4caUtT*M^piaXRosKcJtH&0#8l`X}M@HlCO@LzNM}|$bAT91;hH~eZ z8EDmIegKQZcIn`nH`Rgyv7wNM{V?^f)98#&cYSm^8wX;3iomMMgE*3dr~%L!u%jb( zO3t<^{czLq38Wv~Y@AyDE&g^Y{|X`WC-%#$y%0B`Esx-m%KhVUD3*JOEQerm=gu6`NQJrmK*Apg8M+i*V(;42KQ z_GWJL2AX&u2QcMJYx0HqwD;w#M!?k#k*j?;dazR35MSlK|EvUh16zrxgHtu4iiw+b z(w>Hc(eDTs@62IYc(dURA&MO14SYIq!??N{gd;ow69t_6cGT$2#Mt1L+neFZ#1QjE zYV5gO{M48$K3u!ixH$C<+{gU64R3>wF?RAC`H0xbYh_DV|D+;>V%dTYh)3{uHp~Gn zg2Pn7?VM0^%=a;fF?BDiLyW1HP>Cqi)^LZMZ#?|@{lzzb06wS3>a%GC@Y+DT?6Q~Zi5F~d-O{fNWM@U%^)ZU3gQ2X!z zS?-r#x)$z)pn)>zzfY1sCV$904Cn8xnd@Wl?A~OUWj@4LGeNAvr64*>e_HLH^;eK4 z2*HO-h%rUV3IqQx%-mQQ_{>bY!nBQm??Hj0D!r&M{xA-_u%Uez5O4fOjQHeZ3j;gY zLSRd{3o3U{A42;82CyD^e1ScMnVt7d{;5$(l^eT7GL9Jbo7%0%^+>0}5(c zl*2>1mU@s$>J8okJOwojhA|L+Fa~$c%Tg-WUjgQjv&H=|ooWgL>k2au7cw~HrJy6i z#YPG<*LgF)BQ>DstWRF1eKImMx-a^+q8zl<5V;z2<_y$^>l-Ma##jA1^u!AX&;dQ5 zbwC;Eh}KYXzJFhQq!ZHl^(Z1-%`rN6F;p;P8&VMmf5JKjA`ABm36W6JmRMv$`4i4% zejt^2pztc=E!ML}x92ZSi&E8kwE@SL={_}|88Pswgcky#K?)|%odwmE!B(=!=5iCA_XycmElWhq7GFPeNV`9o(?ujeR?Ny zQ*@P46)7R&IGe;_cq_WAh9W`=D_)z4rt2eHce_MYJp^< zdoq~sikmSGfS6>>vRN!^cbdW77wF4O(eW3MN284`sM%7qQI4Xx-amXT%FUC!YCLb9 zM|C%SuAJqzT5B&kwFX0T)zssx9&gU3xmH2 zoR_46PdWV*xA>`|%%CTOpQfDG5 zlX~DP)emWjhO%C5p%03d<+}Vz&X#yb<{y!xu7%R8$A9i?#3!|3j5A1=$Ha~S?HMId z>%Wgd7dQGZ$VZlPF+oPT<|$RLyS_nHL}aiV-CKwGf>+h$g%ivs{W9H2ky&p&sYg+;7vVL(kP*;Ze$?Q z;la^M4)TWW_20q+fr-X%+u5lOb}GS6CE2M|rW(KK=yAWh!Cd6+br-A~9_rcI6B-o{ zztIi8(2!%ijR!CGHmY3QQkCQhjXeg67TjpA_)&PL7o_%ZcTNQ;qY@vcikxeksy|UH z{~4k{%*;iW<$3Y#G{c1!NVRfAGcILvPd^Udpa{2fPj4p8hA#gldU>ILXFFUOj@5yC z`lmwBTt1+wEMI8oe_8Y+8gZ3PFy+Smg7bP z|6$NKILjk>Lf?<#;h=Bh&oTuwE4f-c1TfK_R% zM_*|%f`MQKSV=Da=r_@D3)a`5VO}nVrCK+{*Vs^=>qFdl zFC4iicf*44w2O)7lTXJZGO*4&4YE!1kG`q;OB%m`e>4pn_?7UFzTaFVMHC)|knl5# zgnx_y|G1g_<13qgdA*QTdxJm^^WB3aZ3 zz)o_whm$%L`$y|5in#d4O~IVC-oQ$4=Dva7;gWQKk2`~x&?Yne@2HiwlFWm?%vI!K zSh@}mUDzJwKd!jX6B>@wC!caQltM8b1C8m2ToO*-ANddigI=-fG`?@r-#>AD$6E4B z{T+s%u5tNktKeeRGdn+R!>~^4ht+nCJ?`FDf`sj}LLLXo-U8;r;{7LP{E(_ecE7GZ@&ioN0%Jm(Bk-2B`{M*}@LvaItk{}|H z+hJpXr2!lsCr!+$vVCSCgRWi|3ad)NLo)*CW8m0yZ-ps|qn4E4ygI+}+mpP3BUt@m zLCB?G+D32lhrYC3SfwJEOP#ON=f1Qp5Dim5axY9msiJt#fi1q!_3_QCQ8eHGUAtlK zg&VAz(l#KsfBAs}pEv$;l7CmcC+!#h4SYw+OZ&7Auxgnfg%`S)KqL&GD$?C6x0uV= zZ$S!0Vyt+={nhH{+NOkXx3*Z29{*05REEDpq?XfGOe+Z}p@@~1upv(!F7uO6H(2EY zVF$rHv3?r7^fN9SD*AFhieVH2m|_t>!NDMk2R26#FbG8{470&in^$;q4ox|RHD^W6 zkNE`o4MB~HfX+S_bAdA4oTiYyJk zadiAT?%#yIU|oe^R_a(R$SMh>eH>=L2u4^)v4kmr(%%O|gHt@sJ>CAhWzm^D?GhN) zqWb+7w|}_)P=XJj-3y?Im0wnerQ_e$mc*(1dtqI%A}=8W(*qj|ucY&KCuqBtoxrpn zN*;LolX02?=~{{l)-{~rKeHe>jR*WNcM2AgA=kKnB0^>05cP|}S0iL(Q#rhy!7+Gs zpS47bt)INrgLNIG^M=R>0@n_}fqt5f)8L(~!F%v~Z2Y$g-Xo=Lf=8h-qYID(X=$;n zk)ia2|F_uI$WYIO!qBKLzR*#`Th4~5qp6L7QQyK7NTZ>4k$LOcg^QK$wb%C#_b`gG zJ-irsScPZafc`;chTMm~CX6lu8$j;G=ZkieheuSqDY3O1972RPgGq;1%R3}BGXfP1 z09xw}d5wK{_2kZ;oWtWk5AVeYuz@@%R=&&?+CGL)?&%+KY;xARr|VOfIHUyj>d9P- z>pr+#l!>;=8xK_)CJS%QVXxbV6(yL*xH{O6%TJQEH}*HEC%+7Riu1Xc(_9o#j|k>< zMk>Rgj6D!YY5V$+oK>g~s=fAu_vI`t$CaxM>ZX{AurTM=NnkDATtEvo>D73Gz7`L} zPeFlbm50=~O921?d0L+9nCyk5R;m-_QG{*c1H#wsTv{n!`e|{FmHN&5w8XCuYu+K_uK>_>4>f|uDRkYd{ zzKL8z_ILe9z&VOgo_h8W&E4hB>%jL{Z4Q!C5`QfsL1`dgliqjC-qy@6%I)3N_okES^( z^3de=`-HnB{Da&Dww8_L54gt&{3TcRsLQ}#1UfWF16Ertfq6lS;0~pY(0>J{$khb@ zk<|eIuI@41rq5o(ZGH#%-CKiC{e$}StH8D|m|7UTGaV|^WROjt^PyKaSKV9)i)zBi z;4Qlk76!iduHRkQX*Uy%yW82R4t6TRP9@o?RHVF(-*hZ=zx$PU#RpWJ3f%=?gTq}| zh@+qJk@o1NFErr%!q8n^3PV-t(4m^4L+#B)mQ$GpFMe)cnDe#!;qQRz!kjPMGd>ZV z%Mng4pTU<>MT<0KjB^I7a5hM;*a|`hcsXDpbNgV z6`uGNz?%vFv0Ct zsAt-i;7R)qmI-FdD9mY;{iZYd%QJ8lPF+QMP*>@OML~L}VFUjS_q1W1c4Ac`O>Agh zT?b{+7rLa`lXe))ZQ@n#g}#o>&8r&2K;3G&Mlo_cVg|+^*bJQhB=|)gXp{4s_3VU- z98WI}*JT3*AtU*a&Y7hKx(Sv^Tg(7Dm1u+e7m|b;w@Pi6q!<{2NLuCr@L;4_ytF zbxwLU-W3LKf)L*d{Ny)pvQ;U_K~G~CoNA8VX$*Dk<_UQbP|Y-yv(-K0N32pHFkztA zt>8B6xWbUP9rnrG4^y&>s!g_D0tBCUJ9UFKYGM~E2D~ZL+QxybW9sHTI-976=X~0fGn~tB34M8JjJSaUw$SzVg1$k1==yxnYmu{1Duba z{ftzho4`^wzn)?ye}jVZnK115Rm0L&7NjkyO%h=W{bAxCmKU^deh2JCY;Dt)%}04L zx4kxi{AbWV@URq8`)kORv=kCJLiZ;uN3z&vC~^M`Q6S_zDqKlky_SKomV@Eg<$wzC zt#UZ1sC(|CePpXT72ZASCc3Qf6!|vQ3%_XtLh?g-i{v5Ih-6(`OXL>Xn!}3n(Br?K zEr}Hc{!72EzmY%f)BLFyc7#QVo3@*DN4<*!Oun>($iVM_ zeZgm?QCq%ybN=m~aRJx{w{c%*4LM==jP869x)2MWso-4O-4B0D`VKwNT$uB-duCs1 zm#C-#*@wUfs(*9!;dk6K{((H=xv|Crb3ehC?&Pd?Pv6y^6(4fX+JFQsOK_v`HZLg* zZ1Eo0F8WN`TH0wFceVFrehxQ}k)aM30>lDzbH-2Z*?&SQsQ%b{%3rKWHv*}CVLIve z_*DgI+wucz4y@0wS?iwB13-{#l?mG;POAZBLG88amr`{vCcTvS0y}t<5_l};7jew_ zH6Ks)(eeC&NocRXF@I)uW&6m|fGqBX7eU+?q+gn!cCerpkx6Mj!P0&VNby|6z2==@ z7z{m<1v>t9yt?wHwj9nxzig-)!4?7V$DYjPp3o&wr-T9N_GG0FzRi${nFqb0N_^Is z)%fB1?G_Bzz^3r?01rw+W~L|!r}2RUx_HUC>*}sw_h|9@NQUJ8nGZ+quk`D$TfF{A zzy3JpHR2+@kD0%}W6aWFL{GhR;Pn!&e-&fi+tt$t?8xMF;IZq8*uX8{1Mnv3n#-Lv z3;$i~_E%w0p{`YB{Q^g^c=rr?w|GOvSm1&`uW`>BiQg1%BIYPpcO3%>cO&5emzALa zuf(@eL7Qe~YGTp?ZoUkMwc~8IWKlO~nHE{CbIX;b*dHJXc$}HMBG*_YO-I5E5Ai!m zI%iEqPw+-cm}+ED31inc*ECf00#^H;Dx-TM9~SzBbDJOVe-641o+6nJ@nL0xA}I8w z<}MI6tTz6W&qHbiertWP5pS^mp1_L+;VF4YmEn^*9e;c@9)4lUGZ$xF3UQuFjAn>s zkX$;Oqn5{s=^>XcQva#b3>r=i%#7}V_leDrnJJS+@22Q0lKR6B{EG4j6;iLSZ^8sI z>+3S|<9eWp{Fy^R9wGb|{CGZolTX*l)4G6G^AItB={=RUwp6^G;FO0wk_fhB&8A5Q z`(1+lF3EnEiWIk0yzX~5dRN$6D$o^rS|)RCm4iThe9_k+Wh#TsYe}90Cm0gprcNOJ zzs4W=#zO43G={O7UCCFC3aeT34y#%74y#%74y##Y-^tZ%gLg$Ed3B+?pmAiVL%YII zo-Ae?u&E8v1luiCX?%buVjg}UgeTupcW4%Y0!e#Z*N~EEQK=oUVd=QAem-P_-qo zp;nC;DpQuN$!ssIQ$;vZk7ZX`)Bq-Z|>pt?+}{Hef}(P7zix?2m1HJ z_zfY@^8&F=qD}XV9YU4eu##}>UKRqjk-^cQf-EFZl%>nVbgmZFL&?>Y!9lz?QtSL;QufqG8{9)p?`m5 z5xLgC$;X91g1e+jm4lpr=*W!;5I=L2qD_?DFnpLUwsg3cI`}1(9V^Np>ogDfCHu5iKKo z_qq$X+D!&kXg4CtEZDG(jS>E1Nklo`c|zkmk}-Q4_rM$STrh}<9eKYD>7-xtrmgv(|G!{6_rW#CzfodYaeZ#_K6(!nj%9 zr#d^X9KzAnL6>#Kl*M2O(q{aGMOE|%X;(OA2~7yqKx?_n6Fd)2Q`mdP1}G<9nfmSx z$ml=^ECF!!4JTO<{QN0~MY#xCh7QZq^c|^4bWZ9uSoL!?|LT6sNxO@fB)@0&Xb*um zXZ`*uBx_r(KP`4#Hrj?9;q4E>%ac6dj=&!s1-y9STYr!$==!jy6ZT}_i4ksRr#jfF z1Ur>vr&5{HjsmMZE5uR2<1Se333WXlwlq4T;evz9=@Y{4a1d%XtvW%y8%0^IU6hT$Wv4GYo3HVo}OMy!R0Z3;G7OU84v0SS?JH{V%vNX*--d}{a9I<_ovV=Rhs+z|+UkJTPul|+ z(+7Z0{|xj2w|FJLd&liq;%uzAn@wlS+nTrjb`^%sGhfG;~pq%$by0fzvg(BOVShXGsU)8qxAe%1)tM3%H;uDAnZbn+!AP z@Ko9#S56oLU&Rzpa3nTJIyCUb07A<*_}{0In|W6X6czul8qgMKaeh$u!L>z|<4;R* zA^2^oX^r0%(Vci1|GNzCFvbXQrb=J`5;IXQpuz%N`k+Sh9Z;0O)e>&t#!cSbPOFQc z{|L?)@1DakPUU@e7oGr}q(e%DFTAGsDSt%90OnY z&gjq!1?chpC%SK7^boQVj$|ptA(kUrR&!Y*vO1JpJNrqTds$y`Ds?id-E?P{tzL#( z-YU8&_Alu`?Uw+{tjAO<+q0nvmvyDQlbF_2H69DD)Js|>RFrl z(6?3Q_GracPYLg@i0||Ktp@4n3T-$#dOUx1OS;nbv#GGM2$H7l7DPaV3F`!cUI+f@ z)=l|MgsqdOIgG#vpr@d$yXG5c0POfm$!-<5wo}at+^$aBSMtH#rX8O8)x7K6GtQz~ z8cOzbz5-LL29;nnh0_2t9!9<1V0XGAJoJs!O=|+~IJq3!kXGFmd{5QQS}9r z&RT)fqCkcJ_8AYS==x=UaWd;{LsHbrd&_d5;iaa){#j#2xlsyrSUs`@!v+`1<6`|& zr!6BgsU2FtkpyhhuKtKQ;J91SF5)D&jh~2Q()n%h>!uz4cHQ|~+%xXfsQW143XQUB z@tY(~dFu7wpAhGs@hp?Uc52m26qM9eF%!zDtBTNtPc_)`EBt7`g5U|>3ntPW$k3R4{j@7{4eku_XN{rtpJKmPPJ$G2t-frl?F{mOx zHaf;N%G!Qo!VjDJKTPV1y=@@{+^>jkU2553(PilgL zj>RJ~Q1&-;JU#J0j?*9G`LU-&45ah%>K;;L4If-#PA8>ert;v)a=l3x=UJi6=V&%g z;)^Q+5KKPr8agZ(tuW_1ca3leYPgVopv^H@GOwDNIIvm!RfYe;Vw&=>3={a^-%~LZ zqjkd)Y@mq`rEQ18fR` z#Xx=6Xt0fNspLE`;90w_v*p+b+3ybY(!H>Atu?V3F;g5c5buS};6^JCcffGAciJ)z zHMmpA+LQ&Of=yFBJBRWb-V5A?wBayr95^hTbQX(SUH`*&*YqeO&N_Huwk*+Y&9oMuCLBXK?cJUVvoUfnUU33hBmnxkWb@?$!N#kXj6 zqB62R1osR*#&UoJnC!Cz*LGG)N2>9b|D+?eNZ_#ONmp@NAjdew$NQrms1h<;^o!_G z9p~|7-vd`NpLuuoQ+NmYG!5|X`a9rl+@s;`%SuCu2ZuV~oss8&*BGo1A|EIP5GJS( z?l=4=y!hAm=d}Js2OdlRifTrphe16OJxoZawKC>9!mWhk2r3%RlSrgZIMhHF3#e0A zFVHX<vApyPAyQpvpqqPH}le~*cXgqy<$#XD*lt$Xdcwv zG3|$iZjLXgy{UbE^${3}`#_E5>vraKJN?>aUdNl)@pbzBf1uJK`w98YOABgG2!D>B zS~bNsU7xe@Cmo)rUtUt%=QxlZcK$p$OQzJw`lJy0)k70e?W9d|ENqp!1Fj==GRo`| zroyjjp4fk={2wII9*5;fFVJ}YKLOxs5mW_5�hfNQy!yPizIq6aEhJ#1;Xbb)f$v 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ℭ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⋘3Mp+M@&)al3F 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 ^*0u#?S;8o%&6^`=BTHkr!|$i^ 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

30f$#2|D(CXiz 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

6JWySV zb02tK{a7USvUPM{B(_1|S0hJXr#7gGaF6^k>*xW|WTd7L!-B}s4!W!8#;%oC9UH?f zNIee2>hLJtSQSV7eT;9>?Z+Dp+8v_X%Qx+aKOn zpjSP-BC%HS5S(?EJ)Cb15-Ae3M`Alr4n`G?twUaqKwM+(Jjr?VK+9?VP-$vkw*V`U zQ<(<`%T_5&jXTpKp7*TAm(wgyyVbY@&7P;xJulMg5lS1kr9z=V@`DwK4nh!VIU<#L)-yuHg9G{C z8sna`StEHI;TYhM$yVZ>0KlgR9^H+l>y_f!834EnU`h!#$@a~ZBE*Cvqc&`yz$+sP zL#P{ZCL^O*wH55whO_h4Q;!~BlJ>JkwVw(YVtVskE3tAf7QP}2Z3gHtz+nTVAsOP} zibwgal3!{D3;=N~dBG4IWtoQTeg2G~50jacO4{mvI+nwMNMA=J_ASiM8J&zQ8%A`@ zdWo4kf-zyY5DPRg#y|HeQdg?*3<;N$`}>mZZMH?Fptit z&{-*{Wb+6KQT^L=L?yXVlG{daII8IA&<>1C)rDXT3DH58pi){9K~;+7)LyRY!|J@h z$A*2a)uA{rg@*XTH?;$Nj=&4?yDs>E3R)+!*LAi$9k`{(NfaJV!AX_O`l7Vj4oR6O zziK(JK;RnN^Z-ykYQY(T;^BzSU#>zSYM) zAHnsVvwW);_Tzig-6gTZv$nsTICxgbx4Jv)qpRXq_AiMY8*{WQKFL!OI}skWG17Q^ z)ZLGFRp2yCUc99HXggkq|B@A-;KBFH7MdnrN`W~?W{GVuhfo2ngoT8P$UqjC4vP+H zZjC&C4n_IQC^gI)c!N2#$7>P9`|U z1W=_!3{|S??}4*H?X7<1t=f#U2b;Bx?%sqtX1f&K-L4%0Ay+#@yw`{WofW^xsad-v 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

-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

`Ja8uupEZ>4}W*-_T&z5u`rK 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%0AJ@NefwD8^k0mS7BPq&M3UBacI&;Hc3$gNe zzb_yK^U$q|Hvu!;s(Qb3qNhz(T3kv7X${7OoK$1{9{+4opJjf|{a^0<25~?$H9F&2 zvSW0wo&Sk;0Wk zbPdyQYUP_1l26D}nfLN@q_oiG2rK**Zp0ZGUQ72-84ow&I4V3?f*0eM$4Vf|z$n0( zImI5L7s}Ejwn27em*x5O-Mq@VhTBr>-GVDO1~$5#_w)kvKsaQ|CF|kpVtrE4V~J+ zPaF12nW9GKkYGrNMzk+T9eE$xFTCf%+Y@og=h`3k^uyY={nCbhD+he7>bL0$W9@tW zR-OQ#=(lWVNDbt)t>04UCpUQ-Wfbk5R|7Zn0g3xqK_m?th|fdqpY`w~lxquG>CpK7 zo@RYQq|Ra$I=+8J{y6(jcYpgMrdLFJ|N2G@eBbKC4fJu&Sn(IV?q8Gcy|P*E2-1Iz z(Ql=${(e#P8`JfXT~{j~wC0PWx>@LaF~6stw!%GNQ8FKgK_xyx?=u=3?fuPEhSxqV z3BOztesyHHc_eNenv2~zc&=2HhoX@x9jJogi=<6zbf|TRct)v88CNQ^M<1X#RNW37 z766B*QYmWjADRuQm%#TS!OCJs8m&^UO7SG46uqMtf&+nnVha2$BuEkhqBQX{V85*p zS_i-_@z({<`GMVYE8w#I{VbCtkJDNKeG>s5-~fCo9$b1SKM4Fo4EzNy{pBnnsX!!v z3d|Ua_CC2fk(hFR@Ogo+z;6jSd{1Hq**KrXL@5E}!q~TU_XFmv1=2A{u<}XA0@ATi z?3eKds*sYA_acdbaFIeK^FKXl{?!+gY_M7~l0tyjqEv?+`%~(SMbgUNLu?oOU%CEC zCSgB*8y8l{v%lMl|L!S%U%Md{zrA#^>^XjqOPKoq7Qfv9fPJNMe8P;A@!JsizrgQx zQ&RD}U|A|R?3RDmck@sEe~aHIt|$NgF?Ght_&qvdl0TGx9sjDke;(`G-$ValRy^ZX zpbIO(6PkcZ`}UkxaTmXbi%PflzY%S+GVg9|jKXtU5B)Ga( zlZ;^<=y5bnuS3p_1-+@I2us~;$`hpCK_2oW^PPGJ9Y5x!2j(bS)H+m8dLTRJag0IJ zA)gElZzTM(e5x^NgGh4f{m7q5`?dCw1OU1v$ODGB6(_5E*GrI}Fhf)H%b5XG!P$`c zgY2YIMnNuO4)6ctHx%a4*afJVNmM|OhOF>#xW1q224^nP zc|StvSdNZ&DMnE*bE_7)uFQ&#XhD7XEGu(mpnE32st9x+n7a%#A>T1s^2E-l*2nXz z4wK0GbmBYNj{gAVQU_%#e=ffpkkzr0t-U=PrBYwzI#f3$Zt#Sg@(rh}w0}_}6*p$x z(`ublDF!^p%4@9-s?5(_U$VHk$dcFBc^j}KD$fu&jp8!vYYQeVF7wvcS70{pv~cMI zo^;J-hvj;{AuI=@h6WY5Emtt^%ma9qbxxMVt(?)`FRjNUb$u72Y}6KBfh0-XQ?jk& z3#>5yu$boYl^`JgM%tzAuJ15z1;}*pB^U+wDS|&9Vx5@uo0EWZ=S$og_iob_E{3V=kp^yvWH?M}$35n<5 zU5Pv2ro`pJ7oWK8eG8hB5Fof;+!h*f3%;O$bp;&!sLq)~fP~X3lMsL3u7b^fBgy>5nJ5=!Q5dB8Pu5SKkqto+3U);+{iRnhW`UbTX*dNph)yoXNd?>C?ACJz@ppDU2 z%pJavzZI-;B;nBym8vrW7k=AD?1dg+;P^(BXC*!*X?nW z6@CS{gTfsGjp&Bu<}_v{56y%dRXDcdFaHDVMQ z*gLigG>qyQbmYI}^A;FGC~=6;Hz&4IdM+%-fFThpO^W*n_jem~s(9jI<-xfv%{ zhXTJHu$>42Z$pD|tchFDv)0o@x@Gk=D{?*-!l-;)_7#}(wh$4yGxdEa8yL@QlD}Gb zPk4jkK_v)?DPqN`52J-z*t;~2n0v3m6pPpi?6bA}J99O~682;GqLE*K(b$0h$p}q& z;1oC#r?3crlSgDp0B5{b#&PE1jA!rQvVvc>()_K!U%73R_Rn~HDB*SWpW3-h;t79h zg?HL7;oC;xul_dmS2Ab@BzGzXRA)%aC$m48{;ew3?AW=eCzK+=DZfqqwx46AiK6i8 zx6LIcD6JsnuxM@pV~h%xL~)Nh^i~hngDV$b*nriuQ~F6O7by}&IHt%&`+Z69ZAC18kdYu3^Caq> zDi#elQ!*OQs&o8fD8%FW5RV~T6}~Dkt1rqr0DHj_plHs)_)ro#usFQSI`*xSW8a2| z3|cE&&MH1)*NAA3Lm(!DF9eDAz&Wp3(S@qgie5*(SDarxQKsz-45G-ujU`xP_PHDd z65gmFuPJ5MXZxzju?|z9{xVs|N@}d%{SH^Nm2@w9 zEf9U5vjRRLDn$J`6ow$nI(0n>`?fvr>NHfv3x}T0J5L-XSI%Wti|)wz(SBd8107Gf z#*u=QjVulXuID={fvM@}>aHn{_J9I%lwA00`(VjPW|%~s2MHRkS4(%lh8rnS>Qqu1 z4Oc*W3gAI38Twg8>!(a4?SO$B$3iIuFq(@(^7WMrNQdTrve-TO+;552A7PMN#~cbD}0miaAwkKQ4K} z!fQ+W)Do1ivKxk=-hJ#FvfF;FLqyq$`uqpkZzI0!d@(ZIz9iC3s=bGy?zYpcs*#<) zha15|891;M_X}FU +%q5W!?5oXzIoIKX*jG3dvwq~U>x=7FWg8Q#xNc{s!0dtY zcE*VCnb{E4kk8;9a8OxLub4eQ8%a4U15sAJV#EkYf18$?*ga9)FM;o9y~pWw1rAjCkZxjtkO-|H-Leah0t>@VsUVL0NJk?g{q$W#dKU-BK=~v@ zpq-CxqudB@phAkJ1MecWKP7^|#KhK|xA9?Qcti2A8%vJeQWCukDE}H(?S|sIZ-DYg zDny4}ksjZ8Sv?ClvMPx`1q< z;dmo%?ZgU1zT-xg-iL)p(+$q1*+^7SE=qi9!V)sGu7&c%n9;(Pl+<0zTHW$w?!w!%^QPf*zBKMKWHv%NZaW2_55BCQcV8!o1 z;gu)%&!w1^?iW7&5ylcourGD*PfJ_uc4R^<;T*xvq9meOfyd`Uz3>*`*X-8^@h8?O zjb;s7F*?J(bP`jj`+r4V#8s6}x&)ML{9t>c1i|$?EgHz;1uSgBNIR;VgyGr6MnMLK zxzxmgA+$LG+X}7JN}o0E?i8UDm{FL3IEjsa0lU#!Y3J0#GP_b(40Ti&j+h zVAd1Q3_|?&m+M4@aV(Vi8OJ%n=D>Oj7rH_KSlOm z3GHUj4-o*aSzbMQ^G;|C;EDW&hgyT@nX{P87v^ds2l90-bL{rrBMYr20Z z3usUOjPk1!mu?V_n#U1smf)e3F+4>@Ry&BH8Hgbu7y$qQBI@7p4=h`#(keRt#3{$< z7aUpuVCds?fg!jH{nQU{V(CLIxR(Uklm2bi(jLVR0<(F6vb(-eH{GnB3M_N185rqY zJ-BMxtga9$*zrSw!)D+IuC8eBk>u`*!(^cx&sUPylHOEPYWKmhQztNr^#gR?wG75l zw0C40aQD#rFVa22`24Q;nwH%pVY9wsIbv$+qCOj2WPxMmwmgXQMv?E7(eiMw^PuV{ z=Yh{A1IeDVh`)Ek{|%SC`zY@(-U2ycMcsml30FK|e!lvK3q>cPY8_yNdvY0jie~LP zvLwTP^JWwU+`l+Hc=HY`s=glk(poSM#D%=quqjYqi5VLWfrYFZ0*iURC>z`gC@|Eb zSKKl4(jmpLeRMNc63v-SieSt5R-S#zG8oUy#4%t7OqPR$bgclW;vGe=U> zRo&*r%P~{rso77QrpydOH0%DR(L7(cdr1Iz|R<=I>Cy zxM~bM&~x2K=nkiuaQ;bN?nL{$28Zh!@v1!2WDke(D0itOsi=h{Eicl@T*R;7Nr27- z|Gp{?2(?ea=vaEi zk&?|j7`cyKgKtR<@`wG#7w_`=3UZB;(Q(8_W)a1H{%so1n#xDoKc>FoTWD*TZ!@~o z_((IJsIhGMt926LbA;jn%C!(HG}>BwewB&VmcwovHu(fJk|Ivx|L4XPtG%3XvqN?O z*Yi9nRjBuuNdKs&h`Rw%{xjkJ5?C3&`%B_97lBx4NXN}81w1R|z5-|4?pE^j@%IYJ ziDFeoiX`v;l1kbqUrh5A@2s>N!0_S_;n~Sc0=XS2AcBG1p@x{6;9WB{IM8g zkSk>EgIk;M*$s`Qx!>f#^<>3lCovq5t>16b9_BNr4U`%gqqR1H-B#{5`Kx3?k-kgS zzV+@mu}I?XH~C0x+4oN;iRnu~RAHhKTzQV*%I8nu5~r)#+X1~-;+N6~R7QQq1=lH= zN5@?<7sl_i>m>q?t+bEK^{RYpRMwDp$SLiI#-)Ox;M!$+gYjd?W+I*ZaDdoKsa9;nHx@oDZLv` zOhfyF8;CpeDgu*OBv`d=TynArL+T|b1#klg>Q~|OZZ0{|_)cKX0=&knPUt%Bt~Z^` z<>YbGNfzt#%h2v!Cpuxh>jWagCpezI%*Rk$*@H4vX;Sgldn6T0#RPgtyyoc7Q^7;W zh+~>KhW+a}OXVY?aWHRSU)h7fY|295E(j3WI3;oybYm68m|uXvKyp~i9(av%7C2W; zFmMwD$Z-<>PUNh)6s7``xdEhZz$&(y)TpK#uMGLDohmvAo&!*O&$;{LOc)lbbSn2Y60<)=B9s5%AmtfPH{Tr5<@FRB9i+~2|xO?#z zI_`A-bDC&Mo>7+MuV(wIYYhC5AUS`#T;Ye514XGbMSFz!#3HMwi<*>v%|$4nopX2+ z>lx`d-d!lC>7Yh(nKFl`$v({sD&n5ybapK|B^35!yX1b9(`5RlCnPn}!()1~i(h$B zJU&j(F7t5GfC14F8vK^pzYE^=Gn9hK0E#d_`OA@HYL6uUtNhi~!@rk5X6{J<{u>>9 zyIT+!@m{TX`_sw3gtFC_DdMsIT1hD5l48eFr_#A%Yt~{4Nl5-m`~Hbs;b0>GjeYNF z*jk^=HY7f7vxcz%>r^)wYUk=61Bhm?_Sx{pxk!d65OSd#Y5-nNSZ?m$+p=Esg9>?A zi73Yp-g-s;)mA@#W3MEkQ}Or1?@t-KN{4~8^xdEG_e+VzR`bUofA;SFl#kabu>Q@U z(SQF)Sf)oiX^4sUSNxanPdR5LCsDuK`%{h=lsIt!XFFp&aoFCl5IE>QY%lLmdE*>z z8?X=IUT!g23}z7RC-450zlvg@;$qMQS{V|&!h*_{*O4@oTS<-;w;kMlySqPS_7vZn zttCKiD$n=aI( zTULl;RSovLe@$Sy*6&Z@^^{u3Mpiu zUqbvF^~#gK_Pp|+{0<1r?|OfafD`T4wVX?GsX_;STZA#JsB=lkeBoU`{~6ANl>!Sc z;R+w1!F2|jTYN^1Bo`VKf)Sgf^INz2xbXZ;ni=Fmr!g4OoFN1+N(=B}J&YT}iz;Tp zjyP3mqCXbNP)Z3}hJ-aFrN0MH?fO7>Npprv2Fc3U__8m13+!)?sfAU!3FmK&pRi2+ zsDZq54;#2LJcMKihjlS7lfU!wA6QS$T$8WP4+u564=Z+rjNsLZ(uLz?}) zjY%kTZsl~qYBFa~mX?mFC1KDV_*EV#wWwUn@P%j9sB*24{r}}gxndul^WlZ6Tp@)d zW-Y-5IY+5hDhCk5hNDrxf|Y8~al+QlVubKUjh8 z_2w!kadT)=`f0q{<#b_*t%Q!JLsW}H2$z8gNCvsp#s8Au5b$2IUtguFu}pg~jkSJC zzS`~uo0T=xc8_J!6rg?#;z3zpMmv`U%J9ggTp@oK_NkP=^ZL}_Z<0*P_sgIWTO zc0eKD=K`1ZsHLKUMD8mE=OB|s_-8I4l?Rbhb-2alWD;H2D)APV7oY}&%F(6zGh`WC z<7x#VdQ?ON?ms;b)P|G*kIh#gxSjLs##*!ji0=JjE1aIOsn^+>`&*plyu<#u0^7Up zvWe4`i}OFiRVI1|;I2yR;?&jc^gCPGQ|<$*pc=-afMsuAcd_p1eze8i%v8khw9EcO zkg-xcUxCy#@Z1GNcCx$R{&EOfAHY6HH|;Vw1ZosgbJ>i{M8UP&0aoOH2Bz#g z;RoQN;0IoBRBV;x}4e7gZ0pvTLbSxWq(&a*!hrr?FGT5u`gR5P+ zw4{WrLXTT>vv`sOmpK5ip>17QPb>@Vll`Gmij8 zLublb^lZD&m+EMky#C^r`R}*me5%tbgvh{<5XNKmNru2e#GiEq?-*!W%8!n_gUc|2TU6Hz57pe*GuDK zuFOvDJi!Z1i6Fl8`9@&)Hrt~n7%QR>R>UO&HeCu33iz4(bik)x5_TgdL@jzTTXY%5 zTtkBw%Z2}UQBQy$8s$CjDjLA2rb0qv_d*)C{qhS`W>5Kxk=Y;tylKCcm@}Sb%TnN8 zN@L7v=pu}nJRy737)~aabPOsY!0wh%hdj=0Zz-tr;d9BB+HtVI}yZ=w7kFqOk54(d6`o|_aiG|rQ_lE!bP ze@MMF@mt6@Ul`{2;b1G!77NUYA4&YSB6;&yj~R3BuKoUvBv^6(2j{XcFjK+c-l-SD za)-s5CQw_6+=IDed99GNn_VC~mIFu;SX3XGgs>;;v<_2IoG~g zBBhQw4F7nqRs_2d@V@wLiAVp%7=%<`CV$(G&rW@e^WUrZ>}5Dy;L=gX(QulTK*vTO z{mvAXN%}cK)#r0b3UHQ15?((ZBrGx8E4a@!gQS4Vv{XrWxYyLgV_hotfV3hN4_7K$ z_KRQ$@dm-7uYSZcL^)Msh?2eyTW;3q>zFY#LR*QxzPVNxV76>hVskv2_~NezdYh9a z2LD?P{%!uHq4xW&Ad(ez{a}p0UNDjxaIfO8lg=k_&ieWPNBs4ap+1HY#3;j*l3{#o z(o=H3QkOa8&<=Yftg-lIt;b)}at~Z46ae6!v;yGma}rpm)Se4QRIZc!gz85q+GWNs z4|LZ52G<&t^)E+%VKpSgR>@zn39=V*3^;q<8owy#{b9*F3deHOzp5YiCcfI`TqDWz zAj!WiQArLXs-!?f)dc`byjJ)z}kz6JPDW+Rso5 zW@HA{E0}#xXixUXRZCqtnwS}Q0#6|Jfdk8=0sj+cFX@`(iz}d6 zB5r>t=-}JBeDVO1V19>BPTXtG1_oQ1eoqt=A63}aAT(8r-noa756&dKuqw9y%x_H- z*vjShrvjC0OjN7p6pgJ`(w(|UdSz^t{bMxO{+uBxSX4~XTH>qa7IgU{d2hSDM0QLj zzRGKzPo|hDBLQLH;QP5_yGq6;8`wvRW5T=*OM5I{LX4HaWmFBJgKjaN7^fN-cqW%| zs;8jDqz(|~o*byM?*$1#%Em>p0JzaoGE!Yplnu>6wgwMz2i5^Uxfm8`uORi!^mR)rTA&L zf;Qu)2SW2YQ7)k!1Np{FturLc!u|V{B-%l z%9pZOfT$&0G|&~YC2``cKECYwCqG~AQT){8M?VIx5hXcu+hz=+!mpXbL6kY+2(A`U zl_CIb{3;JS@PMyR^Q7-d^n4260{g(_ zN_3;qkMT4*9-)arjVE7EdYTF<@3BgA^c6!X>dDv?ziKAsWL{r4EjD7 zu(VH%FR6|M;^bkG^RR@3l@KYu7vds{3JN#-bkPz?hXRG8RrHdfyapRNAyP;Lew6#A zmltx|1-UIRATB~Uxbs5x2ER(=oO_*qu}9Y#yD?IE8(XmTBd`TK&up}iqoLdMa;YGun=S{#sQ=n)s)Q!>X#-!}#X`SVT$j8)_d& zW`gGKXN+V zwN=LhyFe|maTu*S7bV6>>Fq=aLkuxGG{KK-M1cg{=J7A^UAxF7VM%`_M(?@V?3rfL z?s~@g#f1jt{_$MPhiazKKIrLGyg#6LSO3Lp7~k-3a{fYZ0=K703@6QRbrJvg%(fP> z8+)|up~7vs*zfjE2t5|Ki3~1!na%LW1xYx-mpmF zkH6^eKIREmbA35x@F!rIhCKW$14?l&JX{GAeh-UrrZdAIcISNx3 zmW$+kGse5WaECnqFYYfq|3sZZ0nYsnzw?3&`(H=Wsr~%#>C{fVzc4OwXhel2PAdr< zEaZg$?e_k{H=a;5K}0%fY8KqA!9BXa(5Y|h-rpkki(jkv3n$&bJlPp&FYZ50+y8sl zNdH@s?qBY@ulk>*{f|$&ANkS84Wjm9{=o}c9 z^gd^&h=hHg#8$BtjsKnl$~`94FUWw;n)(-M@Bcm$ond`0h#~hb_5N?uY4-QO|9jPB znoPX0{!Fbnoexmj5o*{+B29AK6#^w=@066X$>Y_vnABp>L(be>cgFoKjXE z8u5VA4vklVym8z`9mqxK0jY#iQ9`oGLuL~Qhn!&z6tm$|X#knw?1&%A`9V6XTU}{X zls)YcBY;CB0`oER^kNZ>zkY^Z(>LJ&D@OOT3*;fC1y1oJ&@3zlnJa>JaVTRhx z`YJN`DRk(2HmQN6eT^U?Ka|x!1Z9s^V2ESBkRcMSh)s(Pog^w0e~63OlKUg8+q(aA zFUCKC<9GT`n(;?}|MB+}zfWF)!9UW$UHrcDuz|aE`Q_B_aq){h;uQP}dPj1ExnCxL z2TP~Gu5w198C#(D+u;OhhFl5R27Y&Qzw)=Y!9Ll1h-aTn7~$C`W%B&Luuq=p0=qw}Gic2|nPwut{|ozs(|Kf- zAjDnYJ0x->qx$6ueX5(qoLb+S z{g#&hF4g{*C-on{e;@I8JMDi<;=Pb|T``A8tM}nr{kN<*wav3H( zZk-S~(SDd{2K|Bd3HyI;Lz@1x_NxCq)t>>5_tBqaJa>KFx2R41xfk}qW0zuxIj_nP ziT24U&N%;F`-I~^{92mvpZ>LhbMMFBQ~W-82?k%^oQU5uoN-&XPxb=8B^=_4jcMT9 z^sDa;pOtK%qvlXk)d}iPJqSLFsm~70u>0<>uD^p)3a(;p*gxLXWXet2mYGR*{5KSV zdS~9_A_5;y7J;l#QPj2iJS$@1VMKQI2s|O1WJGTDK-{g>STrK9x-eoLS~TL&>f=%E zwrE7K`lyK2r)Wf<>RzZ~TQnlS`hbXaLeYp5s=G$4f}#-xf%z-r?fR|@uSM<0#@*fh zj`Z1SXu_PJ5DQ6*V+t;+8OZua=JrjEEH+zxWNqPz)xBAi8WpWw_d(dy z?$Q1mwp90J=i6lvB=;w#y6|2%xW<@O7ouT>8%i-+YL`e&)&8&zLhu<@uz2>%_-`OwqL5)0g0;6Jv&KmwMViWU&0}Gi(f>g|}G9gA`Z(E>T4!0vi z7YM`EqRUu6&m)+~VZQwHUZ~b5j6QQ4LwBUJP|O?}V7Xa_@f8#DFV6PfTKg`2A!1%gg5&sB;W%VZ;NS?c!wno$CI%XA24sZe`ar`JJnlIh@qY;% z@4ub~4)hQGqA$E?UPyxDva?#F$LJ&WfF2wn_ESvQDO3n%>l|o!67Ur-pFDA5<-}_$ zt40z?{9Y2AZOEU-y8q?uEK%l#{ON#aVn)Xgaf)){r{3<`5q=TQGi=oezK#$8g?x%{4@ z+s(S&JSV z`i+Xw9O8P-B%vjMqP0A|)pZ0@RODVNV`qflu{OqK&FoORIdvyaMZs5=@Qe=l8TzGu z;tSMU8Q@<6n=OCmNfI6J5&0C6+eV}JcQJ{KDJZErt@V(zyEw~+p z`Nu`C25xUB-AiQb#Nd}u3_kx$||cU)+uvv_(gl*DeFbYmwOXoudq;bHiN+$A#`^Wx*Lcp?67ET z3^Sx28GlCtu)*Ob;J^Q=>s!$AU}C-;Wgl+2j_IGYf`&v&=6*Ax9?Z^3)finnmwSfibpJrXI)jKn?;oI#qQKxdimMC+j7-;DH^<xB416UPK38ZnQee+24|gY`q~54OTz zJHtLuKA8I7?uC&P8c8?kxSe$Tn#>_)Bcn^~RoKjS_HZ;wsMRaW!mhl_zZ7Db%mS16 z(*(1BKy`|y8AD7F`4VA8a!@YhoBlr5{BEh#j%HQ$z9wTi3fUX*Xc*9N ze`T0}S7xFqxF4|55GK~QHTb5M7}yFG2A(u@rksTKXx5-VVZ*S$J1*paj5}7xH7 z@qZQky)i+xXFl;$fcO8l7VjUBGSA0`3Vt|GTwr-^LZA5N?K|*IjynoF%eM0zSYo46 zP^j}C<>-~VZ6Sw1tG+A~|7JUN-D9;O52`-1Za~G|@Y+`$EE*?kA>OjzGG$xz9m%9d zypKtvs5X{6Fo?fFtFADk`lz}A$4P6b)NJLS{s>Pq6(O2)#DM7_MYdH}lbunG1lpX& zgAl8T^t_XQ!WN2`e|#55&b5z`HYk;6Ya^nnGlgUiHeg^A^I6UiTh>wn zAo@oAb9TY{=ZG+9{d0*Vn|K38fz6Q%{NXT9D4%~ps2ZLm{QX@pJHXap@Zsp^GMP$u z_##g{#qiwkP$@VZXnorrw0M1@*DQk2yDKM_6mWS z%ODVIT7E_~a4{%f7DzN}>2}y;cVsYXQy~+8?7(X0_&1sHrPMR&=iXyL{jgx3vwrXN zvU7bMb)4?LP0F4c>5KDeDWq+YB;N2RomoNGyRuc6!?5aXdL~$tLJJ5tj&QXfGN8q^+J5OqyvY!=x z2NxQ27<^ks{5aS-a^2I{_Udmp2=G9uxEN?>0;}}G5XtCvf~vawlA?@2!@EL5D;u{3 z*y|=XwbVBS>i=x$3XWJ`_uk>MsNv7r+2h7uCDB12YkjF=2->M9^V_QKvHieCcsy__ z(pq;ORNYMtp1S@SfqPcP`{6t6D`^4-o_n|R4Il-0EPfdXgeb)noNc0+SoaaroQ$Y)L!y(W0)i#w87NOme@gM9nd zxhc#?`8B9(JeqaIU6|OcUH;`gCUHU&lP2U_-p9(DasvnUf0%rc zc{k1aCOO+!-~H#Lki@^f>7U%JhkItg#u6brbK4>!6Nh@1$zP`$gO)@irLpwsPz20a zs57wYvEcXTf_IjC&k&aTiQaPm%h$TxE6oaF7hntsT`YH}U*t{7Wrwoj=L$V_#lLk4 zS9}$kh=h^V&IR0+ydN_*~dpKPhb5G>+$jM~-FtS+Mm<7yQw$hW2b z)q<~9W9NbWSl@NAyD_FnO0z0wu3m(1WMO{6M2RQA_AkuZ+gu(i1)1)WI5jp;?!wga zrwMDbgl(`kC*tL#wfXd1XKgyemV|rc7Dp{u2(YGcV@e>pjsgs*FZ7_Lgdtk&rynKM zrsQg53Y@=#5=9VXC;j_aiZugUnw|5zxM`q)HxEc4;4C5(lBF3HWjp9~lMrP<4&21K zkVVljrjL7O>1ttfNlC z9C6`P${g+SyP2O}80gJ6)d8ep^~SoCHS80sMeb#?p4sF+seFA5Gc)!RlnOvsH7$CR zDl@NY2H}Lxez)_KZYu9bpLrYX`*@ap@RwjLN4&w*&9dfTEj;ig@CNHDk3fR~^F;1m zJ%?)o+7boa;@scb(MSa8J}(LE#w!NV>ZWx?vbvcL+tBk zrN=@nFJ;%_f^X^%tZxJU%yjVgci{g|GW@d%|9=#ItVlonvs2)guyZo}^$GCT_Rpy5 zwhYk~uusk-{U>L{_gjV#3_qQ47IpE9eL;b>VDq}wtzl=(%vP||_Wg2!+3)WLKUQ?g zca30@?>gLwu-MM_H+ILr?W$1?yK6jX1)lF3$DP+ZJ5+bH0xxupcf)fQe!Q$J0&)@T zH`Xrig3j$Xwy(o71sDnenC$>Eo7jgmeBLjD!pO28|D3oUOm0$3`LFfB_32+Iu3?4x zaGlXWT$`)ca_s#j&Ygtl-gOCxPRmyZ*QUpu*zbFizaE(V?(XsTwZY#|AgA+XP6SIa{9qPolHf!wa22ga=v*6J2$_zk}O4BrKES6Zl8 zkN@C8Up5Kf+9&_fMH3t#&i;#*iHED{rwgtIf2xbRfGiON4sVzRT)q0K;z~Ru5NbgY zYCoUl;;I0O{&x!rF+2!_QBhMDj=hP zK;wOEbvM%_39&si2~2ydsNVtQ-7>3D)iY;*JdiEJ+eN?jDx>XIjp%dMl9@op2Q#^X24>=jl|nk9z-Q zM_{ox{+e^nFN!nlt6p*vO_CK<^Ym6|bYpAT0UE!_1rMtUzSN=9%xx8Tq#?q9p`7-R zzaG|sLE@Kc+vRT(ZNaHRw97wMqUDQ4mqau$eHCtN)A&ojD=z}&-~`X9z=KlGo_M}c z?FLY7=dGaHA3j#91%+y}Z*{501##~$5*Gw~ay{8qq~C$kBb^pw*aTF&8t?k4w&G@o zYBN_8WF;KzTS7`UQNsPHwW3N0M)H?-E_A-FiL6BnOedgNN+5Cx4=x;LcE(VbITu>Hi%6Vr%TM@}^eUA=}3e zDj#15SVlgUaaCby8Yc^uiAQtzM-&|o(br&tdRfnYIx@pPbv+2w&{SQcYYSY_Q}t^% zkZ{f^w?Xv7p#t$r!&k6t58SpvkJU=H6&&~sK)A9wnpHXlHf>))IQADB*MSHAw#;OM zTf7+-vZah*D8Qarze9KEGtrEDq^1?LeCk7sYrrwS8Fbgj>9CQ^7PZW*4_zk<`&7zj zQ`f}x2{wvT@ZhQofrUF~fRVSwRl-Z)1mQSs4oUR%4DvKASCoWDSMgkX<u`gqItNj;QwUj{!TAU>GbO4PR%w4o<}S4izZ?_+}!dy2~pE`9qjMU z#nECcC497ynsfWX*rdCgC`?Y~ADL3hU9_TLL(7|1WIt5Vo~OB5ST#F@h*h}n+)1l& zAAGB#w^*v+dO)yUCW2nDLJ(A6s$F<1^B&~9XPZp1aP39 z6;evVoiPEdt#Jj6i$(^Cd@e>^s*yfO_S-lR=T{OTDXbfCs)6Jh85FkP6nN`--T5F0 zaD~K~s}&wsfcr0{!TyL(OAB~Hs(9@wo8bP_*vk@6U8*IruxI67TXw-s&O@{FuoVx) zkB}VrA+y*MSAmnGIe!o7j=YKQKp80^&8mTn>CP*)i4ob$H*A89=6!(e&o&&0QEhT3 zue9Ba&)iW@lN~hz%Pab9W%p>fn18XUw)r=jwc|+$ph9_87t{+*6tLsBf2P%Eh5sS$ z8s9pccM}#TpdhQse#8AOQ5M-pRi%ib*d53UaV3vF&_8ysD(5pCC-}^5TRADfB0>lg zC+U{|t&ll`!S9xR`g>fap6P89|MH71jCIoDkFwPfl8y>pF2Hkx@ z(r6RDKrX5M`1Q(lm9YoZ8BYBcg7i=pd&El-mC8IIe<=kkuwN#B>-$*pcd03;wL+tv~^tuqbgs9JV#!O~NO z<_*=Op*@fvr1@wYacA(YyHCLX>T$p4mUa*djy!E%~jME z*>>!93U&>ZMSJ(Zf!cf}T!%AP6X!HQ4X?L=50WSDOj;*A3HN_|9f*D_xHqjLJ#dGc zbM^8W>_Kt6P)UT&iCg=q2nk@`LpZfvRfoP`#?KI1^9ZQ(AGW$Rb}{&$R#mn+!YAqkGa8Jf$TJXkUcA^ z<`qAZ91-lNslIY!)3F}N9y>UyUwKisi54s8ynsnt<~0!WxgcmiwOn-8ac8K`;>(_l zHsS_4E76&&Jvmue#-561-P9SX=Q#ErohKsI@j2U(FR6Nn#RQfyAwLkF0tTY@7^0lS zvFg@ferZ{XuUbVL1JTc9u8xQ`?IJ%R@J)Otay}5Fa<3#ZG?&tx;=WbpS~FLfYne1g zC^DG?*pfZaK1OCgHbE=YeDvSYBl}Cw=36M~SFjK1bDC#f&)V`4j%&X8T~kYJxB#)R zPb~)p8*i7vO+W(qHU|Zsd$049?%Y|;{Do!fvt!SbjLB=1Q<7K)<_KG$KeiPA^s~Y>U!0zvYibFEa?J%| zuxy}^b+|@A1Ys&<8d>=tAtfuHEt0wByf4yl4Hdp8br5iks+D9P!^{QXr;^$pO( zL7XRzW0N5ZAiuYSxlHvtDG8FxE7@ZsMN*`0?=)bs=BgCq%8JZ@J5A!i*^;@c_Lc5` z-MYDT+k)KsKqFwcYU29QDF`{&eRoh`&JY5H+#LiV2DD!nCjDCad=+@6eckp<>^Osv z-E>f+whJ88a13{ae!!KmJ8@j0j!o&T{t-TRK>i1v)rUZSyY6bbUONUFcvTM_*D!|W zH@Tg5zVR6R+^Jf;-e==6ySfvcwx)k%s8bTrfy>vrRCk60w|7AND|I`&YAg1?pPrRS z?LSBSobBP~Y>Icmi`}X(hmW&;;HT>*1x{LtnFJQBJYua*hx_^)IzYq(@YLxBY!-S^ zc+X!6d)q<6LCkO&k&XFf+c*7+YiXq)B1r%sx}sUrL)coq$s{u`0buZbu7?t$!|_mF z{~kP)+saW+G@3O8tpq-MfoZBKb2-06f*CY5y%4^pr?Kf%+O!J?oM>7})IOTCtsz~j z47Qq%R*mEdEOEz?U{9(@;jh@!X|fBP`dF7hu^azNC3QkAsKs?WSN=MMvl9}DdRC1C zoEKh=$u8R>*vXY+L|6*i8a{(tu6C6gdx9+zovliZAB`;{&dGbOa(o7LQrW`kC32@M zMo2)mfG{q~dTuz}aoAYpJc|dczd_=On*hBxgDx>O&6&RlMTWq4d&w+80t$apc<7~# zW=;44!pKRW47u)`4WA@zosy<=u0?5V<^rT+4Knr&gHY$$M#>W<~+ z>p-%scR(@+$#gWoepNE5-m6a`mGPC*U-^K%FTtgJxH$hHFOSvhtP*mpc9F7*#Uv(O zIWd(7Rr`O6=id?m4i=@BrZyE*0<4=WpN$!c;C2mv6hi_pHxpgSxftQY zVERKTY&NM^#hYmym_}e4X$0j`Ad(L~8oOUd(nUhMzfkfre$OG)_80$t{}A~zP`^OF z7dzd}&k%2b%q=n{I}UHVdILoL;&o}ia-+3Yw>}uE@FISUc8U0gzW_}l%+IPc1Orw7x z@2RYWK;TX2fCROx`MV!nj-@*A4In8cf49p-5=clU`MbSt<@})X{Oa~cmwD=TH~G8h z<)@(H-skT=RDt>Z=5-Y%00yFD%H^DwC=6yC)=OC2n--^-uPkQCn*xF4?_OYD4LV}P z&ELKCa?vfj&EFk=aSDC>`F)Cio^$o$OAtO33(y=AX=3Uvm==U7!J+|SLTUU*gY%$7 zeEGW_%(Au!ScrB#D2YyFX`29+997Z$-M9gDX-M?cbv5-Lu2!TD%-`#X01=UyxVIA{o z4W78@QkN$f-L9OWteTLzi;A6|RymOk;G!CeHyv(>_P)2=Q7X<@Yfi;jM{q39XrFPr zYeR#Sj?up2P1w+bk5VNB>hI$j{y zU)nU%>_7TH4lKZd-o<1WRfw*CaQ;Y$T+koqFPd6lg7bXe44!lcz4!_UT_dQ6RT?=T znwgV?+L0OK%`({HSP!7185=mI{S5;bnhv^<7C4Mr*aI+X+w=R5B?yMZ+ZSUShH#z0 z;dB`O4vu|$`^q&fab$~|)_PbC35yNdL-`AH3>jE3 z#cZxy;LlB#8$3QeO=BaVs~qCt?|+ScXQMiH>-1}I={Nn+boBezT@L-WJo5hx{R*1C zC;h&9VXx^|f5G0+Z!EF}9sO!wNfQ@50p7(@$(eR0QZb@gua7Lru)Dp7pQ1S*UPOUH z`}ac18@SU;v+Yecs?3S@40Yl`E0{&7UyD{`I&7?R2BIVTm3P@g&j+Ok?31QDJy_Xx zqx8U|S{pFJJotxBV?%`{izX==co#mHh-OSx);c<2|fwuO?I+f0WmLy4#+?RePSc ze`$ij$^u{eC2sp}Ui0OuXNkL+QEZ=gabc#81QTRAx`^VzV-!f z``f+t%iZ>fodN!?3cu5S%QzqW2>BZLz4p`H_Dqnp=V|+wq=*2xVu7#y61V+HUiy6r!1@4-LZfuDyz?fta<5T|`FU;6^L{S#jM|=6X^+F0(X8je?Eb!8~F>VYusibV^E9V`)=Kvu7z2F=@s(c0GK53(gA$?#!f7mUtNsP+n&NX z%3-MI!`ILQgmj*OXW09a{fpdqaZG=gD-MzI6o0q_CsdsO%@^X$I@!jFm1p#I@595zWQOZi7Rg=p4@ zVE}kGRFwKZaIq`XxS?cnI-kazK{_uZz5mmX&r-i*bWO`9IG7rkBWK`{@8x7V?r-3D zpfs^1$Ip=jnKcxHSYe#N#QCs}g4?O=8E=fs#m{s2Gg{z$mAxxVejkLdE0+NG8<5^< zh7qR#2=MdsxrVasC6%fbz$}9F^06M$WtRz*u@peFF-4v4NC;vABLWjV7zpGDA^1i# ztMGjE6Yc$O%QUDKNs)J2Cij+(XyeXpg=m-1(j$GQ9&30L+KTogC;|q=-&L+t5GfmV ztMf3MbR+C2O+P~Xep8?O2ljt&Tm7GC<{#wzu?YaJnQh~nzZL!p5pBT0phg-PG%R&; zD+5VbDn8%G*6yS7Hyt~UedTd=`Z?e<;JJJUlcfz7&H8%%kPN#DX`;e%*qVW*29Kqv zk~K~D^7+^5nnuzW@)B~F(-gp7heh605b3Ej=9q8`l5 zYL|hp5XUPsZ^f0#O;x?He)y@H2_3sSp>lxaU)8Zb0lvBKoWxoJsAPcpBy~I5R}B{D zzvRE!3l;$IXikqq>FP2YD)#s0uhCi}Di92s<;(gG+p>K13!*7w)+BvHQrl&t47{N_lo-_Zz>}x##O^9q&N(L(3bJ>l=H_76 zT}$qXW(_=OdOL!(@Q0g-qbL;cOPCM$PY# zJm4PLP#(Xj!9%`OX*jHIK)rMYH)*zg-(*TfYUSEp(}2TlEzr;h68)=(JE0y#nY^28 z-)UaNW<&HZOA*x7&n_^Dq1Z=SAIsBiU*a>knKY?O4qL>Y9#M9C2rj zMnDg_&-3nZ9Rrx|rErSuM{p_HF_F3fe=9Z13|=NIvri-}jpsHhA-p^a0vY-OqGmXz z@^kiri8Q0R7D6x+!2!# z=MO;e0kou?cxn{pU-E*^A5dZby}kKUOq^`ykA8Mr$>GD1-u#g!`_?%+|6F(eW+F%~ zt(#V$g&Y_k0QD$CL%WfoWHR{ap+W3-ho`W#SPLR%SpKn~1cWGz746P}r1Hn-KME!D zcRK&@8lvim=YcApf0(RWH{hdDBsnxLqKd5VuuDS4_~7>scO-(0xkPAHGc))J&Zp_SfIi`nzi!B=VAR#|C16_XICP#Ljnh9C+8!_ zC(Y0B9b=G(%ge5k=xg2t@ici2onWw1Q20M13ADT!1fO&=ZyJv>ILxUCkwd_R!lF^q z(c11@oI=;wd5K;lPedvG!k&Dpq5n?DJT966Iqm&qIS zzG5}Nxz@t-fgkGmK-7=uy*d;A=OM1WV%M89-j&1`C}jEsxk{b1RYsAdTf9+G455b* zj823WF$E~}TS-w~prMZ#p!7~}wkIE@-f4~ai9mF`(JlhOJLO~XOZS!h5muHs zmpvqTrYo()$`U8y9nUje8NW!+Lgc5P+O__4lzUUe>uN2sR5BGVC2zYWM=EWmKIUQ#cIk`C|bo+M ze)Yec^TP+f{2FR`@=FX5+1{!AVto-T0}R}T)Drkbbp1+}BejsoFGxenirl$Khz4Ur z1!54iIq4*9wtu%wsju^$R&1!x`R3U3E=!y)r%oXSnwNTSQkh+9-t>#JAjO#{t6>@4TzNa*j#c#6c zN|4`2c}4l9`LHt>Khr}Q6n3(+PfEJz-Q(MEMtqbfuikiu%g{73!DUJoP?-|5BWhQ3H2{H1(rrjJ3l@^jJ9 zAdU&FiyeX)NSJyFzLke2JlOxd15}RYOvu#`HGgD?ngW&LWUKrg6ttJ?d#9TBn)p55 zTg$&V7WDzF{9f{`dCzWm`s@ubq-U-sB}^$C=L4F}9)|TX@EPT^kgSXShq+Rw2Hex< z5|SN3OrMn5%5nTs=I=u(WwPzB5W`N8F++!dvE1f&8Gy>?Q+p)@L?b0qHkEa*+RH#nP&V^P!rUGcN|6Jt z%kdA~qy?4Vd!CnMI@^`g%uje3P%?)we^114( zMEQK`Q~O*#?-agJtFq_8DxW_vyn+cjR%L}+l?S?3B{PwoJ*p+9Ce}+ZN?!c>JTEd!C$rP`lbvdc=1{5uJ^1BX*W5ezUF3-vw#U&r2%~(SX zr8@34`^Z(mh-Ydh2|n;urR4AJx{HXzC#UPaO|b?-iTYdv!G+V8__?rTAh{5;gyc5+ z9|=^qA;^2O83g%BcsW6k-+WerAoop!K$TM<2|WKFb6)})fK#3e01u-gW!~`Osf=Q5J9F4o^y5cJ9qO#rxDhO(jTRafF+5N5J z)x)6Tg|6(H|My$n@0iKt67;`*K9cv|yw_b_S65e6SLeU%y=A0mWC`c5w-hc z+>(vgP<{VKnj5o3yyoT}XzIeCrM?@}+`Z?C=3bn-x0?I$2OHDe^Hw*bxjRtjq5SB9 zr2k{0C9UEY?_6#h?--+%rE>6681J{8&M3 zQz!+Ma+rw%WSI8sY71Pf9Q!TQh)3;ygt8(bcRJW3o?fR|`SCNEpMqH;(?~v)EUf&3 zQ;as&j;V8tIT)8?N>)N814X^U=v5W>ZK`k726kM(GAXJ+esidadMvM_9{-_n>vzjo zvABO__96mrSBq*>eoX^JWPc-w_<}{qWCbtShszV*8_5{k zg(8CWJ|mcLc2*5Kc%Z=)y+&y&=UigSc4^_wj9w4ZeR|@N{39Nrj|Wg=B0qW0IaHay zM|3ksIE;F}6b|pxy39*KbO8z;in5H^OeiL_IS|@|2_4uD{h(IeV)L9qe`=$Kn0o7^ zW_hlO`mV0?%LAlyvEd<^$xYC}&u4iK7q*+;UC)1QrT+Q}kkED&S3aK#BE)*(rhP?+ z=hJxuCoM`+b$H&#n@+gdui}j7{kRE)ew6HTls8ukaLg9-(}0Bcm?vK)6|{k?Jj1Yp zC%>Aqz(z`7!fN<`pb@OHY4E3i6#|1}l?I)#eTmiyprO_YT~3B5O!>PO1qhso0)B-$ zIPqj#6zHcuW3(0p+fOZ`aCV-E0=gxNnxIAC#AazxW37<2{QnaCr&{>$VBli~l( zlUj)X4Zm+K{(k^BnE9t={LlFaHM1O^KA_?h7f&Pht%ekC#Qr_T@%FR0*_e5nrPW_+ z-KdObkanJR|kJ|t98Z^8{@|xLnQPheGur@odG)`&8#^L#SLVh%nHWbKl z&HFev$#Y^1)7`PqKWYyv6Jh*7D)R;4U6D_*QeT25m=3M0WeHvVdexfm`LwI4x%3Gx z;P7HSh_5?yjZiTK)56@7fZ@US1H))JSNlIsvRTv*6_G8WY%CkC*)p7V8=DGe{6Sh| z2<=}d;uBcSKO!D%#SBD~oY9Zi-#J@6x+M?8MPrr2Ayekbe$>PFr(49b~o*!(Bk({$ffpd;g zYhcjXYy-d2Qd7@Ex8$%*klopA^WuSqZC=2IVVmbW+H5m|Y2h9J=4P91zmH>^FC+{d z$2OO-sc^>S(jwVr2|oebtiro-Y?FS12(6?~8}Y$%lH*j*bo@$A9;=y!yJ|22jpLHX zE=o}=t`*i8jq3!~5dLZve*hUS{s7jaAiGQie`*s0At|W-l+R=|828n1x-SOCgS<-WY^wGT~mz7 z7mq)Kg`JKGN?iRtZ7ibWGOn#EC9*5QAOuaZ0G%akooh#wiW&&2H>L}%OZfofM0d1> zu}YecrR0$qJ@XFi?gTzH!0EF|a_N}!6@8kcnT|PMY)uLKuzuLtxsa|$?!^$Xl(7`1 z?EI$*H#L`n1|rz?!{$hQykY&Y&~XqW2|nAkiQp*jipa_cHVzkz-Dp;WM*Ac-YVCUC zF1G)_^~3%t*@LJLff4K?u|u63t%UTX{qAp4KkS|3LAu-SPOKmH;&Ie;>FS37HQhd{ zA9krU+C|+bjqdaMVO6LfwtivUNRZm|-LZNk$Lf(ZUq5WMe1Q64d(Pn4;TYVf^}~8i z6HRc>cc+03ZqBX~cBnSncMXF>iyz;t3OIkl{N^c0K znbjm2)0WYA?W8_Fs(~ij2lc}O(3xEum71Ai^r3#(Hrk7;LceYOuw}#~?Al^Xc7gEp zbkq;aY_@(FKWe&um=E>C;F@T>ewa4J4f9wPallmbgtDIQ2S9UX+@&?=20oJv%k9TN zBCPshYy#C8zLHq6u1KRT8w|p(SmfjNB55G8e%S47Oe^>IbW@8>Q@pi|B(Tk9`Fs`8 zB;diWtK%cY4Qu(=E)Qlsu)kq$r<8;F5bx1;Y48AU8g)f4&2@40!?^y@OPs%BS!+Vv zb)*tPDDTN%>fA_JIazAERaah1`W_fuNDaX&vG0)QSNC31x3kJL+HJVGq4Yjm-oG zwGg=?qxTS1t&n`C_sI9HqkkaG31usUZi;Dv4+LWo&-}llppplbM6n|PCk9&YO{K@PowxcyvQgE~ZOf};nDMP& zp*EJvq|2>@#L%52E3zb+&9I1{gryXjrq11lS~m-I)Sai0gjQ2iQ8#P|CYKx z)*M3H6xxUB3hbjW^eq=JyKp%eWlLG@Q-K}js2vGW2UJOHA2MSt#2gQ5ErKQ#{Q%XEVrGQ6usO+qAq{>X6w92KT*B9j^;VvF%j- z!R0w%l+SJ_qbxA0CfMXRqa#ST6km z?`uX$*Nif_mzz=SXr|T#$#7$}Zt9tRbfw^E>=(&!q=Wo=eThA_u0XuTvnebGHZzF& z@B<*K4>=){fT-nvmvD~7&`u?@I=qdep%1n5RI1j2dT|WTS5QgY8#%n4rl1G|crisN zd5Tl8LRYI=g7>XzRYDLnmy{>l57a!#4`j~-R(?jSko9udyj~~ajxAwXLgou1umK-@ z+L|NgN&O1sZ&Y}YQwL!QeXs(J;WMk+n~rmMYi_{j)$O$62p0xLMM<}Ji!aBiI#$eH zBP(_JuL$eu*1GDB{S&rVAWZwWTF;SSy7x>wB?7PZ88jrl+C4=`eN`+uspqj3m`lkC z{i7L_A#`jW{5g`7kVxoS$z5+C5$E-SM7;HfM2Yz85#Vd7zo}&aBJubjtv`uxMA8ux%px+H{W&mHj=WnvWX#w-qpj(&K?ppUK1 zSWbGi%zt}+Xl!ei__4JADvasJ_?Iy^CdT)yTC#D4I86Pk!@wKMYJn}Rd9C_a!j7C_ zuRqKvOIp8n_M=NN+0{ZxM z@CJ6wo#gW7QgSGyy8cx$xR4t&;1u?oQUML>UlsFL%-l#|cIscjzsRUp#Ph)btX@uJ zuMzlBEv8bPlEDwR4s0atY?Sj%^{4I)SUq~0_Pf!4!}EQ# zeY?O(5wbLDrD#@cdXc}?cA4o7#2hA~I{9nrWG#~$t=1b@wij-NWs4c>JyR#^u!y#7 zKH>rhrgPA?pY z_q@-4w*SN`PR&(npDsLqnaLZA$3)Lmbe%9A-l z-8Z(Z?StLzu*VE!=yhs?{<6kr^_ec~tyukbHMcsymJ{?^3$)UqTpBH+c-^qy1 zTHkPQ!GEGWk!C2iE^g@y{)$F$M}er7#t_<<>G?z4$;B>d+YQ8yi2}q#0|ehB5K3M& z5v6!TNVn0TG}dGPfgyA#KLh8n8C!?0zena|%@1ZyHp~(6T=vD;DQay9K&-b<#PpqE zXDyXESxY6iB5P?|TC-V8>bZ;t`Yj<>DcZG>3?)5(w|0Nj1BXDY+UPOZ=idfpRs6~! z6fX!6b4hsqtpuy>WD;}!Z8vAShO3{#3A0$|rzYJW1^Z+S)&{NGA9dJIqp?3~9P`zr zeNIz-1Uh)p37zbZ8jt`Vf6CK|s`Z&1ip)`*dAgW4-5UxpyK;_t+j*1wqdu3IGSX}G zZ04Gy(l~I5fS7D6jy_?wiXPN}n$7KxI@htkz&{CfN5R~)!JP~Wl`<$)LY?6^!7_#y z6J0RNUd2QOEn`hom57iMgp#)J#sg2Z_lb&MLD~hG;G3r*2RcU+P(@ zjXYyEvYnrrr)Q;x`Khe;%->x3sn}CxZF(AD>Kn?mbSPex{8SJN@3^-<0cf-Jskp(` zCjyPNEtm^ipQa-7!!;>Me3<=V;C@vh`S*mI?MswQwdq5&n2hwqolk;miL;rVPC%MO zw#q>8h{w~-%HLa2qxln@1pd7FU^6*kw$l8$P@>GZbA19L|2lRFzQQYi(dSI0KxlR+RkD)Q3t(eV$)b-|Jlz zwjs~L24kuiI2zMBbwHI4X*bOFQj@&N$@-hs_nLTVQ}nyvrr*K~lF`p|hDEp zFNpd&zleU_@L?Yge^oy(S6$%5Rm@GJL!CJd(R~qYkefu+x=RWQZ{1i#M1i77} zuKwADdPmpy`ldH^&p}B2Oj*f&`cmKP1$;%O!~XNM3(=6;NzZ5`qnEURWRQhc3#h;I zgtWk&{_9q-1*z|~XTFBU2WYJNUh4_V5PgKuo^%7t*;Y%auQl0*rKhwcu-s-~G4;LL z%J&&7^j;7oQzt;bN)t{nhy1 zs_%8b8C51nmC0!+;$i!0if+|owK~&k6;RbmtAy$fr_~+?DpTL9kN$qGmsr852DrWt z+TWkze826#nnIb&VM8E)k@XEC88z1Td%R{;=s(^5{s8Cuh4%MY8X|u|e?QdveueA% z%|{a}g#Y#BHde>k-%EY3Df)Yl_5DoO_qF!-w>aPTu)ml3UVZfUYY(u-@A^Jye}9(q z{kH#Dk<9^Q0w~@uJ1P^q^;@y<#W#X?eCfCsix@fJ=XU#UEkN* z-_Lcv?_qy0^}YJ&@7H#=#&3NO{SuV#sb5Z)@1?%ifNzl@f6^@0_ww@HWc9tq;6s@; zX7rc2Up6(yb5 znZuH040q-YJCcKOcIHW`sqgnEzV^1h*YO=1nRJ?~?-halZv4lvgT*a6D;x8Vq-@IC z(5~-w`HvXz1DK+m`d&xLq5|d(0y7zVUP5LuB1Sd6%+sJM9`*`GoORd^Ol0A-!|_Mm zU-SyB!ve%*Q2FZ(Fdoqb^GK|Isr;3^@Yitk&gAD_C>a2Z$5s8hjlZE8pX#80Er3#= zH3{^1mpO{M1Nx3>=>M%FJR%Gj`!YcZ8d8$K++zGW<8)JFmF8*WH?rN^;S6em| z$qFxRw(3_n>-86bG@L*C-GwRYp%IN8I2!acLf-!H!Ng^?IybcM_qIORd+n3=yRYhl zRW{fD0K=PDA=zaYxYfD{W#{6HgcUKnc*F3}n+#SVHR%0N}$wU7^)c1ME5wt-Qx+;W7zb##%J|-xYJ`dTn6A2mxwk_DQ5nR6Q3L= zvy}M7PoKkVX!;<~y}XT^GWK0+^}Y3Z*J#&$!qIw7-vPVtXYt&O_F-JAD{p`z)B4#q z#(&xkh5QU_DMZrF>OkcM^|r=C#OZ~>`-f@`7s>e3}ob)x?M_5IjCzAxbSob$lyF<$_&5%mXY2J<%_$(X_! z_rAyBjY>z;|9H%R7D@}@scQcq-O8R9J|<#zx7TcNyflGITWOEtxkgOZeYg}hcmjaP zMV)oA85g7ge^CcsT@M@MVbjznzq9Cjpa5}ZDthaHOJH%{xWO0&{cY>vcgMFft;kjf z@TupJ!640(R9vcuuhS%iF0)D4{~M6- zo25d+SUW?)Hf*Za&@e;VI|zu{_NYz66nsV+=4l!}DGg*iBn^NDb?poffQD})*sM*z zr=9QXzP7#>8eXlxzs&l6How<2%ri86U78UZ<{27({EkgSpVf3I?KM2r@$nvC3n9C1 zCn1j&kPcFlr5&IrqdlJMYH?Zr{>TvWLttD8$(Vp#{AgY12#hY|!a$FX8t4;{sS^1+ z=n{Gzr=#lr7d}C2f*?%u^3)ypU39`R=o+f*MWDlZ8A-n7iBH0grE*aU2 z0Cd%$b4>HMNb@B7Ks+y$vx>9&;t~mEREXH=8~*Rw`sg~l-mJ{eBhB2ANn<1bpbGGY zEdRw>1Q6x4n9bPBs2+V!lIOZnigMtOhi$?TbN;Y&oDUXj+jpa!5tiw8YO6!gBUKOD zL83t{;ur_G(*C~?2Aco_4sC7(hNCqML3Rxom`hep7*0=TL94Sch_RWfJzipb6q$ZU zSua8l=ofuB3$rc;|LIxyer%3<_uZH30el_iuQ<@5U)8w(xS@|0xhEe3|Fn_>*dde- z>}41?$t?K00zJ7wa$vVW8VmT(%2Wl7fTT9ge;44T7VDR8csUue$-fJC#{s^V`uov0TS|Ytm<%M`@rX&W;Yz^Oej`z0KHC&Dbh>a}|%H zl#$=E@II_>s@9~!w6AsAzyE84#n_8%Jd=%AyuyZKYpkhH{!05NnD%q5_Q%pam=tOm7FU{R=cg+;YVnrhB41pXWYKguu)Z&sX2_+jOsZ@`*4N??s!dI(m@Kij@) z09x!JA`#{9VgCvypA<|!?DXnfwWR+a3!CVF+^^q%Cd;8DEWMoZf4TSLZ!v#=StO7& z$=|~o0<^dM{X4@SDAlR?BL`fueZ0Vu?&e_i+81tY#8#0Je8K~-2@kAyD6g+tC*O~0 zPHcMoaUdkf$}f}e7Src|7Qpw=PB)7734H!U`90r}Uuxp+5~Oi5=B(3BD8G9SwUj=; zNq4lRYSRdyv9O4@Uf&9BZxh;v6KTtPq3__eZ$-&YbB@G>zF z0sLXfoL&@eYiAs~Pg_yX|E>`PQt9WY6+4ncDbo$|gXte3K63?=Hwh-^IG7~-oZn{i78Mj(!!9K!$(PBcEN;;ho-3aCctRGJm}Lq zhnIYr4!Cp&EMIs!tM#mNJ`aJnCL_i$dM#mM08}10i z+c#%h{1Ir9Km4}r%r~-wp~)FCI6j8sgUdBV6@DxhD>9$OzUkhY!Myfa%LgO&k(_@+ z`43Y5y)~CuBROA>#8tm*J7Cs?S~J`GY+WES3+g&@!!B2d?YmACRfgCy-hBKri05d$ z0&jgLbARx#>Ph|3$A>xQ;pfZr!(2YhW0nuz-2JkC=;ypr2Va8DABJGE9`)hl4w2Ax9c8y+5T)kq< zc)(CRj<_A4OG4a3RwW^Bnt2#U+@VYKo0_=Vh%?9$S%~qK?b3k$Boi28q%4p+Slw zk4QR*RO)`*>6iz3FGmZZG%*+{a z{59;UB>Z*W$|U?X+&qlqubRKvfDLJk~FEUm$!sF3t*If1dvReCzk1^*b)k zDn@>y{{0l|_Y&)OT%1)3|D*ohj?b0JQU(!3Tnwv3eFprV)Y04apN8t;kNG`+R3C56?ea|^PYcscymJMN z5#A!1s zAJ}$55NsS&%m1dE^jb}#VicGkZHjzOFY(q;f8%K>+JZEGrtiwMd`>U3j#8RGTLye9 z|9ETacoV*$5`9#vb4(v{$e)hg&aaghB)oGAue~))0|_srvc_(uLw-`yu-fU`IxjDD9aKifUS@UzUYs0C$ALvS%Hpx(jH$wo7| zR*ielJ)Q>nDdE)oP8ElGpAEFnJF|Vo!OS!Sm!`5v4K`Ck_`D11R`;!2ZOK#OUp@Yt z$I74{}CzE0nWVH;7K&)W5 zs&5xL7ywRiG^a!k!{_5-Sgv{tKPSV08uxCK;}`ur!l7LdLJE?hR|^iAiB!3Ck4o-! zF?jog2gia=nh3ZUmZ#3fD~VwM=;wFb{l{)iK%mCojyU{b-z#h!=)-1qXIOrGqK7SO{Mim}_^9u4t6;#Y{MuwfmcCL#0 zN9r`~cSBKCmpNb|>ElFVOo;^wbw^c_Tx^Vh|=bIo7eULOwX`D>VdF@F9!QC`sV z*U@qvH-8;0-&pfkD(`IZ5Ycsv!J@yAjl9(#yCxgxC`>k(TfmB&^gI=`7##Ce&|CA2 zJiP#VU`RmiZ<<)-Y62QVH-X7*o;;sgBJ@G4CEl6}{m9H;JZ&;O71I~ui}{?s&Xot{ z`P0k2HQbdS2+LHa<;P5CdIB}m+1$Hdvi9d-EZyW25p`!$v*&*^x5>FEdTz6&SLRol z-@G+jL_}qdOZc7hk+K2=Za_hbU)dwMeD>>R$wJu!y$doqFYy=Bs`eotS|uVZ@?@m?~KRy*Ew^Ko>* ze;eIfLk<`D%(UcZIUNux6-_59QuW8UW@A>MP`*Fg`X2KNbl{nJ6^Av-pby_ge2F5* zfnikgT(W2-e=B}#&~f+pj&F%q0MdV<-M=jsGOKg_GQjDtr|z$+PWK7zle3)VcU8A! z{oc3PjmOv>@%>tNT0gk#TX^K9n3FjNsEoySW}_26CQ?f1|BPWd*|tDObxKjVq!NJ| zo%8{W;FEtNB_9!?w8^ztt%3Wak5L5hwOk^}D{8pfIitls<;K z0OfV%7L;i-^d+E78>24)WmLfVp=yh3?`8<=F&+h5wI(=WwN)H#12#OV%h$aO z=U`!~-v0#q5BIg893I4lZza}(`FFtUYwPXgc6JS;%gS~E|3()!FTdWo#JG`xl4=xu zdQ>Q2c34TM6b7F+9lYi3(mvapuJ;moyA&`&k+m!XyZ2CJW!DK{GB`#rmSiQr{2O$t z^ZRu$GvZnQq$ylP`Pzo~3+OQV&pM+C?2pg`sL`hOvXm9#(1{>QYnL|Kd5)wrl^`p@ z-T}r?ZrGpM2z;ob8OeGEAgU*h0(@0#_$@lgAvn2k;O40xUe%(i<(ff-yy(Z;A3*=> zF1@*{3Nj=}nzM7B!H-s`M2+5MWnqU3*}~3UT{U*L{GQm^R*tnFE9c3-m9<3AIH7GR zLsexM`T8ep^iV!=vLf))?@o;$h>h9E74iJvEiM$5+9=vMI<5lXoHc}2LL#SU1Y0ocu(S8s@!6-ko`H6% zV3Q$PbZm0RjZv_o->vun=1R>beoZKBbFrwj;2@0nam^sPhCxI>ZhOUa)Pnd!E?E%6 zMJFOAuJ-$}{Wp#f28?TeX7lZP=f*77tJ*0Hp!v@f9fN)y8N~jnL4yA?#kzy;TJ<_K zq|`UndoQ89-jIlLTuH>D@M0;DHav_(9&9XIc@+;@8}x$wIq^mQiDbRoC4?e?b=Xsc z!)%6!wibnys_G3Ehkp=Z2d%Ipo^*n7xdvmBOgI4JWP+hfi`RnmfTFM=6f9%JF%^X` zg8EA9uYt(ZK;&y6zG(o&htwbAd=#s?@(YDE$*Fc}N?mvk^_A2eh#PZ-SN6@|S`)a}95n+PsPNO(mF9sydo|rIq9k+2RWFYFVaO5qx&lTX&V+psOIe zDnVDTKb^EIb++9T!4sX34*kEuZAL_QCa81a?>SCfj2z)>D(# zTWtM;Wr`&InG`A765=^K zDG5~M8~8Wkd2Z18De8oifd$~ElH9aN=Qp001Q$SE_<8LbLx4!~;}#l;5pw&QRi|d<&CV+6%tRQ(ih)zSefE zEn4cr3aWk9D8tUTIcs!pByJ^AP^g!PokAEhnT2o_`HDh4VR;N`PjmwrL%Q;!>(IVb zOT$C2s1ufd$^+L;Ge9KVqnJN?tkv|*jb5E>qR{rY%l}uRbps^45(Cb{_|%^*!i9Nk1n4KtxN~tNEcMlf zY#X%sYg;FpLt)>IThly$j_HABaiy_G*L0Sd#UVcP?Gx1_tmLdDtqV7V-SFrzl08Ls;+w6=ojrdjA=tFneHq zuLkg!NLslyUv%6+;YXYTl`6;t?~>uip}EH=4TpB%4Gp9%)5@>9z7^Z^9}f`{9vabAIM zbRRu+Ky!&%BSk^b!+Bg~+%z5<{TKimZ`cU`&73OpN9hD`IV_thUGYq^`d}*n9kZy+ zbYEW`AbqLc@qHN+DuA9U4nR-68uX+x>|O|;W*&{-9xuo9Pl6C={*R(XLqG7OF)+i! zz^5bA1;irxS5J2(a-Adp_K|-F2CDXCUq`gR){AIA@pb%(A>@_ERcj91d+jN#eQ+V- zG7t)8HO0u$HcSFg}*0J**%gy8~BeMuCDqQA+eYozmdbO z--n05*cP{kN|B2)J{#OV1xv7SmS?iC`+o9gPzU@O9v%l?jpKHGfCYAIVu+g8M+^CE z{<{h%Gy>MrqvQE6j@MTX1P5X=P2hF)$E#Y-=N)uEDGB|!_Z`dN@oSk)S8GOE3{;rg5^hM#Z!1YDc%b7sS%4`NjVTaBxxRJ(Z2<_3+SuqHt*{7z1K~(kZ&` z^KeQC>}j?~_5h3ehkPL%=XW>4rr>v=LAgT7@dgMWN4Z6^Z$0+moMyC#}NT z-Kz#&DnO*G`w*WNpT=19&Lu3=1*&zIcaqt>4!u(_twDCQWe~>$=-=YSkeUEcmh004 zbJgmVZla1*I*tuV8x{Q)?ct`jZFbogq`$Gh&T40`-$_y8d=dT%WoPq2B;&04TxBoF zHn;y8aFg85!>?A3VIZQ_qq_0$TV+avse>Ri{3C(L)op5dGSVWvjuO%xsQ&}`-*_YY zgYycIl6X8hqJ)ElV%!usdaEo~0+CU$!cY(k^I{}S0Py@xwf$Hgf`+2n2u^`1r=kx| z6_K8&1R~?0WKWjy2lC&)=2*%?C7XrB|H#+S)QLmT6zDheI5s0cttYSHJ<0f$++V50 z-?hJ3jhj(lfoKk>Qdyuu4e>khCXO}%9BBJoRMohwj`|Cdf)!LO1Nj#ptgV-u;XGjO zfZ?GtF(2>8pdZ>QVGDUKoCpreU=X1!Z#d|iTsu7fP48TW+>64gXUuEg1qnyHuRE|P z?Dq|iv`-x#@wX`o`F*kWINuv074Q{B21CXIsle};HnseIl{dnwz6J9}XCEi{l>}tq zx9I3iarpHEzsCxJ1;01;X$5`-e}X*0FPb`Wdr0uxL&y||U#=*DJ(0puJS2bG!B2)W$M%K}{1iVjxGmm5iq-uj;gu>w7R z-VKQ`_C+pf65yA9QJ+3L*<6)%;PjIbJ$48Hf%}v%kr9Gg9E>pF8bSpM! z)1y|APge8KgG?aVOzn6Cuh`ZB7rbCz|GXjic{H7)Lo#J~Q?&*^i2=b^lISA!(X!+k zD4OF+bZwn}`LZTXzueHj3H@^T{l9{KIrb)7zub6qEBHT&e%U@(^Zzle)-S0@nIX(iy6ZjwT_s04Ee@(xHcd z*t&82{s#JG1`=G1e)$Ty9z`M1FQ4Gj=$G@J*+=>%y`AWn(9w6gDPX+*!w z#}E5Nzsyfi3qPfZ5r^yTY&m!%g7}XUdw|E?v5=4wP6tOxbv*=T1IcVlpx@H z6YL=17y1%f-1CRm0p@V@VuFCM4dR1=Qvb)(4NQtH)@IiHRA~2hyqRpx(ji zLDNxUOfMDdvve#n;bn}A>HX;;cT7*s!)-!HPnAEF7{-gXp=C?@PrJa-9<-q%j(FBR zgi88t0OjQMDQ!{+TcyMdMX82p=@(>=rezN^zaV>(w(%obxBkG|YA;J@@lCbrFkrZ9 zjbBfHx$5gDH9zLY=G*48?tirDKaV+_>31`xG-Vs#A#P z1DoOXL@wnBIF?-4r*^LkoL-$P8Na)K*egx<-*Gqk_q4eGJx^GpZoK~n_&@#c!2g_V z!GGJ9&8T-}=3~|5Z3UCXW7(TbO9J|IgU} zoFfwW52WFw-Z=kV^_{!_!3q6e-B|zLxgS9p7#yQ5Yp}*;cwyea$!Ps z)TZtFjCeoz>p#c|iKKlugN6_H`-1JTJo2QUisQ!$(QY8Z_%d`Ne*anB++X6$K?;Q~ z&pFQyv+a5iqYfX=EPj1F<-F8&$l|r4Kia8_IE96QM7R)|xZ+zE2E;!&;CDg==@0@j z4|-W$@|d9nBcFNEADdX>ihMZrVUgM0oP6x~2J&%nPw5pBDPpL;f7GJ=V~*_cO4^?i zr+Ttt{ocR<{meWOw2>LR z(a^7n{(Ih!{-47h{KooUxVvTjKmD-ALo53q`0PZCzlr__%>A@w<4@kd4rVo){w)0M zoqHF=-|%>;6}qteX{=pLM_rNe7ZFjFJk@Lo9@sJlg1y>_zMp?xflH8#_)--ADxE z1&M&*9m_eq2*1-gY`qHyV5ZwqTokJGaZ@*B5l-O}mJOvti)u?iMi+PTKD3S%L^&!R z7AHft{eGLZ@3{OTi~@`){}wx`J;KvS@$lUC0diLuh*a%<5WPFALhD_4M5wVNo};I@ zl2!tC(n{A8MDHR@V%Q&A1hEwpF0n!ylpl;O&Qs`=aV~;j1=KNrZ@`ENjzg!8HKRs> z=#L38b+-nj{`+8rSbLhm)g_L~qF|g2;a5-NaZ1`|JQ!jC$+di$9`u$iz zxMT&1dC3_Z9|fpi1x`6l9qJcxNezw8k2GmYNuaszNA$&<37P-D*7Q#V=%dNW08+2^ zvB81z*2)~GsZ#YL-2g^~A9}tp^j={IRiZbO000yV`@zf@wphXinq~SVA) z5Ax*^8m_yqN{IXD7XeYLdvBl4zeiIV!eA}b{wM9zA@2x(EM%e|aAU1s!qdPXb9MILz2gjj zoO56E{PC0o^!J)Sihou6w0au&1AeI#b=nT$kCmkf{Bh|8N%>=RuYJWIm)*VZ`D35k zrv>i=3u2%4hzgz-T#}#=2cPf4lQTc|$re0O`R%oRn)0e8%y%dO!kY-h$_Ytx4=H#co*rz)G1#tS1JLg`PG!Dx4 zFVK-pghyyl?!Gtyl)|K-sD2I@uuB&K2}R*n*rgK_QKaosph(j9J;7YCg4m_u&jdy7 z6XAMtTrw0Pf8{U>KZX|sQE)jv>;I4S_!GPSs5trfe`k$9scK8R!%bVPFQWqz7&?A=@hkdAx4)+SU;D?~ z7oD!6|BDYJY4@IQ`M>_$ynQiJ!s&Z$U;MiE=hbViDeL2pgs$UDG)vj`=l)|{bam{{ z?|KSd_ksP{ae-!m|8@KGAPYi?zMGdWYRt!KqcWP&m-K$)NP+zbt+ouz@-46?<(?D0=Q z_=0hIn58sH=`bBU(uHu_VXFFM3c8cKO9kvWcPY|=E&JHzluQ6rV)}DBzaA9vokS!I~(CF!LRsDY#VoRl#URIQmE2yG*M>ID6j3&n4xb51U16NH4&-p-hHRFAO=-V*~5G^_@8AK}FwIMuu=caL) zQcG+sZ_s~&$Mg+4kVPhc!bymjtFKAy-)y7lh+To?+?31oKtruVfqE zM-W7xZ-F}JFn=JX;X)r4zEwQFhKegy?VPXMO^vN(ZC-tF&6`r2cT-~9yeEIz=S$n? z3!EWJJAi78(#gm?L|3Y~Jy<&7kLi@$ObKPHN~_NVk6`RRf}jr$cuYXB%OcvKNdH#- znt)xq^%hW`-IOqEVK#2CYag3rQEj1+<=B2U0u{;n$Lq)j>h@hd_qfw3LnI`?N4=ku zSk-+^$lxgfW+r4~8v;briLyt>Kp;7kVqKnhB5rkgUVlpTT$ixgqjE0xc6|SN4dWa0 zeXGa!$-Liid_xU?=2`qXlsX)ms?j9NUKp0nkCOZxC!tdHHh|~G78B)itW(7k!aWZ; zXtl2dzgGWN{rn0XkJwZuAJlau>%Ld#F~4Qz4}x1OF-jO;J#dp-I%9Vc5-EUR@qj?G zD0%;_7(Y7KZ_Froj4=bE9ntbdE*oohuU6+`$o ztR}k5`Jz%A{9{4dKW(JBE`)xq&~Kd$c)z87yR#;_Ed3Vx?e13~|NXyez5G`vhxva^ zzpdPe@lD^=>hZPzEyri+mzK-dryDH!TJd$fe4km>D*5{5`t2fs!1W>XFRSb$g4zyx&s4 zEt{QOSNs*Er)>^-XewnofBzbpp ztL1O;%->M{_G0~e_iBu<+m=?3Z_SL~aC|M5|2JO7U@qGlFQ45Fq)q4-tNyiZADl-0 z6|nRdGMHKDQ&xRb*u^DpNf*W@$)Qb@tDd^n=mBzRZtMYBeWE@C4*qTKeAt$b@2gel zyyH9Z<2%{vcklJ*t!)3Hg!VtEG~-Iz{yxz^lg<2*NskdKkUM8M!rfm6FV&e?7H&p; z4)y3LsTSRv{(+qE+3+s`*DTGCBRiee_WXD&UX-oC{D$cabJP-~=#df=dKWkA^dcegyn81S4Z& zd;aN}rh0pLERs&n@*%%sWFvK`FPiR_uxKOapUC+KO&ohb_`P#kK;N395u506=}jr( zRSdnM_B>Bd8HW+^c>9k4{gL=pHK=MPBZ{&CItN>eZ@-@&PxpV8U0oOj}zYz0{3t)JkrAa}w718vchI_;Vm^egce>n*$M) z%Z48j&}>i#;#4DWgP)1!d1zM6K}E9K>TTsi@v>|!%9AQGk*p2#=cTaR>MrJ&FC2{V zBlG)ExOA?{ou8tHT`CW*KR_Bni#^qIIe3I-eJZUj&!|JPb|AceAk1QmdkW{J;DKL# z(-$vQ*;~`-nccb#j2=x?*1Pe43H>+pH=w9$JkS75wA7HxxUr{*$KTPJuMo+ntw%ee@ z3=t#!kWC?KZRf`T#j}o4~S%C1w zo(V6@QIO^#(VVL$15;$UT;%^Z=GoV{Y8L+k{%hmEZ0aw?zbk%SsqqiA=q)E0U;mT< z7}XD?B+??&O@l7yXc};%ip{1$(4ZIuWWk#tQH_K@#%*y`#-`h-8Qg#%{0{o@TNOAm zB?VkPFxC+$%B!z~WDU$;J#{=@f?QgabWx5glJ(EI6m=H#f#1IfTH@xD(HF#htq2MB zzGTcGIOx5EDjLLR$)`xxq(1WjBq}(mldr_~!#hX~{D@)d0fV4rAZRV>p5hljC|U`T zIc_`)9oY9;X8wG&CT42%@rJY%`W0C73l7c!)SeFa43o}t;C~tL6NZo8FegfNO)RER zO%Ucu39DG@Q;KDFQ@53Yyh+dZXi7eN?6LVH$Oc*|pGA?y**>TOU1Bcglo%sX$to+e zgF;>e#R;Dx7dK1Cy#Ho?}MfT$nDM9tTxNa ztUNW6GCPHTQA{q?+|M%infQy>dEyj!uB2A&IKtFK!`61P*(3z-&V7HlG{#5dib-ra zz%TJh{)TBiWL)Gu!XSc<0#ZZ)tPVWYz%0oA5WMCF<`Z*o0rMU10Za-$tVNR-5MLKy zI0(#3yVyYz$=bgfyRvb@4R>GqLO!nbZ_Q($<>gs8<0 zRhj6uMdk+kbh9QNJzw@;?U|mE!UIu=CpTWHINd|3OBf16?tEVZ4%;l;9rF7RJe8c5 zZRMC9q5r%!e@4U6I}=*xhFo{+cPF&|h-qDqr6{|cFI!`&=vvc?ux`(-wE3-8ddT#t=0@&bg;Vt#dGH8iN+Le3; z)|6MEpvj`tN2S~}Agx5w`XE*KB~%;0$4li!ry}tiJyF9F$`Si9aaP?&lc>yC+3-Eo zMN?aFTdRu3;GxahfC=ZbP0{)-82xHb()wr9n$kZDciZ}B^X0!p|4hoR)5_;l3|18B zoSm%kua%Fa)BqE^@C3p%CQkXlK7+v!H%U!7OY0xLkI9R+lrCsk6iFj1bL0CW{suj? zMBdTa+`MOB>_Y^0gS<2v6)eGJuj0lFBi2Ihde5GhV&^{?JFk6aJC&%2O?Q1OSL@dp=x$d4w1@$$pp@- zprRauA!}q=ijw5gC4<0rmt7RccH?kctKJ?hY^PtODCDXkmua@kZFc{9ll<4?JDdN4 zm;N&Tdr$M?iY|{5U2|b7 zZo!GdKM_-M0r%{Uy~qqmcBBrQMA9zB4K)|)u~uiVF*lVUGYG?pZ(yzZx~I%%1M@d{ zZ+e|?$oW&7yf?1GjZHF49Da9$1?~n%b3WwEHGp6YkgsGM-1`{G8gZSTxdvD>7wnro zxo8}m!ISCwiy~!jA00?6$w#ifh*XUh%cfU%Mv%GX9#U`Riev zY+>{pWmEH);%K4YICEf#lTmmT3X7^!3+@Zb z(HaZ%Ex7GN_6_b63ge!z5C-AC6m-a`h%8F#i5&)&x4_(Y#qU&si*XM&B(s7IaiHyG z-GvQHaf%q|OJ=+PuVPJg;}|vx;_0SGqf)TlE^;n;V>LQkH+nPvkQ*-{SeMARdWIEl zTs1>;<0Te1s;iDe2RujoQG7^V)IDil)B`ZOR(GUzZN3j)gYql*g>0F{^e(}OdT5gJ?eUt5EZ&rS0ere0k6BAo6KhpknW_^X# zA?ia#vd(zwrWAD%)^#}F6ZKPzQ7FIsigXkqF3RreP4`T}HFYJ92=bJf>l`f0%I-ZK z^{?LLdJHeZ14gpqs2jZ=%i(&=D%7f7DCS=vB31nnz|#~gC>qALX3w+q}$@LPsz>88Y@76N`Vu8

    H#+}b{l#p2}7QsT9 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

    %!$Vyo)JLxt0{yxx+VJ0@vtbm+_ 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 H*<(X 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%0AV(PRB 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%0DxWk`}B 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�r!F2_QwVs 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�<0F`%7ClWb|=R6)1ww>4(nB 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

      (pTpE&Q!zAyN-Av>^- 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

      TBxsvGcE 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%0DEA6XBrSbR6SfNf? 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®!Gtw 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%0A}pnC9vHH{Rthy|*dm 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

      9yt0^kP1%T?_L! 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

      o;Y7 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¥nG_K&L4nj=ZvLasA#||%3fVmT*K|rVD_VL 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

      l!cpP4Cb2Yh|77n- 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

      7h^7M(P_% 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

      !O^PW0jK~h8KlJF&Q^NbU&d2iz6*< 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�q&{M$k&plJ9sVK&*4KSE&`Y2gnJ!J=N*4vmGOsL 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

      %X24glVdd1jm(7t>y}DZ2d} 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 j-j_@4>Xl5V3-s>mBKxE1RW2)eZ2! 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�uH#KrNZHKDDqk5 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⊧Ig~E7s#)xUQh?55DKlm?`B~ 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 z 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

      &u66Hhw`xTX$RP!A3f22^?LqxU2XMx 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%0Dku&XlF2QNwiNshMj%}`j5bb?UR|X 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

    1. (SK}Af%qoBYZCLG9=~msz@k!su=v%JiyCxeD9%BG%X%hZgS!@6 z_INm|vTYW@Icl8FU~GL;9>ZuHk`70++P2cDi7_*&-^MJ;$>dsz9VXV%(+H95;cW~! zEI+T$%ECE4*&Vg5JZ)eW5ecXS3wHS~p%ezy15Bfga$;vh3Mkb?NWtkzM6&shhZ{fb z@c_rWx@AT9&yMAf{mE7ITtZ0|KZSsK=jQzcP6!;1bQHblGGo}!yL)LOEEDfM-V z^!Mq+Pca>NI_Xo)3Z72-B-4$j7C+TI=IPoIT)H_f!AisC>C}{99{F^_2Tf4N)~TLO z{D2AT=PP{t6!z&9pJs0S zJw$uj3S#06-8s16unGWk`o-%ckAazmg3CHF2%X@FdYmX3X_8#gauW8S9m|k)CJw3*$cwT9+w#Sx&WAGbYlz%(-igo(wz~ zDGG)cj^c@Qk{NX@RPCgZxeLw#_ds38a>+yPk=pbwHTSTNi^4qf^Ig~GjAE32-G7EuM71{#l!Q2BlfYjGy)*SVacGJ1DEapG{sxo>xa8T@gLb# zT-<=;LPzqy;9_?FWH1n5U==G6;ryg;cR3tj@Z>5H=0#7Z427w#@=euy)-(_WqHGG7 z{uC=vjw-LQ_Y|8NlY6{L(|y)}3zx!h{UcJKQ~;1djvMH53%ES{(08ITP@D!QnN+Y` zJBI>SMVU%G7chmK!z+Vgppyw5N9X&kzk}`>a2^3f#;=+K^iL{q{27E0ml>WDr1ToaDSlr+q*?uoE-9N7 zyqgm}xIk{0_*8wrZwIacN4Kdz0Z(8fyr%O*s?wL%)(=|)x<*c z+G<{*nQT3+(2RDHRanfn-x29Kg>yovBPo*NM@rs#ln|%wxRUeX+sXMXU)A&5c@FjD zdcW;iPsjBrvDBL?+vyb`v9KvpnO(`6B6HZ4tVz<3-3ps3huM|XX)eYDOe@kb+Lc-o zM>Eyh63y-q7k34%VHAL!MZA1F1_&7|86`+3;?+U?_6yjB~0Uhlfd@PIA z-3>g%NhHCyFv3YTEBTPwjKWFXZ-D1fD|jL{*AH(DGzTW6ifC9z>oN!L$kn%R)-@E@ zcP@$fHeX={fyE|=TF~MKMqY}?i-+tEB&3fo>(YEbgu8dJw!Rc)BJfVg5DAEKRF>Hz z%pSxWMuB{?PMRQ&OQ|O4t=^R`U$N>#|Kdu|XYfwUP&*aaTR8m`@R@j~Cg3~qJj{U8 zX|7kV0>JRH+l5rl->-+h2b;-Qr@kI`X!u%0x}cBu4k{5v&Bw;1?Y!SN#9Y3GIU+e! zOgG>|pY9z%d3p0CK@4aw^cSy74s(KD<9$!yhqrCp-G5)z$2Kh(mSE|`4#R!avIhPP ziu@O)Q;ylUPfJim!xhz#8zF|;=qX7NpTQeh6ipdD+4MpD8%kuUNQMMnm-8iDhxwp~ zg1i*M22j3TDQ1M>spqX8--c>*G8`!5lOYNlp@^SDpR*{26e~t4>s#vq%^@;9QdyKk zpYI)rG0OTnoR1g@Ey`g&;>|bf>p(sm?Iq(Qq4{)dEHodEjE3gBvGLG+I65MlFUQ72 z^Wod!QPF&d45xgH&@&n;uiA!Nu`&f$LkZ<~3U&ji=e6dYV0 zhD(dv5V#mHt#3(^*@LEqG0e{ln-&F$s~(XodXYQp5y|>}Sdxu)4;9)hDMlT@Vxk6> zVP0||Yg5GtZH7_{c1Vgo8LZ(n5NXqB&K^=3)HtjfvLWHkz-qo$L#z4s5Vd&sZ6M_a zPnI1~4b*@=o*Ee-?id(7XydAfA|0n+b9dNmn-uB6R2PK_rlKQ(KfT;dQ&2 z3Taegu@E!EMVPMTAwT=M#XGoE7JA7eh=V_t2NC&+Mi3ELmD&>H2*$O8IN9^4AOgpt zG+x3&G?MP6gdjmdAq}sAPG{<2=!D$7)H+CH>_a1~9#>Nsw)ZEvZVpRHu(ZkF zQj0d(^+)%4u>m3yhgXGL>umrRKczMRY2HA&7pMR=6v?e7UuCPi&~GWY;|i1`sqrFf z4AkSf`P*Wr4TdsM z1?GF1Nm%Kh4S-t=Rv8|7YX5Kr>+aLV9PSw$X6yM9{)qW3^&N z#W~C7i%pqBEw`#zjh3$&g1afRRfVrY7OMnpY@x-p)B;P_-o1myo_agViu?q7x=8Jr zI~~etWvp6<3%>v60o!3U0EPOr+TOG@0%RfLSw;Zv&%d$amt=obu60L3(d>Z zPwRP^Vb8nF%4}IBg2h2GyUS1Vby3ahG|(@zYCe6lso??VDv3fxC%njOsAFAcS9!ID zowYnx0q{ie9he6cnhFt9sXJk!l#M@wI#IK7o~KbIZg4|;!9@8@@sO`#wW#o3!{`SF zD(BM#jwvKWL<~inRDhRdQ5VxqFvDN9HnvlMZiIu=LqflYu?i zyu8h(`LlmLdzsbK`+T;y|7@>YG>!G}K}w(qE;is~xK;o4vm8%0?Em$dIA;t%;@|ks zqRN|p$_dln&$1Ag`AYr_6TaK|r`8|O7Mtq6fq>IS%_sW58vby&OaBP1!D_|L-_D`M zkX-7&!$Sd`M@;?3O0uGa(`{mr3xZ#@S<0mM>t~b6Bpl`hmZ3!kXqv8M!gG@mawQcB za^1xe6t1lF*Jp5zxslDc9c~nyeyZ~otVT&n^F^RD{p}w(kmik@5HbnWvwx4h(4ZX} zx)h#-nF&dnPSSA$JM0bx9akO!c=oSek+EwBg$GkyP(%k@b@A2&tRTS#^;a`eVD=x( zWQ!>y%fNh;snIge`d*i1%L-XOptjGurBJPf?HrCvhkXM1U|Bo{*1^VM1XAa&(XH*i zs1^fHC~P^%MC8R#5Iv0}YqUgtO~a*fUyUc-VBnBG!Fk)5sZFEKzY9j^t82)A;ybdI zx{aMw`YV`l%~yGO0+X)c^#Gl1&VgAU33?YvxW0p3!~B_!uI@oNp zCEM{IyAfM(Asc=RUSz|^J5pb2m(q(yc|^KUKYkMb>4%SZo__3j&*{hJx=rUIHV)6K zLLyF_t&)yGH)jWCVOHXzb3e?!Ai{;z7#R!w{p#VPe>Mt|jxYB)w%ofSn0z+sip{k? zw}!Ax{@FAlB5Hp&ZQu?KpG^a}T>Xj?-IU!rY|7<`Fh278;jgv2WpavyMwf+Z3a z@M!iSgQ}`W(Bu#KJE-Pbe7q^d1=cv_8HrzIReg#og=;RMXQ_Kl(uYbo(>0ELzPc(3 zc|l&zKefk#}gjcz;0D$0p52!k1Y9YX2cHa zBm>79(4pa;R1+?K{-(7_V}62EUwj?JbllI6tac>T{#Cv#KIBiPqroJOYHY79N%aIZ z0(GECWKs(;sia0usB;9BQkO8you4Fi()&EZ%3+hh%+3!X=dvo}<|; zplhHyaa@6$k%`3ZKu#(-N?p~jiNm?58QgyrGboW~ zLuG`U`!cWYi$&N~q23PS*WbjLriyBH&wP&I&TO6kSQeW#)&>yA&G7zf%<*(0#JkS2WXWc~Id<4w^n`Tzqt34rV^>t740>=jl z^2@V-e|@JX`$+)fIyySW!d4usv>3v^JEVZM5}DN>=`l=Hhg zx18qa_}OCs9r@)_B5HZT5w%OrZRoeFd#VY$#ZEC!CG@B?;t;(Z7YqQoY05y(YiOGb{R~C;K+nXFA`~Ngjdq6VT4!8++l=O z(hOpR*B0`K5soRdi4j&wbBZ8dsWXcarU~uB9I(8cl64yn6W(5^-4_@N@mdbUTdzh&!7-(cuI zzp>@kJ&jHWMu@Gocc3JF5;Ml$Pt)@w;~L#g8FR%fkVQ}y7v=KfK_?1+d<=?$r_Uap zrR|=DrJkOsebcRE4?C^+s>Qo74x-7yBk(PyaR{^&y&HZWqRWVv;FiX`lh(`DFs z!`2lUval01(D4~;z3nn6MATyq>{-!#wyufTymMCq_Vjq2-*h|b)`c4!T%K4qZkD`t zrS%UtPpq-=%>0SmYPnWPimubc(&;ATdP`{LHnHVh8z) zQAS8E@4K&m=;4b|Mo`xGzf2pccGABXCpoXg_3M#&%b1twd1lY5FO)n=!sd(7dV&)c zUyLq-&VYovp*f2)VQMkr*L&w{8(HkBwLO28CMZ|2cMZL;)*+^@O79>$5ez$BtlFXDN!jh zg&cw19#$laa+a6*3@an;9lVkMz+)sB(7yk+uaH=G=M<$86Se^idXi6zSwPjD&%7C@ zt1qG%$BSb1$2UgsO#Cx$%r5VV-_nfuaBHeZZPH2wgF$g{pO4LURZ{2MX)2%&C@Kk-YQX75je zO2~GKVHO1vru{MUBo*UbQ9k75Wl@avm>sHyEt9CUO?vYsZaN)yH6IW7!!$2?(j3n1 zsi(#iNuPWIOceHMr@2I7pL8-yl=X?HtVC&_a$-sp^=YS{L}8zFl1Y^H^O#EVgnp|0 zm?-TNP78^WKH=n#DCrYU@raT>Q7HNT_cK`U{Xfm7&Fyzr(V0_DkfMoX6z|T z*Hc?Thh1@2fq6cYv)q*@w{&umeNq#d<6^Vwd(*gYTF>OVAH|l*)aQAXXVd$9Y)!_W zCNr70TFl|j-S9_ z(^l6capm#!8_J0Wdj~w;t@d)5^H|43A|6MxOh*rXJcbi?OyJv-&GMA|rZ)YR*XG&P z;4}!bAXGl7A2ON}m-^5dwmRO98_4PBJnMOyBh*st%|Xfo2^IZ!fMciPoGkHa^m*$?98;y8H1Jxo70B1K94 zAaz1{;==aU)x!y{yU-FxuJp=cPeZq&BDOT?6~hkkTTu*Knk^_M!4x~yarn{Usym)H zGnX`iL`LM);=~2y)YACM;lw?A>X*i3Egf;hO0Ft){M&|t*uo@N3p@I4LoIA!PUT`k z3jh6uKL0oKfh7F-3lK@z`!R)>0;jY@E0B<6Nhyi16i!4-?Ir0JI@0(JJEo;p3|o+- z9>b1hsnx+2B&|BQsclLr*jq}U;q75q{293s?ylPmyuhg5Ukq9!=NA!3Ev~-yKUmtQ zXT)$-LBaSKICyPNVD(_=>C~*6z?X1V&3!cPhrT!C zEIKHrO^TC9$!O6Vl*KCcp6IeT0by;q%Rt-YS#t@7DTnXRg9TF;AB zk`}+rs`)gX6GE}A`7A@}(qW#TBx&iq?{pK*4Cf~kTu*spNL~4VURKn{5I!YoR5?D#4J70akj+{t7 zg_cmlk)_abaraldpP(E;*gaR70gc8DghcNG1cQ#D12Tebz$&}q#qhcp&x+? z4Qvv}w*eE%3EF&^!>l3I>W4y0C?PgHp@nn=;wT zGRWvaZcSDJ{31bY1Bu7q+#&jr1(;j`3B5^JO5hDjsdpfu*6zn_0i{ymh}k>wAI(0b z+=kqrT;)~BLzkmCmz(PT3{Dq~Ro4lT39)({h0?Uw`KJJB`szZPGEPEMUz>kcb-9_= z&;IrA1Vum%=m3w{+MOXh=p{Gd;GE}6T^brUVvP3V%2|f!CAJD>2#?6(ks&Nn)qEuI z+Op+CLRO4xMHNO2QBzbs!w?2>We7t!#8nRr;SgN(Z)i|y4hqK)b~aXu0nf)9?=`*S zunm=H;4_e2p*{WyDB}Sme3A`-BYYwU!9nzK!;VI)L3~K!=fC&O(X5;)mP@h$aile= z2E`FJ$p^+Temn4nBm?9~YtjsoBTUi^lp{@79aW5?HAZ>s){IR*rki zAH9VslHzbr?eRQ4O8K$)+R43x*rfDwaC0d^WLydoT=e8WoPJWw48CCXq)7a~VD%)K zuYB?PNj1&-f)y3~Y~)~G`~@p0!SwkH)=to@-%n2bdBGQ~pMV91|HaygU(NV}T_rBm-E= zwX0n&U8R+KXG=hScR0CAEBKBlUCD*t#bhY0 z&^SpMd04{QXSXgcoGx;#SN(JUF_J%tQx5BgyF>9G*>qZLRy9nEGAL}?e*(o~hk{j; z)8)E;{DmN;x}Br%+V)0`F#!oYCvbf?LKOr~ha?-QqdZn!`}32YlRvxDdzVlI4UFiz z8@=02n>NF_dtpMI8taSM*?PSgKcA=G@VMC2qW+C_Vp8Ia#)ZjBJmwJrAms0*-=Bo$ z^L>iA%GZl*I)2Q$k3Muv>Z6C!z#)d{F{7NY9xWE*mKa1}lVcsh2<|{0!n(|}S@wRB zLsV}L?P^z+l~bZ&ZVFLLJsKzMq93@!V583Kyv*RH%&0iyH5l+JX^4$9l5=Y%w4aYP zXY5EeycaYAar)aPTg1bh%@?5BQMHaqbCs>`f`Z1Nl|!dKW70r2A7WvEaRvi(B?(q_ zV+Vu=Yh1Uzg8~JlZ(wLJ_=AIu!5tuM4DKLdWAFwF8-YJqv{A;5Jm720LBp0JX5g@K zA_or}Ds}*|vEl|18!5p+V#7rZCJj)C`*cRm1_FC`5}3$=#g-^?aIvA{1{fPDc95~L z)IbwFv&K1%mAv;(S^pn<@Ae(Hjr5DopVE(#mWSGLva{xVUh`nf%0y@E*vGPywYHZY zsBTE=?QXJ%WcxB%`QJ|gypsS46bih^eE7aelqT@2LZNOz6>NeV^!TRs!D6CR^=`7{ zf|lIYIhV(8)y1$L)NDCUJy5!gm9LCR+=VficurGEhYeX4sBIk#v9a zjyeA3O@N4htJ}bM5K}grdVr?mn|g<)BE{*g7j}qr@0CsMH91ie}B#9 z(#Xsiel%0uIG^2g7OX#SI*)Er39>od1h?|DrH$4<oKK?pQ@*D%d(Caf{wmIwa}2up0AG$1@sJ zlE*e0a}vin8Z*+zJUWvS#y=XW$gggc4{<0NrOd>FJ?ho*_Ve(|i_ihK*5A^9WQ z6569xE)1WXy@@s~VjIzx*a*Mbtzm+937n#{e$BusIz4~4dJ}xWh1I=CtcKT;=CY@G zTzS^Xej=xfq*rG+*5=b|i9HTF&7$XVz-8X=JNB6$t@NABQBh76-nEX8JPzmjo3lb! zhH;>QMW5<|T0YI;R1sS~=;0Kb_A?+LboySgMnH{yP*TYajXCWi%-k!;Pp0ffv!TNx z*lZGEF_aAjPGVRM3E=Y*$FrKV_A5@(?S+ivY}eE(=FK-2eY~r&M%vM8Ynhr`N_!-8 zBi={HbYfs?r0(KjYNXC$V``xG;cHFu2al1d`Qa*FrpB3`gZJB$@zsm7IGUQJ?qh04 zi02>$j$&(w9?|U`PfvX}Z*JR!5SlYm5%`j= z!%cq*m6Af;Dd|YmO0?6Gs5d1QiJGASC5gIIQjuurpHPx&IyDu^I_8*?PObT7Z z-FO0ubf>Zgm=hSWe{W7bsZH1aBd0HrTVANb}8Q(O1xN zD&6;;VJ^#=a-wu^X@QNhoUx!ydrHd*J*|j|fG(|hY>Cl|kO+v;numZGol6cBLI?C{ zO=V4zR*XlnKw1;ol4BCh5fEiE-8*1Fs|7@QHN%6|{`=j&KOVGak3ruM%gLbWgMOD1 z%egc=9a_$!*HF=N661c|HeS7UQox!h-EPekx>LV~*On~pem0g9K_fW5YEa90w4Sb` zSfXop?kavD#+=HGHAASj8p!M%HXq?h&~Fw}YzS@O*@Xpvw! z)v5kmdO1O9)w6CIOE(=aokTlXWvd5AV-D&Jd(K`mVCPi-=8&Y)hRhFdaPGdug z>2a)aLtT-OEd3#t^zb%)15*Y(qo&~=ALK_@y9RdAi=6jVC6_HiVV>oljG3g}^U z>8~I9^AuR@y5nO+#?*zkqk-u3Qoasa-a8V%*4P;SYkBKP&{|_7L2Dfg;&E#YkAkih zS73o_4UU0r5wY+~7P9%?a)ENz_{Qw^`{u+>o+{;$%=d zFx_dOba;ct{3w2to%*TJYfpfIuX*N%ly%L~F~G0&0(ivGa5SVdHezJWLo_6_DNg95 zGN^r2h6PS?5+{eQ7xp88>kW<(6tYt`DObvqHSISXt6jsg2Mo(cxC`4X>*JvR?n~Yz ziZ@4Mk!1KAgRv?d3|e@_jU+c%)5}i!I2&)> zmvzsFC``h2xI1UT{Wf6dx4UrtDfV87|51d(8Y67{d+&Z1-g@5MFMrn&fgt$cJqH2`$Q1@Y%;L%Ts&Fc*6KL0{IYv zy!z+LL_EbeT5k+Vbrsh%VrAne3Te=g@N$rw)nBEiAQ{kJqj-y!V9~k8GBy;|q9t-m zo~!OfOH5TuboxmeqR%xL_dXU~alhz_hvTic4);Q3?$`#$kwsTbTUU5yQPs(rh_1@8 zhzDjTcn>GDwWl|y-mhWU_driQ>VYS0`8V`f6uy=`9&p5wCoAC%Pl+)FBt!lPzZx4! zpL(yh!Ke4(uyekTw)dd#3@4Rsjr%;Ul4c;DtcpK$B@p2g<~ijS%8|0!;+GzB?mwRoZDVbD7e>iL)_qq{AZcz!4 zco&=?OcXCFVNnV5Q3(id72+7NXBvSF)^9UZLX4m5D5sXE;59Qzf~uI%aVuFuf=l<* zw;py*?4+TO2&1(!l%0vO!X{RT97>wKa7bbc(p9PJ`Ah?5PuB_m4#)*JDDYD^%o5rh!RBxpWsr zZDMUo6eEV)+4YIyWM1nQ#RR>LCLJ>lyCtN|HT0H{GSl!|Ldk4Ha0xB*48tXa%rz93 zkTTP7Ttdm*Lvl4qJwDYu4CO3CbIF>_GCY^iG0PBLLdQJAbO|Bz4Amusj2f;t@k}9P zr^I9#BDbMTBXlRkWqnAUVHxd^yqtghkbS<#;~5uEZ{{DQ3mRq~oeLV~9hM6c<{pm= zB4!h9+p{44G84YypUgatbQGc(47hS*&^yLVL3w z8```CKnv#73JoomCKPBv%v+jGi$54p#B7?7@Svd(v*Zsy&Y+AgFK8&#EWzF~qQ!x> z0uK})CR!$;l^i*1&`4+*f>v?l3_&Bg zr0RTX-r|U$GBDdM;9~QIHBx4Dgxk5XWH?$1V;bzhs4Y^-Xev`$O(JU8qyVe(10$vLrGV?Xr2_vf(tqb*u(@Kf~LYT^rwlJq@`qx z;1GjpvIe8@97qgR!h%qS&@r3bC%954lqg`6o^|CktvhG(qVJTP0W7@DQ2 z8nqjb)Y(VRcr z*QeIQPcF51@oItgV12e*@D)7F4%$wb7^~Pq?F$qbe4v!r8Hk; zBfUaOek0sB0+PihWSp?U;*u#Cjpmp)7)YcnLhCeY#-M?avIDKlsM&!ALdy=UYfFg& z?bV)~P44vt&E(HIjM%xqUb92u2W#eCC-8uhcNM>7!3LgVS7`To%11TEb1|&)V!z%X z@7VukYk1Si0?Bm}sY%JhlwHWZ@7U(JW{vO4_r`UHk<8usesBfB zMYuosk)MQ71BD8GH{(yvgbbX55Lhi>WgHt}stjW#3dJ~`(jZ|?^6kK4@8s-5u>H@G zUA;W@eq&$zioc+u{fobYZn5y;AL1WsYr~>Df6Z2Zu5u1vA7H<+=;U;DBF~Q2fgPeS z3D@E7oCWvWfSvEz{s3)hA&KJ$vA<5XVepzIK0JozKUv+ve>r`&x(I{2-FBT^y^LWR z`7F6q0sIJxxRUK>&n)rqfO!ux@x?7&VBKRUatJ@ zO>}thgW8`mX{r1uU-;rrZ-Sh0C*tbdDbQE`En{YuHco$`rr_^FeH}jCpBr#BovNca~UD#RGsP**QI2g?@qY6HjH+q*4` zR)4{j^>-|0i`-{VkuP#DHgX}nZ-PfF_ivB!!!J?TTkyN+{6Z-&I{!`ZD0DuT{T?59 z5&K2#D`wzPh`pYNA4cG^v(4T=fS3O!{g>DNVe#}APrn+L%*@j-a~E+E9oNa~PwxEN zKD=0T%7J)hiGK5lxbT@vhbh;eYgDt9M&@R!?^=8)DfIk8MNPJq5Syh-F7SwjJ@S)zgB@j#zfYW7`qhPgO!S zMEn5d#-E_#IK3Eto&Rg?YWT+=pWYndF6=+bFn+liThw8@0Gm zc^{ohnEf~}3WB+aAHw5qvjiFEOH-zvR#)GnGo^WFb}<@@(fFQ>hHiPqvM-i>@%`nMBz&mzC_{GC|s{nbuk-@+4!E!#_#^_$l@Mr0Ufl{-<9n=mQ(Js5O28@ zQpr}$tT<2ANxjl9doc-%N%)>j!oS%!4THdcwU~qAA%)5Xr^OsB=3sG;7We2eG<||o zy0_tSrDJ(9rQ;o%@9}U>yFa^(TCXHm-rT-=2_FUEsOr41-Se<^|FhKMNvr&sZ&gFX7h(9R_PVz0+%bO| z9C}t%PAD(GvNibJ)z`YOg3tbLTm4H>c2u6^6mU6ZH!!a347%RJ?bL;hsd1a($E4W~`t?X*P&pzH5u84Tdoa{ZrMG;DqlZzs} zit|ldYQ195mVa6lVX!Dd@W97Xgk+CcE{bqbgrN12?{{9siy~YUAwTLIOA%VWT)L>g zMg1-65B6{SIk$QQy#&M)42YMEpoZka_FgiAOGePE>$4>z7$)I5+?})FzS^LtnVzoX z@g}GMp^feKzZCDWE`H$R2QGe~hBaOMz)7k>-OfqN330UegUbo=`RAV&e^4uHH#dJ! zv$Nu&2Nyk9-0mokb@MaL@-M};j`B~-0de)h)#4CN(jg>&f_{mRmk4=@ke3KKZx%2& z$56Yfe{l^L*KlzS!zDycYxw&ww#-cvE~O-U(Ve01%EOW4$8C`O{L_>B5MD(056lx?e$=gRG*6pO z;q3;pUO4U`l69$Y2hp;A+!ZhaGwcc)S`%pE?OOtm|FL^&jP0Dq;4?%V-%?{}r`8lC%2#WZgHpJEypK1?>aE0tPcC#v6; zN@X#LTYsRK#;Hv&W*NpVH>Yzi2=44-L5o8hSIptiP8D;wv^B*fF6~7ziF=*zK2+v2 zxYhK01{X^HRO5y0-ot;X>g9-Cs`hkMcTDH~3_Jx+6*?zj7+qeO$(0%x>+Md1^WhyT zZ$7+3z0HSrsj>xphu%FOzgJP$n?SC^h@BszaKDY2cXIYN{ipIxamb3Y=+0lW)t@VI ze_pRgSGCXo`)>!b_XXJ|kAspo0Vv&Y=4$s%aD7~_Ssc$>s#0Y&cN&DAQV{X5{mi(p39nwy)@gJZ zt53iucAEg60D*Mf4W#Lu2~bE=wLDeo940p=uy#brgKhF~yp>(Y)4Vms(-@sWt6m5| z0K+yWB!EB=)e)c|i_2)RkVIBgPzYip0w_e$4FQrre4_Y-01HKgK>~v!Mj!w};N_E` zu=Ue5K#0_K0{P_F`w(pZb7WU9pQLYhf_<^RlxqvX`XJI4fcZJ)$=RD|!y>kM?H@ks zT#fErfo==06RX*Bz%rJyo!&auu?1jzYHB+_*`X>C5R0^dEdsls$#!fx8tDSVsFu1wF{ZgL zKup4BH_?n_xCbEcqY7nFrFPRAdG0t3k)M#^a8`^W?d&bgj;9om+kniqETG} z5(-9jCrBt5(-k2hz}}6?E5hYRQW_q3ub|sw)Igz3#*naiL^q8D|EMk=2?b-iha?0{ z!nLHNWF)tggoN>2S`zrkW}#CPib4@7`F=YJpqocaC(;kS3IbJu@)Q*C)uZFy5oqv7K6$Yf`wWB>ifiY3vZJsBIzkb-WAc>dqGC#Af?*(C?kc}95PWy(g@FigmR%SK zzx(9Eu!OkCEeu3~qtwDc=pAJi214&Bu`m#NS9yhj;JZpI3w7C%=`W5FCu|JQ2bMu6*={Zc1>$+asbg@4VHt$$+ zjDmT}j&=s8a|OyQ&eI!yi2IMS%XhW=%X28=K0w=v>jMkmnmYtrC+b+sD3Z&wnom}@ zVYoYew#u9JU%lipoqU$c&C7`S>x36CgX`3B@m^*JZg|=vrwr!e0QjGvf53j50JW9B zy@?JFeo*_vfsgN#@EoOK&P>&O9-5* z>m)oJltM!E$gj}w-lpm6T5;=+Y4V~5;>F8@+E(D|Rr03dbwQy)DK6qcYMT!*`J z7Tj+GcD`r(14Lz>*iSY=ft~a#g8_3*z_%a=)2~REJt$HRmHk%6vH4zF_F$Gb;7Vlb zfw_g~6K=q_$N1rwC=681V7sg!F^uOsjTf62HL$3G^-1a^Sc@%2oO;Ch4mA^e24TKVW!tDE_bX+H^KmP*tX}>APQv9weEF5bg-8*_pB{UYlHSa}E4!8SC z3da(oeJf*ftk*i?og8XM6%&r7MCLc%q(?HL9o_KbUKY{ey)l3w zv)u}|c0lPG$d1AkMpCb)LsFU23%)*b?Je%&C2l1J znm!o`2$>EU@HueBDR!NG&0-rUb>eqj?|0#?=kepc9~8snE?5LrKHEJzXP?3K@_u7q zp32`rPp@d53|+@{=|{UQi<7Hhy*qALr7=inHBu(%^{yaL0`^kptBO!xy@ZbfxS6g~ zver|nrYX94g_o*`?FC=qY6Y9@@?2hPS1)6`{L0pF$-esWRq&bjTdCZ|D-MUtt9bd@ zaQTFPc9Oa9I>fQ4K&h!WHgDs-WiO5FzAzH2>oU78kzh`<=OW124yAzIAMN}fSqz1W58 zPwCcJoymn!uB|V*&i>(};+r0-_@uEX<_1+G{x_3f1c;~hAfAW~15hgBVFO6c$Zn?O zx6&&Ra&=t56AQZfr$TGU7fO7C$`fSvTb1h>+uOOOt6v-+#tD+I&Y?kI2BCD}DK zwcfm~Y}G;xD>>$B{Y{7UDtS01lLN%x9p7Pp?9iTJg2u7t-- z?EiTi^k z?uT57+9pe)s)6JFQ|}dY=6fG5da>FidC7+^`Ox#vKY8^m`H~Oqc%d)P2G!G4v(1N| zdhes{Jw#Q8ic#up=XuR)26j0$TFHZuJWANa%c)U$`m~%HEvH7!6K$8?_rT24Vv0N26Uk*XjZYJt9+td$1Qzt6BswIvbmQ4XyF0;cIoRV2?2Apdh zp9>~W@%{`dGYyA{f}rMUVs0*~!OW6@Su!x?Vcl|mx7^!(INo~ea4!_+j&1ty)J!1* zW9TX{elu339&x6&dW(`UxF|AE6sUCTZzwSnVgkx1$ZqjqZ-ZB* z8zN`?aXAqHn{z2~_lsgXX=M;L@p+{d`{e9R1n+3E4S)2Hzq|GGPpVtn`4LckGm4xs z83nMEFWEZWu%6v8bs}v0oK0dSEPI|!f(GkWPm`d+uI< z8fgLd1on7-b2QT3yR=E$7l^3Y1wxvZg) zIc69(Zg2`qBVy1h*2z{i=5Gfobfe)oowX~5W66D8dF2Lg5rnR8XQE(@>~2=m=T~r6 zPDtL8gA9$G5p>KNj7f3NAq*;NMxi4K2kb#(p=Ju&NH|~$8Vfm7uqKKah=x&;tGqJy zrKlUU)V{P}?36DpmL_8`TCSQ3pjfOHe=wkk*@V`1^vpp+A!Z3$*U_^C4dv42y{=k? zHaaInRG!Tj*T|_KZVTBe|35V8WTxoBB| zhC#^+tjkJ=0qw1xoK31*2{LiB=FRJDUMl{fZ17Vw$mDMsd+-+gZk1LqK3j>uu&>EV zG~>wr9j0ELiU0B{T>HEmG4^%PlnQr`gFauc*#X|{eGi0X*(JpLoIiXN#PUJl=>q;b z@HX1h4k|=)uy-+2wu`-pZ0lDY!Twdu+Gq-wq&xRm3X=Xie~WOOA3oimH(SP67em#3 zM`tlo@gf!ui?<*b5jn44ZN!_w8HfnU6NrV{Cu~_)8B?L@S}5i zqBwOmWDM)-S4hDnCvR9#0YkM`kg*Jv53H&J!d*gu#ZZVcZJ2ifE>>sp66WV6IBS-^ z2*VtOq4Q3I+}idv2`|)xFz2|C`Siw6Mah(Q;SCUIOs$TcbstjkGIOp)2|)EVwUw{m zWPIB``1+BQp|DJb19l#!wFHgPkGJX+!TeeB+He8W-HyLTR0W~wnK|n>V7-c`H=}m| zqM>2jWo8`w9vTY9ZOlVM!>B!YXh@hwyB$(mdW`MF zE!~JsbZAy##C|z61dP}khlYSLyWr4JFlNIW8VU${+YkVuYhyDq7`j*pS+AenhAeU} z699CX-ijNwV6Ycbf^;b#TN=wW0X%ediS9m}X;T^-8E;aMHbm|<2O$++QC z9m}X;PaVoM!WSu~vBHo#m=VK?I*<{=f;x~9-TOL_G2Qe!k}=)wIuZi6xiTP~`%5&a z@EU7lQM#iP16Ph7D#JDF&w6xQ{h+W`z*!lzRX}Dmsvb~G357OZ%-{;x=pqL-SoDwz zi0I-2HAM7~Du~$H1o?RAI)k!=uOjZ2dq_H_-4>D#*@TG^@@nZ|g##_Ln6c%c(Za5T ziXKr85H0FTfann~n|T9^qR3)(A-Lv*8>#R%5Szll;+AX`lg)s=@G#=5gAy}t8!TFY zr4Z4hwSl1pR|*V0ngkfue6)trupBzKe=>scJ$}-|?{b*V>u_d>X4B!PegU9q-i#Dh z&66R?h}-BVChopdC8C>*!6+f;{K0@CW)oTw(lZAQg_tF16->_(G!$x@+asagzmE-98)3}OU^6iSmV80A)t4hUAN#T^VLS|*{D964*yNN5>?R&nGE zK_j_LBT#FBy)lnDix|Rwa(u*VKX+4i7-=z59@u!WbaK!@fl*s7xq`t%#~ifcB4r60 z1sx;M3X7BxXcUBuz`Cbo5YV2fO%I=HDuAHB1-kX}I^6HK$sXQ5xZCa$7HKr|=}FEs z2Xxn0=LPRR^oxMaHmHs|IP2G>u!cj3B{b*}e|)~%gfw~u@G8>&KC)0(Yc|}rTgs0rY%u(Q*f=l$gxFm zxX7`k9Fz1;a%JE(?~>PVAIaMkxPz#$X!0~`o&cvPD`+Z{R6k9QXE`iGKB;>2EXKUm z#cxr9XeH>Zd(a}LiZEwMYz6s=OWYM{&2`OC(WR^=l*i9c%s0a$@2p}HlY-QbCuxN~yM~c;&6qGFc zZ@AdZ_KK67HJVQG#5zT&Xc@h(mDY3sIpdbbl9MxPbuBqHBNynB(=%p`FF7&emI;%S zGis$VIW^NLR(3^Jk7=KeF&(jFntW|Wthy$rWyHd5a$3f${U#@7%<^$^VhAeGX))0i zu}=q=MbU~X3bMFRB<|-HiKb~`6FCaxvx}{SM>|ag!4@i&=pNQY5(aISJ&xpojIKwL zNKlaW7?KJK(jGyAK|$H0NH!>Fn}6a#LD*wRLMTXk1PKWRWsfO2(M{sK6BP>DW}mcB z&^7x6hJvoyCo>du%|EfBAZ-3g4h3P8NqETcO)dFBjgc_fAcscTUyvq$M2eIAf`AO2 zWwGrb7+aP5Jzh@zlJp=Dn{31s#pV~Lo$nihg5qJAiY}`ijFo7F!!QtCjyo6w(Fg}( zAhwuz5P0Zw0o$$}&4UUDmSqTtc7|mLgfw<#2&64uVocx=K=XGiFT!Jx7h2od$wUi4cEvtq71|0sBEDvdOtVybU9+@ zl^-q4#`7nQTjw#jtO*@A7^HeZHzXe7=r4ueu`)K7T0p;c=RM#&JG(-m^gUO zAhi_H_%hRA5=Ju)#48LmC)*6|__|^g8jutApmm}v_Mic|VGq{zc7X=%bzAk;mfH>5 z21FJew}X2YC)+Sshd~mByYqPcz&6JnN%L*>*pB;fUk3j>x`8HwgbPd zx7S>?nN7DZt+LJM;B1`zrU-Hp6&T#Clzy>lqsxxPHP zdR#=C=VhZqi~YR8|MjxbmyK@TOH;ieQzd2B%3VGBvfcGNo>r~dvfcAXMHah`Xq~Ix zkhSeTX2<(Jh?=b?>a`s5KDsF15@ID~)RZ#u^hV(w$&Yo405kOB2miplIEjwyWc6qI za?j%BEM86}uv^rg3$^FA$NjQ}mo2<(;mo=@GP>BNT}<3ht2a6;{>>3qLKnt8)V}`q za;L_oX@8%8g-xILjceV?zi$GZTZroF-v`AR4@c>p*GDZ@IS79qeRn|vRd$|fC>W{E zvMKlOgQlsWrq;i>pDd7smuwwwSP#o*N!cvB`Dv}$9Gm%R5jM|Wep;l>u$7+{U9;@u zr$yNu8~JGwHtRlqCKNtKt2Vzbep)Lwzb1ZKWX-RKpB7m&Y~iOx*9<%OY0))a1HXQF zqxbJ~3(<94I)UzeIt=WEiN7nAT_3h7gH}^e4sKNutuw)lilf!!?xt~@YUwZ5lQOI)uR*dfA1nKEK`zo7t1$XlT%fL3T`hZhoflf>C8x`tPODg! zJ)QV}UxyJpKYY4BKSW^?uAz4f3+}f8JBRW}^`3TO*_WLi?(K@nmz}-r?0XgoA+p-p zqt=Zp)sAK{L;Xaawqm>ko5IhLmsJ%}qP$jo@mdzIB{#&4t|5!pg7#Y67Kbl;cGJo{&^XtQcq=&I*f=%b zN;YFRyX8?(7oO~}(NF+V?PGO+UI|K5*G#VNxr3nD)^c~#G|wvTZklFUzuisJOe?p$ ziJD{0b~i=ytk&+PX_j@`-6YMsLR*Wr9%o=?mUo6#+1;x&!+Pv)f@WBW-A&LOYp}a1 znq&2KH$@}XU3UN*zv9{vICrsPZ~3z7fJ#(S6zQlD0b=eSmc`Gc*BZ-V?P{teQdACY za>s194L*H1Y~VuFMr1*He3SaosM|C}^ESQ_G?JQ236}+v;HlKsEqo(%!!iz2ATT)p zFd!YX5nU+Yo_T0!j#-8-6L8NmG&I*N!xk{O#f7e4urHwOP`j2k!6`O7li(CulWiDf zOHq5;v9c}hVKBO7B3kJ>XB`@uTZW-ku5*T=kzLwVI4d{67`4r6FvC|htFbh7myx4w zT^Xsy)lyhSz}(5v1YWo9xcJ}V8b-~#V;)+OIu$fDDtC-RD^RD5LZfoXD6D($3=-P2 zFYcVr;bM|?+AiLO33)McWl(pu$k%}Umu=whw*N(z|H?CnJdf(#hv%Pv^7s^2!G?Vu z<2mKbCRcbV_KJ07YimHt!q)cS3V%U2TU{BDi;{lv+w~$I24!+(8DoXvsl2%r50Vne z3g$&fB&Dep{>)N`q(U-NidFA0n`FxTh7uNkgWcvH8RfHSVh?_ z4D{?m?keGD;h$1e1%Kn#{YqAY36g*oI^p z&JMUl*y0@qqDz4JDa}QA3=*S-buDygBjA)>Xie*yU1(sJBo#d^y)j}zPa6y3YJoGh z*m%`c#RD=9+29(ASs3j(AkQ%HoUsnAKV32m4aymt(0bD)o6w-#u?g$SyF!Ha;%TaQ zS{l^F{UT&i?rytFSY-W#U^a}qI-M6gcx?u{{{JHIB1?5pclW~&`+_Q7W<4ezEmn>Sb`i`JX8pkVm%FswPmgfE1 z`azNW3co@FYbk#PHibQrEA>2MUnmm&W9N$W4$Y9-)I-tReD|^@uS0X72aF+4RAp~X z30oY7@OT*Pap#(V;li%k5Y&#Vvue9V>?#UwiI>jnQj9D|67E^~__wfgh1Ih$!@}be zonrZcjFIM*`vjz@`U?5*o<`rua)%=`HHezGniNo|!#)DESd*^4(W=`d=E#|V+)XB7 zPN%OjMmb-NiK7+p)lg{qkJG9kXizZEBE2>dGc3z%6EVL+yfzJUEWK+}F}q^BHVHE< zuWJ)Azk<3p4KpsGQxenTJ5Al>&8hH zkc?c?Muh^OJn}CN3{A%+K9OjYDjrQyZ58)alqvtmX z*c5?m^G=Hx5`u@$&LOIh)*+r@LOv5F%_1f=BWNB$qcKf0h$@X~nts@6Owt_UQe&bf zAGjJ*G=s?2n5OB6zQ!cYC^p8@HtFEmn5d~o*Tw`*J^VH%XzKB~F+r0L;EgGoe1vaI z(NHM>GhhSf2!;cvpF}XlgpTq>KP9?@Vrj&0agxo%D@CsOX4#j`Ex1;9u^x}4ej@D_ zTa$5^-Z4-L&R%h26(+_MY~%{9xg?S0(hLSJvP>;afv z^-`FsrfM_Ny4HOFyRq4sghAPcQMN;K4};My6VXc7IqT5K+%gQUa-A~_jqK8*WoMWA z7`$g^Czyeoc6MU1RQb*p%ud}qgVkggMvdC_SL|HP7S}NN+%XTWNS(3_jmjOP&ne7NhDo7&W^t!y+mCD9liLQFdb zf)xwUy2O@n^u$)=qBV&vx#)>64TAH^zH%OWSLbpZT34sCR8&}Q+9@gQtW9Du+QBR~ zsj|97GiG`;>1h36Loj+$G?{37*ILt7E&;zE)8jR9)&mjydYDS@zwFCB` zu~0Jwt=b(h1&xKADOl@63`D~y$!pOJV;(~lW2Ekk1EC%;cFNZ+V=!9IIe##qh}neJ zcJ$0aLm_4fTG!FD1P$fVAl1;htDPqwx@UKsj_97e>Ax8&SGqN@Q>=72nhe3{FSB5` zdx2Vf!2lv;4_brKG6fBTkQHdnMav2_3`$mDT~;~_Xm535o%cHvH{N}C{`sf#}Pd$L!7BUCffM1(HrFR@HFIle4#Byyfg>8-Y854N>4Xz}`L3^W+7*XR`OB zzBf%ieU1~(&6JbZVU%3&wrlpc82-t7$3C+tW(rh!P?-<0_Ya#}@8k^r_vH(q3M34S z;BJrq{PJtUf(_eP3}f->6}(UDCrIkEkN?fSsl=*>eLB_l3eJm9J70wCnY+IzSurzw zXftnrb+=+(_|Rrv*!(yl?Jss#0EQ230Bg0EP)wbEYcu`=%N!{st`G{QLLU{^8Vn@J(%I^K%rFYlGYyn}p`)_882~QVj!q zZjWJu(e*VL=?GLvP?kf2CmqKg6+|8gC$R=78v@}f)`oc%u63RL+*7Z8|Bhq;78&Zv zI))Fy&XSDx(KlN{U9R!CSSuH+uXAV!uZ#I;KM(idRddSH^<~~RK-c!<7Ub(OZ6yph4yGF zl%0B=W^|RiWHI{nfdvT-o7;@33{K9SUFdI8+;8s0JoM|@gip!-%GfH$6SJz-VaZvZ zZORWpTnf$AOM1RHCK!kgF%9Js%h=_ZS>&v$Ek%6wl2TS%V>?Dq$oo2Ua@-IhgV|%R zgjsyy?|3eN5WQ@8avJ{q`!!GUQ^MXcKT3IW4LK>wp~Yzk_o&k09fBt3vq-#GxFRN? zRAX?Ov2ns0K5*(dl5<_Gr=zjoLbEt_y$h2oI41haPn^PI!WpDaYHC|@aW0l}LyS%+ zh+;QZhNcBx@%@?;Ii!JnGYMH2TGzqiR(Mp-!v%?uL-m2l`SY9~yT9Dt-BC+V>dBva z>Hpe0l>z%AY{YAp_!~d*?OB{7f*Cfib`{os{TD&XVbvmjm5>~8~J>^AE zUW`dDSMS2z?$%#_av@qZ9usn-irLYy)Ha!#TXy{sE2!>BuD#&5~R$pZumFg#(roo&GN^ zBhxYI7@3YorI~Wd`>qLVda}iEaJBV4tWEHIA07jO&?X;Pgq0g^{%tv$ju?CI!}Ooj z*P66VU>Xpl!`Z^CjzzQBp*Th341~iq*xQhpPN6E5P<~~mexD1j_QnrzCNa>Y`HVS*wnEawKpO24gSq8#d8#;w z(vsYU^FdEN;%zP)m}sMyL-Rs~!lAWa#OA;vV`1&eo}88A((0z_$YfEZ&{13@Z26gL zD2kCP+bd_KGo6%AU`xFOGmRQ34fA#2AL0k_!FvkKv^>XD75);1`+Qigot1aOv`rq! zD8Hltm)0rKiZSWI{s!4atXw^@lUi8%R8%o8btWnsm?jY= z2II{GXc9fyaAbL&Y`oMm(4=H?h}6l6Y~1&eAH@Eemq}f{6o0ed2ieeE;|iafWZ0Nn z8IweSxxJfq6tD7WY)1}7vhC_6_Yz;i&4XLeIRptTURM7+KU%fLSWV)j zgcC%Yg`i%=DQ~Y{X1t}9(u&uS&*WsDayL8=Any#VBE-r*k4eNjT~CssDx0l=G~{E|uCBIfUhoJJL&P*9`WG{S~sy8RYx=6ESeWu31|rDVIW%G!pSYv>%{oEA9lb3O;Z zu%b0drgC6c@<3<9U31pCALArCu9MZDf8CsVm3}XSP1ZS)wi-)KX*-c78u);RzlA%S z5KMJWmaBnWYbTt6pV&9xlW zkeVik6L6#Ca`@h+A2y=XadWb#f86Irk5CqP#}@W7>hTsQGwuCVvD(+pB2BlVI_!l=G;_XUgz?F;wZZQMs+P{U?ds z$^eeaa|_ElE^f5R9u>BRFEB{~hbGqVn8?O%M8ufhW9{(;RFs4sTwy&hPo1KJ%dD6Q z)nO=A^jVB!6Lc1XSjU>hNZNkQc_l=zMwrD&{U%TD!f0`zz!k}<9W?29hojtj9#;&gB-MIU%&@YU;hGdCEvIQ%HfbxPhS<6ir+#;M zSpG~+#ikcK`VuU19(CCAYMNYc3hppK*MR4U!!gZ038#d{Nq)VdOT!9tD3afZk*YSj zILOS5_20NH{~wS2$CKMs?Vvq7&m7P=gv4MROhx8m{FYhIQru53I{|CwLXQYc5wu};n^L!Eli%OSlB8^=c$ z!QC&_`3i3McWfVi&I|T6nD+5m#z;7xE5i(Gr7YB*IvoT>b$I>tv9OZ@K?PntZWTPiIWha7>W|x z<<~W6l^1!*gS8P#8QC0_5^*Y%@3(tW8Rz45qRh86^mR<&x94H@GM#95R$i&eL(0|F z%auCj$yD{#hTpKf+p_4{D${r?)bVB^$ud>UWhzj`|#=+EX@V~ z-%^i%1pkb?Y3NpK@T?DKYAD+;IJ_}lsu zD6JuBMe;2?Q3w%KknjcUTxbO6`*Tom2>Zp~LDUVK><{q|r4SVxO6;7t_Zo)oSOv*d zaw{7#_Yh6SBO2;A_O&KYa#Ug3VsY;ufNNR5#YSaMOX=l0i>o2HQP5ayH}hNu!_3o_ z!m2E0g>7(fB9XJQeyikG|H4*=MXiR$y(o}G+gY>@Zwcnnx#K`EP4?P~-t*CP^9>*k zI%>{V7_{`V?IitY;RNgQ-rx2;n@TXtuaG2mzw}oDyxK0_)9s(DWiIl}!(|uMxx-}_2)e^%89TZIW*Kg}11679TN&y`rq}?F-Jv-@ ziGwf^_U9!}%wPEFGhtt*K<8yJOCsyqD+4tua$A%iMyG``p26PG$3NYL;6kNO z$K-UBF8uW7*ff`chfk6_1}&48?TD0=Nv#Bmg6S@X&VHEaDpa92TsOqE&tIW~{Y4n0 zzM=9kkk5l0yv+5ej_)l7zkWC-oA3+nY2e(kZe17VJn6o1fQ0-$+TO!;Z)g0@#&^c@ zYVafD^k#C#bQs$i!(nVU%;p1UjP9wnsGLP)w+;Ax7Tzbh)b4y$D!0#D zf$vRU-GzFR+z6JJcv1Rq9R~MMVguDQ@J~q;?#`qAI)q=M zHwz8}cjB%niufVg2A{UUeR_ZWI{(+&4feFMy1XcnRa(R0i}<;M2(npHjIL*S9s|v; zCxN;`rYs{TWLS9IZH8GK&5IT38e-*4_hJdfEKn%=jwQ!Po{KHqIBRn;h1MM^^ty=GU#?wy3SyQNqeC$kv$*yY#3ar=g^Xc? zcnV@J*Peoy#JQ(XnPmu1K}_e^QxJ1ddI~V0>pe*2DGUJBt*0Os&%LKmoyM)FAZBvw zDTpcDdkSKjVLXL=D%ac2+*7C(cgw;GfNqGocSv;?xJnf9+W%S)BKmB&aP|6dGwgf!vTkw{s^N_ z*K2shn^&Dp% zS=STSD}N6Y_RbGJWw}|^tpKe7?|0#?rLioq0WoG*04XXI` zn0yU0LeuvMC`S}8Z1tu8TSWd)5@~s%IU{Tfy&ii+vkoG?`SGtPJRXW0@zrE}Q6vn{ z86@oG_U?{12H&!c>LH5!T%tbBC0|xpQi{M$Eyk@Cjysb3TEnCdr`jNwpLLj^Sy1YPLE*OVA<2Fi|u+i-g@hBf6hfB zRnFoc+x2A6R*UW0K-rp?TGN|!gLywFY?xf%oSX^gyL3tKj=}mw?hNo1$(EtKNTF~X zx;J#iBII&!J5Ki6Eu`>x<*pGA0``S}^LTh*ME%KG?x(BH>Zcoe!9&$h{`EfmjtI^w zqzx&SZt})@m#<8bEjZ?Cc3`-%dh>HBu+P@BHC?OaXXQW1BpA%XPS43$1r)3i5+}O`n;#TF!DgTEsU?+N$8R3Va)4m5M9ofgh78l1SJ+|P+ezr;< z0z3Jb?x@q%32db&D;7mz1Pha1E>#FvC2L!X%xSir(l6(?qte&MKo)bBl+3vN&(Yt- z3TBW9QL2f4+3rA_bxCXo=k=t;a1&*>_7IR#K}zN6*$OVODcILRk@(E9Af=4I;#MSP z>qG&PWR2zOw=%S;VR^Q?LUA>__Y9(*Q4hrP(pmU}BH2-b%%4L?G;4geg6m-S%v_d0 z9dX~**&1X66z?GPp5b!J9z!y;8&sNt7G_Sjde}kM6{KK==`|x_V1(Hrz zA8+IWDBXbKO$AiMu=s4sv*pES>pOj4d^X09-<1-y_-tP3a6(3S@!9Uf^UpuknX>q7 zVh@!*3$!SiP~^V&Y`GO6SfRydEA^r9*_@mp=UKP%?!}UJYahc@#Cb`(bwzm2d`CGFPqRu&g-ap9J;mBD#|78b`FQ9Zmor3YTQlQ&CxBr#e>`4ZCS)G zku3+OJtZ(p5^hPtB?cu^iwC!OaEk}GcyPyGzqkiSRtX`Os>+dV?aCw7oxR$i zH?zNj*d%8Hw-9TP@_QIgE+W=u(!AE!9|_e*b>vmoCm~PE)rWU>DX}$;yL*ZCsT?!R z@$gic(i%_lo#yI}Vr?>Kn{8-^yGa$|vSMwBbQSdE$6OVe9e+1~A#N=;Mo5_h_Z{gk zF4krO>2iB_u{oRE6)97cdZi8ZQT1*x*1jpojxYCzgkK1Be~GaM0CGqs_ZVy6p1Qos zSeuEXbaI=qK8veOOqX1(;homC#u~I-ju$7ee*dk;Bu$fQaPC_lesKcjT3!`!x?c~P z8;`YB&Uf141e#ontFf?fK8z|>YD1)};L3h1PGG&=S;b8=Iz+84ndWXcciDBWMAnex zTX@JymKuP?2`nqTor#4@Cvd9wBx_QZi}~UcEYpca4Oz#8KxRWzyNen8w@Yc8m?$zQGwt5!RIPptjP_jMKV|(&8pk>1v zi_)3e&dBx1;u0<{;o=geEyloFENQ~5by!VV0ArT3;%YH{lRHbAa7hzNo1&GjmTBcp zQ^c0D;;a#*X4=6#d+aPtNP3e~(OHR~tf_mq?%DnTJqpj)VQ>d+e3FfSpFPcC$fk}r zV4U`xoE6oE_d-=&y5aphu~<&ucx$SeeA3I$ASSL}c~eaaou=NgI6Ovc7DHfynjYGG zN;R?S=vg7rrQ+7Rk5sl#xB+h|=i*yGf_DbvtnqYTS2W2Jg(Fc@U!V#>@a!Nv3@#V% z*#Cu|dMI(wcyq8$?9fj)jiZ`z?;DPT)&3#Hk#IZfI-jeT#WE;!o72&yi)Exr5_{!<(wSY`fOqiILu z?JtqlUhRR5FAB7WKwsFE4u!AGY7a+19KjH}nei6>T-vagWLpDT2^@76TZT?j)ztb~ z$`!qJkvv-g0a-ocESW%3fh75rMU_!&G*}tCN+Q{a@?gFhowvVC5B^(!FCY?D{j?^5 z<*8gXG7IhZh8V#YKG90jy zsIEd-2$idI?I8#(Vo8=oE1)(qJt^%Zj$jCLi`bAhdyAO!SC5*i9m&6>Ki8ElSEog+ zam9ubl|?Kj=(LE%uShIn&fmh^Am0U%ansZy=2)5*u|Y9q2}B#V$|B|;ytWpx_AGGLv(GB%R1D~{`oV1n!^)X#^6kL>$7BETx_4GRafN>?b)01M ztkODv>sgX19(LmneU(R*Q#;F_mHgPG*M9goqq_!{I(=T0+87)0c;k%7)$EnFiO<7m z!y>lX`v>pj>`nSFul>WvBRs9}^G~X6nE%CPO!Yn;zWntvPEGA4U=;^lb zN{?4p!8Y0YyM9-`o^3ffn`yoU`7VK=_C7zYn_rsAhU_^~`$rgkV$oZu8|+a8Qn8-( zLZeB~?;|PCb!6rBiu>7ljusxQ1J}{8tc|DntnL_3f&%N5zx+s-t99u@tmMD9TZyrA z`Er_u=E3Mm`pK|i-0b^g*f45ZeKK4aIbS{*K8%?Np9~Ym&2UeK4Wp*6C&Ptl3CkKGbI(?i5i??{vO&ZA^ORHsi6o_QZ(*BjlZeR%P5{m; zTPMn|$1UwQOVv-Hx*h>|MoBBd;8|su1mgLmgR(8RW65Y`uqX*;el(A`S}=HyS&=I6 z8L@gc`3Aw?*(3)9+Sx?%0_}Xl?v%MBR$wAj@ZbS0cV#~W574rzM;mFBr~lLFLvSj z6CVV6s(<2)fXcL2+fPhYp4^8dFF=ix=(tW+f3DPv-;3>*W4n6UF+^5ocD)OeGOm5r z@j>sL$#&0H{Qr6H`9J+dz!GJxUoV*E;#|ec($town<05&VO>Q9?2E`H{ITI(#k9GEXN1**PIx^e-;H#e>^Mb&(=uAvobKjrI99{~nq8SRym zvk5W5E+=U(M_^*`wdBZ#x;04x0M?08dp2lpa%VM26chj_$4#gb5i#y%Ln0zZO}rA( zFmf`Mh>9^2v_vF~d*P0Vh*59M5z#P>U;!HCIXA_~S# zAQO===EW-_5(pB_6i94R!1Y4SvC)X+5)BB-B=yLMME*hJLQk31wTzP0Y3MA6T${-{ z95$G4?6}tm>gWNkDcW%(SyQy5hODMwM~+QR;f@)EnqnO{+B8KwYFKFsb{g>`67^Vt zqAA=FBSKTCBZhvaP)CgMOree$%$Z^xGio!%N)VnIO-UDr4K}Ub4WQE9*SdfsKgrE{ z%+~`>LqgF(od}_R?6~_=y&My4*jGg(?Cvw()@_5>b{KKPAhrtU=1jHw&{Eun5(~ak z%cA=3kz~bf$4Qrb@`3Jj88`i~d(ym{coJaJyqk7PV$!UedV*xq%$sz&X40ISc=Bk{ zyqk6^YtpQnNn&jdJe+KrZ_>=0a?)|qjGJ-_bkdBQazb{}jGJ_Nc+#Akbh3KVoEsu_ zK3xV3n8<&eOwc=4m@@6?lLlECowBI4b?RW7JWh)oW2kae&Z(8mE|bu`jOacR$!e!g z&T8ekr`|=lKlo8!W0!i7A`^v^bC)gewf{9c*SH9eLDCby)LD>MkItP5r&e5eoPzL< z`RfN|F9Fq|>f_)=OCB)HcpR+A%S*p!<$%_Yk3p7Cv*59a0QSlI$3Z{3 z%aHKD=k6X^c}LkrtGV-_XnrDWv({i1oMt8`;5=vze28YEJXaDYkU}W=_4G+c$IKn@f*zavs5sZ)C_ZT$sBc zpk16tu>5G+=f3D@x8@NnI-2&`FFH2SH*><#89ruk3|y^TY#LWXKN>r&okN42wMi_- zhMFBVS6SVn88bbabhQ1jAs9U=noP9Dv>_8cDV|KMe#Fj*R!j!jrRrvBZdF6Qgq*dt zMUAFKPTC|DqZW*kSXDl^D8|f=B^<3DEXYOAi6s)P94v@L&w0t+2(zwg=BcR6F*lnA zoANT7rMVZ4_CJ!YMqqC=C1$-E^IG=;TOCOpdOj3!ST_eT znTCg>d8=1U9z!GlP_dT{$LW0A!Eh}36=?ZA%H1~j^x?4a6Sff~DX5Wu%*ue2qEo1) zVkSn@@|vc^8jM=4ML!hl)#4Ba74fPOT_UAn586mjGX<^C9motC3prD;hKCr4hEbBM z-!fXE5LZj>OADr@T8xx0EtV!@Fj}q}=TR(Hi$54p#B4%qJ9_4zp%AkKt?TGnf`)RL zrVH$)_QoQMKrlN#xj-;^Q->I-vm%Nk0Mb$%Mo0){figqkf-e|_O2{6x2BQ@gGz>yk zpfwjQE6^|~S%Gy~=`f(Z)rr04sZ89+eQj2zI^^jUo}Wd;u*IZkrCY`` zraP#)g^m2gYWQM0ack=u%}hryMq`lDjR9amK3a3w5sjYKf>gBLup<>c?WN|4ea-Q( z3AfGmEc6}ci(#}+kt8*uMx!Zqj zlvon6E)s4&w0Fd?L7l42SROlWVh{Sv_P@GP-qO1nFHUqqjGY%Z?S;YULyJgfnDxOB zHL+zvYx3zW4w{sSEeYE4Om9ihq)cr|u*P{>bfAqsHg0sHhDXY>IHASPVFf>hTk@yiI~hXpzYk0mH|z~bd~`d zlTU>LbTrP!PQlk4u}6@FZ_?8;8%AfQlV2W;5u8A7v3Hd)bWLxu&<1jnON6FodJBU# znUh=?G&K`k7_28SIa1Ir!Pq&irfzPAkwyk|{LEI996N_#>WhQ1n=@D=3|W&~DzyEa z;sT+GncT9Vt>+Y%1x?K5h>82Uik@BWz5#z`>H7wHOKU$NF|srC6C$L!Bp72jZoaZ1 zW383JP&B0lLL0-0Eeo2CDJ=%t1Ws%*&~!{{F|hIcgox0Hty5KdzrAsG*=}m)z{TK_1N}&;{mql12`UNc|lcveWm`8_oxjAWh@dK&8-*`wg5o2 zIvI=XmY-vkI%DP0;H;>oaaZR`eQV7zzU^FzAG7=9c$*yUHP3dL(XMIj_-s~M4V*yi z+wAjQW~}o*SBf<}eYsaxCbefJ)J;=u%ybm zlNm2Jn&!DKGTJ$r@gk#XzT}bh4%{Wf6dG7vX?DC8;Ce?{T(fCAAaZlM=H_y^{F{PE|T<2FeC z@#Mbz)6?`%H|5{RMW~#tWBy)_bxVRZ{gnmF@y1DXTqmnPR~Djq%SH3*WycWN0|M8( zFe$IGJnQ(NR}z!$o~`)*^WO7+`l~|PHhDPSdh2k1&e@qtuK34t(B_VKY}~j}WWKxQ zD*$#y+yDCffd}t?7v6f_-7#4IU_aP4*d~fm(xAv*BcB5lcq4iX5gxm<_7m5mt&pnY7g?%?r*D_muih1ZE zU|+iYFrRvzg-0g#voQ4bPDr|?3C)QEY-R~HW4+!t zynJOQnwsb%#=t*KMFVHlH4>kl>qKp7keg4yKwgd@)B*G`vXgbg#buV|ViJ~UYMxDe z9!47$vCZB;Kw;~f^j}{4hmZV-<>#MN$vyezwY-8Ur2`_jmuwAr&mN}EgOtnQ(U5Yn z3xmh8C|B|2{*Zio6asd={qN&gl$UJBlE*>H#g6&WqmZs&!syapKfD8r6~&KZaWaw~ z#qz+*jgNwke?1a9e)Z!=u^#W?y!%lQ@+!Q2xMPQ+0CwRI&(-OAMhIz_)Um10)S3a}E=lHz%G& z9Nq>!kDyzMdj=7<6!-MQX({YE#LiOSlMj@osAmurOL0#>1eU^{QM}uQf6^|m6!_F5 zSt;nLhpkf3Q;$)lpeG-YN>NWf`jny`D%5OGZWF^H;!0Wo`az^@UUX!JjTlKmn1qL& z=hf2tVgtmF7*N9mn8wIv5rHD8nn#F=BWwmSERL}02e~-9<`4zrD4Tqkj3a9XaWsyw z=?B_4x@HuKTM;x?0C1l_PLD1575qt zxX0IIAVxFO-ounHbc>G|paZZIt)YiuA{yQRtV8SPVOWQTcWKe(zt>G2ydi%-qJewo z_XBF`I71`hcKuq4%?O=aY)!^tbgo_F>HfuS@ec#iF&oiZ*FE#l&>XW2t!>@23=PdS z%djDYTU_Yqff**D+LwNs`pZbQnn$H=04?QYgn*s_7~SZE4;UZ>>_BTf8YZBpCm)Sn59O`R!Dn_4G~hF$%{xu57PDiwhVW_RK&l9ugLy zXSXLDt#(KVN6&s~kTPfro%4)9YeL5Xe`~(x-ZpZo%;JOA+^r35G`Zcn5*(sYQ;$(+ zc1%Dk6Km4ZGusi2RwC8}qi41x80)TCO{?Ll8MH;rcpr=BlrT@#)DmCiXr0|bQTXKG zdge02aK7`ti&$!CjA3aCoM5su5l$dA*@RKs=5e6b3bwd~!RCf(Xoc^LRcJ(R z7=$(u&KQJ7WoPg7%V&M}emIuEonx;mUTWjN)&> zdhZ85f6v?YeckF<{0&kCAb9|y{a$JIX6<$2C&zfWXThq(T?5n7`3HaRs0u@D3*>XQ z?Q!g1T9k~b5CMIezQs`Q_xy{qFh_-Y6LNz50rDA@1W5^xVqoj+4nURHY_5|o61+$WZ z&Ledb{a9#A)PtK<#ht4qL^e=vO6Z~4Jt0{owzQpnW6Bo;|Hft&1+l}^M~Z%olLEsT zC`2N{Ax}o=blRo{8f~IByjTX!H$wV-AV85NBn=mqSze-PGepxJo7RJrGBW1bLRCS@ z411<3D4AcAR0Sb(?24)&Wp-^)6?Dw7@2P^4`87IK5HjP=rri|v80uNr$GP<`RjkO| znw2WZm|J&J1sStzN2;J>cKt^cbd1$-R0e0{4x`kN@J$lsNJj4=N(_rCNWLzPQ^pS0 zYe>cq*-JRH58JDx%s+H*P&4!Jy+O^qL-+GxR%x{n~>rlTz%dErw1}#$v`Kyp76!ufWq6z)$XeJf@ zlR%?9o~{CFmR{5GSDC2X|hF~T(zvoOVA1M&<5&l&5`WnwNFh6d$~P3W>Q zmuy0Va>piYO`9u3=-M{RQuMe|NJgmF9ieKK(;BIDN1&P}5TiD&OZZjm*y0!loh!zn z)u%&tp)t8)5?XmWWD*+FrA225xrh(m96|vDaU%W|;J0tgJc+4K;t z@4{F3@OLHFzps1&xKADOk6d7zo-Uw&@bu&J{c%>NUeFFmOFWlkFjI z_tW1ZR30S!#=iXUv1n1V4H6dJ`D?cNbM;~uu0Nfesv3EA=c;b`$FV2Ic(%Iyyj>@3 z1A}#EtDulKV*WbWerBGKnP;o3m&&g=0`ERN|NN78y$h484GWU(-Ihi0Rs1G8Jotg( zoS=?3{_T$a?nhhxzaMYIa0i`4uj1<@3WNLi+k+BK&fY2w>hb?QjG$)h20FLFJ$xC9e|WY6kZ*wrMq?H1ldpESQEkE2o^3HUEaDO=k8BCxFV_BJN!&a+i7LkP2Df%Oi5_fPX}#@z=63swhTFv1lRPgIRY#nY` z&n}q*Av5f~DqoTLwOy6dF~^Rpa!O{`Y*kLi4EwCg37KDuRXH6q?ylNN&?B%WbL*)p zUyr%9Q!dlLE;qsCuk_{bpZ&6C+JZld)y&0G*Dnr#GVq>BPj08>kZ#GitC- zOv}gtJ25q52JOV8j2pNU6EkY?PE5-*0(dt>^_X#IDPdx2MhxVMDH$=CC#Gb?fS#C= zF@t(yQpODIiAf;{?kN$`1^81zk!jyZI5~Ttmb8n`VLb-69w(=_ zTgdrt*;LIDD!ayNjzBe8m32BWT1AK1jz<3@3_4egLwDA3$SyP{S4={8+HuGvG$vN&Jo+tTGJh~(2yLl z2(2^Su?P+6GJQ{lPP%QLQz1lwxW(;&6%CKgP+8LhYAGHgMD%!Qlr%lA7N0N*njV%- z-+6j8#Z_(duJiO@JhTQZZm^STA2b{ntiig}^jI{!X@gXYz=wZArE>2h69O2kvjzfz zO)gdPQXO9S|KR{F^4La@W~7~&<=Y??Ze)DDX{u);^raCWA1V zuo}8kEnJIF7+?`GWyP%qFy!qh}5p3NcI2+KrwiXeiVy!Meb-IMCj&%@ZlD z1O-()67vUA;%~Rx-60AS2F+u`;5=r2Lhw||)3Srp5gL^K<4Mun=Hrh~Z^WNePgTf+ zjr#K|odYORTV0eoeyZYa6t3aj5#)0fC{ub{c~=Hrsdy7WMvh&C`~5aa7`uj5#=f5c zORG`&v<@S7?yuMUU0IJ$cNJ{d*C*;vvj=L*$7$rK-?4r88OccX}usmW}7F!~HoIw;kKuvq=17x!<|z3)kW9 zykC?JjdcHjZZ{t0sg*9wh(}kJ?YC^d?|b_V_MVO0Z+Ws(`#dd&OS25Ue$`*mFcR+} znjuzr7xEY)3#N5qlb+Lag7LG|gdqV;(k{FRtxHhC z-_nN5Wq%UlZ2eYK8tK}IW98M-d@xtC=T6S}$Ye5Q7EpKjL}^4uC~5T23>8dg&;7-p zTl~52)t__woWZiQmYwze?ySz6s&Zeu@1+Rg>KJ-oT4O>;m3PCh_}7M3w$qKL_W=-h z3KVf&PC7ltzE1jbF+g;{@Av2E6McQeA+q7A>uD%=GhvrqxI-zHc&+%2QWpGFAe&}S4M(ly;gq{&QAv&RF%zlVY2pY31q7#A$dLz=~LY_p48lEC| z!?MCzRAdE*N=nzm6)!VTFjYI^a zgB54m9MKO5a>O9lMeT*Nd_G=g4auBw_-sz;Tw`r>N@p6Fn-eUlm zDP(vCglw4(GDeEd*pTLqhJu}zE)C0L%a){LK(=dKItJnK;v-}N8Uq;nJ)FpdnnQZ)f5iDx3E*EoQ|gJ*-Ogn>xTq4P}9g6#zR$NU+ufE}9cQU_4g> zcAzy64HMAQ6OfM9I5ecAr>7tt>k`_}t>FzK8p&o$64SmNS&rJ-+}R4R+=9rP$?)e- zJ{&fF!ZuifQ*3r7$0@WX+b~9;7OK*(Y>RssjBc5THX_bhheqa> zVQACioMC8Wjv0ovmrh}6m{PeNDWgVuebH2DMmDM%PSQhbsWKyMLoyAcV+ZCP2BK3I zqIIon#-V{ZWfxl0x@H#|*kzgsqShNW=^=6~_@ogz6iY?#YPIZ?yem{qW?{5vk#-@X7du#%TVEJ>!r@T`(1eJ zb-o2J4|INGUn&nJpQW$;7QLAHzyA32#ts^PQC=~E9MeU_Ab}^A?jj80Bs#8>F#1@a zO8>I@b9E8!_uC|4?3(S^8ghOsh2odbBjokzN5waF#@Bj^JzuZGW01s8UJTIB}ADl!bRdgRAc~dilakEc??(gi!=!C_58l1!|ws99`sz ziAg}n4weiTGgSoov1X6f)AUH4b@HcC5um%redUgfjB$JLlaVoMgMBh8M(&d}8KX9}C!=B-9qXyd=`qFAH-aPfnkQR}5gW;q(J*3{crqHsYynS3#F+iv z$%r6m-cEyst~2}ict|5C%AV>}tU+TE`7E=9qFp>~aFPRoo^{x4Fx}YEu@ThKgJ4s% z2 zG%yQo;-KNVX@hoL#$xQi=={Zi9+=H&J1{(R(NG6wDO&pv&r&qhp;?NJ#fHU+j>1^^ zzL?R?!KR;Y6qnS}07lccymX^^sffjBS3;UG)1yg8>pmNT(UYRdMC&6PGSQRb$;7HN z?2Kr|R7QJ73c^w^A!oHyOUOx^q+--UHB2?)bBkik>{!Cl>cN6s^qg2C(aOPsNc5bS z=_^hKB4qPGlgTvLK;Eoqy15sP+>*@uHk+}v0ga}_tXCt1$82~SN-;BI2u5#tB$?>> zFvOv^I+8f_d?@0uZVqBH4G%}NA!No``{%H|a-_~SsK&VDidWvWa}v*9XH6ncZ!8rw zE5l^1t3(=|8XM}=NPUyTX|e~SVr!9*BQ9ZZ(K8FJsGYC~jfS2vXeIB2F=#Xn7=txP zq$rOx6Dsm89CP%UNA-VgS^-RC~E!?nE zPfXeixiVq;nbu^jHBX}LrhmaIlawk1|_STPL7F|XW7c}ud`d`C)>y^*-zsqM$CHwO0A!2b1 zPX?QeaC?L`WPlm;l!lh6EM^M%)H`s>fdt4m8!b@nd;b18T!1z~o`0{W<0`-llHVTV z2h5CuVjR13&|-)`9=4#P5B}PKZ=iw$%y%be1=$x5V7Jh8zvpTd{q^%G^1m4mQ9ys5 zB>wurSnt%hew}QL0n`Qn{ROrR%>vM5`rq>9{w3V)!Y}db<1X3qP4>c%x9e0xL5rX5 z9)u`DjfncFfbojY>+dLl{NnF49He3k`^i2uv2+zCzK_hTNNwS36zemuRMTSDUj=*- z?L-h{NbDpuhLX75SF=cIM%FyFcuh5rl30A^6WROxOlKgV_z0 zS>@wio~z{8WZjA}9@y9S;k%=S*K-vlZ=zpzp%4G_(ofj??cTt&R@B;WzJWone0LSx z>GNzGzudwF1pN<6Wx=O3C$Ro~$t-;Y+ZYtxcJnLyYPL?5-ze9cbVjK9;H?vRK z*8^J{u$MCxX_EM-h0?MZ;|~ayz%?<}_I!S0m!E%x+Nd>ZQ6rq3@v!hTj|-D;2lhW6 z`;S+-kJGK9^DwChQf$8V zCug;_TSGE1>9VA-vt3;%wjOK%{3=}gJ8t@Wf1cS~t>13^Z}C;H%j0e1SIqBKb}3MJ^LV=lsNBVg zd%=oGPS>Mpa6-q+t9+vMb4}kY9aeapdL+VHgY%^QTX2}Pe+w>>_HSWvdVjl(uebO8 zL#Apc*t}!=@H6`mK=L!@{YyZegjn~ly>bM>*Z%K8okDtfoxI*cwl=so$r;0OhV0uk z2h+=;le6?;?`%fgS6aDkz*(E>Z5VHProa>;sPo=WzC`|^GFk8M4;hx{$z{JW^zOoF z?KLDw8LT!t2pHFZ?L*e3q}AhoD*m|Nv<$~L3CNc(d>FWYD$ZBZ!VJ>GO$!{oF+ z)>*FBM+SM+DzTp+I}u{3e68V~pPVK9$Po^jAwR7Z1_QjxC;$GvcR$8q1kM0BWh{R2 z4aGbl#A}Ws!m_8mleZQ^Io1!oV}0>=pDgwiYA0B?XzB>E%6nfJ&&zt&W6wc5Q}gM?(L=ll@_vr-)tKI@PX8vW%`Y%KQqw~-7 zVkywD+?Caep9+_{k8S70F;;oXqICrb;BQ#wukk!MFdYJ<^@AQQijP5O>6z$a>R+O8 zpB~O*CixZJ?F{nGm6b2fe)-M3=e;g*b>awI z=u^)(`X;|kVJs^Tez4gw?zQXFS>0#+YAuOc_;A?pb6TxCP?CHrXce;~kR}oOTD4EX zrIhH8R~77ZIcUDUfZI)Q>w zYE6^q8&6slHnTs}sw%)-nZ5JB^x~`#mx_SaAysuHj(M(3>^hSPi!Tk1prkYBIV05M zMcNPlwN@Up!s&wWVs7*ZFTzkK6I6I7#ngI7E!$w5c>fE8W`7JzM zu5)u`paHh{?(3GvTDsE}3s47o6+oSi#;nEXpV&9<<1f zShKgGa2$H!-tl1Lg{A=nenN0B;*+<2(tqn+K&TWWy#_`59=!dlm%X?eQ|TQ}^K+I< zxZ153L2;(_;;0=pXr6-9zCotdwGY#?$h5%|%e@w8B007+(zN0FmrkieiAntsO6TKymRuhX2S}f@O*&BA)<-%6 zr5|%qNWVwoVS<=)7*l3kh^u>I5Ytazg?`2YO@VH$gjg8va`1J5o7rKfWOJ^1_u={H zpU(Zm7HV6+Tpq&p16*%qo3~N;8R|%DE>C3@+MmJ)Nw^MoVu;`2Mht}GwUAByHROL= z^Mayh$;B}Oe>j(OE%c^w^u#uvI{|v2HW+U0Fq1}??Vr+CLEY2{23ne zul`)YfyLnn0{aWx(cZmdU;Joua=JRgPk#RCS@B=9hfrJp{iR5Lo_xIFAN=FVsxtCl zPgb5+y%SuaHCOsjB)Www>Hh^g05#wI-@baObva#~z*tXKOw^D*TV0ByZT`13Te14n zdi(-(KF9xi{pL4^1c_;$t@tcMQ1jXke4xhvmdigZYe!3vboW35lEzohR?r$y)bR7C zL}84|MU%>k@_)>R;J>@(m&l&2@|^_EKOA(y(#1Lhw7+_`ddD}9aNCa&)1svI#j_Rn z*Niw({ovV3T#eg(gS@G^4$p<8%KU*40aM>s%h<-UHuq$YA)yA?%2iEwPFrt9=_R7IP z_5{Ml23)pwy&Q!Kk^PPogo$D7F};FwqBv1IELys!7{ne=uLq?Cs2s%}QMN^52w&O? z_E$Ip(A78j*J9=JQNago-e2GpHezsa7cauYH}TWbTa1O-1y?Z}Y}M-lWIueix=!F^ zM*!*nNc>D3U|AZyoMt5_?H4QOacKf|S4U7;3rnDktz}SMAncH#+;LHa3m<=cn)>%v zzDS!&j);!Zn!MXAhZxA**5vfnaKJ5I?irbnCO&J(NnjPNo(~R16Oh<@emLyDNsMTp@f6YA9x^gtSMj%C?Y;ZsHUF1qE3FR?EmQL1 zTP9(vy?^-FH;9-0_@?)VIjc$&s0r~-1S{>&T>-t~)d5>LAB;2s<~+<;5%*_J#G2(4 ziEW&Jt2yN^caOzdV-~&`p;t~kk&5VBUqRA3OK7yfQ{3#|-RcgJ9T(zgitZiHlL?@wX2JX^~BXW5Bf#p7>iKAG(P z?LOQ=!%Q!X?$5uT$KPVO?gQ!BZMaT$ZxhI-OaC(@IfL*rQvK&WzY792$kK235$pJm z>i?7;fJ=wG{s!$Xc5qvz>%ac|Hy)fqY7Y|Q^`msCmGQSf{IByhL`B~HF1+>Hwo&yP zuU4R-{+0LiZx}cWA8%zgX(7$VBQZM(`J0~j!?NNmK7R-?zd~W-o$V8 zoO=Aw1~}FF?-2hb4{(&${xA8L*ZdT%>jxLluRH%U976aJgNW_=ix7_%hGM3k|DN3( z;7Rtb2|wf)$ohWxKD@u@r?E2HKfr0kk55k_X4XcZT~CmWc9jkWDSP>B*?)&dxXSmFf0sOx!MIpnd!_Dlc9b%XNLMblU4|?S# z`<;fsb1vPWca%3zh#sxl;KLI{07wM7aR@FM3xX z|DnbbTo{)5gn5I@jRJ~_!f>&1st z>)(73t@YwVX|9);wRLT);j5Hw&tot({(a@j2GoV!ZSTE5pk;b-jihQ(4Mys{@4(0E zfFk%SfUr9s8kEAhKX)s-V%Uz+;1a_-=%gOMe4!vG4?Xj{6A}OQ=GMz@K&d|KAp)j- z`QnOq42SENikW+c2-p|6U-t=G82+A#oJK$U*22OlZw@T@|Ji%D?znB_Uvxf7um6+e z52iL@hkQ765%KR<6OYOpWX0-3i_8&U%qW!lrm815m>9L$a^Jf8sa01RZycq z2x`^b=tL+vMXN|JyB!h@Mm?it72QAEJs=IR0VS)*z>l$HW`UAbWN?IN2^mnbiVT|3 zL&2LRa5*sod{zx%jxr}{738ob6NaW5aTb27K z-aDqY+Z3eW%pq$)0q2Xn-%C4ZtTH!;shS~<+OZQf`Z9{? zPM#eRyk+}c=i<1E@JICc>@@QBjwpVzPLX4@;+Y;{wd0!}k+rK(LvQp59mXH+raAKa zVZ2aHRv<8FB}7?UfNdI-!TWPvr9ytScXfU@@=(tFxbzJWyr}>%V6Y?NhfLU z@0rMuEpa&MHdvh9G6j`U%8yIng<5cA49`ni@z2u8(P)w4&o64{{92TNkdcepBF14E zQ0w>gmu73OpD2VS1}nLrCLC3oBsBVo@&izPs{J(iZCl;6OFu<86;&j;XV51-gt|kh zt;sD0f6p^3M~!%)46MDwyX881g!Tc|Ee!tSvBxSTm7ibRpajjO;Lf@oR5`6d``Gd4 zK}Ecm3iJjB)zk&E2RNqx?%U^3sgmDWe#Sre@$KnS=X^z|#MPrc(Q{gZqAL#ZEp&t9 z)q>hX^Rk?W*%Veki*D+zL8~#PZ9uzNuOsNDp_a)NK+Erl{T79JM{OwEw1M#TtN-uj z*Q{TO4Qd13MdTBtF${MPhZG(hQ#+Iu=uJKF5D#BHuIkdV3r#*Y5Z0IOkQxGrk;8*ZFm&dbu`4_={uUe+i zoPf1{5L~QDlnr@)8R%Fpe!ERDD&-EiNzQnkcEbCWygI;3q2lcibq8;F4b(c4;wduTA8=DVXXsb8w3sAVdhf~?hDt(A9BrwlHDI4e|=5!__VzAqRQx#_JHcr2DR zjR6y+%2WXNP_>3Q-*Ri8z=D3eB&}fuJ#=YXfZIdW8sc4cHHbjFS;HS_y|dwWTP!Fc z*K3QaH6>IEZjrYDx}UH$-1*?y20a+Bl@_qmS}BcL@VLy{#MS0BkFkbsbz^swM%eeA zU|33E9SfiBMQunw)=?kCd}Y6<#ZPSg@ZGn++`h#0&-sm|pP&y>o}NEnWG6-Ny}DCX z+4KqWVfXy@PZYvWX&mip*G=5%hnwD_+tI-Hp=%Yt{QVm|%L=~Ds|R>i?*ZBiV&FIK zn_d5L2zH750@$$!a=PIA-T8uhB3yQH+M$r8zA9N>B|BgIy8X!DIku#N|0}e{i+_TE zjSIqCATF;CadsTu^T)6E;H3%v_^8zsO5aD{${JMV_7R%J?byXV?++!FwV~k`TNrzO zjIa6qVy>;OfG=NCym4Cb8GqjeK7|$O4RJKg&P0n7oe+G^nr!E>EiAS zX3%*Vx zKv7J+Ionp3)hTNwIbItg4EX_y(YNQFx34{Q0_Kd?d10gzgPIZ z!tWJ+uQ1pv^sO@OZjq=Iq(OuyM`rFC;o?xMj zuk&`Yv2mu|J4{O+ouJby`k_T;aO_PBO!wf27L{)5lNQx9ga6?Upu?UVR$tHh^AaWT zs&iY>woOL%nm2;U$~)x=kGc!XTZ&9ab-{+-Tc3;)jrW+c3oXAR*tpA9>C%{iYyy?( zvdO5_)xJ12fl0U8$q4IU_nwTb)DFR91f}*dCL<`d+cFtJO*|plmWHG4$Pro&c4-lL zWla&A9Z>4dHaNQdJvp#jcE2ati2G~jkiy@q+8WUNduoyz`%KN@Z8&9>z{U({M%b0- zq&6BR*N15Iax?FXyxEki6Kowy0|qbuP!?q^SDx#0kPs;2z`@T5YU`u#kV!b zy7;!{&=ub{P+s-KmIvjJU)r;iGKw-sr(++TEo^1m>kOH)U3Z2|dCzc$47VRu*+X~(GJpR{W<=^- znbJWjynmQI!SFZ!-qt^s?2n~5pd5Ph1SVklmD)tvV%K3%R%ri_@JPOo?&M)6+I zKenYQIfkeAuBZ@LN$yzM|9oMa?PeRC-NO?@@pgT-4%QFcpk4BRyALz|4O4%Z`^Q;_tz&Lnv%{~R;Itxo^+9#y zUU59?&&vuyR`dp+A<#ydQB{0E1Bq4fT@)eJ+z?n)X-)8WJs3%Z`yyibGg?+h zDfhziW!Bso3>H_Dq*bitGd5PyYCPpFTuvD+t0LDFH77cEVy{2LcCPK*@j1tXs47%4 zvO(=otO&5nTw~>E6!n`6aoE|u7rpo|{yf>|fBfJ7`XB%Izy2$K!%_a_x^%ey{x|Ub z!hIo%3p+Ab8AXeMC~QsjsAV=ocWKvT>Ydn}mWhK zDe2|ukCbWeq78`odzL>(v3}s)nq5VMdUKIq!sDxVX<)-nU9t6c!#1z?_i?ac`9qNw z%%8fy@t1i)2r?K_ZFx@nFD|2 zHHzVR*Y{EU$US#GvXa63wmW#mE{K}Fd4)wER=$|Bx2sWf_=Im}iCdGmk9=b0+SPNQ zpLpM=l|&h9O&_r74OlRWgJauSl*8kST#-sN+eG@)nz)=GH0k4mNm)+Y>y7LVe{$Ksw7f>z-@s@od2gkA@>Wg6SPR^sGyg=>-zV1*M zEuW!Tktysu0U*h;l+smv*t*QHNag(gA;nBvRBFg=S0S}zX?x5{D4M{ICpRn_uO z=>y78`jI@u+wj9SynhV#;Huu0zqSlmekfO)88F;Gd=Dka`Cm6d^A%kj#+BB_lu3?| zn8`%~0u%GtupJYg*4xt-&+#}J7)+_A>EP#Cf8v43nOuY$@URYXNX)IfB@iqbi1`k} z5WAdd;E?5iS8o&j>zr60uqBB?ga%apS0e*`8BtpZo-~t*Y9$9(Krm1;= z~Ft;&gNDvyILTj&%FJL9uCVdE}%%a7_=L7jV8om6et3RceZ1kMlh zt!nTJ!V?+CTvGk>q}fc^yA-N82NTStb(!z99j-)wA~QB0NWq@^WMqVD_opqQ#nSZ7 z#xkXiEC57ChwIK_YyVVeb#Mi0l(>WRyi-BEUG6Z$)790xjD~@&Yt?JxX z9|%+ojfdWdubyLS#Bv~eNuyzsA?1!vqv*}aa1QgdK9s}kNQP0wl4J<0LPh7RQdEnR z-S>vnhV`M8i%K$_Lu{=MsqFs!9n{slZUMo#CsoN}Ku+}CIF;1&9 zjtuKyP^CWhWiT?dGAy$sQ;j%iq0x&?eq>6?JU?qo5HnruawJpCfW041pOGQLRAcmq z-DHsRr9XIBHIlMS6NF?cGs)_aff_X7BaNVL{)|jXVtYQ4hQyhwkpLMT0`>&y!lA62 zN39`oaTesanU;6ZEGK{dN1^Xw>yCtL7n)uWYkT{MgW<;YrW}hw1FP?Tit-PZ*^M&v zVsmR>Up9G-qAa^kb?L^7rk7oAqbSV2drxUT2wZ*vd_QMqlQ$Y}>P{5=MPbkom zg(ZYw1v|B-6G{PeaEqA`PV3}4t2Tl%;5bSAaoYpb>GCevBGo}v4=YqP zy;Pix212P#vDvnfnF)n+V3GZ!b7yTKB==-(0i||gE#nj{&S^|bLf6%n8mYWiTllCP zR$KU}d{tZcMsZW~6gThpon#Ha$MH~mP>klB_Fx&!FBM`D*iv;z2jzbB!f@`5_MmX@ zi1vZ7{#v0znAwA8!cJii+UfX%J>Vwi3ie=}ninXBC@@-X9l#!V6Y~9f&`rhd>wz{E zkFN*XRGhsYXtw=4@w-e%l?*ISwowQzJ7MG=th;&!Kq$OD12_~8pD`SP`BeA$jF8xL z`wW0s_54h55IKKU0x~Jzd!0ZVMXDUAf&RyFb`1dQ`@3Z|1}`B0?%TRw!IWl*zI3w6 zk4BcoK>IEodIOjaeR^}0f_=%FTW^5Sjc0EF(1CMrfX;z`Z-CB$i*JB#*vl^$hph9p zf>pHox`YN_8*f2qu*K{+1X@N}7BarJ9$nDT_bR!5+^5t%@a=HX5YNIh6B=AmFHaE6 zrhx)_LJMX7B7}yD?K~2p&lprKag+$gSH6K0Ftzi#godWUA+Yq|gdTJEAOo~Ta;hEatU68P4{k|c;AjQ&a{>0d2u-m;0)*qVcks%eux>Y%r330b-=sry& z6WuMk%U~a@x9$C0hEO^1i z?5)JkvxRQKbwcZ-$R|i?{+INn)G3dJx&TuhitN?eL0@>v zS?!ZrJOyJM^HePl-P zc-EDXowzj)9Y@g$mC9&`x#g#MVNt$KR`q9j#&z*mgUY~0)-Y%#RSjNm z8_fF2)DZe@Nu5rxwd*$^)y$7J8>#&DcU=K*DD%yaZ=p(n#qWbPTm1P~(*f?Fscl_h z*O&QwR>3_xU0!WtwuaQd=s=6p8YIAbAn-lnsyH|3CQntsykzlX5VA0}LCgfm-NPZ> zM4v)kt(Mhaj;=| zS9k5P&8J7oS}~u>TK{Pmtv_h9zlGd~yXT+@a7$QB3fw?fduIG$7Z!g)`SE z2IKcW;`VRNw29dnTdrJf2)8T^wxP*lL&gl#tN05aCvEGNefg&^wd<-o-1jUk zCJfmASbGCJ!jq}zTU}KB zT-@z9@`(0)iM{ znd`E;!fmoD1Qq7UG1==(qfqQM9Q~Blq*>++68|9t8tV@%hM~CTzrD(Ss~=15-f^m) zO5}BA!>roTrx@|eI0COJ$<)fX{Fe;rfQU&}v@YR%1Gf)Ih-uEna#UbuLj;13g2Z5Q zLMAJ&4XL=yXeeGD>;X1II+uqyhDm6FP!<5EEHf)wpnhYYy0%G+4y>zUW&R#-Q+5{y z`{V(F;V4;N#_*z->FiuR?xQ$WN*IV|S5E9Qg4`4~bs#2o{h1>(R9ap?#LWWFODA8F zl;Iv^7UTLYcr;b|=;5DV&M|PI&y-Tn%-_)CJy}9bltg}Z3wg8-~brine zLB01TxaSPAeLd;nQr}#z&Sc&eM(Lk%bl8I($j=O-xc+u^iU9vN8l5keD&IkxY01p|4=n#Y3aj}7{ng;f7YmHQ+R_n8o++P5Plj;zsQuOKK9Sqeu z|GyWz-AVtMY^l3V0(F$ZhP&*rJe!=qeVZLMy**t>DG0s^5cd1s7dZm>{)ZQg?8HPYur~Wc%1(F|UoM>${SFF;lVy;^`2y0w(T1J8$%p-PaRM{# z`GRqK2ujQELJrKf{13*SaMxib1fVbEs3o}m;}Gl;3&WMKF7O%Pl&zQoo_z{-JZ}9x`=@_+ZiDc?Gyun=4-1B``kN4}A7T;Jiy~XOu*}x9q>cXR}E;i{%&p zM-m~n^Ag#21}+QMRb`z#TW=CVDFabQ(E=ZE@La*1|J%i1qeI9tNw@=EjQ)KRsI(om zhwGC-%PJ5C$KNM`Y$e$SGdQ@tYmkJxlUpPSOQ+A=$+eMnq;qm>bUq1W?&Q|mRCRL8 zZ+4yB;`4Gk(m1&_^L{6{1YyU?ZE!Pma!X1$L(z=7%5OsA$0vbWha~0ZuddVbo5uTN zNeBm_*Z!9zd=jYt9IDoj>LE$-&C(#5?~f%E+-Nr!arsT31WF!)Jp&iDGdMm8l((cd zJtV0oTL1o7s@=~1*x+WkKbDkCmX^-`Sn%~pphjZ{p9E^$uEgYFl=5J2^CZv`SD24s zubc)Nx&T?8#J2N>z`|F?lv`Knk>hMtuhUnOu;BDHNZB~~E6G_9&H@Ra6k)uj1SW^& zlOjGTvgmjEiZy*|$LT9A#8aq@5!B<_-vmp)+fI3?4R6`-WIzoNZHr~ zOL7J~m_-umn_$7*XFi}pxGoTEX$3d5{W%<8{!%z4o!awq&Ua4+T8iiYGwU4!^@=vj zLu=;!n_vmT&L-I4Hv7znWD`8PQrZ)5im#L6FP`u#s}_-iLJdGy;OR z6_u?Pm}}KZ95Ae$_okCkN-mHy@yo|vK0XKW$ z?k$j5=Ia%1iDkFY^oYIBzFU#1uTYy1U03Y^JLEI1-?BdraATXrBE;pi7H;n{jc1cC z+_2Bj`)i80etUZn!vMY7?q38UObH>p;n7LAduY?fzh5aellto7pCWmO31$APErY615#<4KDve zQO|X@;NrWO=m>-1tsreM{9W!<;Zp*cdGnr<_mt{Q-Fr&jQ)<3KBQ93*o>JbEv9mK) zd#(4B4)2x_GM(`qD|h{}ABzaZdrBtZnD>-;AJp6{&ny14>ix1Tl=qilfr{;X7Puxp zvsA<=oz#!_m%P8!+}*_M$oos)U+U>J=`&01Ory^%-JkKiYqQ^b;pdok*l7Dp(xbul z@!QEW#?MsiimibLk=*0&J%~7k_UFGqu3nJaDo;q-oJ01Bf5()w63>2V1!=(&_6P?% z78N>0;S|TLXungIBvw6l^-G^*`TnDG;Ie=T-Ys!<_FVEbDErWq)1;zGnWgQMfDxCi z=zw8FNSJerG2xvqciZqo(OEOw5WR6|1|GfpZFca_-zhPw2~%FFxk2*AVWm~9;f;f8 zc?)=zzk+di6)Bp8K95%51`Qv(<_ zrzB-%gL%wK#txXRWBx|*ZN)Nnz%zk+-?>U1Fbg)t@V$!u-vc{{UIrGP7-`I&?2hSc zxG%MHAYUdF?|ABf7c}Q}Hg5bN$RRU01|Q@$7{T>EO4HNdq3U*AcfY9L=#Y$GyVL}I z$Gp5`=wIR-@@!ftbJ4}jRDXjbb`B!|09!gek(^mFnEc#%X zH>fX%O1-&R`Ay0O^(Bw8@7K@%6<_~~Z(gNYR>W1?qVH8&ypvEYnpT5)|B7$je$Tft z6*q@2wS?Oa279zxAfdiLmMt5t?T=~-sSCO*2cCBlB75b&MmN~YyQLM}xb#cn+nDmh zTv$H7jj4Gr?|Sm~7sr)}mLYZf2VA=M(Mzqhvj9awoUrV*r_7_c96HoGsP@5%v8*HJ z$}M|af2MV+WX#|A)V()nQ&xSTR3K`6(?3>lIVhuEo8Yd;TWWhzwW=OSP_&FcboJY8 zE_S;U>5{u;!6taOV**QOvWs{J%sXI3_l$A{*iuNnX1oIypD!Q{FKlO@{a-t#plHg@ zlcWhW*BjNitcE1^edPNVh>0yXa==bU-585JNts(T+!*UrrF3iUY^mipjh~h+3E{@G zH+U~eSa@KiLCVGhDGT{3~PI@E%^Tf$RJ51GKJ=?snTXgHPVP ztzx(;WM2HGxH0y(cBlxC6L(v@Iykx{l8TF?TCSdo4)Fsg65{Pd4!WF!*QkiPE|*bP zn{<|R5WEYMSG@SQarTSmXa88TKbFqSgfOY!?4R*u+BRSnEVQb0 z>XNLrBSf8oVLD)^%e#j|x`{r86NYH57MfCzwrZ#;G1{uVro?EiW}6nItkzq&MY~+u z@Z?NUk)9YX@A5EH>~Ml5QDg__w{VMtzelk=d6sn#VjCEJ{(=0?y!P`@vW7#Ym!57P z*=Cuo>gyeQgl>>Hf)3SCeKaS+;{nMs1UvB@d8<`2cyC$6yb0@~-^# zMX*Ys5$U6r#o{HS5d#h>GJPj2XC(W+0vaY|6*UfR@#vY_%JUc z@4*}?1sA`4g|?+o3@jyYU%K`MvSwZ>U8TTNQ2RqFYZ&nrt|UmJ+{F1=yq`7QStHLd zeT6dyiauS;6dO4smnkDVc%7wk?7(%FVzC3)UFyRoUZ*JuJHQ>L3hV%O6~fy=>n^mm zgV$BaYX_~PP}B}shasX>z>Y#UJD44XRCd5R40Y@Pb{v9O13e=z7+iMi<$RbjLeY6I z=DTlYkTFCgV^mg8F#dcd9H9?YIb+xv$%}0E+QnQ{y9-Y7F{mN^s`W&Z70$2X?fpHI z^zzieRS+{Z$}sDnD5#;TPyVHCH>c3b*Mt*vZ@Mx4qkw zXO{fi)8*^%A&Ndo^w-P1x@T?fW}CpU!Tt9rhBu;LMv?4g1$sqjLm3LI%NXhCQdt&V zCMt#O{TCH^1l+tpSml4-%EGo0Akl>4BkK4m3PhE%7;%^;nh6iAW zjXAbPrk5QZTO$)px{j@q3FdOgRta5-cvQ(uQog9n^K7LXN@$NPly-7DJFb|+uxU$J z)M=@v$IYt3)VUd_RTWu|o%2+NJ9QNZ`@*0X1aV4d@drU%jgiwdNOpY!%SG88u2#a++_@Jd#)dtti+O3 zb{z;tDj03hwHX_U`+JZSj2(}&He)k!b;~_XxSlRG?Pp!;>)L)9a5ghv28``kF9QHa zlIs{R1O7{G6Vj|ISDtF8`g~1<)ixl8!fNxq=C`2X-7M5o1a%qpk}F9P{C2lsO;)Gs zyfis=*QzV|OuRZvqUsoh;+Y8b$z#PN=?ZROjx<>sm?BM%OKo#tFs9l(wT0Amn=~0J zcuYsPND94@UTuNi0FlIGjf4x;X<{U7{X1WIu-)FncJTDZ>-{E3*(RGq5^cA?%=k__ z*uJ72!QybM`C^SH11FPM0)t10SRxZT>l=ogt+?cr{!k7F<0!$Q9GWAY=)ke28g19Yrb4tqSW|=cwrx`l+92$yL3gLOg+O~>mZsEji?eGgld?kuO9|S>%AyjqF z=|`+DJA6<#8p93y{JcLc%nfk=8!|F{!=@YFYJS|NVEFHLQF`%mrDJB#g7um=fJmwz zc5DMLsxE(Hp9J(;gY(E9lQfEhd&a-9;#vSa`6ojo^ld()8xuO8;S!#~CgFVeSDVE?SGO{XN^J^4jCgN)Q{yi0si^7b&iW$3&B2hz`_ONP*r<$T;3gz99jhcc1mT)p!n54lG%+LkJ2(h72o0E|LilBa6|J^k21#13 zH6!f|2-V~Z1>8L-5k>WAzfXWgR1Nmi~q&GSTI%BpZDAN z3y&F$zzrR$&AgRHc2V*}{4QX8LQ-zs-rInVh%t7_TabUHNS;FFv>qf8Au7Sx$L*TTf*-QpBwSBC z`r%$@raLNGj@kX2#mP1b^LXEE(;JwOtH*s5lPNK$PHQ7zZ^cS*NVmHzd-gI);BodS zWSigPZOUS*QO&W@%D>G<(8Y4g6g>tbS_Q^z9WzKac5O1*niDc4knd2U6S}AS2BQ6Ak3%MKus*N;%Cl4(0^UCuOcpEc$ zh@r99HoSif_REuJcjd3G^NQ|q6`bs`_Y#`>j{pb@*n{D+^0Pm=y%^35&8kw*BMSl`t;8iS8NT3M<;Lc^TyM~2`sng3l_&w z3)$oC&+6H$1Pr(jqQlMQf|3_n{-3H-3)0<~t#<+>U31J6CtOS$ofOFdK zz*U*)Bwi$NVC;QF z?;{T89sFstVwT<~676MMH6k%}~MOOA`HQb7pO8%P`H8IqxJ&wnTs0Om%KamTvH;&Hl7mmHX=j=4m zpE={UbdA$5UzdpYtNaaT6;7uFCIxU82C2WMKZJOQ;I5SGJnX`;XCEXbVsl%hZ} znYYNxAH9p{T|}Qy>|W0>YH5g@P(GpP6N)~eNZrfWcf;{Fo&8N`{l41p>(dS^GC^-yC~!ZtkUJG=TH0ep-&(B^r255cCUb$ zZ2r}Os=u1-uOxw=V$t==7aWrLJ-*-&pL_E?u~l^CdtwVL8<>1waOevT zeZgVnANztsUvRkAznxroiBM7K9Yyab`ZhM*9ENXWv)fVMC?!fudq>ebir!K5j-r2H zFT6iryo&C2TLVY&mq2zgWs{sG5Ainqunq4YgZ=X4S^jb}{Q4r;`}- z0_W%LE@kn_`$M=EBxHpFW=?|4Ecy5K{QG+TeLera9_oF)f3ox@zKmIr`iE2e1(w)* zir!N!x~`lr@(0>4yr<|r#j}s!ciR7-E?68#FjumF&KGbXrRN7{Uv)6a{KF~!;grm{ z3*$0>fkjZ}on2r7PtoTR$%1x&;_OeHeYfoX;|#jE%-1CPnnYidSf;dB{_={yykbz3 z2*)WB4{;sE?Cg;}CTSE0_Y7(hSK)?zW}CbG194U2oA17T%b(!;@%eqUOdf(gTRzKv ze|x&bU9G0!E%%CP_+Ee9u4UQ|pyT7ov*3_EFfej!Nbzo3m7ha8eUR3dnoz$>A>;fg znJgv@o1JrfBg5%V(dTMpY7u)jn>ibjD`2xkevnVb#w^RWOcFJsh=jYpCbXDpGp2bNNySTa@pqRIC?DHTf#kEn_dLBkA7pH#J)Ya^(=lLtl8qv#l>c$dyE8Mb#RQ-zi&5stm_n&`4@8h3pwpO zMC}RXo1pjZJZ&XuG?w-GU!VW=`Cp&^UAK*IBV@nZMeQE*{x%y|K}SE&Q;^cf5Qh`EP4G^$w3(kdKqDD?K1H7#dPdo!9Q15f zkm?E`FX(_1YKt+O1=oKZf}I0C`DIH7IxC+ypl5X(g!d>rZ#F`>+K9}PGGheiV{)r3 zuZ8H%^K|1eUNa)_yc>V2dfNIJZP;#kx4jPoxH|XKE?R%ESX?qW!Q>~fGaM~USxonA zqT3h^KT?82{5mb!?!eaWzb0d2WBT&qfUF0c)Sk7GK5dm;Bv1zBHB#C*m?W1w7RX(a zuW63tafY8HjY(33Ug74JrH455x@qVJn@0MYmJp&a=Ih#u{~hcOOdc(LO>+buI`9gq zq7B%I%^#AL`IXs;Ru)0c!F|QXuV2%mDRg4~NXXNgD)I{5uWP%(rux68r2|P1OYM%H z*4mLLgTAh{14W#~@r{l2j-%|39jGp{E_RT*$cETK>Lg2H6Y7Pd?13H3ZlZcSSRF*$ zc7QsGg6%+c5S`iqN*^`a!RaQNvx=2I%CZBOKKikP(@j)j2dlei!5ZFqc&+5#b)Dpr z73eO()mJWabAPT%C58*HoPID|cs(vjAUYq$TAUrVrcWK1Q5lN>XBOH+gGka?t0r=|!Q>chk$@ zCKpaGhr2wv6IqCJ==3t6s#l5*6DQ9!dra`_@Chc7Z_bD#gcf@HJ=@5~#+)5z#aX)G z_41HBK!?B(QEp@|7-uHGqzRQ?c38R4-*4=*Gu647eXz0NglcrJIeB)Ix3bCld!vGg zx)rg^2|sJLusL1kDK+`njs!1n={8w-xHbdL&O|Q979GTnG`P4Tr;)&6kMBl;hdd)4 z30)Ck-Lj7?P7n!*abZr@yr4Y4k#vWuF&_yVDw-S#+pAzJ?{+lSj`0f|I!tyotio-& z4R+#;Choa~>fMF>MQvz}^&$x2`I`82`AZaixQxOijSp*hUPYh@D{N|ENZH&y9MVnn zNp!v2iYUXeoH2`6@%A1@$HBN1oE!{I!HIfwN;ZSRw($T#vw8=E16&*o3~-?y6wYFB zKpKa@CQY1>Z9u^OnQ*~&8(Eq#!A7aZvLK^jQ(<;2l{>{2gu(GK8X07OZY&IzkC8Bn zVT-X)s{D+E!#M255}}wFiGlI$jm1DQF%tvhX`9P|;$kF7y(tUa<;Heqy49%gG7~C) zJJo?iSVl(TVDbpYa}CABObl`8XK|9DvXW*V04fJyJRmqOaOkIeVFvG7>QG0!lsd!# zdK99ZFCFR}I*PmwaRo0}hdlZ$Nb8Y-CDwt<`s6Fm$Wt_Z9n~!Hoso6O19)WTWgY5E ze7j{G^6+5ub_Z>+<$I+Lb>wT%<=YV&^9EZCrZ?+VJ$&8SugXVjEKtt9t^_FJTCh>h zye@1Mab4J$>JD%dbjU-p8`I(&7M2e6CF&qSA37?m(E_d#V(4mKg@>jPV2~3geNx`Q zY*trGi0uAK-bhk=`e115=^Y!*Y0n%i13mZ(uUY6YfcKfu9CYX}(XTM*P=^Xh+#?S< z#QDug`AX8AHYnnHu#q9T4sqy*hN7-RTj9kU9r6G@#l5JbLw$*h>~&`gj=CQ3=x(>A zd=P8+fuZ(MXZ9e*C$_zRNSE0aqvhq{@vsZh?ML=|_OW0^%E;WY)Dk6lT*?xqTlN@z zWR{45wzeDo?onc@Crgwr)@!y;gK*96(m;5&h8Q+ZQXOdY+NO*SCVv*GH{UKa`V?fY` zA+9Cup=ONGhJmjU_E0lMXldi9LG}|g#tE|jI}+z1F;h7&`8K6;*u&Pyj16wBuzrH( z3TxXBgJss)sf>}qLhFz;0GB-|YfV%b)`R-KUXNw=ePadb`WH10&8@dfz*v&R=1?CK z8^qV|Eu1{dyoTCg;G2-3e~Q?sWaE4ajRkp0v0(Q0^AFi4{vA8~l{lX~yXO9q_m$Y$ z{=@xQ79RHaN~gPI2u|yl8X8upn=#;yq@PhW= zvn{0BOPZ`;Rv7IfnmkRcE4d#8oeD&E@_3uoAHIJsdE%^{_Q@=j31}E2DBzPv~752e=OLFwPll=F4zjc$pMEvn8YQS;FgK0 z_-`YZT2=q*WKmKd7mz&yLXff2N zK`|51#IhL6YQo&A*gB@fw)8p}%#@&QOpHa>=4>Xgwh=KFSevtk$SD_eF2$mnPTB7yMQcJ%N>y9QmvDVZx4Q%`rC(kA z6COEbpKIC5K{$jlyWb{oOCkFMq{6glGui$5GG~sXZiX9fU_otY{BaxJ+ZVhA&9d09 z!(Ft-)^Fo9`KxV$w*(+>5h&s8IeCCf&L3b@AA>zi{JZkk?A?;~Qm$4qm?tnt`JYM_ zfDwlr8zqN}1mvV-uwkeMt_H)9JVb}xhJG-Rl`r|2>C7i=NsuXri*R$x(nBn2s9t(U zMpGA8m8CCAcKjpTA9hiGDL(0JW3_9+S2E@FN4%E_Ao*X72GRUA%t0%Ou3XZe3k3`F zHzWrILDkpj3&Bsa!Q-Nwj8N8e6JN$m++D!R(nnQK=_?9VQPv_4u3Npj-hB7N+uUES zw)4zwKb6^m(%H;>{v}*-%c7Q=Fv|H?9Nrf44(eyQN3KXw}>i%Lwu~dL~=&9J)F6a;Koone-nkVN1c_ zXqwm7Lx15QU4P1;zwjMCyd@a zN*Pi0b^@UB1u&1TMwG!kw>u(uI}zcC0@w>S#}&dbjvW!aJVd55{}!th^);A-7&m0e zF^n5`j=sYf}Gcm^H0igyBu@4Gn{^PXQw1MZ{?&1mP< zg`>Oq+TS$2ML!B+y}S7ut(}haywFy(=9?)+Q>gaUByA8zJsjNi%(bj`&3<^3QoXhe znTdIm-$m12tY*`mFFd&=9{HIRt8)&l>P%i)u`TvY9%->H_B`Hru`M+^c6?%M8yB`d zF`=sZXPQTV7?_Rb>_I&zFZ7~0lz5<{SketgAi z+s{cTUK{-c6tDaA#OTml&sX#xNtf+I+w~6Dyh;8z)ehPZ6^#Q|_nD({&~~>{Nm{Kv zDMl`W>Fl0L(8rw59o#y*{E^e_m4`upBC~@Y6? zdC9^JJm?`%lM(5Q^_uNd;d{vjv~NNew3j>w@{N7X+=OIGuSip2UnRHfzuB5-ROx81 z61YI{xJ`+G6B1t~H}U=<2x-=lE!yyy!`=2CKsN3jzF=vv3DQ8Yg35pz$}nQaZz_Id zOHPJ09-XUhd&wTKXc7UtX-))?{5y!Z!Mh!+pTU63n=F1Gtl8qv#dRD<@yY1|p0))0 zx%f+jP{GUzH3)|KN}xqMLINJJQ{RT)qIFg<{Dn{21)E8&dgt_}Q|@M*~$Z zveRXgD_jXAmJ#Y@KW^>p1A{WT;F7S^1)GaBg%=JU!9}*<$qgti*lcQ6q!Ycx$-xw7 ze9AeJt;5TXbbNnH;fboN?fdr@My4bM_xg8{sPs?8hSmhH7;J3O7q-dp+L*94?fjW8 z3d+}?89eja@mok2ixmlL(V$<}k%?GN-3A5y8)(gFj84^R?{6jllwLASf%q<1;jrn#P z?RM{i^@oNg&4;Byf1TTd>=R4Ypxl2-uTg+k5SkqaM9=!qO3~J-p}G>1D2^&IwU63B zAT=4TSPX&YMlC=@%L5&l`Rp%cIbDKlc@VupY)Cb;*#A=?y$#ym6Vm>Uh<2ZeDRYIH z!u}T#V{Tq-*{{y@k=o542xYRhY1T4jE5u4ZqrKE#ec6j{cj>Q&46JqaUPj^j9fUHg zD_eeKt=?5~6&)aJb+?B=(>n5-kdk`2QaSbwiwV$oIK0jrZyVX5_FSwFC<;*uMs}je zqg@74KU`xLv(TMwtjmB%j*H!{&=(vtJVvljTb}~O(M!SRk{@_l=K)vJev3*$tWyUc z8uH~yw!mSL(1?)vErkfyC1?`QW|DnxV8a|MNxDfBd1}QNWojhyKS~x---^g#EcsiC z;Cf7x0Y_*6>( zxfNEK28Y5Fw=6_#>M`sb22KK0@8C+$Iu*Rwp1F70YzZrvh^8D?;r<{z+^DC_(J^mh z&Mi6~8lT<sOwYeY?ceFs`?u0y**#7l2S6@#aAi+sPfnv zpOr`QjgJbarSVBwDN%h?dz>fSPM(~C5vV^aOlaYS=6}&IFKP<(X*Fk93)DbSN!0kP z6shr1B~$fTkFy2>!)!TUWDY9)Vj@LGqad}q8YET>>S_Z))%N|C#Te7bE4W$~(a-a0 zzSd^&rlw#h>_8bmB0-YXAgi8!p1yU0q#OaC+qDXBvxO>t^Xq@0_On8C_k zRh2;h)~dFK>60$yRq_)w54Dlf5(q&`-eSF%0KT;ntX}$HgJ>sF?)efeVIC>uM+R1E z^?NmR6Vmgj>mc53q53Pkd$M7TtQgT)foO+4 zvHwvp0ACb!vhhF2Ma{Mv3kSEoOS#r)pTOn(X(t6TK>v>$xh>?v<#G?#8vW=-QVS_@ z9ZAa}&IZ*&$%707&)8Tv#KEw!aL9pSW1;Rr%!X+0fuk?9-PTUJ#ZqOHjdT`d97rcX z#(`?=p=;h^JI?@q)4B`*Pq@l*@uI0(Ib&wY@*XqkoUiyzzY7)ykmR9#51|E9qJqY7BcWc?RWH1I6Q~%V59XeOZMM@Mmz1r&=S( z`K`ifn=_$gQONOg96c_73expMCWgqrtEZWY7)>60m5F>iJJjWCxQQK1MZblK*?tFi zz%@oyNHUu^HVNiWHrb?jYhP+enZog$RYhL#6{sOL?1~$H*Z)p5=;gL@Ted1tpRSrb z6m66q7qz9K$-}lJH(?&tQjB+twwhV8<5nF#c>LDDb!yr*0lakt%`HBsOUN?wf1fWp zA6Vl4aj>a|qoT(0u4q>Os4;scB80yEoQMEmZRe|f{xk^B*FiP)}p5Zo(o+QFC7=wvNg{s-)3#RVTKNp3dUQ zB$@RLyM@?q{^J2}|7i#z2nMR;d9z~OjdKp~x|gAkd*+sc9D!D|TUXEX%U6~-4SSzQ zJql?9pB{EpAxaM`ieRFL4a)8B`JNs;+-BUv&Veh9;7a01_3$m71Q+h93VYY`S56Ye zhCCp6#h1c48{n(4<7uy`a*mNXJUw!fx+XpR=$(izQ^9uM{WF8@GC%dLk8< z$O$qIF8Km=iA(KJX)I)NW9kx_noH#pnabgtOI%k_(vdQ#)JJX?<6)cDOw08)L8U<@ z$TUZ@0c=`B3Bd5ia0CXg_AnoTEEuuPD%m+*bbR6Rx~|db8sjgr@UQ zvhU7*y80$N|5R^kP!8t2rrr!RhnRI|sJnV(qh8YwehW&EK0&G}6G3ZL^!%1Sl2sgLToFoqCId|^1|G{QlCZ_(ZFdtn6JS}VU zFZN}o$X`bLc}{f5jLj3cVgx^}i4MgAH*x-!-#oRiQ0*`+&70MdIg9jL6*Ka}gHa>= z7FPM$T@$OI+EXpPUKPEPdBw!{2m8h4eKm?c5d4YKx_>s*{m43~x4&Re0n{9<Z7K*ER+P zCr4>ks0ve?0ttDMN>-JAsu@i+^;Jytc9G$^R_YDw#Ar`~i~)t3Zf)OSX-+EzFR7s! z(WY45?Wj033P7vRtlN6Etp-v?&Bi1$1Kj*u^|OrH5G#Y^mR|-=XLo>SD~48##yY8l zWc=YFgnpY>f4a56ov$0HyhI~Xqy&XE-460GQFo_@Lq~IcbEgT#&4sTHD1+fVmKHOx z&ZH!nE{@P^OhUm9U>e^vT4&Y|IuQ`Hz6X^%9|2ZaLbf9p8k9C;AR2@^i?q*<(x4N@ zWi;&clp%KQX;2cyif+JKi_K`@ma!34{OTC>Otf8vyS9QwS~XX2ZAIs_a5a1x*Cwr8 zb{W)ZPXg|mIAn}FZXMHupZ^B#l z-|#39Sb*xYIn8=`PRP%CKkHezf%nqt89v8ZuXbeUXT6{GPhr-p^iA+{-p~1`Fy~F% z^!W^qk7noS;k4(y_w0QZrxBFigjHUu3RG{xG8x7Ur7_wJ2%Z@v!q1}r_YQVGm_SzrofUiC{AKA`mh?HmJIEA8C<B|;3P1V%w(Z>Lyw^c0mxY#d-m#}{C~76 zD7o}$p!|PU5Zt9f%E|^e%^~jNTulxutWTb`m^&W%7H_v>-eS$gE=ROa=jHz!Qh9lk zG=__E+edcBKC+OvY|H+w^Sqpd(WT0}?S05LJ!^(v_x>e{KKyO?rfVA?T;%27af43@ z*~znOuEB3=Xf1~!P2mB*NBDyTcF{L)`(+k(q=g$2SMWXgx4Oz+U7as(LOuooycNKb zRroR3ZHq&Wti{~v=^`6rxLVWvL+CSG{#oNMjs|lO)Zf=p%+B^7?$7pdlt$}lcgDi| zZOG0Z+2bCLPnSpZ&KEs1#gIu4#l>GR`F`DoA6`X%kn`cMr@_&n80!Csp36ag6>snF zS*$q9y+*KXlIGX-gx59SRdzZHyKh_ZBhKP8ly5$wCFdjlI($&|BRqf2H(1H%Z<6KC3N|H5qP*kzJp@4&vRGCFzO> zog22fsGKYzZ(|Rug#p~MaDT{LI+>`vUCW#PKSD0BX3!&uo2Y-#Ray#rlt`df)n^BGzb7s;YhKKe~&!H(CB(XAGLx{|fAdH^RNq8hq=+ ze1>%{4~pl)>+Icx!sQi@fTfopGB>)?WdnDq%T1`Tzc||ph4+;kp&_3s@4jfXk2}7@ubGxTRd;^>Lh}@D*D}8zxuj z)No&i^Td6*i$XPZ|HeLzG&|-uEAF=cQB&?j*5Hn%GsJzlV}Y!;05;jFnU10$`WDI@ z;$((uFYwQBbzD7 zIC0LM*1Pi8mfKpr5M8^O@1VvJJk0#>WpPN(59in#>JADH4otRj?4o7I*!Y@n)7&O_?Z zAE2cChwp2@AuH)JPQW$`26;-@TB6GhTx_mRK zCe7ai{zToLZ}p;Nr#|JffJoq=nGjB*-ACJqvzs}YDr^JZrlpeYQoadcl0}xM8C;h? ztk*0NC15m%EuRc_<%bo)=YfD|qvXb#rJ!`-dkhmc>1jF>n!_1&Gm-R*jf9B9L3Y!T?q9US>K0{Rk^R?mLk{w@8oXa88TKbEqR z`(-lNrK0GOu-ZT$v+esWi{A>wtKBt7U}QAQRyuFKD<%#2V!?jDlV>lMpmiATI{#6V zkaG_WzMJ!Xae#9)XlU6wKrdy$0x%?!>2Q#SEH#50kXyFj1#5YjI5enOb2daHdtq3v z+kvT7RHy9Z<#a|8U{wD>pu>`&JL;k{R1n)W!>bhP{QU>FuDR~ z4c;$Q+wB@wRn~q=ecRI`u4>D5x#ZSubG>6(UsB9)!dBkk*0-k{6IB?6(DkymNhON}%=JZ6y}Eez+2o!and0Ky*C?t=kkmkt?+ zdYzQPbkRV>ICUvPq>#p}`wA;lzN5pPOgoxUu|OZvcVTY{NZ(&9Ns1Cc>7LRj#hJ=0_b0(^@qH#6=eS< z?lfEpgf+LR&nS4YiR3$*1ROp{s9eOL&_|YT*Y(${`-Hq=~Ab0}n=; z=mbeJhw|W>y-q;U~|QWn*~L^l0YIhqx zOJ`Q$1H_x)7*@`?+j%l7wb_He-|ywe$kLl;WF#bpE3871!Zr=70U7}^YBkl~J~P`L0%QVQhk z%rWGV6ABk9^l7Lbe(cNV))uV{b8m}WnpEVXE^s(}mQ%?q1P!UQ_qtA5QSYuJ1y+xO zI2&GSPl1@QjH;x?-xkiF%u=8V5HGFdmii370uEa#u09x(NMrQ_Q%O~|_anhJ-AN=r zUvxg8O6qmk^zzjg_G6hRud1}cX=d?zD0yA{xwrxg1uus(c);w0zlgnj1^;=z;641{ zQMW5-S`7c^fB${`5QK}WfAskRE|$XQS&}?^u+9EazN5t;MlW8%b4WG37x1~n6b%`clOExgiq`S&#J$FI?SzCp`NK58eT z-uEXWMd@YmQbjmB;pdfe9+Xm?n-Fn-Vg|#aFct&OU+Jzi_CQDb?8x?AL4A{3nGk`= z%LgYsg;D7|u<3cphB##SY9}vIr1KT)Q$J=Ac+Oe8@jMSZsDiOB4}Bqq9Y2VmA|69Q zPzCqX2t%YEM%2Mfm!)7^>i!vRfY9Xz(TH7FzJ~#k)7`^~)IILuS9*T5j_d$qBA0W3 zqk?y%=p1&LqSuQ8B&@^L#RAKO$TjNWMCrtI*`bx}&@nK;sJ2h#MR@h099?~=cEbZY zNYYiag!K!1gA4V@vHX@{sm`OP0V-F}#6V?*rA{#^Tv`T=aXWf+yJO60-nrIE2Ziq; zdQCPcF=5?cm&OuzChrmv{%GGlD!KJ^IK`2L1}?RPsaF6zkQQ=jn2ejUP#Oi@3%F&T zhZ39Ky~uVTBH{F*noT|m>j zL+t{Y?$v7-*pN52o2Nm7jCKFT#`?-%`;sBy`hhgg`1cWM+?|9|amdxE~RoG|C?Z z8#3G<3!9SC+$R8v>-~@t%?eVaXb0{+(3w9usyq+gcaLI3R0H=i$WXOk9FZ$d*aU(M zAwTceZYnX<$AJ>D&3+S?@2BJv`rNh=sF{^RhFoKL2hDlfvAngQfD$r%msXp6kWHYsr}E~j&203X z4xz?ByLNQirhka7G@QcL%5W<}*6H|e7p3*9P*nHu6k%xL)>roN-M(h?Vtc(#npDwS zaKpliCPi6AQ_*kShN(WYe;=*Hea!dxGD zJ6kGpUMeuFD=3d!fHdWRlSo_l|C?lO-)O67ixw=&PKg|r)1?iIsk8pIVmpM}KMrhl^;{4^_I;=F|K1leVR(Suynrq)U>lot{?a57x`xUb?rji|1hr-7N*JcZyX%kx`ws zsnpc~be@Oiecr5!paQ0~i~iQ^Wm8e9%U1bQFNzPH*FE+Gsc2qa^7nNVv$Oq&`?Gx< zrO`Utow4v9o|-v(WRH7bdiL>~<(>H5`~GBgo#f8@Xt{u*(B-ewf{;!q$}DD}4WQJDG#h3o3z@4?4Q73CnfG9% zR3hJTZ^9iS2_Dzg$IkkHXrrT4nPy8JN=Q1Lbod}rVnSywIunZ$lU_d=N<_sC$lXr5 zjk>f7*uzwpL$}$W`cS%sq%>*(t!fraIj72&61V6UG2NabF3?$NE8zmDbd2+Os?o}Z z5>?BUxQuo?woapXau}t622Xs*6!;uoma|l8MUBxy;S)7P3w21;5V1R1EAi9m3gZT& zr79h2uy%@O%7h{v+A6loSG*P2bZ85+WL$bfjnGCV3^hjc!W3$R#&sgp0Iig5I09*0 zML~_zxTt{|AUaYXbCa}oD?)?2{2tut#h;67PW|L`kz_ma;x8MF zO2k-CxgL`qu~o~}di1uHo0=wsa>iC&C`x&3^~Emfl@)K+o-ybWHt%8Gr6{%8C`H~v zxNC=!akZt(oNT7d=Zoy0S=Q_w2{5y|xg-2Dt6e+7KezfZfdDhC;X0CJc6C%o63nZX z=?MPZ>WPj7m{(2D5&T)z)f}P6Ml^%>mPd6a3JGRaUve}Iv#RkpLXQr3hHg@gI*Ddk z>u@vpnjEW@El{MWQqTP7Q zZs^ZW>(-n@f2NY4YGluAB9oFgM&%e%jQVu@P*24KB^J`BU zO8Dz^(frL$&hA(v=*`tdYtB$F4@z}QYEZdkni$TnG#Zf~<3{%F?nK05pO{qj{Dgb7ba zN8##9F|D6p!)f$!?>~th;8u3tx6<2Qo4dr$ln+{&2x_Yfy|RqJSSp@IiH2xQE%u97 z6SZJWmMN78OqR`*@TJQ*q8O8A1tkdVWbVqw>OIdDf|=(AF}Z%+r-=8S)E#<>fK*95 z30t~En}jh{GEBmjC}AbxN|;o_aVARqNSG5PXCzz+6DShS#7Pc0_c1nq#d55KUnW!a zQ~7DQ**kod#Rns=PfZoK=3{so`oZ;osOz-yw-c2aq1P6aIFwZ{S|g6@-C!&azB7X* zR`L~Utho)UtAepSs92*R4E$KV@1{KO%Fyu^`)FHJJR{C!eUg0O)Lp{5CsPgAb>Dr} zp?Lbu^mQ~s7KzSvijalKb5#gk>^^UekR}!8sv5#H#9UQEl^>a_KIjrRbJYk{Mrp44 zAWC)3RUL#mxS6YjC^V^|NR39CkuD|_T`eo1l zv1ETNW$LaIpk=nUx;JgwI?K_635`tkU4{)A<{JJx|(Q&aFe1ai@5jyN)VzMl%mmf7W2B*4HPK*!j z1~#w>CJrUiMo})oIPs-qvKP4;Ebv_>If=|$6Hv|_7+hO@4v1lvhmzJ>qdLNC-hsgp zP=(b4tzIsJ-R@nm{!n*GZr@EHutd~$PC)^66YI)lBOaw&;|96J08x?fQ{N~ld``-7 zqh3;cchP+dt8yF&ObKjz_L`?p6dw&N9iNzZB(*(18V#8{d^EUh`FS+xth;x#FwMO> zT6|`{3=KAO7lsBG%5#~@Ne_Vvh%#`n$KE}_qh256bI~hzA4h4_{~l~lE;nlgH?#W7 zSxwxTm2%EXw{xosouP7PSYSFUEzho2bynJ)SJ~^VR6Dl{+F2=gUd6bxQthnjdS|8C z*_8;-QMuRTB4=mXOX) zY?E@oYOt%ag|Acm*-5QisL}iS8G-4M)vq6SG0ldcnuY|Bh^uGnC)xhx*w8dKvyGlPSm=od$>WfraUI4YlWa3)$mK9B_1*Lao}P@9Rp_b$!o*@I&fs`Q+h^8L5vI2EO9*DfTDF>?Qp%ojJ9La8D_AF)8f+J`bl9S9EMRQ*zZAd%Q8o0^K%?MaxW#g zXA*}%g!IUC_lFZ&Jo`6U(lNsn*Y(3fDng$Dsoc3ad>OO%+s~4jU?jdVA5txty5KIr zX^jpkFw|DsKWj*F=>`d;pyck*2%3_+jw68j*T1v)S!=!{jWLb|-}-)Ip9GPL1Rwu0 z7)}csafxr*i5-LK?EQtz&p#(aec_`!>su)@}oT`Ncj-7QYYHZ1Lyf zV!dX2o?YFu5Z>xKIbEFehk!g{{QDX*IA{A0_h*80^yU*@WjCAWi+549J3U`qM&bM2 zcAc)S5@6HMrEVKkx7^W)zRwq{q?8PJaRB_IJeB}y8=u|8`-dQGee@Dku?_DVe{{?K zo2{GQy9q1u+1bS@$X9<>DD!pJG-Y#=pKb{4sFqf9hP6Nq6qQ7c&q|RRA5}6{pA~;p zpuda`VG25c33$G^OCc8rzx0n9Zf;~W3R0`9L1M*&aH|c^{=eU{c=4A}wQR*= zMz@UURh1)7U}g4)R2C99k0Eu(iRfLGBZ+b!{bIM1@2rhQo?vp$0$vUnL5kRoMDkp8 zdoF+q@o%df=}-A_74@e;g*@H71uA4Ooir9ig~1$2O4KxJ`N}8H?y_sj;GCgS;%&vc zd=IpjGubs@;eJ$zjLEWf;}R>nM&&{XIg{S5lxdyt>YvWgaWD+Cl1V|(% zy6z+sm+&qSk~Psq85wtZ!jNQ`(Jrw4{R*;?H}NI-P#6!KguT=aX=k*o>>LoW%h@)3 zb2A^aY-uECsjlEUZmv^WlY2(5?XMIa;%C+phB|ElFJtBur zmE|D^PLz!y$4!_uafO{IyFm`0C<{T3n=o5Ij-5EFcY&WG`XwoY9Vv;pnAztc7(mC*Wk9az9R*$$k z@H3Bi(z}R9EZul_BDVC7*%4=YpX!LE8+Yi4tvgSqkF|5lgeecTK7Ir3wV>*^yh#1lRkpJ+z$gLSi0;^vnvmp<-MI-#?%JoEoaiGs zwiD8UbGLUwvb*)YCnUJ*0ANC*yNyC7B)HR1XhL#3kH@AbyVIa>LgG7(OeZ9_^YC~= zvX2s@PfLDxiGm5qEk5nw2Q78~uT~&^@{A^nAj>9?0_i%A1v6t5IM5LIuoGQC9t9C} z4Ca<|$Dj+{lr)ufGR~XhO%7HP?LJORTQ^}jh|^NmHk~4_n-I)GG%3Sy6W$%5V`d_H z4QLeGkau#N(u@N8$=99$Qsb^e6hqTdws{Qp(8}s2|7EzfQ)jo#pQCskZvQy2)z$N? zY#O!mW3%qO$s)F=-#nzb4%gA<$&AhAE()KFFzAG*aHf@|1iXvz58u~qglQIrIbLCZ z%`w(FF6S!L{iI~U9-YiX8srh!JcKE-ez)u+i<2i~yU@AJc?^;`W}lt=0%@nG;)$WM zrt_F!uYxV2{qQ_w`2{-sK9wo93b*Mt*lquVu*^mkMt9qLcz57c9E3@*PPb7A@r!Zj z(xq7y55Ze~Wc}QD)LXRdcP*5Qsvy@gA)TFBO+KtUIzypc)#$jMhUnmKR%3>X@n$8G zlZqMFv(G^-jBAnTt6W@5gpT=UwVn#8=qpoP4;LzWn$=LbsU~qfPVVYNMvzP%C(ddH zqVhyW64{Lq8`NCKh7HyhLfr=*YRsiPPE%HH1ap{5awCwd6ptHe+@)UJ$m1#{;zk-rsR}p3I7}fp6^OpP zDsz3^$mA&Gb|Z|#P}q$?jzd&uLOq?RfroUw#o9lX?2l!CfmEG`TP7?WD7dOSIthBO zb)GwsY7wfvGLB`>D`(e)#QE}`_=`3cv+rvk;1l0nC>3MfSiB{L(*aI4Lq3 z1*z55AhBXl>j!oge?j$9u;1^#$Y=X+>=R6x7YBF~2%3c?Z|?oP_w)V`u21qcGq-s! zpYWld@O%qv*z4LZ*2cdwi}gpPRjfa$CP(>EZPar!?hQTCJ<&Jx@(G{$Gv2_LbJROF z_szvwt>M`?HrQmTcjUbzU&JQW+`b9tH{WmBeh1+v($ISc-UqJpw(r=4q_^+hzCQ)~ zet}EW__U-?OXiu@S$i{iP0Gbi-lf{xcW>XHf_+C;VfpFqr~6Zw?iZVlx9<1R*~jmf z{+P8oN2<;f8qQ03pwReee%TqA?wHIBoX>B9cRQ9H&-)`*f5bZ9BUX6xBaNZr!%zE0 z!zXX*pT4Po72QEa7Ag_%&Al%$;5BYf!o|Toh6?ekpY?v$Kbcv-g0kNL`aMeBoU>2C z?gNXLP)X?zU;W|hoDW~6bKM(xUprY;20sbcW|jCU@1xi%8`a1}KG}rj^&f{|=coOd zpY~tXwEua#1Bc#Qdq3^Js%d{4g!evU>5YAT$LnkGaj;!9d^qdF*{2lFLSqtMd!y7_ zp>Z>Cn?4-gE!WXwW-oVabI;=JN8~NWvWdZ4jGF~b7ARPsF4gXb(O}4H{x;V;_Q=8% z6>YWk;Y&m+H?6+7S;ge_M`aeO{-i1)DnIg%c;4OnEHJN+ux0!U_TIt z6i0WR_ip%3<|og7&+ePQ5xii}FL+2#pUyshv%K5h!%I$$#x+&>CO?dVa>Qvt;!@wG z(SFb5sm=0Aexq>ocQ6l<{eV*XJP1bbrS)~JxatOfz(i=r5MhlHDis7Y5w#h^MoBS6Z;FGEDxh&6i z#_xwD%j?H|`UO%3S8N?^5TVrM1-TBNh# zna02;v$*e2SrU={CnE+n&o+5Mkg3Ya%TXjpZrMkExGeYm<|5D&kOY-XnEZI4QZbX4 z0+qy@ycDm3t^B!`>ANGpz}fN>Sl_E~n{I=hd}EK{N%HL@I|CaXrf|M^&Hw#o;AByn zHf+9V(8w143a6N_B8h69p?MW=@8ROQBAiS~Z?dE1{`d)%SM5{KDL9nBL=htUCNcyE zcvb#~@1G02v9f@otzgcPNE{0>5#4(EQrYDYBm^VFn%;LT2$)g?k5yk?i z%h%z9Jh*AcCMVA_L{;jYD(cdQMuq72D2AsZUP7&|WS1I8VcPI4q!xzCk;Y0e3}G5I z%^(Ce=VZfxP_s@s49hj&#KW*$vrRt?i#6jU#IRsq7+IYbZe)CeIxzAijyBe9lWXqbQ=b$~ih z=fo$YHarKa`#nesc+v|sW6VEocrH|@n;oaecDmHu;q08f(Cr=M_{_Era(H%j4sw`B zTGZJ%$WcQ1V^({q4{*jUH9(}75;LW5m^5|_ay zKnY9V(o)Ye?Ja;-T_Y!qdYY&40zAzPz)qCei>YhMlx(c65VIGVnfZ69G9AC*>goODkg5<~NTZJwp;LuF>#i9mH#rDHU$ zM35+r>7b)hoPjwff@EOIi4d8XaUw_)G~t^5G2yb4B0_cl;9Zq_mNm4KyI8N;J{1-O zpsAlc>!Hv4)!AauLmsF@Pw>Yre=uDTH<;tM#-U$;n|S{aK(}i${I(eM!!I5>AwzG8 zen0r~-4-(RwixumzX@%vEWy&X$Dkj+wS^_bZ;eC00Jc_^5Wg)3{qQXXz`B#C%DVBw{2*~#djAX#_ zFc4zLQhA?jLm_ZHw1q&nsxT4)%R^fT#Vh7U!l?4n77BAy*+>!;18w-2JIO}yQ4I9q zV;W1F;YV@M765%E7q+64XS!@462Z2vHrev99a_vJNwVj21UW4mJ2$4If{_R)2D)Pn zuL~lcXEno*;-D=6s-=LD05}c_O9xuEo49UQKVG~V_(gJ z38G3G{UX;=mGTnnT+f7wTpDwYqRVgnE zca=ufXyUrCv2PJ+ElE{RURel~gRL{gQG}J@q8w@+xG2Ipa50ajYE2D5jH0a$8s+qB zDH%ms8L*0buLE0!{w;_YyxXxm?mk7!_Agj27Via_e4HA zlC(19JH#9IS|%SwSRF1Zpw*eqxL{lza2jvJd$|qOf{diC3>p`8>p;d)RtFs2?Y3*8 zrS}R+{0#Ca>va2(sU1Z%%1TyO*wd(*mtwB5%?+EbsM#syirUPOd4`&ov1pjIM$OJd zG-PC7Gc%M;nV*qxxD0?j;Z*sV2#3rRSQAc}pOJ7;d<|Xxq}z`@>696oh=&P;t%;__ z%up;$v}{u{HGU?-;e#`4^69WN5>Xz@*^^C$mzhwwSkj_ostk?9!$yVn78M?PLa2r-+LEX;(h^5K zI?0`CFF;l zSUnI3&&^CQOuE9{jH9@i38HWZ(1;Olu7ZnL4L4a>p7J2yd}wfNj8wLK8M*M|P+ZIe zxkHzinm7q4E{1|UKpp1?2YbyOl98b}_&QpnfkCk`6XoB*?!a6ud?cg#3~9q+s0Q7@ z>{JisHljX^^}Xqu(aAG?RuIl9@zUqS8L8#Rjpb5fXCm5uzmt2S)<#T`n}J}sFx-}4 zs@#kOQ>zX(n~S(B*0mZ<1ViQ;YG#I_Df2TB4%vjrmTb!Gj6_4FRP2eS$j(?aHDhcx zDU0;VZYTBFYJD0As9cV3CY>@n6VX(QKnz7wWoICoa!H7pXv*wNL{qL0F_cZ2pMh|g z+~9WhRtM0||1eu`>`&r;fyI)O0wS2q+IfZOuo-J@J~Akx00lUCqpJ#E?0{ znxBbq>Ln+J(y22v5Kp53#Y{X6h6duPR-~B8rpnDkFzCl|6FSTzKxKz2LnHC_y8v-X zyI$gkBga(v83?CXTx2GhA~O@QR11v^1yf~bBAR}&k)e?Kj19!a)*#thed_!^2Jx1+ zBYLxrpn=clba|Qo`*w*ruWsTNQaV*6B_y=`HM-C1N!46GA;D8Uib8riRj4P=gygiU zT7}dqa5tgiejp@S15~6bq*#Ic9SZV_si=@mLMc;^v=}nq&~0H-J+kdz}+s9EFt)tx;3-7lfJ9}i0`v`u8*A?%!_wb5eqcpgD^9kEq z2uft)MrS}eJm}(EH*ggC6}th1?{e%0k3!Y28$et^s8cLg3k-QM<8Xyx5xE(#vVF2b zA7VGapks7?f`LZn1{cbWayXqZUY)DOhB=yXs2UU;N3-S^OdQ}+Hz+)gl%vuj*_|t- zg36VmkY_RuClb1p+>wf)wo@8!J5&z}jw{umYJc4=FjUgq)!v2cgX>N?I6P3O{e~_a zgnmPq)=99OXmOy!Qd$_u_DfFGfhm>Ep4uUt9mrZt2l~JwA)X)D(2jn+V3ANO1Xnxg zV1`^Hkq|2cS#jt3Sur=*2bb`i0tQ1_exC4zKfe@?X4woLM zMRB@B!Jq|!e(aqV2IvBnmZwFryu;ObJ6I=JB*Y5A<=^RDMH~)lWgs8ib1*&BtJoc# zuHnu~nnm$$fME|$YGiJ3Ax~3kSnkf=RC|LsQW!F+KZeGXp}A5SF6}>x%2c5_QW^4K zU<{QhLvy7vbWR)ISh4d#5qLu{1`1D^}HA@9*uk$Eg-HSOqp?Q5oqzKKjliFomb9#QL9Kb zspLRKs*s3Pq?|;eSCKL#Y85Hxj2!4l856OR)bd313R1&EuN<|ckQ4o=K_XU>P6mix zOFF2i6{V8+aiAd;IOM8P&GERS zM64ji>=wO#6ai7IM>Ut_KtZaIs8yujj@5y(^uZCUO+DjBuPt>6|JaJ;Z}^rnaJ`$F$Ui2IX2!@WT8gHHE_EOj)RgC@zf^3Xn_n+{Bkqnv}9> zO(swi9+)$AVa_w18gmpNXX-)sU3IzO(4d^D2`r@iyw2$~!Xa{|pqJ6a;yDx`XX?2_ z_e*f(fTIApQ_n-Z4L?k4JG(<-`v2K`yXLlyq-}VA3J*z@7c9qq@}zFPCyFH}yf=FMddx_dZ~qzXI? zsi&nvV#E0ZzUualjZ95TzEkSv+xru{`j!eC1<9DQ>APgysw&>5bpS-g%XAKssCcQa zffN<*)G^qi;+4`Kfwf0SD%@%}TKAxhTAAUcrhujVFVwhx$Ue|_vGsoHLoI2jQ+pSgCqJxh#Kj}Ia1wLd4>pGNN z+q1r=CFO+gWwq+fj=tt3H&W+ys(0e_H6gi?I#1}zb%)wbl0$W#QvDUTuQiezsr!WL zFMz$xNN%XkQ~IU{S1br!pP3(hce|$F^i7>#yRS*M8r%%h)0CX>X-(zQ=B_0?Gr0hN zI#@pExAwd|ptZ?H@6+)*POe$XXZOi98?V#k8fR;Eon7MryG^fYre){pH65_i^crVL zcAZ}10lQ7Fae`y#`86J~(*)}cqO6MUI=N<}b)8tV%)%b#)@;B|(`%Cw*mZ_&#_Tr9 zdiQgB!giirlfgPpt7$S`_qjD4vD*Zj=h1bZVe=t7O|fZySJ(M99k0{mq#{xM?YxG= zb(>n#w5qNPCs{c?MYGfNny2=3onP}2Da2dvpgg#6NfNkI6r;dx<6)ZL>sn5x+5M{h zWSWiBYBG(lQ*CF{c%XLEX?lHXJ)NclwVF=j>r&h4G#;qkbQ<4|TF_*gf zGR;P5JCSDBpAK_rHc+eSw7KiFol%>y+D)p-6{q!Vnher%8clCA?dQ^Tq;?Z(etBs< zqvk`knv#g}H=vNTol=XTT1~0x6|C)invTv(R|2`Q~gs9yGMG^Kx8m_%$&c<@sa?7@!>)PZBpj3-b zEF{Kis8jxgYZUF=ysD|o zRN+*p1%8zpU(w`Ojul$EEoE7$TmB|*p$dpVE^Mk$5Tx(8iXf1>{HPNGso_;k{h2p_ zRLoJ89q>iB?0PFq-NMU_Pq*$0Zlt>FPru_zUwir;mTr48v`SKL{f^70D>ZPx!%E++ z`k$}tt*++@%U&h=pRnx6eNR}9imE`OFC<6qdBT!pRRt549l7rbOR`y2%vg44HB)YI zBk%VG7FyGrc)#OoQdi*qb(qw!Jx^8Y%G>``rH1W)sxtIv1sj=WD>ZW86PCKtD_C5q zaeJO@lgoSmQ*JW)6~Uw5+HB3Q60R29>mJiAhv>z3y1{0D&CU#idAuH##~hRS^Tljl z9u2F%a%3u2iMY#~*)7Fl7N@fhu5)KwMz}f;Xqe(r?yX10Ylmdh*`s%_t2B}sm`Y`x z&Q^h#8I8qXfPWO%w4&K&KD+e2d)>)>^qHWroK5DBuGqhsk^SDKvw!^E&N1c-nqT@^ z0_Gnc#hvKM(O(qL*K$L>6{_)o>4Y+Gv7b@qGcl#iNBcSLKTG~7dHWCU&It(vl9tn1 z6iK6hbeTo;jO0~-nE`<`}v zf{23CYb7yi?-P}FgZ4Y}LX&oX_B*h)l1(pBvBJ`0_dIF2gbf8VmK?a}>8_>eLp}N! zDf>cZ*uJMK>B{bRSemQUxc!bQo8F>8jwKUoIK{k2k<#RR<^3PMa^v@Uka3q#$w-%=gia$BzJSnQE*87fB0@yQn4 zApPA%XNZDyxR4OC$UeHG0%_xSd7`bKTHa{2`9 zVC>*aXRnne;%$`Q!D%(K98*g;+ppjK*!V0=A4x8G@`%UXBKmn^;Y*Ie%tXNSS+077>dBbkYT|V=y7Con+j!k(kq*vylwPo5D`oDdc<($|@^k4qJe;O3m zm<6G~Gs4+lf1l1Sd>-CmzVG^{vnUm3o_Xruk*8n8h5jaodzUS6ymXnN_?x)=UFhW~ z&LS~X{$>#8{ZQ$AD`48^_-95&$G zHT&9!d);!xL!`bsKUr-(@;O)`MYMRxCmxw-Y|*36B_Hz5^&e<0>D3q7A7B3e%jg}> z=;CU!Kcyb=g(6}0C*9FkWsS)Bils>H|DN7gYJmC4XWiGg!9x422jR~&Rg)B}?KXJF z^bsF-)G?j4ddMG+?HUivjDuUD#R769ZsJd+CQ|T#D|XlI0iSkuXmxwUnQ4kQi$tgG zTq@m+c^MGnWuc5zipH&sw{71*Joe|Z&gJ>Hn4gF*B=7N5Q-mo0^;NJ6f*tcOop|So zhe^GCU;8}h^%OvmH7dQTj)F{S1GafGf^ejJeLP&jQ7m0a7m!= zVTI>sB?~;iA4^}Rib$S+MDZ&`wB2ra$Uma^6+SYZAC$5(UJ6CS=M=w;yn-lw5BW!w zyh55xHZ2x7As-d0O#{Rm3v$qE-rx^b<;6AZ~-T=Ei+DRFZ~T@=q#%A!c%m zwEOEccuw)le4#)_x7Uz6U8xnE36pR|_gd*v2eBGHL0Sve24d5{jSF?5u>+eojdV`zV$Qc4I*D!VE_qJ7XD%=EkM@l2o5O{5;(kd(z|_dD~s zH@ulZA6XF^KQ;M5$YWAm7Y6da*i`qFKXx6ZDGAdndiD=}z4Fhx%})+FenNAATo}kpHo-Cl~l)qXGVJ#Q^0b9-EmP z<}c$P+|Z>M;iE-v;*zHc8lX?^Lz3F%)-`u_6j|ioI*cs7Da)hd-p7jMxucw>H?v|^ zVtQN9_Tedt^tOsdCWm;SoyF$eITb>TBgJpxNHFEC5%|e}Z8yd){L@Xaj&C&*6Wg0f ze8YX9PUuz`>|@jPLWx@Z!wEbJR>Y6(>Fv^CA}Vr*63}jd+gQs*GwPTo7SDhe2LX-{m0QgHIoW@e)bE|0Lovke2*t3K9_WfjFL)CeWQs4 zQ+jGe0z$G6GwZ%Oe^dSn$J@62Z_8gd*&mURe04)cIYAGUrAk(?>xXm8)xP;wNN#dQ zBxH#N$SiHb=SZp;UtqdgsyN%wo_SJ! z_Tay-?{}f;es=^bHTPw5;(A`egUR2PAa+G8m>97ATk(U5|BtjkiB%_sx!m$YE_vAL z>=WC5rX=ES!m1@tsSwV_5_IWg1UXKw5U910Q&BlL^U!?`$D5g^)ez~$3F>-LJXO1l zewNJl@YtoIoKC2bS8hY=M-FCgmIgOGu{w$p)+@aD?^fq+56dH=PtVBs(U(3?FpyBa z3f`oZG-qZMy?Htz&Vflz{h%J%~%~FqTn*$?9oHbXU zK6KOxbjEDR(LhcH`YrUS&a}TZQr)oEVS)9jyiMj!BjuJo zIZ0@~#40a)UZ$UBr7QVEaW>K)ebcF^MS2X2ln?qi_q3z}27R19F7sJ(*2drFbj&s@ zReI~<6ir;DqAMv^dgVuaMq9@Rh=j6@wmA1U<09o`3jdd--R*ZGE>ihk3Ajk%BIV;E z73fhg2^T3!KEOpP?I@EunsJe8?Oee{3KuCJnW;8|D|}FU^DVgvBQmF>thqo zU$4*1`W}0IaC~c4@W{mR+v}5yA~wAaAe@3#ltfwmlWLC4juy_gUf;Ul`B`UPuVc~i z5d{w^VA$((lQ>VW&x`|Ky*@IIKKA-Z?rBfF?Y%xXb>jE>Sm6!r^`V~6Jl$uB=8U2N zJwM+yC~=Wk6TG@G^RR^M)|kXOo-!kDyGt_O1d{mA{VTO_}kOnb#Y%gl2ZXs3QXLAtpu3fge%ruar3h( zY0hxB@~T6yM2i{&+*36E`tx=1ml5b}w*=?sMO>20s z9^QRK^>B)oY}Fd&q&Ws{hXjeFaRhx(!V*lOUmlcmZg@1E&Z3?T?c|Kk8@}+D4xOM9 z`m~FX@R2;58aYi=IC#kr!ibIl-WG`00;GS@jevfkU`|{LpFX+1DHhJsjY{S?mEeku zzsl=WMqpqn^41+N6=5oFqws8UeJtH#l6Mc7iiJl{s(4!NI+%(HjiB&CK$%rA6>l}e z&F$rk&~-67By5^?Ckaf&@P4Oi)nFV2|DWGY6EB3O!1_KW1f4oeZ1V(xT- zr8rJkJ}gC8ib-N4sdhLOqh`P4RDx5n*dU_26P$|Ff&TG*k);@im|!ZxRIGK7A^uFw zDhs_|Fco1c9_!b=b%OY_=yP;%0tur9@#nl_vs|B?&frvpQ?b<0RT_Uz*hr3f#i#{} z1Dg>xBWy;lsuL74;i!@GNWobwF-Uj?OR9-xMx96#N+&prVWyrP0@3P1ng~SaB@LX# z%*InD97=6Q{%{zIFce`Z!cg2-BaI_fNN(xqG>u_|bFsvhhjX!MumaA-V#G2R`z}0F z#G#A*mJwr-I%n-zb!(+`8IT7Zw4~W15BiWqUKMLW9<+R13O>aWI|M$(xO-XEMniIo zsx%2@ZX?8@5r;0e=Sblx^(p>~J;6|nJG&saC9b_(mNbciImI{H^0Qd(yg(LoArCaY zp|-r9A^42k7UZ@F&n*h(NQBLh+ftg_^4awedq(V8ViUnmgq@hJ5|lCIx_pg!uoGb?!cI)if|NT4u42E6VTxQuqEAZM ziH7U5<(6%O(Dn5V)8;2D$7Fvpa~*$hy>YeRUiX-`qi)sjet5J0_w~CUZun+J5MsxBWHcQWUL)UQaC37~G6G@uqy0*3s^^h${QsPY3NKopQX*@5gy|0m| z5xwfW>AdQM1mNvdP#yP+My*7pPKoE;QBBGdKcg~j)}-wjU$jx*;b(kLSu5&!rBl|@ zc;2^ckUjH^EB-~d>f(xF2e$qim>C>~I`)2iVa_%FeE%k(3=B6;+1Mnvj)k6rM-yR`xy)%hI% zmb&yQa>M*P-C(o7W|233bv`evLzGD)NIQ+4&b~Z(ya8fya3%Ad=<)oIqYe&9wZ6*R z>qMq<;rlOP8dogX+10_Ki7d!BJ>bc=HVav`dt^HExnloj#!H$`;M$KbV|6YaA#9Nr zC^I%EB5Q}U(aKECY0l?m&8F-MHJP=cqtlHK&&h9_%v7eoXVS?`e#4|wnfz{9?+k+l zarL>$@0Z+UroUsd)0zC9$xdeCyCycAUxHg$8Z_D32PGr)4 zwq4`ls~fT_-Fdi4lMaH=-x=ZTufItF_MA2Vpk;vWg(3i`rJ(M^dI8i@P?tGWps7pK zxLRuJQfCjK?iuQ`dmMo71L%HvQc%-nYP#2JE?_Q$x#x>EfGz{NU#cK*F2lJ`mkLlW zL%C0<4p1&bxlgt%P%cBcSGq7@E`zz(d>z1C2J`e>(R58B}Q*u#H8|i6zsi%$gq#V`LhML~K zGKY9X5!-14Jt24Xw1J+G$9md8PswRLZKS8NpD;cHRwCDHus@s?6x~w53NV`E&5QqZV==L0) z56j7;c^s_09DknE#o23;d(lxl#r;G{#}ksAGT$-<&+x@^}v=I#SON z>8LGDL5YrI#JNb@9hLMCDc}cvT11|cXvI|a6d8NaUpE5eGz%=7H0dMP8sKJBQ15@lrufR1uRCB+P& zWfN;j-Xb^ue8GQlo$^wi*sOGs%V#BX@Tkz_E@bnHUT7KMuBcM1erq#myEv^ITQ+|W zILzWN%&-J#Z9qGnoioEV+59>-c^9)e*}89LENU9V|0}N-3wxIiQep4Lkig_^BW^Hx ziyD6x>$B5YT*!l}h>P8s?#qk+>~uS*H-~Yw9@r*g7k{*Ds_`BhD7aw>?S}o?WPc`| zoFPP_9?>GP8{!|QGh#cybjX+vga_<~c6LMTYh3Zh90Aq*$H|w8O!av`g3pZm%uZ)3 zXf9r1PMAwcV;ZtWlZ{CGkTW;vgA(g0_3tdd>o&!owQtc62v{s&RKRbOILJy6tX7m; zw)H6fk}Y4D{e5bs3>V~S<(HL9hrIj}W+*N;2NxR-pJ!9gDjbbC8aM9p@x7*^4>u8|Fy`U+15 zY}wqFl{-!WS`IXj6r`h4!rlc*fho2{;Kz*pm>?-omgQZqm)5=49VCUklQY(Ca%U*^ zXS_c_QaGR|gQT!5boB_+0VIXit}>7mqMM}hOC@xBtlL3Sh}z%@%>|M|zh)?fltEI+ zdLlql=;$*9NdayNs{9gJ2@3n7f~3%_lUqbmXjIn{g%rS1h&Vgrik;{??w4xDYg7J$uk;)$b>LfDv>3XVd@`-WVo0O9uRC0Ft|1!y_Yz)=84 z;Xqlbyx__yHkiEND5%N<5l(k-6u?pFMkGC*funG6Z30ID90euWdqQiYkOBfR!vtc$ zQ2<9lX*x1E3U<~L0gl4KH9YM|BAXb7LJHz&Xo?-&64G8Ua1>f_6q@xp1xW!U1&|c< z&D3f^k!l1<0VIXIS5aj&1tf(IDH|Xubi8oL8O?~dXK%S6DR7}{dOZV4LHc?o9OWpa z07tp-hNv|`P)GrV6mkWb6pCA{-Q)}pkcd!7p`>6y+$9R#9*P)1QTGdUduU^(3fl`L z1=wE0*j^whfTRGD!hs)4rTvL+4|(r)b59OP3gT#JiXE;!(q1r-6k3xM&K&cKg*)Ft z+lP{h-73$Qq)iptJ}3<%!!?AG3OSdhnxhz@&s^veYz43toYi>+w@=~8iokn2k0wgT zfUTg;!z4WBU@O35F5Dt24}sGe*a~1PByi3en+sgiGAD z0Bs*yyUNh^0c{`h;XH+hA%$eXRsdT;-CdFd3?&s%QlZBt>|COlXX^%=*Sf*3m~QH~ zHbYbKq^UUA3ScWJs^J*5eOO!nWuPd4qAq`9Qd(R-mXzlA+O$=`V2u)K<30SnG-zV zK3~i%Cp?|4L*H^X^sgZL<#hJNUE3D%WEQjQo0HtL+|iRlQ{QBN zpIVeRq9}aT?Hvn1QUFO|YT_%IEsHt|sH2ec(>1kT5WH&@yaP!ABn8w_i0s7ca$_^O zwvHia06o`A&z&>FHQD_7W=FS&63_Yq6sobrj$Y7{(g_ zk^)EyIn!UIlQ`0Da%U*6r0Dv9t`BS}ons+P2aps%QW$x0KIryXw}Yerk^)EyASqCo zbQs&5Q3rrih@D(Bj#)@hb>vtK~qu;>L?ss?V1887b!p;1=LaKnq0+62%so5N`?eQ0lt7? zd;y>+fT943LJ7gqpWPZSm5cRAZcXgAyRDz-aih}X* z)eYk+=z?6e3NE%@_(bWkNkJ3ZhkEGx^g#)IJ#{ZGzw7n`ofY4r9}uuuz|iUetscjdTf{E4GZ3%{g^xaH2=fF@%qY_O|2Dk#G#f@A6U?_m0P!ykE znXGqUV(o_g*<^oybo~q6xS!wc90PTRDDbjKiZ8`KPG?j!0JucB#Bn_oQD~iIfld!y z$;i;{O>{eoD4>V}iYOfTu@t&*7U=YVP7mWQS_^Jf%&h`Lp(#Uw?0zs5z)%1~0SpB& z6u?j@42?DorGTLThJrKliku)79)&9)b_IZ; z(0d?$pN;#`vMCJ^!R36iB=)EDaX<_rFcc0-&w-(^ENOoMhC+^N)!c3XLjeqhd!fxO93neuoS>j080TZ z1+WwX-3TrB`GV}Iqi}G$YwnaoNr1*B0pzY4U@3s5&@Pz|ECsL>4kHC>J>_62fTfTN z?kN;E)KO?^q=BVybk_t+0W1X-MPByYGIV-C4Xa_gY=NZ!mI7D`2YxJ-_9yBnBYPrV?E4U7$-g`2^V;D2BF_RDo<8;MZ;I5c%>bEvqvk(As0Of=YLHAtH z9iX++bLY%(O*X&2*;!8b(_%KKA8(S%&Ai%z%|eE<&9p1QQ~*-}Oa)WlEDhJWvnkPt zexKl_E6&VCJ%yk1J%OWU({g7hjI`LwMLh-7Q}BE@bTf_@)KgH$|nFt{2=LE#Q+QfKDO z^X#X3DWfPSB6o<~9bV$VP#BIDP4yDNP{`##HkCfPlL2}Tdak>k14H4sqG4s2Atr6W zh?}j zt~*J?zu1%9?&&njXV+5?*{}KlGf~mPCQ@sM>OfT$nzF&vuaE3mK$1qqcc>}CBO?uJ z=(c^U8xN`WyxTd(oYTeM#GYHyou737;SVR+-3Eql-7-^lGMRB6b>HH}0@88#5d5(5 zOsWJF?Z-YJ+fa~X-n1RSr4wH{R!9p_`rq3PM-z#PGJGw=`!{#J|>9!rUz!sG+4IeFH8WOr_adHlVDY?KZP^=2D6IyZ0T$c5v>Wi=GYQ z#139L_sqA#kG{LDvI?_*#x3<`=lR~)Oa|qk^=yJV?0bprSt$qAq_6r;!1EI_2cz;P z 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
    2. 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%0DK%5PW{Y0l!9}aiLM;%^8D{H$s@>OV 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
    3. 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 z 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

      4%1jd^w}_D~UfDC3N>p_!v~tHlbfJH!h= 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%0DrL1s}E(^X!kHFh^hTf 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

      hU;R-g*6hDu4U+z7xA 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%0AFFS2nSkw1@#BS$(YPOVj!++R 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 m!8FHOB+pL!ox$cpZl0~-f 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�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

      8LQFKL!x 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

      %#ZUGpifxZ>F(t~)D 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%0DU@xptX--s99>Qpc(T6pWXh_QeA`V+tHpMGjy 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 lyB;SOkxzc~k{Z=_ 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

      CLuv2wkF+0&W`#}7))NM5H1 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%0Ab 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%0Ah8M+|vFR{zcCo7C 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ν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ⅇk2Z4z7+L)A@bw{d1Q)k7G-bgjK}7YwbJk@6>t9 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

      Zn$97LH#Dy9mbpx|Ev(KXAEm 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

      bCI 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

        oxt$HGH2(Z|f&wA`Ve8t7?5G)fJ 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

        VY92G&l$0E$D;FHY=*``V&D8~b;l|VpGUX| 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%0DedNKF!B3(=OiG0CeEqEGmVMlBH-zw4@#; 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

        Q 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

        lDg1DoPl7b@gZ7a9 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� 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

        5}5L9wmenE+Y~b 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

        F{?(tGR3+=Q1MXoKwEM0{ zEQ7b*QDfB}<|D{_-(2lsy3n;dTBtqD5q20e+Ovll4t8h@wTD?0ps<`@$fsx`2k874 zM~INE?$%?~uvh^?bh5i(u+JO%X=eTKtF&Nkzp!|(*>`x;E) zNiS_D0&D%s2y!>%(71NeeP~wkOwBA!)7W${+Wdg)S+ie~?j!oPlZM zK}b$uTIv81GN2=EFK_^?Wk4E5L==C0tQ=v9Pp~!#>1{1P2HT2zcV-ZgGzFu5NdBO{ z8?D5A?W-+&ZKk&D{4%CHD5h)jLMvj)KZ>gJw?dJ(;t$9ag^~i{41!hid#MpaV1ota zta2jwV<}S#Lw`t=^n=XdR2puyG~9}<(V|*gh8r!@nFeYET#@!=gs6grXz81@{L&?k zWb#+n>ZxB{EA5N68B#{>1Kq6xb(PtG@Xfz?Ifgaoi?PA9!biSI^=} zwQ%WV@Jf;~(M!l&nsX@CM{h+1zhQ};xgB~iLJE4oGjRsKg(OHb$IzNYp#nkvs?#=fO<`z}kUdC+$g)mhAaWbj^V zbr$mo;QQ9Ei|K8x|1-^jBVH>2)lN3D^*trXHEY}6!`j6V?3Z#o%% zZLpYXqmrSCXQp6yo)qLc4U#LBH|zxPTeOgtVSh|gE0uh0_>&E4rJ@PBQaNacc~Hh$ zsXUmZRw}WODbhx*RLTP+v{5S+O<-F4R<4zbYw4|{sk|cn3HsB`x@Y^5scGwWp<0d0 z;M7OZn$-0Xh>-w;Nt^<)3ScRTLm-X=9ES5}_|PxmWBwQaJc8F(aOR&NqS^{k0M7LN z6kQrXiMHx6QAh753h=CYPBec?TOKC91(A)s7s$iJlK?qz{sr`j_7|Y;wpAx#(e}}? zMg>%z2Dfk*q(*s2+71eMLrxx&0u+TyD5t~bIY}I#Ql?K5{l$8r5`96jF!V7wi(>wx z6I~e^E3{LI?heqIamMRJPX(3MP9-|YPIS^g6Mg0Re>nl&fZ*$y?uP%8?yI@eZM9;i zJfM;x?rzpYWG$v?vH8nXo{@mF8#>=%%1eMa2XLB16o@YX?lKz;;#UhkvJ*6$0`b~n z5L^IP4u#*=M*18io%sy++f&ryq#hq9X|GlcT>;v+S1X1o0F!yCG4btZE>61Y#YsS4 z#Mi-&q93CuV3>uOfk|M^YtJzi#3&H!0A7W2^-uw3!1M1Zszj{bPd=~Y{B4UzAQzJt zAzQVFZ@N;UfA=7?13cx*OmiGI(l_XwF@}4|RF(OINXWZzMVa}c%(QcHuFUEgC8LyU zu*J4wjr5YwS;%k~rBYdv??dYuU6Pt`uE|r9UY!u9$o%tl-N!_0i#Fp)G=>#HpP`(M zlHlBdnw!)c1H$Ma#GfR>?(>I(xwQ&oU=Y8=`|Q-O97^@8B~jMlR9`OkwPu(67}RWK zZkVRl_q?zf*FmlCTLQFzb0%%cy}q9&?C}R_Wr=7Bhqy?Mtxex_Rk~fFpmPUhS|b65 zcTfc~8DJvS*WZ%6K)inJM@QmjB=zk`G_qIPZOjQe!dXx`Lr1s-V6l#H4Ztgmu+5fd z*|Pl(ji}1l+Ssva6sluuYpt_4L)V)+rab_=bWFzqau`#eyfMiQi*$R#0$uuDWe&Vt z>CD>VA=KVHs;RviA1==~L}G^bx@;Ps(xzo5KfQ&x6NR(oW{+&1LDnivEot?YH#h1Q z+mPc+u}Yzts;|6;^k3?r`pQQD-_ouqCHu??oEP#t_#h*#;T zI{20VE#MOJ|4T=CZ)5Hb-ny#g<^(R-o{VXv|3XTb?K0J5t_QSt>!>DkV*y5YWMQ6A zMa+BEV>4AT*OP_0Ia9d4QfzMLF3D6qQnuCUpwvQi2Cat+IK|u!sqXS8y36u6;yF20 zd;aCfD$A+WRa+)5mb2BcAcH$4)+9Wvm7LvItWlW1>ShEPzFBDf++_vTiG+yaW@}tI zzE1XSkdc+eGXwI!m2COLQtoeu**`4h{&oVF`=xow!2Nyfk}Ua~(#Nf`%{M5E&jQ83 z?@=-Skg}*|QNK&dXY`m!!u^MwE~_jty!sLHa*R8vFy9%z7<8|mRTky#h47I1T=X(! z7rQWJ^HJoPyyeX61n!IDxCMO@^x=+t*x!#@(wWl7pudAFEfaF7aEjbp&Plg&a9QP` zn40It@als5it>$BzVb_-#QM5xJHp=}x@L}=u6AyGJHc{0shykr01=(k&P{QE*iO{I zVHJmm7tJBZ~ z0UGHvbOdOx)6fr~57XdUphCwlfSt_n-q+xsh1Nau1tBWU_{YfwcTb!Lyfk?D8Fm>} zwR6ay+Hqeum(Eb>8-)~%(CM2B@VrjnJb*b&pL;E``kb9Zjdb7W{?PoJ+D<@fIpmj7 z!F~`M0M?V(3StMqHaKSwuk3g-nx?a2#n!`4uSWXwKKCs%ZKjItAoRVfV><(IO2>8! z;3i`m^Q_oBX2n%Nl8SST9p{+5IlOItuH$?Ft@m}DKL9+|asCDHlyPQ0Glz0Q;o>V! zD!!9;iJr_G-^XUVSt>q%G)g{&Bje*wb4GSn@s$854(Gh_zm+I${Dz%7jr6aqy6>9R zXDfS8guV)$mA%&jsL?sEsXwxl%{_gX`p2`BDK&#^lg`SNIsMvDAK6ES?U|+dgaCan;V7v(L?$ zI<6hix=rWoFu*~bv$FuF8E30!<}8V0t}a>y4|ZxX3Wc5 zsz0hOmc}aEq zH>r@IhF%l7xCi{1tdl{;%U~DyjZ>(TjU}F!k66Cb68RDRPsxLD5ydG=9G^^g=L8v7 z>|i+!WH8=Hb?5Z5uW`6@hRb7{xS@d{HU$|hDJ#ULrVJr3T)H>)mm%cLXwzth@EI-K z*4cVwI_HPhxq7w8*9(EzTF6K4)FuscgIXRWlC3=X*f&7Bq0)-UXqML`&On7vgexZV zwOroR+yVMcxR|m11`79z*wHU=T6IrN7fbW!uG}kw(_WyxZO)95lg(AZU;0=tX+#VY z?$t7ZpFqdWF6!sTZYOJt)JQMB-LIPt=#mHSkzLVA@>3BWxR(GZPJ##Si2xONnC;q- z?6JR6FXY-x)oB#2Jzhf3c?&Vg>^Q555T8okTkR}4IlEZG#r3-gvH5P6Qq_;*_bsyP1Q@%2~6ZFe)`S~7$duCtOY2|Kc zDR3ocvz}+k`yF#ZPw%E~D9rQK%bKI?fakd@EmQ@z86q3HsRFwIaJ-u;FrV(2aexrM zOxAv1JrDkn8eVX3SjANs{;3YRs{C~0OAt)}8o~Kf%6tl+A)wm8nLew9c%z39FT$Cj ztNBY8=#oi9gZQks5a;2{5+F|Z5h5GTtN@})UlahGSq;QWfGiRXK!|?m;7POuF&D)1 z{n)RA$QmF-DxBFLMEXD>#=)7RK->kmN@6mI`h#HVaOO-9djZ}cu^2>|!KhI<^JNh0 z02Yzh1fs|gq#VwC2gHj2nIsN^a1RyYHxj2oWP%t6XI=yG5a1q(PeAk-h5~^zzX5Rs zU@wVZKm=ilXu^d%UPi`HfEN~V4;4fY_;w;U9K;JFgqRH{!i#`%!|Z;dTpWl6Ba!!! zEI1IU6EHeXpj-`5$&f3w7_7P=KFSi}I-J=8#0AW+PtKrRXHe}R*NAdGKzxcR&22by zFo;VStxnISTq>x+kQ+(4Ng#eihw})|oB`rX^hEa-P;N1(agbY1xtBm3hEX4Ufd_CP z&H%Wc`I{h?0W4fZ zx%;5rgk0c@V0{H*C;|*-pdUa?1Q^SER^fkv+6TGHlykl!L`#4cB!WS72k7`B<)T5I zhFnjwih@X7g3e?KKduK+2cQ~%96me+)JKq;MY);czZQpR{(JUU^kn6crvIBko%5uRYAOnid^(Ey9E%h0jzqN za;-t_^0TVJ>;QsgI1bM24PrXL)K@4s9Mo~h)uP-O5MAIpy~lzNSFM?w7nxjmFS z0m8W!{pea=oCXmF5U`eVcR)EXB7aP|PeFVI?=L9#4Tzrs9!a@hK!rojMHBf0#QAkX zyuXf}FVb}z;QBhsg@Y;%xpI^%0OFnXLTraKi-R}c+2E?QdLQH@&yMvewkhy_!gF%ge+$PG60MTQk5Z&O+i6Djn z4A@Ay8KANtcY$(qLDb*GM-f0Q191}I=qAdo1+@fnKT&QYh*#baVl|w(1H@*44R28H zAgJ|_E5s)89*B%LkytqM9EgPgbKa!fO;Fj8Yecz^K=gl0h`w;|l?8PVa)&8b z5k&A7bY5^~4G@I@BDYYk38=@AdqBD8K>Psj$CT?#d)kU+j+E<9iq9jkX%7K$6RaC> zW-5pW0H187Tn4C6$W^A?Ob`dR3GwbWj)5S~0vz8)xmQ5NLary})`3{N9gP{z+yY`7 zz?<7Cw+~bz>;wij;r`&K5ftZ=f+tc9_LCp=|kFtX`6~x!@{u0id1L6t54^nO!sMjD@j&iF& z+&F@c9nRbU;sL-XM<}-g)NaUiq}*;0IY&`iS=>%oMUKG z$JAtf9l*qVxf=254^&X1 z0YJqi!dfl4oJ50wQY0D-R8OKIKrJL13e-`eNr}Q;$x=8e2{7D($$*g-tOOWs!ODO| zELa85igQv5V7vvZ0+zL4HNXlMtPYs0qF{6>3NyZ%3Nylb3NyyW3Ny+U3Ny|&#Q8XD z_8E`xRZPhnpRA$CS3~nsJiHXe>#TWIJ-n)lm#TTyJiKa(w^;M4dwA6qZ;R&D@bGFV z-f7LN>EYE>y!)D0%fqXsczMPy?&1>M{HBh`aHLszE*HH0}YhEJ{uaV+?qIpd`ye5kGyXH0Z@R}+fXP1)K z%)@J@c*&aA+{0_Gc&#o#)wes*SUUCwc8WympFLLG#*sc*3+`P`t95 z*VDu6sd!B^ua}3{OY!<^UT+Vtx8h}JULOyykK(EVr3yl*sbl!rG;@i<$NywM)sXvHh8d1E}hF^X45 z^Tv93V->Hv=8g04#wp%J%}e$0QWbBR=B0UfX^OW)^TvC4;}!3m=1uVMCMe#Qnm5tI zv!JLZ{U>?+Eht13|BI@Pf8v$|@b*KH5w~7%9G9rgO-B(|s32w#Q-Tb!LB3TRIHeMA zoCo#;Y9YV1+!;uLLGs;!J=|xR8cx~BN(?wnUOe~dE&|i7?<(`tH`Cg3E|(uT%NnYwI0kTq2G64$iwIzH-GOZii2U8}+-h`@T5?;&b#VEOhR zHeLiawEUBq-$quY*Ja`xOaE$-(=o*j>@UkY^79y8cTu-WY954L1r#xsEVri3+y|G_ z=QYi?sV5r1t;3IrPhrY@3@$d6UhQew_d(vFS3i0UXOMiyp&c%EwDg-zQ?CcQmh>A! zzt`#46Le>|QfvkRMGa}q&ZUpXm10{6h_!#)v~O^C5m3xfA3?6~TZ+~n5T^rVPb&2` z$}6CR{d)<0N@WB~k3#BU{ywE1Ai{un`v-UXlzJgbdMJskzNI!%M=8VIYMYF7SgGf! zqqO$8H!86`(^lu(>xO>T<+5HmBGR5UAsiTm1 zmr`?>gz{P{XHa6raClU(r0zrFW4NGUBA|-p6?g)RXU55oP6ARa&)M*t09Rx}DJ%vz zBfw}8kZQ=vjXEjBpC|YX+-)JUR_XK27a$psX1J@oA*>tR$03&kCvR|H2DnJ#win^g zFweZky;P~y*SNhNW0e=l!(RDJh%+ziC7DJqTSg`VW*9+tn2wzg`v@`JX4G$a5%N*h z8@2+CW+(+_Kl3ER^M3bN5dVVVdB6K7fFDTg@*;#&hqqrsebQGYa?&e04vp+YW*9-4 zZ>mH(PXU}#iPVHlV$oPpm%k`Mw}L6*lC@xHFm<*{3Btn>V!>#_=M9cVY2{coK^|b1QNF9 z83}V$UTyjEdyPA9iM$3XPbJ&)hdi%&2|73b4}$*6eE6|Z%w~PIDO@qie*v0X<9|~i zABAY`rJzGDXj*i@_-XmCvY)!J2SBQ33S_xM@74?r8m| ze$PP!tSfAY0xNY4C1~Tl472VQwtui1Ls3I&J^-Q}KpPU$X`_=w76h)iV0C4(=jECw}$F^I7YI+*@v z%=25+>oNX=wcv*kIxhv~BP~T#*Iin*xwD=}T4K*)96w7>d3!(2?tV4WH*o@%8ScSb zg>~J#4?^@htIB!|z_7EbtTo}B`Eu^Eo_58$JAFmyYuK*O)kLKEeIZ`hD!i_tOACW- zwHGc^+ZM*oeOuK>eOZ0v=Lmi?EM07}RfMaGm*{;hy2MMA69gqYZ>2{zc$<=)r(~x~ z*?Us9u5fMflC7a-VbET(S$!?pko>QCUw2r9IftA)a^#nj$LSV5O4C`QehvruZ|NJV z?ndnc0=|{6Vw?wkjDDDfecPH7F4y})Jf+Vh_;jL7 zRrpkdi%Am!-`T&;Qt}VZ2)~!pi;>{=exEO5V3HZ|(3-%2-UC;XbIO26((g~uKhlrC zsT=TE`c*#%?Qlg(V}+6*Nsi!k=77KD++-9O!{8D**9{QXgk=^yvfu)SB^%;!C2e$7 z5k4Tm2z`G$s3l;%4w-du#w`ByI>1&EQ$QR5*bg_3AJ}$8I9GCLQGQZel%LWT+c z&$HR2sa){;>LWYU$FlO5YxtiCnOWKUj#UsAIRPIB8DH#BH{Sz3ZbB@gn)6Aa!;$=j zOlu{>*Oe`iTdlbY5OL`+xqy>F2A>#}pS}j1l!4`^uK}l8%2)3O^amWlk5cpT;owN# zyb5?fRNlO*W>HryO2oy-@Z-H8<8?c#O_o9`*))hse1;4c0dL5URjWnjU>O&%S1!x2 zoDJBgmNId1G|1P2j6=4b*BZ-Q#U13_eQc0X45L;c+Q`@jaz;Hibr5h5>5FzUb^;eL zGS;!n7;EJFET?h#xYUU($RET`jo{OGK2xv+N{fikwh}PjdjBViYexC{U7UlBb8wK6 znyq6Q+*UpSIF?x*JRn}hICwf^w4xajL20RaX!s1C&dKi;i1dn+x|ezAq_f}$R1V6{ zwCc9FL-!E0%KXS@YeN0240!%R1!u%v|dbCet1=>QCNBd&BcGg4o0X|_XDr@GeW>0N4sEeH*f z7u5(`0-*RsHNqwWRDg4?&dN2y=DHrr806<$tL+#xvOlP5V^-O%VygvxHFRvv0GjC7 zx&pLkY@2h(rhh)dnhWwfq(QpCzzB)iqzZ%=l~{J2ZT!%L{G;WM`PyNkjU@~-D@Ni3hYk~Mg{jEvCgvtb zkRhLtNF}bszNuh8Lb**@ss>*@dBaikic8)<)t`b@`~xlDT?0W}tA@`1 zWrkXT{OeFPAyi$5Y5~xUp+!>|bN6R$>bz<*jlbP!Kwkb;7xP0p~Lh!pvI@NkSlRTjZbX=o`ZAN>yUeV zlFKjG(ksvVsPETLb?DA3S5znaGQcXTztJK05T$;S zI``9IQ|u@-vR^@K>@aWZ=-z8dK{PXO+)G|bM= zoNr`U-$*@?#mww!Ifod=SXw*GyN6Wveu18!boR_^PfYR<|aRDq!uu{Ho|%1{T;Mc20D`hcN&I!rzz zZ`=i|ErePy)HM(<0xTkN2E=OsufqAuFyFvu8>lVUc$X5yL4bXX!HVJ!JBm20=geLX zGvtVh;u@r`=qSDh_)_ObrnSfK*)6&1x`>?zMo!Ms~X&;4rTqQMS?+%35Dnw$c-z`*me2 zBLN08s*J9AY(+jD<@Jc4d~Gqqj!z@~Zk;*QVU|Cta)7wg<;!a4t0xshM6$qJZn z>t4*#8RjsT990#t2Ekvst}0*)z~<|!0uBM}hx1>oE8se)tGWU{1-R>}fb}X0UvYrq z!yV>5o#gK!^&g#N^9DO!xT@Wrwf4x+%~P`-;x6@#aF|WsQ$-$z;2}3ukrxFhd_xs^ zd4L2eZ`Lh$&+ZvGyxJ!_lKS0sG~Y3r(GGLLd#WR;4noab%Icb8>-p$2k3i4H}OVx#3LDMjKlopJ=Mg=L1@ek)x@&^GVD<6 zyXz5jK0~EB%yKy@)Ita?(4k%hc=?7d%dfiY#<7Q?#yiXxb5vQr1)(=|S?&hdsmoFm z&PUy!HA-3wIaXI#rdPr|NdK9sXe~LaK;DDGBf3B?0GzY4_Q)=fb4=s}hv|DvW$hM( zZtARk1@MIo#rkX3Lk}PK7;2)!Y;jE0-;WUbudYAwfe?S``V0PmJ(sS(Nj-GZ|D=k^ z4m0bRN^VIA#eJZXn+%Znfo@WTdg|n+6hx?L4)Y^k{!gb2aUz|`YgL_kj>t!|2?QLR+ zD9u=(E?jSVF)E!9_B=(n26ppsTB;yvm@v6IclSgx@PvL2Qn<8L(0`ipPb)1#%J%YF zmDFq%$lJn3ta=Q6sgGsz#u_fVxwN=!ROQm5F0xzxrnR)VY_#FhVk^j1H?5_`Wn(ax z79~DJQNhJ8EF{&YbNTWjJf_11_ruEJs=j@ImBN&yWO_u}O9d_^t{O4+QelGR7qyoP zX_6mjuNBfHzm&aJ7)mn1UMmbES;1Z_43pAH_F`eEq^sz~Lh#T^q^s+-0v9G%joNyp zP-GXfwDB}n^j~pxa7!l}i;9PqM-eS5yR1?Zw5c6qS==?;4Nj>p>kbOz)`xoc1mMAk zs>^x;@B^GPWkT*Q%X$+y%`?&Fi1m29?mDh8iaUmT*(o(*6}p9m`0;7nsqtM8H z?dW5}J@B-OZVVKT($P%?cwR?07hpD{E0wo|yiR!8sW;{WhbeY+8tEfC^Ap1@UpssW z%9c_)Uprh6uvYG=$O1`C)xjUKK)y9hzcVU@J0Z1Qr|=@c8J)r(0Uj}hFQh)BK%5y@ z?6Wtk7GJO<`IC`+Zd`(u4qlfIp>IDc^f$&zZaTlH~vKJQLnCGpA13ncca&RREqm$__LD zs6&d*1v|i7F^;kBHBTgnzN|%|jDwtHwqV3BFYx~f!75;pwjn8d0lV};J2e<#4T;atxzMb zoA#(5*obRjxFSY80(c-sMA8?nkCC_@E^&U1UI>UQyHyM-0)|4z*r1946-a_Q_OxM~ zv~x7Mam$RXOpoK}Nkd&!s!d$Cj$q2&b@D~}tT&zA7# zbkxBoHA)^NiuM+y{k~~W-^-(93B_P7Sg^E@rM9@Ch;YM#d{VVNe&Mhh9$LhK}ALSL(}fGkNfOx2)lWV`>cH& zl8a$qAhIFc;)k_L>I7(GKVdSvGMMAX!VpjyXSO>=<8qDBa7 zSg;yvymO#neBeNV@@ts(OOU)3%{Id9ia)Z#J`mYU6pjEGCJLtlOeBTV$A?ZYQ=K;n zCx^QnqxGcJw2VRIm>HJ6|Bt+$Tn|ZWkMnwRE5MfHGVTga5K9+2TvcBCk-Pa9sPy@9 z?&f;|_B_Uw#aQETCHy2@zoF70;W`I!R&y zEbAwUg=r2~%lMx-epyk`e}dyz1fakPj-L=#qonlK2F|Z zR)@%FQP>EefhZKh>YS8rN96yZG%Zc@x0osNsH%Y zFmL7wXYst+Y)6ad+`@(*{5S&D%V<-7SKyMhnjbt5}7;+(4HYr?xR*lAA&t#EUjU;|(+8qz@m@9tD zFrrTJn5za*=@gH-X92n*S>uv}2f13ZBbKqHoN*3qJkEVukD$Eb`}?N-jp&Sn)c&G# z48Um7IUQgU>5K~2DeJxjBSfRv7N(J2mVIbei2ju|z5$u*MdLPr4@9F7){OML2AK=%sKfWck>otXqLv^ybD05H0kE?DPm9rJplXK zwD%w6Zaxr|`lN9;e-U67lC?A?{pFPE4NBxvEs|cDZ+~Oj#SgK__aNb25xE`UGZL8^ zERq{NLB>t0mRE`7?K17>4{?wB9_-(xagRC(a3GC))G2^JNcfhN;2st7p$(@4AJdbK zApH%W?@jx}+>WPgPCz(}l7d6WLQ_j}^sS%JI>!y!1se0jSkd;xA)MBbO{KMY1#aR~thf3NZ5g z48=Zopug+%UXANtX0N;TD)xJJue(10xM;e{T)J3Em;G%dOVR6H?Lk}SI&_#D(4NxA zooxCQM3P?L>6rSk3pU;uCVgLkXJJOd-8K48&x)aC*GVV*aj~k0TJbxjAol1oOc+HOX zELBy{fg65>!|<#vEAJd?808OmB{Wg)J@!NL%%7p+AJ!X_0VmFylI5~i+<6`#wsede zCmQ**q5Iq}{Cq>W-k&v>sZUwMaU7l)}_l zj+FNfFQ`a={+`bT{(uf^!_in$sEr7p#7RWVUa}og{o@G1UK^og_}i?b4B3VVk7Z{o4J~Pg+Xz0nF45K=JV#8IrU|A7=a31eE8}z{!#(eibaZ^# zrWi1dcw0q;a66t3-n}l^M6#DwUN_ZpNP-9)Ye}8=waj2kyIYH*&EVh!Fi8v~0atI- z9U-5oJ?{mbd(_d?8QoQ2^|Dl-5DLn+dGw$LW#;1Vc^Djb2c$_`21kw%d2USh49*PEwRnX^@Hg-;9~sXbFV zL(~!K*eOmIZt|U@gO{5VHyPCSF=Yut1tzbAW)$mws}&6HEL~x|T4qbWAmeXToG%M! zer@@LP~4TM<^1wwy{z4ODNo(D&ALb`cC&ZpkAwr=RzA(BgKtcn=AP`JP=eMbm?EWT zDs}J|USsFJJUNRybttm!Vk1`40UC3VJpCaXvF1Wxq@#rqdlJp>p{KBO2~jA-D*$>b zQ&6BC%o8#Tm^d)20ZKr^l7!#F7`x#yn~F}nUDB)NJfQDRP<4z(H2gE^@l^=Su$2oRQZ* z!OKwF2=V@2w1+(>FFdgE6dZ^hHov+-&(c0@#fE?Rm1?I;lV12^`$#&quT1Ro&b9Sn za+0C?0mBiIDmTwus@JLTgYAQ+1XfmyWO;YVK%}W8X zq0_O zPUi6@>!8#;9mm1dx8m)>7bUp9(5T$I6aZ;ve%^-9I{?=2Tc3bFW1l%Rfn`nXYR873 z;&rBU!lxj`73`3IR!tQcm|J>9lCQVd^lx!k4uH!RA>;v^duoSjV?x9bXC4zlS)vuj z!~t$T1NqKR)Mm4y4QAmzYR@x&v96x*a2ds+9*`5oNm6G}yfFcVXj#kDTeDrb!kJpa zHAv`@gQXZsOm@xBlveRW8i;ITo|*W?+cLw++ptBo@Uh>z2=}g@ zVz^cr&2}+Wu3>^?g~;Q&L35!Zm7Z=Z78}f%O!+Au)X}Y;+*vN?#<4~T`bcS>HX&2m z?@_iMbJ5;FlcW2~ZG;+9_9ECejcSp%0^#|y__WX=zgVY{Du<)FH#^kG_an8BaaT}@ zYoVn2AI+Qm1N@u}Z6ofHM@7$7kr02Q<0Oe4`)Bh7QIb`1^Pk|h(2oiKi!^(ee{{Z+kH7se)`6@k^MpKcO}UQ1!?%e{eMZq)&5Kp@CUea` zGp*V~&H12U9;tyuK<^r5BUD7^35AaFJ;_{>G*v-d1K^htCqPyJ!9`QS5vK}zk`6%q zd!@0YF1AAm$_&4L8#sT4i;M<9jm|m?`82=Iy7OmO2-qyKucd-t$;@O?FDC6X#~<=29V#ypN~@VEsdq!vbB#SE z5I5@!FOp_Y>xX$cryYb=x-AB|)XxY!LB0$3v(^dfdua1Ki#^|(>JvHW7b+h_WVibi z#7`nU`Y<)Qqyq|&55l0apYtX=?nOo@xJNjaMigLK7)jPTIu(veShYe}9SoMk^HpM-L{ykf9g27ftUrpJ7gKgkX}+K|#FiT~5d35q-JpVK$Vk+2DA zJO3*8q$^rRQi?y_{h*GIz8u|k`Q(q4_hzqgZcB`-RzQs;rgy}^O|=Zb`J+ZWrb{eG zxL4SKp%??Ali@>!rC5V-2XhR8V}Ry!R563WJdA2BgO~d^8?8*yUb9-+0Tu z`(-Uo%ns?I5}s_oH0Yx&9#vg6&em+yaR0A;!L$8?YVsP|?O{%LHkjsV^eh2*HiY#YA z=j@p$UbP$V}V%@q+NOl8pS#bq9G#tVfFw)EY#ZP*hHrxUYBr#+29KF+g00B`04~T zqZ9xYI@tUhBLnI?EaIqkYUnP#{cr7D6TeyiJ5%HlA^J`-FstQ|#9!S14L-m%+~T(X z?0JxEKqf?1(J2B|tt^8G4Tjb9G_` zBk@X$a1+fN(;yo?LBe4K%c_kzs|*X0Y^>kr|1>rPqC;VmBsxK9JS*1iGa6#x)Z0fv|6V z%GM6T4eY&8HUc~y$XE!cl;@$V+SN`LLeX&nn>fF*X}5elVAr`K@hBYJbJ&rMLY$oH z!X<32BR23fNNj!NZju{hPR_`(qNcYO_+b-(^sx}8P~6h5zry6EPGJdgn4xS$I0PQl z;AbP)SKaiUOW_+Erjf`XXg|8-x!uWHSs<-|HyyXP5fXa%iS0X~;24*oyzs!wB`Fjn zxPUGCf&|Gig05u--;w<_rk&;@tZqiX5bu&aCDU}XeMlS^G-!evMjmu){`*hSi1t~` z@OW-9*}-%iAF$DSUUWS%JhJ&r*VwBpm^QXyL=sR+d#~)dZ%u2n%NalO%SB9n(i^I^ z%*C}I@@g;ePNd{Hi+{IN`ujRf>zV~t7Sq3L7v>d@#5AIx8%6@97J zEV6Oz%sCE-f`}M(KVx(sgjU1Jq(lp)z=rEvdADTp6F-XDu3 z3O?0%!fNuKKUc8KFNUTr2K2-bs6~}QVPTlzSIyFg*@E(wr?K_A=+4E>7PMHwlWGkz*Hj#TRS>)IK6%^Bp&4t*1cheGH`NqPXy3w!c|6*d#dN=5)6!ob;_?BW$ zyf7w2LOAC4-SbDZbjsRN3*kXGjsjPU5@u%V3d!~s`ZV4dK)o(6jJ0YnudW(A8g#L&TJ^lV8pm0 z>Ysl#_|8zEETPZ?NP^elnxsI<#EF^h41&)-Pj3Shy}UWC2s5U6>2t+~ny0*OP$G}G zsszYQfNf6`F8QnSw5)e!Kc)ZmsAUk`Ig|ko>LzqQkR?XJ9O7=Qx#^UP zkIjU+wZ~;~51DjQVZW0F4NiG8Cv0rU$p(xoTAU3j8N(3oZmjB`KFG~XQQYyOfEb4y zJfMz`3oSp>G&is`F$dZfRb2_j7JPi{@$|%uC}}}mP5!$IPFXL6BrH&Lj6RTV#-*kj~QZsDs}MNg~_& zkOTo+#LGYTSy>`=rKj5Bz|3bfclA)VXahw}a#~}MzraKUY6qKy7l$Rop6YNJw@b-H zeKo=l?Gq67pr4OMX!jIx0!Nth5r zRp5=sp93|(n+#YtpUQ@l zQ)`Y^Z5;Z#8cEk$eEyBGNVC5WRrW)X8tt}SGtXKOW{DGI4bKf+R+QE$8n1|$)PP&k4Pe6j$1hVJ5I_S{$zUIf`vLkzO9nWE zDZ<^vWc)0qq8B&d6%C^S4Ff$yIJj91IJ$rNpB6F2F@slnJ#Xys;{=qO^+Im(21sBc zkONF%#LW}wNaLH!(UN&+qQ-v9Lki(MNY6@0j1?7LeMgH}6|pM7zhV6iG)+SOA{Bv@ zNPxy}{dNgm(pNVYKX#iJ+4i7I;SqY{G|#*u2kK;+D1%CEpbBma%j^yuQ(?BYct3#Btx7J2{ zEtnWLsfKA=rl1!EA6%Hk$VlN48)7BDZ;G2U!9l^z*u6AzoAAJb#go?F0BKGBpSV-k z(iR-g4$wZfAk6ULrN0*)avff!z=|yATN0%EpWrNSXj&S_z|B~KXHXvcLLkWKVxLJ^ zKXG-Th7^&>3nK+Fjtdio4%{v>`R=466gr%+hPyMM1S^E^;uSqE)-<1!@zrl1$pCii@*>@=@XmsvD#){eRQgCIz|C;M<@H(v zGUP$%)a#nX%=1~6*wEF*w^>K|=~FS34Wr+dezU7&Ih9tSRL?be>8KWtIK|9G94@!K8D)RwZd@ z0oGPe`ae-baZx3#4T}j}DtyH;6g8paP?(^U4Y^K#6%$96)1iB2G(A9_{y&}2mV%nB zt1^E!Elu;&dw6J{M?@S&G%AoFPD)o1F#eB}EE}5C8PIVv60#%9YZ2vE=bE;f7hzqr zDMk0dVJ7K=PJoo#K`7iccxO=jAQdQjY$CHDNf91#l;9+6f;dT9<*)OY&Qb7cSN&nqp zQv8g>q9?KcEp;wk!^@SD=bAq9e6$g5fwF5iU!c_u2qtI{@TGX3!P?ueGxF zOxK`mi!`s@ADdRIUR3)Gt9gPG1ru}aC(+V;(UVA1y*o3+U1JFyrbSA7`aQ(+NYhUk z#L^3KAXJ|3B{k4M zd8laC^=@>oCJamRj83zx`YFh)G`gzxA+cVvqjc>qhC}p|zCMPF=yL`e-!jeYpI>c+ zdXAGvk*xU|=qPik&y4g^p(9T}X@W_?nP%KRj>JD3T3U9`Iqo60A=f@wEekE~4oZ

        uqL%e?5nt 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ۼS{aW2BZ*4u6~t- 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�+nfaLaOgYgAX;y;G>O2sp1#lczaz6Qv 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

        ;wzj-ZPN=f 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%0AxP8aWxv|c)|CsB1pRUo^{LVkF zC*2F2;OljNveHiNW-&JI#H0CqM1-K9{pmJUWl&V;ekHUbLGW9u!c-OGd3!bO?0{)i z8eGHy>|ASZ*M2JX&%I#9@Bz)Yl2w0g&*DH?Vs7m{5Fd(l)*cPvdTU%_0^Fje(2Z7d znl>TB8NEQJb01G^DiY^B2|AW8zkT@RSf z9pNN;fC&;@t*JCIFRI9+pTcNqKBwnC!T7C>aRrY?ud&NX2uP|L=vYw=NYgfv_l5Hi zmqyV`Vz#u{5R-YP?hOP(yk0t%g_wa!G>%+D;k}}FiI-C~Oq8&#k^4kZh!^`o&xES} zQd9Z?T{`vUY|&l0Ck(!8z2=qQvX()mh1P{rxa3>RuR(b`0Uo>`;8JCM(wL$9Sp_eJ z##H!36=B4<jqSbyWA-eMV%rzHfxA8ATRq2y((|k_GdhlCYcrc zdtTAeC8|+n^`W|X_AE6R6V{tg*4tFppEz??jO*3Fx4=NV(eHxeefGWt8-`L}C}7iK zg27@>cs^3Jx2BZ$58T70ilAu=HF%_Mj7!4?ZBx{CG*it*uvJR|+2elo$d=eaqHcID z%r0|y7w~d$l|!yD9ogV_{oVyfie5%SA2n)#HWw5>GM{j}mv8}?fWt2Y7UL*-48EPV zRAuz}6G;9bnqH)GFXox+A<7?tbS#T4VuUv`TR}L7Msm=Jump>8Xk+IhGQPFcnmpf>15?gDSPBf?a5;c&FxLznkdfwrSv$ zGgOi^G)0wB`NJ16B9AXr!ra%b;)CdB<{GrtG;g22%-D!Q?Z|R_X1RUrj3I-w?;A1` z$Bq5Z?3ZU|XYwZ##z{2_4oY)D2;>TcDsqe;@ujBUk7+ZSiFxWFmAl}#0>*nHV+|f+ z?1N5hr({fLmOKwIV}+1H6k^IIrZ?r>zbpPOVWr11A>jkyA;*I+Htmc4oxG$Uu1%4B z{j$GAzHlrokz78!e}hjTaTOV%T%LKI>ELUQozG2Y}@cIDu!* zS0jeV3gtu2zHX&y`tJVJ~#rO$OW#8eDm1Ir(=|ZEQbrCBTAzW;X1Jd9e@8 z>~p#teix~%0`WohCkI{^7he6%2HvJT;6XbStXP%f|oIq20PK{9-|n$CTp zJGTbQglf?CMyCBttwXc{PKLJmDpaql2M(e~>yq#l;>>|us;(!)ufz4Lj#5M~`8LtR zbs7EnM+K_#U*1v=Gv^wlXME$Ni$i$*R2!7nH<(`h5`m(>MxtkN9ph(@FOgPAJI$!} zceviAHjJ7|K~41N(^ZgZ?LyoL(+@sa1I0S7A;5Re!zHZKcEc*~6xQmDOfiMJjXhfw zTSGJ#!*Al@_ao-Btk9sLgXl6Kp~)BOB}MmG+f!i6}HYjDL>-_fT47 zGY9dN=+EcLvO)i%N3)RmJo<-ljP#xud`SP+H0xh&9-r2&E?ULR5Z$0u8zn;=S=7&b|^@1TXk=n_aqB zBA#kX`zL^V%>!v&?G6~rY#GZJya+Ba%;%PMW)VEswnYq;9|7}}pZJJ8Rju!0YTV=0 zh^83u{csu9jhB4DIf1X){1H_~4!J#^SXxqERB_~okfSP? z{*Ei}|5VN52+9yzWp`?E`B6et|6aA-qpMjs$a2+RorgH9`9qu)`4DHd_7Kr+ z!YI-8Qr?lg&hG}VJuA7yfwAj-$~_K%GsC?oAfoDZX6NC zdFgjXre}KT_i?)MmQ>)SKPc($y^@#yh@_LVFTC`Pk?C8!^evJ7Z1mEfZ`S`uysIxs zcP?$>y!6lgj;jVb8GOZrSULqU80O0%u^JxX=PP?X7=)8Ih%_`lN5RXHOS&F4kaj!% zlE>F0rI~p&ACtayJvvHj37Ub8sfyIv^Xb6BaC( zBo;Iipz(6fREmR$JfoVp(Ex68Mx!0_)n*Js^4)&i2fZO?{cxPri(6aEYz8wqOhMmf#JjzD!t~}k zeZ8mcw@>QgF1k#w#2sW5_cEFD{YI{g?9;ePH8>mh(%ko?sj-fXvLkTyU5()CZo$=j z3W>9=Q6d!axjYH-UzNhuMG6M9CY&U?iXU3L@Of7lve`+1Gdx533qP@#+dv!oN<;pe zKwcz{8_J#2J|6b$85CG}o-hDGm36-8UEp?}svlNcA5jsWy?mRRT`e{@67upk>TAdT zebBRIVZHjku=MJ?S$fKhRXtAw_usG8TGDt*Zjvb}ka2zNPekcewWZ+YF>Q@pvMeXk zSybF+?>X9uM6{mAR={k{i3QBV=@+5VA`E1S&1M!nit|yLI+zb^Sv|khtn*gSud;gP z>(%qKte#==Jd$NUp%Am0!UqP3^bI8b1gJJ`B`)07UZ7%;>r5wDr%L`nzOqbpQlqCGArq z80T)d#^+42gT`l3P`&54oLNwpCx~N|E~s_P754e?!dET-G4V2&=N_cX1I|07{j$-7 ze%|CRawF)lEIX3ywN#NOmw2g=pLDRVdk}Azk@#rM0j{u_l7ajeYGTp+(}YRg8pgI* zZ-vM%%*>l8PUy~6sZ&m8f|SZaObE_@(|EJ|y(WTW?bC4pj+Hxx{8%-ByYYA281|sb z0|M1qu@ZYdm1{f>Nj0iOVnW*^WNDZ2BErPy%YX9=xZXpNlZ~f=3YyG=>Rf>v()B}V zGK7xs2y2)#H`~3JHU}A2S6p_&b+x@fO+aJ&p=j|;_5j2y%@VTN6_?K;xxfZKc2#SV zaZBJ0e11_a%X~$kFms3+3`^8^J852c?V z98p_pB1yuNypG$`L*l?H7u-o;w7WihZ+JXZR75CBdZZ5Ia}UC(kFTk%@4tdN2Ai$ownEm#lZ>IzZqfvGWb z2AdCo{+8n{E?>ckaFC)C2lMQt;yrq-wgAdp>N*%ffa6)}RQ^xDR-{r?XoP&(FJS_& zz#i$3Ju=-W?Ell_$fDfCIyJN0?j>h6jIFU@SC~+uZ=3R8M;XyRfoW+_LeH|OXFsUz zeR+qGIQq#J)d=|Vg~LBuNHy~m|3Q%|+=Y{p&^QY5hjO`T?z;UKQPrmo725vWrm`_~ z%tD$zPuY&U_7YTu#A9z`*`_5WTI0&vst36c-mTGeY3pyK?RWubJ z$DerpY|z;O@LBV6WkQFz2~SD9S&7x$fjw%Jai0765i$!RGFNirWstlH;kf+t9u6h` z3N`pF`K61slFAj&wFOFO> z^UKyMc1ytRRLXztcB-gkVrgM<$)vs$ic7}Nto-k&W&V#{K>d%JivNzAv!nVa`2DT} zG!~ufE3H47UsO_9Jia7ISdmc3)(Z@sUk>g?2;~>YX5$!(OX zM-(DT>?00Uy>`F$IQOHB)+_m&FXA?Bi6QJX?QYZ1}q%p!c=Lc+?{@!JSG)DInvpk(S20r6V=E2UJA~Q>+_VG;) zFljBk$}9eB^WuoO;$WLN(@M$xedthrRz*xwSIIP1SjXU=Qh?+oeM znI+yhZ5qk&PF^TCOmd5A(*z)+UwUMte_Ev|u+Zz~WnEe{+BM`M7X`lUJl7PUf($Cm zP!#8mLt43LjN|UCR)d`10wlV6yxSsO+oeIWlAJ6`EQ##j*j38$W5#8dG%FkL`Z1%7 z1|&cnUfxCS<-V9)Dxt-n_ASGjQuI=1aU$({Hp_!&vo;b_)OKTvwt;6e`$(S6EV^Y@ zjA#L*s-nT7JSXnWhH@96BUXJNPU|^9Gqm!63c>vu%-1DM9W3h}SB1?Zk#JwPR>DTD zy+kU4OX<~efyXP;YEr@bpvdrnRvJQ3vMlP-r2V6!YH^0#%0f=gS09Vxs**|-Ptz(3 zl-2Dw6|~D4YmJ?gHU5_s=Vhz=bQL;wE#r(4`G*iyGdir3QG6*E|H3VPbup*A#ZTO& zi}wgo+rmib@3_TpiG*$gdJe*HQfV{jU%SPx1oVG8#ZPX~(7T7Aa95y}9O98JZM@}H zx-GJefYYV^&InAGcDluHj4a;X=~AB%P03UJRj`km3}q9}>Xoh`bqZ1YP$ZaEc(b$rc=ppN?9 z1>vkG7a)>frzX*~$KK?{xWzZl?3{eMqi(OFK_z;h+0>0Y&`>9?4Ery06XQ*yP0580 zEL1-G0B`DL&h>a76djOm>hJJ5P~j)^lbVOI5^tt-I`*I`0vbt|6e)_CJ5uHMp%;9~ z$b(&})s^gK-A)_lcIO1IkA3F4iKj`TIGF6`_9y`vN$FnapYbJnL$~S4x=NUQF7vwi zx$fqT6oNLT+sYe0k6`B0J=_ZQaN9u21qYOM2EFKO@_;MKg}0e9&K)!tfP|3u0-QBy zI%R`_{+e_E_0n`F8f#L}iCY<09S?e)-{wnq@FAE!&cpOOEg^iWA>72nP~I@Q@`*eQ*KQ>V_UI?GiJmL;$*icHj`7OJ7-^GFbqq4chv zLJ5@F#p&*)!S1%VhMT5EQKuS~No(x#CiM>`u0h;ZOe3`V2D_YObAOrRZov;{6o}nl z4&_DBSsR(NJK(42UBIJ&Cakjz{P@Vmm*vz9{PG2V@giM*x`ZRwLCLL9m;dvI06}O< zl)kFD%WrQC^hT>LvMt2P#nrAUV9Rm`5T|sgT8sTZ7k=^-_Ww$S&HjI_vVwpM`=3WA zRoq&2nHGPT%S={A5`s0GoyETpoPcJ{v2Gi9xzCwNreM(E-tXj z_29AZou{KI@2@({1GS8jRbuW~qsy@&!`4aQLcvw+(QN4Nh5?6W`vha2)9rFEV`?w= zB9b9C#5?)hTVeLcHW}A2N2ary9~;2wWf#4W!9-hF9uO?=$3eVCt7{2FFzQfZ~Iy*f5O`TT*M6@=tTs6(8*+T4$OdWBRsW7}tV=5f2#gdUt zs1J9bQ!oHk*p7m3NoP9kzOV1!0PXjxLeQ$B8eDzR3oW|f8Vpu{-SGKf`wShJXIWvs zevZ-9dVe9rER$Yq5u-(rXJ)}6V1$PHQTr@iZ3U{)zV;%FJyeLq&2d#}>RVacagydJ zRSi(rs_2U)j?R;Q$ks;~hu4vfNQ@B7EPmWx7KGb#9=_9hybVLA~Gel)dRF`yv;a3X(8q`BBXlF!;=_k}BJO(6){plwe zc0oR`K7Lone-gBJ2h(bulGJgR9+Tyrt)^o-O7cVPFt(lJVDT>Qo+wv5i=uWbm~fb% z2`goK%gt18QB*MGbr+}F2U2aKR6B#KO|+~1jjK&WwKJS*VNp)CeNwGJs&(LM1$H%_ zRw_WX4oQ^f6ywlbXq@vrLD#$YiOTo)OPO^GvLtp7dE*vTaeh zN&?qHqUuandzjxN6{Pc7Ow#Xj{?M}OT7VH-^8-O3k5+55Qm{L&ogrqUk5?lzp3zTU z?hJ#ugGtZomlw**SHi%}C5ys34FQF*lHbMECCv#>mW#+Ib)~+IKGwT4tN^-p^Y{)5 z;W8$@S2+@=1b{%xkuvAy(8@Q5CtoD28P#>{UglhRJO-W!b%=aB zRj#+Ga+gr$4-uLwYs0Vbde>mPYOGCM3<}!K2@Jz;wc{4rg9qvpw&Cb3+0(PZS6Z6bK zeyoVahtI=fRR3Z6)jbvcpfrWY1WPTHSKoxbx(gNQTX|(w`~|sNS>WWI=bA{h0rB_-S{V` z3_zVV0Q*A*-~dTLw!eO9>a)(*3-9b3p9Bw67o0_ zB#*lqlgE;Fz*1+J)=)p6fu7#iE~NQ`Gc@A&^2=na@lU1Lve07tXGHOb@I_&JAKec%W^$rmKg9u09RYRUOmS z3XSXyLirYu`iguF`o>Vw-Nz~!t451lS=cMqR)|LUq&r!eJJHxeSZNBZIiawAt$^fo zedr=Q3_!BE?Wpu=AQ`d;DXJBWKWLkwF+BDSw6zFr z@#1#zvOW}uqI+E51Lzv=duaD=)Z+b)%A*ufRM&|2A zesmhSPB-$q3Tfn6xfHr7B10QE;oUdo`>$cqV2;aiI85<4Qo&E*L0iHA#^wVR*DZZE zoLX>uvflA->^i`%qv&M#X>y-nBq4Mk>mtZ?q1$`cP8 z>jfyvTZJ5!Q{^HB)iawWFM?O~y*$Y6N2A_Rb+d-WC0n9EsRN0tblhk+IxU|Cdc2;< z4V;;0zvj)D1e^6xO3Nc*IJ(nj9L@5f7cbfn=U7i|9du_{ts#g6t692lxCx>XfqkQO6whMeIbA}+ z_@`%uT(!f@T!{UpFsO4bdafFB?n`0Xkl?v$oO3^;jPpWo`3E%%VXp<@5rM$^g+O?u zdWVK^afoY5*k#Q^_`!luD-eFLaHwq#hXWxHPPJ*u2!2eIm<9sggIvHp8GcHvJZACF zG}dwLYO|ZK_I4QRoy&#SR7dF-sJWp!r0Rj@s~(c7L@```L3ONth02RVE2m`sNnd7X zHVZikfO{~c41t;ipqZfvHDB%ZFuUGH-Ivz|olT9<8Qg5u15VZZbx#gR)dxbW)(viU zUT=5ldHoJH+5CigH9GTSgEO&1?TMXzd9xrMwm^I=ARcyU;`%rsq+$HsQqqSsTX(Bf zcbnAR>e6JjEu{5q#|~xapH0QkW(VeG*Jyn|&0y)rK&*a;vH3Yr8!{u!*Ip{M&*hDi zYkwMu((h3F^FZjN3~RRb6Ry$rJu&LPtXqFV>c1IS6f!fz{-k3Eng@P^0Pmqep9u8R z?*O_!v|}m5o2|Xbsx2KmtUIGLqqS9+iN{jOU3jF`7rPJiXJ`;-nXKagSOz7LM&kO{r z1d12LU-bWC^aU_~$-wMS3l-#-{1M`X@ulPQi{cB5CibZqHvDrcYRwH7y48VjIEwitQ5){yOS`3Nb9P0h(4)uO?H|PE64hdIn z11p??HXVP+5IQ~8wk*_*F~sR{La}8(hB>$F#t|#Nbn-5)%ujjVqWK+8+l6 z{?+&5;BTiP`P~Qzzi}Fo-%YOR8a zK-XWXeA$C)IaNkFIW@PmfOzn)u>Ym?@VMgqi!c0tvL5~mDZH8*D>rL_E0{Djv$fM| zQK*To705Jfgrk!0kqEzjWket2p*o?mC9XlXuDJFXPLnqP_Sr(c$Si zDOWh3ZQD%A(TZ%*{wNAhKrT$gS&Cbss4_}Xt1OkCq@89ElEUaI1~Wahx03aTT=in* zh)9-kl6?{1zidB=_& zdkuWcY#Z2-4*t(uVHD_{uzfNrakQ>_EA4`X!usmNv>Uo8BBcA2DNc=vFy+Fn|6nI3 z$KM@jcNnK>AjBRQL}OE=!P1W+?wZNscRcUZxHbpWLBvf|4TU zr3^kWhy2T!2uk6zb}<_1$ZrSrLsYa2GAPr-iZ`y;J1gpdKrY-?`Ylu)OVd5nDN9jd zETWup{blD1hA_TG`N2S}pUOE-ejgS3sJd49X=bFj+&jlg{|u6+<s0rzG3EChO=hk>GoZ9*Q*^!_gaujWn>YK4I$LFtJEYFjW~OwRGfLH z(is)A<#ai&h}zchI8o(DIyXB;u+0Ds8ihGcD8_DCBQ!j!cIKS+Hl+n)myBIvW*_cQs%*5+}@22*mK0Xs-eu)pp|L`?N6dbY5GXcM+}Bl2^pQv&kB`bDi~(FJ)laWzfzsFezCtV0z>VOXR8^zK31tSjiJB=%E`+%zX~fs6a-|Jy&gJnu8S#j95RYJbQ3$x_ z_j2V|j66CcfktMIp@=-#)$&fbN*e^@bb(PmOFSiWHz_(j1_r4%y5}n_ zfXaTb9Yq)`Nyxg$zeAgMd~GBr0iRY`RDwjv7Cwy3?fxj(Y8!cDfX$TrF<_Nc*&hya@ebr$rBaG{*X+wGQ}7tQ4Y?BiM@%0ePg-d z9)u(gjjLQY(P`y#-AY=KZ1qM7{8iUU_y8*uL)|2&>^JVytfl@-i1TCc`*#w*dU$3p zVb$4k=#SKNX(cLqLkf^H`+G)FuhB@&1onBcSQato=nGG(?^|jeOV0>W1 zpx&b?+Xlg0BgUzY=1j`ndam3a=$)>dBFh_p_saJ~>-%Ur)A`bA}zB;6SiIpU{YJh0f~>Ltb|czD^Wy z(TE4e%OtIJ`<+Gun?>cw*8)sYgm zI8GQ6SV=K;!?p_^H6`8F26A*P+;g&=;5jp!XcEi}M|db9L3O6#9t-4EHb_Oi6X5Ir zRJt-|VVk1A7Ye}GEGMpMkpu8!VaFN$s6XR(8SpC)1x6PosKm8XmEl1IVj7w+kosmZ zM~il>@`{5Sg+SX<-H%>`-28m?DF78+icp)0?)Hjqk}%#qsYE_F+H!Jt?fNoDb23_qa6O)l0JMul;AVAtU1(8z-+!PiY951LfHrj_l`-G-3x5u; zlaL*$&!4Bxx8%-mRpP|7cy$T?1N{k^92RoT^(=F&bRB1*E?TFq@AV6>J74}-Cb7cv znYLq8>e3{YbfKl^zl^@0t>V_aNM(g%m`tibCQc6z)Hpr-FwD-+D#kI_9_4={=q$+- zF<}`ZNS;+LVF}hY$_6sW0dSAYi2^(%4e`(23o%g9+xhR*-rSQC75663=v??CAp~Ti zGNNEy$&87`Ndy-$ad1IH5f50-RN^n8ge;udRaUXO{rti(!20=N|f+P9PrSqHU0M?IVScKap`W#L+M$iF&;N|y2X7Dd{jiRx~0hGwrdG_R>B z1f`}7YMX$t#4}^9`A&pJVtscx`CO%S0>4!#t+`pQm@OqDRF+E6 z^>0rSegu1`R*F7!!45Hk?qs$7^bDFQIf0D~nomN*m2p$fHJ|>d$kE@)`${d1nI-)XDN*{P8 zQ(>(_a;~9c5ewYjd2V%Df7Gx;@1&Y%q$#5ilQ`2khq=uuxW4&<_A$%tPQj-QJJ%P} zL}w?@*S27ZmkryxC|k_XQ;|L{RlV!PNL}C*eciBvjZxWZ9+~(a2#oc!PKWcHc-}Ez z$XmqYd`=e4D3r{a(bq6bgtE@Vmjt_`s7s?HmOlA1;pJ;?P|-u;)hKGo<9Y$*d+5wO zn&e@X`vRWYbjmBFNY=h*v9_}_@nq&p_?-|?zV}BlsTuKf zk5MoF6THdA!BEZJk{>=}d4>t`K9+l0@RoyTmiuX;dbN|-prw{$HO2_p(iQPEOEC%qB7fjj+k@b2Fl*@ON_ z5w&8QZS;1*_B%h%(-oB3prIW!#LNADKd;5WGF!dIfB5<-!)*z;h4Fg067YCHECw0k z1N!+(mMA0WE{v?AfB8Lx5v0XNjU06NLt-D^>rCHW)-fZFoNFy67>_;AT*6`t2=`ea z-?APK*cGcK3U;hQEcMn|RO~@ZZ}|@csmEnT-}1+9&`)6B%-kBvbaJJ5gujsRp6#uJ zB&q5}`yRPtn&F8W+_w3HR_zo4AWKfPBdr?cW21))9^#Z9hU<%4p}X&_eBb{TG5&4?ka} z%|td19SVZ^LBKi}tjfe8Aa6Z0J^Ujeap(~f{@WC5bA!~;m6v>ZKWbM)MV>*_D&c&T zZh-`a9x}2d!l(PaCbH>7TcXq;kpWXPuc7H)Xj^GWwBc2KD17vVICh0Ucuc&cOPS?y*z`jV z;&pC&7M7hd3;SI*&6_NYcSsP2DV_$N{@XAOD3*B{qW#H;#griFghS!>c(>2v{*C4B zUk^BohI+uc@&$54X^nX)(vg*V8;|gE3(=NP`Io3mE|Y{8Pgzn>w$Y84ulB&Xe3VK& zR}uiFs(aN?Dvg56JTcqB!5>wRR62FVFcBh5x{+XY-jaT)ib}hTWr7-#m2jeJwK{ju z0MBJ=hUz8%7ULxCs15@n)lE`$RH1L$qU5E~`#6~X)mK<;1Rz3EWkV$w?Ly^;_xL2z zy=1_%V}(6xb*vRKamtp;!!}DMbAb-Z2UokE>LS&rw@#~&38UwIq91apG})t%skm>< z$3+qpnX(jOOTJpd%g%B6TjjLWy=jW5`TDwSn@$n6PEtg9SK1k(QbRICS)#y!)ef-N zEq(faeW#^*&@GH6%fvs6SQX=L(^ZE0QW<_6Mi*OZ-Eh2N{U#3K3tc#?OksMtn4eow zRg}98MXZv8YotN#d!ZVIfBBmvDCwhg9Ac}+C>H-xxJJuW{5_43k&bogtr=wOP8o37 zMQH;)F*pWIQ*l?Q-YQX86S_Y{jpCOVk798kZsedeb7p!V!;Nt?RnMY3P=qG9qa%iR`pjZ-f`X^}$Jd zg)^nWCUqP=YHTjnW}I2FPOgiw%yV^D6}=cPK|pi@lO#!Cvav!O)Um>Q(0k#@(8gEk zyi-zThLdI}>~ROLZ$j{5b{b`31QM8!_7^qv0{-tMeRV{tMs%C7n}~7laj3OSi?IOU+rtcCLZnSIbx%5o{cfoc6d@UL z!OfzPSd0>=C_i^BA&ptZ97eAV?^;{Uq_J{ZGS9kzGcG&h8;=0BG@pugz$Zg< z1Qr;!^X6stl_@`{(#$EmY!XGC$0=s6=-6=+)DapROmy&!gWekJ9`P}2ky|OlD*C~| zz)l&4Rk0QX5>cZXrwS{rg{s^kgNb~K2)zb*Y^+3UXMO0l$5bA#Z)CTm zjoL^ck=z@pvLB8|-w(josuj$03z*@&EAk;fu6B*)_flY_WH$2l1}ggTm{z zdyaRignJq^2|mW*@0J`@!q3@bl)T!H?}75YMeIH z-ws(41zd)rv5`=#jlATh-68fii^wRjMCTjQL`WW{ozFH^?f_1&YfNvbifzgULio=K zf^vFe74skCTKbhq%kLRG9`&B8Wa^|h0fc_245iH*gS2V%rW@V$<8Y-R#cSP2O$e9z zN-uDjr*Sy0N59scAxffy>AK3*c)v@R`n|GW=z6=c5u&r*V3a2-Z7o_T{uQ@S{N~F1 z(8<{07K(qe(r0riynT@yZz`guyx~kk!+(7mYV|bypgXs}^3SGWnY)WD4?PVJyMxnk zn~dvEG7Yc)$uz9f)9|(w-(*k2ZaobfG!Ad;Y1q_s8gA6na6*@Q|Ieo35t)X)ji=#X zdK&I%JPk+nG~C*F8op^}8tUG5reTSb%8+`-jDpe=XHH3hJV)2~RH1Mg9c~A?*1lHJ zQ}s1csHw&~4z%UUJ{F7?1F9hsSOr(0eV3i9W?rJfP+$*IBHFBQms9<570gGgtwF3% zya$41o(>{xHbz*%w~lq)Az~_OBe&bBxyw#;n6{$N06WWJT=z5yOr8>&+K|QZ9LK3~ z_8td9y=t7d@71t!1xEMd>_?(sE^J%en76Ek7E}tVnnI8WepY_I>l>CA|gRgWy(Q z^Q&HpKYJ~8f!`$bQmLQwEMCsCU8SQG=I(U>Kl?{rT8(6hZ->Rurs`9A_3j@eOLWG& zNwP#=NT+6h5EP*z>|}{O=$mp6-4&5RN6KRresH}}X}WV?Au0Rf2v!W@#mCig?9k*_2EC^O;>atpg3nGtPue1%q{p~&|YQo>aZW=O;Yq!Qj#p%Wq6 zior)tLl2q4a#?FLH>kLMuy}i`9KzF+IOxiwGH(eBhtm;uXPHFyiiTn2Sm|SqGVheb z=E_Al_oeOSo3vECEkfjm2#k069Aqow@oZ6pqxU#vTax2A2gi-qsB3Vm%*sfGFN@qU zR1g;JzxWwU3_h_D(b74V>f52;PAm2p)!*_RUGQs^uE(rc=mGzewoh14d4iu&PiNo;T2g^3dV4^=sm#Nu}Hembo@9T&HwWQ&U?Z&dog zQbo~{+B#YyC-L7HISt_bDn;c8VtHINkJ&6;?X3B_&z-(K+(NH;J7p&hGV&y4r-{?m z(2Sj9gv?UYS6Uf6B~fLMla0TOj&e?nw3~u;VpN?;ub0KzCnlTB?Uy5Ar)CQC>{Oi? zKwN@OR@EU97lnM6ef^5NzrLsPW}eQl4f~xQ>aA-`Mp``1JYCq z&M!@<_Xy=A7u$%?U@WtDrVnrx(64S(CnQ5a>rW7(Rx^g{VDPBOE)Mn!WF z_&*M}>e-gB%SU0bQ5+riAK55|nEUm;xLG4T`C^&OiR;b3ni>;r#ziER^0c&M-L5oN zR=`jRLJfbM6^!I^ex}EGISKmY!pxLEyozv=*Q3E^35$k%nZ^gt6Lv zAJ#(c6zJ0CuTK61CXoDb)9v0kcCGT@Smg#SUqh^QTZEd&whT20X7p#47MA2&{;@%u z-qt|_-8S$uw7etR@^2;^>!>M^!cuz}9S+-3icPlbmK08~eg+4t^{FW)I)$d7=%AT&-MpArOY{^8GtpCyA{Uj$Ucq0cM2QiEL>O(41AC>Yuux?uA;c2AN)K_NB9F@D z-<^_YF`CP5B?5QcA~E?`VsaDfeyok{lxvA#h~Ks42z(76QgZ<}zs9+;{3#fkXme=F z+5^r9@g39_eW@&QTiz92e|EmV81ns1`}^$R_v5xrCJ03P!(>lbq56X!HgJm<{vv^Q zsVd*W>X=h`juB!FekXVMpo+6?IZ|1^*RhrsI61Rt9}o3XwD3w?s=C95oh3}2S|iRn z!1;%=4mIq%;$IrMFj`ofJ^tPMe9PXqdz#v8HIDu!CE+F-hwoFwhJk#MD(7@tn(BJO z0r#X~+2UTJ5-a<#I#D22xA|BP;h+jq+bzRG`#)$Vxa`GMYY)ngqRtuU%L%XQIZjUe z(Q}qz)zBW2Hf&t?r0%%%?am+P;nzR~za|`eNAqYWDjm!)4(VQ~+A{`-+9zN24x*o0 z{eGG03`kT&Y1-Y;A_lQ7XT?JB9W^2y2HZuN`rGCfIE{N%e@kPbyEA_l8T#~9^hE#( z3uvh;!|kSrT4dO{Ub&Vn&X=W|%|z=6gj(HRHBPTR3M zP5ITqdcLG@g`sSs%EW~`(rsp>S!||Pn$qd-kks;4fJFo;z;hzk{^o#sSlO$KG}`+Rn;6}_u0xDgihnOy#(lcJgTw-ED8K>!A=cfddZtDgENOVTL4M50%{6P7{kGGGKc)oXQOBJ`p}8qYM^ErAhx z5Q?@OL5J0mk;QN3=!P_td|IM7BdM($DrW`>-0fvvx7+AN&zbchFBCmx7KHW*jt#Gr z#p25orp(5hdTjVf(JC|94jny`oBg7_6CZC$p~vku>2VXsBX5`G^ViSXXRwMa#p|T_ zXTjq4p}3;2af2+?%TeIF2y7cjRklD*cUb+TEAkcf`QI3x28fla5ch*;HMEiL2+$sq|x8aU?D82Inyz|4E0PWf}hU9OwGyK)ZVbn^_g z$Y8e1-MNvu*#aKL-cBuy+3rZ5ZG+}#3ae~Zh!l)Yb3?_@-^%u#~|;6j5xf25bta;f}7J1flktut!% zsQ=VXKHtL6#@WX)H?-HRp@k6udNaaM;tpG^=2L`pzA(W|mgvrZVP@zXV}9Ym@n;5$ zQetO``^jfRj_+GIwEd3T%0SW?0TniA;s&r!5m*(-ESq7G#KCqBN!&k!N#ZJ6>X3v4 zu%yq8Eet^78_>|kY)d4C60z~a_5a0gU4f) zwVE@}7q*0TWL~1M-X_+P!m)AB#d4xIndc6BJGIWTHeg;+Mk;;D1V{H)uO0*kj{fvR zm5t|Q!Lye1%9(+CtIaTW>ZT95-9-1gx1fh#RyN4FsnF>i5qTmi9`rHCU04nJygec$ zO6+%FR=OB^`fYhErn-~OyH-q-7zslaeT6&*4^^*bJYE*TCeF-LG!t5#>&>lgb5scYzFEL9$3V?I{uJpU#- zZp_DmFfOHw>gD$;qb#4!$iOPiWW-ffMpt@>M-r=A4q#0> zK!+&XN1i-N%fw$_EDev6M-TI-ljK`1b`81)^MtEBl(3P8duUr&9?je@i~<*`lheiM zY=Oi#wKDe_J!yV*13ik!w1a)RpL^Sm){Fb`nb!Jwr!CfxU+j2hdgvc>l+l}R0haWO zF`DN3=g92^lPJ%~A)c8z{O@-B%bb#sAjLew-)^tYw_5U&aG!(x@&^0m81FD4<0Z6R z>?f*LbK^t{v<1rHDzBz$UOhD!NQl?#nW}0!HQhbXiGTdT?y=83S|N{g#|()wKojR+ z$~KD;U%3eOh$5e+(yswsai=Eb0>En(`{_u#gp1T!a5a0s2&`aLn*@mN<~&(BJ4<7E zYZvf@EnXko@I8Lh_J>By914 z=1eaFG+^UMdz>Yv9OPKXVJt=!X{=lcs9&SN9*_HCv30^*D}&w-_+TBCCoBYHoKAaq z$DlPXxanM`5a))K{j;F*BTM|XU@KdyefiX>fXebIu|UX!{MgDKgSqwR?efsOr89Up z`yRjLnrwIJez|8N`i=L_Z1myvs!g)Z6oc1IhB0^!owgfS0p3jNQ^S>bk;=|;f8`>X z?1S!PJbo5o>GJoN$Ew63c(q&dSzn=hp~dP)eBh}Y#o(69?lM*>Iv0}eLr9gh3VXTi zq%$El{v@%ih0EMB(_=&*m$=JARr*u>ahu8rsW4Y6Gz5cRUq90WKKx{3?(rk-qsgmT zR5yiD%=FmPenve__UiW@D#?VYm@$=3ub1c2%&{h&-i1q;yh3BCJ}hCw`EXDqV+)+i zuCFenhOh*aS|-DTX9{nSfA?4(llD~}?#)0;OAv81cwId^+S$S%SGFFXJyt!cuhQfs z04Ek(xuvEj7SH?b6ANPueEiJeveg74Ef)Ts<5ktuY2;-UA}5IU)W*uQaC^~e$TDr5 z5v(oZ5nSY=wUr@52%>Rs5qS{?qIsg)i_@s2nukVMK^qprQY$fqIhZ&LtgH@th0A<}h~ zJFvC=?w+sa8pHXqfq&Oc)mfJ%#ocTUalRf^A^VbJsbPgMHc7Z zE7(h0j{y7ZlUT9QC-BvzJ#EAQtH`UyQwji*Ihsy`jxjb$?Cn@^h{O!8*A2DI0?fyJ zt92`{C@h2D!@KBJbazFph^rhd?#%F08XD9l+$Rq0b;x-E{@2Vn8 z7F{BRB!v1G7@(~ctAX3La12l!KQ{1h9-#LtFhBukfL4cp?~bN7{UhblG)MTwW2}2d z(=LCMh*9f!`ppvTXWxq1$2%2~0s*z33_mGCK@MVmi;jJ38!PS54>tO@w{e8-ABsF< zMyxUKH@ljzuIV*K^|ve`%ulr-fUJt=)BHBpRr?o3%QT4l1;i3jh0wVdb?2V9I`<-X z?s;_X!zP`3I{bTy$1Yp^JdhAT)Z1e=FG!}x0d`GAEx_&(u;=k(1OH~QFA3Nc4%lZH zY&7NbCIL7N6Yv1#yOL9H0?J`U1gck(tc zp?R5h&n@TW3sQKkjdcd|jI8V(!Ik|aDlT-<^|JH=dg)1>&jN>aojR3#F;{w6brC_q z7b$j9m=r`Fx&k@4=1V&)p>4LOV#N;4+S;knhO?D}X_=J@9hb$>L+K`A~s$zO+y z6d$K6uWn;`LcVX)-I^fX?Ez}R7=t2L0xfF0v5B zT`c0q2L4@xTs(FcJIm7g7Z1N?oj7vQhnCtJLXg;EBM~a<1)#JE5}(>gEE6OS29dZQ zNZg>uxn9P(j2|2Lca3DK5hM_U=}Q@6K_GmUoC5v3oGJ5gCyOhuFSgj)p4QGJu3_Nj z3OO-&yETqCHWbg1a~cu&ONhGYEmKX^Y5`-C6e zYz^AaJZLv#(B?aX7AJ%Dv#>eAdAy{%su-!6@$uFcGoEK-UEexE_COr6%q#YeSc5I? zcy) z0_*?9EypwFjuntHqK5N4&zc7 zFoD%vV(|ebjKJapR?cEMBoxe8w9Jy%EcCpk-*1k5fZW6C>8o%FN=lAp!ZM*nt<>{FYyPVJy{@lS1w0UCi zmskQDMT3?3>IUe7Pk`A>_(kPh$?|C_&ae>8MVyJRmFP#;3*s{~osg@zHyGkTebBTe zT!}EE{RY33lZkcA^%GfPU~yi8`K|HcXkw2_=3n{zZ-FwG(g$H(pi2pHr@$n0B<~Yh zir`#e>-&@ehfbIHby})^@gP;KjDf#Mp;A%yM~Kptss;#!spTzp|vjzzc1ira{&5^v)1#IWcjYY&rMv za`)V(-h$C}D$j=%WF~in-4#W@n5W_F<#~9=a%FHM;(^ye4x;4tPsfxTW}$_DK|<#Q z(}x^z;L+VJ>`UoH^9-gImRuRtswiMa8|9{YsD#rn;g!-OUOd*sBl>3TolALC=_Pl@ zweZb#ZKSpt(4jG(3$;~KA#>c*7HYFF_wIA;Lc-A7pjDibDw3IDT8B zLz^agE~VE{hWL%NT6;G`Lf5XDC%38tkEg8I zbf!UyH_9azYJU|yroRpbTY`{50p^cJ@-X|6c`Yl1QPzQ`yqX2$ET@D@3;A~H!*FcO zeUCA#I8V`Yvv7m;DpPwZ9-octYurB!bsvz^R*# zVUc=on$hJKr}Xx)a?00+o2&UR{-Zt{@wX)`2Vi1+A*^&OeLUhG@_BvoKMMG6WxfPe z+)qBo&8h1@EUGdk+Ra;#jK#G(4H1Nrk24<2wGU>hy9G-N$aE=bl#YbWM|M_zQ;589 zVdVC<`{pVr3?Q7`SS3Aw=FhvX0GwLNZ)QNi-{Qih_S8sGa zCZ4aRR~DWMUx z4+Kkm>9Q9ZOn0-Xx?ce@J+mJ08^66rrCxw&1ld|UGtN3m)t-qCE4#)4^SuiJ!Ay%U z1mEAFZ{o9&VMtBk!Tc=X%|%Kz7cP&VL#uMsa73=)?buMu|7HiAOd0EdT4ddo|138y zS}{3zdYx*{l;n?&*6bY<>Dwm5bslWQ=t8~*$9FL&NG)R0kc55j-*2%?fATRYltw@#1JO})@D!+Q0+6nUwm-PE(wt)|w= zWpNLk!)>?Vyw0>sy~8+5sa-9$Q+P50_a+WuDOmilE9G9)jj}o+GCed4jl9z$CJ1re zEI@ouzv`pWUpXsQqxY4V`~bcAr6~4u%NTsWxm4e*A{c;_+sDigg7|xZt@7`!Ew{_R zTW4+6a-%X|Vjw@y(s8#eH=b?doymUAvUY(F1LB`wE~$QkL1wRYO1_~>iZtH>3FFpE zpN@2hv63ei%g5HmBn3$=Z*r0Tf-ZC3s7eTPHpL!g&~(z#F_Zm4RQ zii(fQ(Rm;KIkm}uAP#+U2OoLlceb8f_WS%s-)XI3e=x=$Ln{~2d;SIr$ALLblp+$S zkXT;kP~aNqfNS;Iqq(K^89xeq9w}C$q|LS*gI71B_*sWi_$htC% zHN0Z#ypf^fBO~;2){1 zmFN!f6I6t;?PRihg?B#2K)MiYolQJaeFZV;dUOD&_{47F%gqF){a2xbnJ_! zGyh%He=_sC?U`TpM>GFEmjI{u45vB~1^nj0a(ntm1$+F4-Q$hYV;s4uZ>=7`VfT0w zle}>?Z3*`H1=nur@mmhTKVGPHd3wZ@SlpP?on?`-bp!)R`J4gx!44!ncD}`8 zKE%QBr4@6kDh3?4mC6fI9C>okw+@_oxon84^13x{5{o zJ5TWsk6af~Ak$tJvn!p!tG5R41Mc)zdj?;ijhN9bRgn;CC;{hmGLqL;ZNZ$`h()szNr}TaCY0`H`u3S`z zj(pwT?%3Uh(su@sppx<8&O-G3UrvDqQsF!2`8Ihz+TIz7+Cpn2ey~SkLB&XWB#ySv zvKP_3LcNHBvG1y#v6%0+*&}VQf=@9mXqgZcCs+B<$M+=?>@Ze-@NSLI9Qv+s>(!Kb4pe>C{hb~I3BXccE29m2W4z`aS8fLkL{w0s3AD2r%e?{Dc|ev zLpKSOFIr^L%8FR}AUw|+);@}IqTJ_FrH2c(#E}0+83@vbxS_^?6YgGgr!3d?{OMna ziKCD;1qnuI%1A}0j}}|e(?-)&{#zh_M>~HNbskNx%L?NDY!Z4}k_IUyPMj5uWLnCs zYp60=o}tfO`@mCPsoJV&VatqAf?Mw6p}y#3FlKSs9A~JXaE99GO4qlq7be@l8(#^m z_q6dMO#a64>-%TGWNH~`P0>;A4$PZ%L_Dvs&AO^(5Vc z)Xngy5f>;4F`C*{Tup^#|5~Y;WLYk^_`Yg8^3sr zQDtpG(EG8{qMP|{>?jA(fj&$JN98>h*hUcprU*0nI27)a43{AstrUgrlTPI}{Ee`` z>vJ5jXD7?<&2#XbUv?u{xGkr-LGfzaTxZU9x^=209D(Z~NIE4?4+O}`lGFdC{P+t0 zJ4z*Pki)8IL}SF?4vs^Ezm8As)AVX=P?785TUI%I5@J-;0U ztjS2LKEsn@gX=oq0rx<-tR9oj;KeX;KPxzoz()m6#3`=2WU)O_3Q?Dc>3^{Wj-PCPZXrD#lBc2@!epTvp5}SS9{dlNF&dV=o=*4 zaBX{HVuQI+Y`6b_AVxMNh-ZD)mi)BJXkISd$|Yc3X`ZPjP?v=?&a3EboH^4ZkeAuf zqL*CF>&~GAZRpf5n6E#DVx`Z@B}gR(w43`UQC5DV;)ghlSqtb#2rK2)^vd|FkLcH<-iWkB9zXG zO7a!<++A(+w79!&CX2i4T)ai#mi%Wu^>=n$Wl6fLXL7H{aD{i<)(D@Txe40O?Jn9= zj|jmRh}$97BHgu{nNfhvgRw^Vn^{@5jTfp!-M|r7mF-u#A9}c|sw?vb7PeSMYn$ z!5$H%&k69fBzW$rAHZ7bVr!EpHFdF2wsIs5HJnYU&8;BQ6D-r)WuCbc@Zn%g=t1BW!h)3=|^HQ&h zSBd6TC7RtLyOa5umPTY#*$fY@6yE$6R{GQ!P_3NfW!SvccZm#Pr1@N~t0 z!WC|+u(-lE;Te`$!nrCnbmVI*`b}c0Or)0eG^3E(l}mJ6Geb6DHyu-Yc?%zyXY-g7 z^0ruxbD95+VcNf0NgQon4q3lgo)em3R2(-ym)M|YysSLlKN4w1KI8iV!@s9(fpwJd z<4i=8F=|{iyQ;z7WloYlOSrA=ZcD%Z-d;<%47b)2WTG1@nyjU|hn)djrlaKA>4#=}|gUsX2)M9OIcBeEdU%RMB2QFFSl2!l0&} zkK5SPv${yAr<%4`3h^M(#ZzugJbT-0w}=Nei9$S&hv(TV@1=@m_K?-BaYo`$vm~?D z`Tp&n4ryJm;LplADF1im9)59$J44hJiB{4RTK*VI%U|bIx<0}-1BmN>3v=t};V>R> z|BXBIyzi*xuEB%;vPy7wrMKlGI@glW)fRrWlV4>I5Yn#U$2WY1?rzA8nTe+F12?5P z5%YPVqQ$XOZr5jJIyn>8JDA)ZA-re9*nmu@(SGd zd}rB}JsJw_jta}Calc#cALv1?NF0Q*hX{S?I5e)5qrq`7O(?R=1|)lDwFdbhFFlim zHYh(|hRfyFy$pC5?5ru-ISjd}3i|vn6vMygR$;ZCAY0eJL7p3&=Q&dLcam$6>#Abq zGCx`;%@BLN(at%;jv^F&s*PRsHF@4FCW>77l_FfTJ?ngasR*YU&pXdANbzlLq@}Gz zc1z>LZllmK)0q8)Ju!;zHc!LoI(muoi5BT-RthfF#*@ZL=I=)gj|E|qQ*5!RwJcmS zv#J^|2}E%BY4*3?4t63XNdPVXoGRsa@+&?`+l~0a-CQt^UJ6@CZ8p-X>K&|IB9N5Wbr~_# zkp;1NuuO!paE`i54W`z4{LrAro7AG7X2psCX{I4S))=#+_gYp4&P8P0L>)oAd?ZEW z8CmtLvgA>*mme^^kSxI+y0NC+Jz3l;$1OsKyNN})3a7v?nGGZueQL3{+3Ah^7*OI&x&5-@60o~{*}L|$;QZE$B3;4d>go-1lA1@ zk{;=ChNxWg;dr1ilSiGu#&)5xg;cqxf~5^um+&-fr#1<+vO0e}|IVV#EM1M0_gnPz zG|1U^HfD!j49nn`2zStcK+k*m)j<8`F)l~RG5p))->~D)p`Bp~R1^#7k5$J~assu< z;$J>~pGQSrYJiAd=CkNO}eOyRM}kJAVzK2`kx4RH9MxaTnGhKdc){Q3g+{w6U5Fhl+t!4#K{ss>d*}TU^!*s&a1XUV|zc&~1~o+spJk zN{(aJ!-oBi-N86wP*DSgA3~_b92)KjNnvk0T;M({pp|4B<7P8eU!!-!WeNfFnKQsI zhApmm_O_RWSu z>fp=MB{j~xOPKY=lixFr+&J`5fq3K+DUvfw_k8!+^oF71f2T5tjs89ICYe_$i#7gy zetKWhB+SLSeUwGgcwQuB-f{QgOA~q z#GQw#h%9by90QAYWn2Q`yGKJxl^MHEt*1aRu=|G&BE2!%&&bgavIb9NX~L`)`{i6U z+5FJxMxE*6Hy^O6fvL5S5pMCSy1^LFG9zadIw0J^$0*PGLPA5f=y~QTCxRS1sEekdU=V& zh(pQ}o{{n>eRxe}QPe2|&QD^B1_{b|lov%R@~Z^)4`O;b`&WLsSq>6-#pHp5OOYJo z>fZ-)FQ_U%rRwnQEZ!o|TNm;-7$YqK>@#P?;ojz##gh(&7&@gH%>X`__m)TFfcS&d9~j-H77O&=8Dt&ZIPDBvL$% zR_@?ZBWn@xHJ2vrr!!)54|tV!%ad68l_Qaqpj`pY;5By{&-T(Qw7#N0PajDgvtS0H z!=+bxMLEsDrx_!uT^6Ne(!e};4d#RD;zrYznNzQkvr5KcAiWSK#?4!+Yk6yv?C+Ic z4c{d7J^8%UjwOy6`8anGiMz+Qe*u0ar0#5A6WpJLt*k z{m5u92#p_!v|H87@-E}uVUXy2FgJe2CM@IX-)KDpHlJn!+yR?T)P{zks^RvOSBSx~4&nBO15y0Ewd3c0y@e<|L}a=fJ)C-|v%Fe8ssfh0NLPgVCb<~a1Y z4Mu-3;Q1=0Hj>PLrH5OzpO|`J+?gc9+h0t2@pu zBvEygV;31Lx7cN!^o>x7nO3gU5_!a#&s^TZu%W>qF;(He!TjIl&aU{A180rP37E8Q zv(fkXKw3-%bg0TB5+g05EUVKjKFU6C-07lk#G(Ikk^0TOAtzbK9JsH-ZWDUjc65EX zEYxBhc*>t?oM{Jca?0-l9#krtUaQ?wr>`1{SkDPvm6iW#7&v_n5AdtPe7tf>k=%Usa2|^rJ&IF#NBA+PIVIjTvRKr(#lMGs;z2JF z0lR}^YNPe6ptXh3dO^_QiMrcGuV|F29F)5L>Ofo|hOJmWJsVANlIY9KW8_Y7 zci5pGjXtMRMP?ep+fG%MDf|?%ICQ?Vc5R$OG>pq9HZJ0q5v&>lTK9==tBy<()*bpW zQP7ODp6OeJre^wVwyCeBsZn+-R*3~xBU7c38yYt(`W1FkFW33ySa^!n<4A|C$AicO7?MJJI-WH$59UwJO)*mHT8i)IHJ z^on-ok{nQPXd`8ZAfm-~*m=OP(oq*E_Qv6l%@I%(%hlRF9pG!M;2M*IWE(?2R8TV=ID;o{QY~{fJ%I*P+ zII>h3(nkX6!N4BLcP5Y)x@e__6mZ7jK!gM3hi0I>BT&{blszF(9%~9ErG*3K*Jhx+ zDo~zeC_6%+JlhmXT}ubbjdUuM=LE_&hO#vT$}3Hwgtc~{+)hnrc6g8-F~oHO@%6w_ z+GImq;G*3jqwVA?nBB&KdOuk<_X21XP8~a2#AUJOu(nR&m3CnVg=*RR9ekuEX9R*3 zH`%xc(XAD9zvBV8-A4BwUP?_#JFL9}WUJjeG>>_W8V%sOLy6$c65Lo3>nYivaW)AT(H#Fr_3dNC`~=YP3^Or zTEZmWw5hJA1xfr=Anyo}H4J1=2#^g;fy|C{fHa&6nsPr1E&Ir27s&gP_H0>Yno2|*$#k5P6co#0F2*5=L7*vXaZo{ISzowP6f~b0H*Gt z(}DmBn^HuS17P#1089WV*#mb;8$fweYUt_!c*PwO$+Ir_9&xmm;1c;}{tr&BXEFy9 z|3Z_#fWEM#I?}C>ZR=$>l1kxLnRRvqnW|9PL^WzJiCdtP)crs=3wS4-4`@e#>`ALc zgrYknxEdYxk3?k5+r$iqH_2EwylRa=Tg|iyhDPP8KyNnh$=u}vMDY)_Sd>uj#WO$sK z{kcSsa+=7Z$gDyvgrSHq`?t{;dWCca-YAtljVCdESPFu%(J(gA0HK|%S43xXI0!pn&nH86giHoMyvz&C6|45sqa#U zD7oE077?Q#j$XtI5k8~h4);l54*%$cq-lA0-WQ0()5GwJaJQh3nUFf+z*vH;EPzai zgza)jXTByjOLCpfbOpLE*dhN^ZRMe8Ve(D}uk=nP-RkP%(8l==symwVpQ{Ug{~Fq! zXl{vExj1$2>g4#1bBY~vofdDe&)nc^JJ0xKVj*Eih8>3W(w`@#m&m|=MUT4>*eAnIwy8Y; zM^N_|YA;^hW!SKxyWBA}B17W!7^jlIxe z?TjC@8+~NL?0ym#IQB78*rnEIlb(;zHk;T&o}AB^w_ausQ*TIr_q#Hk{s9Z{ngNl5eVg0Rf{uwWIMNR;uTj)FiXi>OrrqHSR_G)5nj@VicRq=UK?cO26NI*;4#5}sp+jvNM0EV!1N+UgbSQjOz zmm3Z1R2f#@&d#w%@63}rB!eE=vm1?U=itcZ^2nawcw__Cz-mMqjc#ygr`0O+4trb| z>T$i$8rQ}ZD>9o5uJyUO5xz~2@IS2)ZUpGk%YtLvUBKo%^IRbMps(kM&^56ht7(f1sh(2ZE_xvVx7Ac5+M3c+ z%f2LKi@EG`QnpzA%mR(Iqj$X`SiUpd)Vb(-qoc(NgCAMkcqeQj!&r|)AL9(GwMGRl zUdRm4rReev`@Js8)Lj9Yzwxs z8l&dS3smBjy%dYx`&lYaP!}r%KJCE(9`W~+-n`4SwE!uaoa6B;L#Ou{xyyPbOv257 z?;72c)&?STb7>c1!lMr_`n`y5fCDy>YUT!Fd1d|LN_M+=iTdFN^#AepE^t*=+5hl4 z&pK=#sZ2|nv=S9HP!B4UU~v-AAkzwGQYTLe=t092l$#vjfI*{HVrr$8PGO}r(quI@ zWf!%wMrWp)a=MOA)Rf&Xc2UC%@A|I&JkL3(S_ovA8dN z03qW}BRLEA+i3p|Yh?VDv2#p#9$O>YUd09eK(C?v8?`<(_8?Wsh>UEpI)5>h|*VGpZzt8QDu<-U?mUo9)!<`rj_w59f{irrh zFWV|APSbWw{Pz7?!3HDN!u8*F9MD4AENrvB=o_wA_?udQw}=uvXVS({tXjzJu)=*8^UuhlZ=Lgtm(b#s3o)Kz4@3A1FVUgbi5{UNOZTOWz3)SbFjtb zKe|*Z_hP}7-{Ip1CU1SL5&4g%eW_}^jSQ}zsceLUg9Cf!%!D_19hJt zOP?#vWRKez%ufg93CLr-Z$#6O}9Q zoJ(_qGDbz*xA)3FcCO7-8H{mWJ5zIOK&{6q_nt0xQKSWQ!Otp|KlNu7>ox6X6>IHK zY?Bm2;1^>=yDG8=ur<(;Pc>nPYG%sGY_X#mg&n!oOp9NPXIh2yFxQ=eG;4?4zbMU` zlhA5vQQ1!=QTxfPWu+CxvX zvRXNrvJ982EI7NoV5*g}%Nj|t^;leVjg_t|Tq-J@Tnov%rWZ`J^L@>kRWYNe*nTM0 znX`}wth`{_wbt*#DgbIdSjn{%cT`epwS(MU_&qgT2N|Tc+K6J%({7#aeJ1>VHsVyB z2}gL*p^SytG_)N#HrK=asCJx=yG18eiIQns5@`LCa`|VKl-O-)5&;1`aDL?XWPJYv zKNT<^TdG-_kUb%3`T3h5BwJCNMe@Rw~WeLZ_x1 z-D%E2@#5Hmzj-NC)#9Te+1L3@n$yUoBq2{eP4@9`%z?=IB!?R`4hY7(r9MY2KX}@P zmBTj%_npXkWMYag$Dfxi6MyrAi^H=;>+yRSe&3^XR7yQhbnTj>OF8q)zfevnjC^8LK2B~+od$Z%aT;jV4G?0HQwZj4WT1ig4h_`m z2Anu?^TQ2%YXzR!Ci*y7RlrcgN>uBb>y$fWIH9&ch%Xe2Ite8Q0E5;L&TK}^W-rg~ zG4NBr02I1o5WCHK-?>WBbhuV0BlO-RADx?w^aXtC(NrIu)1Z1w7#a%rD5`;~OVkkR zmhFV_Dsy1FK?k~cWHRhmQ`J6N$g%^{L6j-;_YBFA!RPbqb77=roJ(zW0y!fhQBPw8 z>`9}Nwd~mw>e~s*`}q`=HCTr{JGRlNTP&cvbE>g}#?S z;z-`ISZust>7I(}BPH*an7$8FW4PoOb;#m`+f67i5Sy!=?y2|5TD>NVQE08zURN_M zsn4;}ZCfjaC~0)W72q#%9lq>zO#+J>2L?A;^~sXoLlk}C%BC+_B&7y-fDY^AS&a~d z7@HQ-4|Tqq_)CJ~Pl-y0>*dc0qA6{t_t9Y&&mevra3v?`0(5hI3VrQr5Z_v=TWP($ zh2MV8Z(%aMOwn?#Lk)vRDEiD5;Gt`4xEt$R_$>pKOxMJz4G}@?GOC@~{nQQ%0z2m{ z1b~D=F5^l8chstJ1uEW6ihd1x$g;z)6TygKi6!kXT(Ehkhtu@cIE{Ztc2M_yqOUDd z=5ji#13G>>n0xpYQ^h=<&AtJ#v!Xl%1b($P7Gx@sJ2EqnJnvy@P?J@^OY_wc_$k~D zn@)+Alm`%h28#TD;c7$ldQ^rk>(m1ccnRc(UlID1OB%s6z&g+>j0gz*>0tU0=z4!`f9I2tqV4am+TRl$SjGnx#TE-k>P>@PBb_2oNqk)W)76u%77y?4~E9BFsu%P0suMQT7FQ`~s-@->FU% z=HP3IC?6H@5PeXC6m@rbkY!v?O+?U8$z zTE~SiV~Nw}Le)*hKP-39;P4Px#l1ovc`|aC*jAWZg!UbU2VmjD$Y-nV#@ANESULGtZdRH+` ztGmRpBo5d7K$|$Hni;SY(D!Lfkr6J!D3GL@XUJuSwk}xfBtPA{)M=to8zaY~w@vkX zrSlhDy7#AqD&r08ii!}Ht`DMs-)&Sea+T?PQtyT0n16t_Y&4Lw#_!myEps}#-m)g3 z(S^bjF_6O$OxNfEAn6Lx3Jz)LKU(x(nd;3m0K235Snf2m+-e9Mr&*~MBEkJ#^}Y#K zatYUBP5(X7d>-r;=v=Sy0~fJGxNnKw{2jWNr#wCY^)a-HAaxbuCE=x_Dh@_(G^b3SKMHt5M~%bGp?&g zNEvts@}~nXI1`)X-VVNH0Oo!Jn6)=Y;dL39-b`ja=I*sE@VBmXn%$*m{w=jYWzLkV zJj}$~bvuv@$-P)*j$WYFo@rNXzTK(#s{1In0oNVQx6h?fa;HlSc3Pp%ufR3+KoJ{o zefctOF^ibUB^(;{hU8~nrZUXW?^E~lY{0QBNi8&d`y{$gD$QjwDc&5u%jo1}bukhk zdF2SV;$CN(gUl>tob!X;5g5T^b#O`7d5GNEQ!^$HzNk{i=&tawGzBB5NN%;)Y6tjb zPSRno6_4GkN{qqQDf9b|dN^nF8Fz(s*@|v*Lzn$sU819czw1ZpwRZS$)TMF$-I284 ze3PNd3rnoccXzC6BC+y9wSh~3q&(Ic$3vR&i;f56uV+$P9Qc1i%K!g6Y<}4xf>Hk; zPnp81Io1h-*|UD~=`g!smi@liK7;J@#prN2QTTB3L>x|@$ipcr;zZ&Dr@Cm)bgND4 zNHQEqqFt_8B{QsF(`S{Gl!o8t6_m}kp15?xQ}{SD^>Nm0?+Zo4d0Q;!y_?~rd;h)j zZCE$C0LgS*e8Qhnj{3AU{AoxxBhK1Ak%(@S&0fvUo;=g?h{5TVo}dpeMWg(9zObhn z#YM7G;G)x|)C#E(PxU!z_ZKY+}gmWy)D?luti zx;SRnsWbszA8vV9Odmf*+SeI$G%HW);dko6PD#zd7b&oXy z55+}{;Cwv-o`Eqkg7Yu}4_zu=2k?HNGF*?sm$-~s_frzo9XML~boNpxCrd+%1ZLkl zqq=H~g#PX?qq=H0e)6cO_a6S0>r=g$c;=wqBkq9bRJwuBz%ukdZHFGrO83_i)uqmd zvG&-gzXoH0xCpFw{$9#R+_jxz1k0Hftb3q)wWQ{i#9<^d#Z#fthkVFDtse<~H{IEx*w_NrCw zVnk!$Y5RmZyiN&eDo@DAQEkvkRq)ZUZFF0lR^D~nVyX^;*pHWfIMhvGZouNMllAq& zlDH-|k`L|mpwq}+y};f}6{#xT#1pJ-bhFA#%2Jcn_zUIg0{Y*%)+?_%7XdS6O6)Wj ze{>qW(Qu;TC~erCDxrbKTED?BU#3!ZHYda|doRpgxgK(wxz%cBT~d-7f6)*uT#c`C z&bqYAV0=h5DHN5Qrg}>_Ew8d%nIN3}CQjKwm&U6hmbii6Ks$3EmHW8$SAimJBv)F`<&*auj{*Zo?-8rhrx0C<&gwP>m4dQvPG!hK9cj!6pn67Qsy|fua&L zyV@FJ@=U9ZNi;iWv~5th^$`cO_YCnt%~V&~r(NJ z;g4Tf%duRCVEa!9N$7a58VUSp(r2M@fOG{iDK6x>_$bTMQ_Pl&6 z;=Ki#?l`-WzH0XcM7{n{vK%mma-}n+nVCNRsh~z$jI){_8epWw=O_K(?&-+Sk2z2s=m^zY7F6pr zRILKl8iDHDpN6Wz095}z9#p(4cNqa;I-=+xZ_e+z{Cpz}(w`lW+O7MTd=1j87D#{8 zAiZ5HjXgjCRhG}ay(zubsd&U8;}tft9UWM&$DKA8cyyZWirud2kIs#3c*$5aX=}LQn?2UqJxb;ANpXK|3AP=*O;t*VxCeoH??PBoM}}0K z|Af=R?Vb+!|3t0E{})N)|JGW;|7S_?pC=mGW;Tby_`k)_`2TFk!T-%hB>r#RWc3wA ze{px4P@udiYN#sV|GjGemAsHcp&VqSo(-9H`LMpYVdDP_E~PFBNeW>%=yZf|60eg0 zbkgfYmpDdMTuI#$=$aJ7Y~Xz`W1RIZiT}O!QaXdHdy~XHczPpq1=-Fm?Nbg&|KU?2 zmE>ybM{#QcYVxO{d&Y1uUn zd|^l>1FqnLZNK20wTgEXsT#?T?wZ%a+nIa1YfD#lYW z)dt(r6IljU8P7OMkj~oOUkA}Kp(r#*GmqVOKVrJF++&&d_1f$x9p2Y5itbVgRG*^K z`79Vl5<|jkQE0Ek)v}`mLUUnp#l5yTjU4{(8`)|%qUdFJH*kru%;OitT0z$zckAfz z-T~r6wvPW#QUg_a8e}>!?39$CC?8kh6j!XMATcRfETSZ)|C|&)9#6&5H&7+Z)hJG( zfkPp-)$Fwo8`rbWS$~_&CikPYJQ74RaAm_qBkgi|d6$0qp8YZ{DWBybo9$>0Hw4?7 zRq5!F1?Mz@n(K8=w|Hm+#JK&-me1x$LMdNfVFgGBJ&Y;TxkA zu?#`Qh%G%H(9+zJD;b1=lA6H4_3=#2U^U4^?t}XqPu5qpIsCMgl09V7%?Mg0d0#PQ z<7jf6q%3zBzZaY}eAZ(-YD(zR?`ziBn8`gnNoGlA}! z2ho3Inizn{5-Q~B1h@Y$37O5M@ADuFuB355)Kh+Qh_VG6Yt|?oLPZpEYdolSxW-q? zpkC)$fg(q0e8}d3$z1Jei~QVx&+Q2Qx?mk72G7Qd5!x;qcJ^bkxip)rb`Ss7D6!M~Qmu3}mMa zIE8Hn>)2J*5qkVib*AArktDq^U`t2FEXzPRVZmbXQizd8eX3UPGP z=`EKSY(7x$7k!v45#!+)h0O!+dasBL&(#&mVnLL6+RdT_{T0rflED%8ue_zoV7o^< zTsrn(s^?tBj(N~MFE)Gf2>J2bd47Ief=A1N9G$$4jywUqNp6L4%=y?FizGylzUhO; zE;Sprv1sPbDrgq=L|d)iQ5A&hGFn=7H=uaubTM6;7c1dAC^~`u9P)|3_I4wkUI>k& zO}zb*lsS|hwLbivKRnAHp25CM8kWY}+KX&6^Q!=JdvrF9$*}<54^8%BHAqnj1FIH` zXDxSLuhW)1RTm8J?2RH=zfu=xU7A1a7Cmg94|WeuM5~vqRf(a2a5C?2$r@+L&||~* zWBK8N=j+WrkBfp5`PEQ!$Fwcec!`pbvB1%g_IlZ=@~q3g226$Z8B)w%VrvSU!^Pfl z*?P7LjkWne;~0vA09ndgItwqSg>g3q^wHBPgTF23PZ=6xW9W=F{j!cPzI#!M3m1=>W9I9ae{q)y_vorjGe4Au>I<5Rh;POeKx6=FJ8r&iE? zDhqQMuRE>({(s;4{5PG}AGKPyXbT z3FYX0imq*v1V*VUFN^lnjZ=Aa#FdQ1^z@P3fgObiS2~E$*bxyjJe~3~ma8irEZA(l z@oE&+`P#ZZXP2?^}YC99Nmd&JcTCUe;<xbFi__U&{}N^}IB6n3v-h&yeCWM~%)L9pX8#JLftQ8z?Uj+giq@e&DH zC3BmD)vxW-zt=}j>4&)VY$<)3l%A6!a-*XU4VU~Abpyk3jl>>0GhOvz%9BE8K*$s? zxw9gyZ^E^nCODj|3V+)g{`Rbd_2L0UEN+wsI&Otf4Kwt z48N~#ja>dt6fV@8OXK5Uzl(GVIwuJz^HfCht!PfHOmoe@*6ksZIinaJ@s0cZhvTA-w5(;qa#OKMPaautbO3 zI(Vetqyk`tf{+&%D@dqgW-5|%?}|ZsE`{lH4(b)Nz@HO&%!2Y_WBJDiKR_uFbdX7)OjJra8|=))-}0vcVfa&15$KOolnFrg{m z1RFKUVsxWAkd<3l{HMyG4bz}Vm}W-66yn?CJJjh@mWn?zP;jY+m|H zr^&U*?gxxM>`E878|vfaDHk;xWQ+~&+~Z?hTV0~e3uD|EXSamg-r%vl#%zPTUSByM zANN?9m_}MR3_JjxygN^sc{+F!+<*egPbx4)0$A7kdt=ALc*jy)NO1kJnwUSx@(xC@ z)1AveKge4Xzl-I!AK>nEza~+GBuKTQ+iG#jeMOt8`k#?Sp=4uyN81&k>?-~%;@Sb>FF`hQE3nmGsNMo%`C`-!sYThzuJEca9qVHrQD z$??Rj<4RNP^Kye{*NIC*2FSBy0J_Z+2$z- zCn|i*2)Xb#HU6xl$5)a=ZITM=_(QzjlTIh+BA|~gFnE&bO;HUR1NYGb{Pc!AQ48YA z|C3kQh^GfVZOjmIJ#deE$07u8cG;@*|fpoyvoBW^f-ZU+(l4dY0EdHk{B!*LcZ$k$G|q<{ zkY2DHPRuVfp=cC!9k1;n(O!KonaEg{jFOA+L)Cu0_Ov7l{wGLMV2C*hLR{4N{OVCD zeng{71JH#Z4|sAPN21rpniiax9?^yC0#Hv>FFb125=e}sLt@Xm}##7fu%;yljd>zwOmNv@4N3VrV`O4S|hN zyNzpSqTuhMK<_^92;j|8kk;r(wNIkT>+088)g@~5V9m;FaMUvVD$AldIm*b1$mKV` z-C2*_QC9YMh)jc$)EB&JBM%KR3Jb)w!%I`+nrswalOOzzNQ#9Qw5KJIms-K$8k z3!@UKs?aF3&Qs5C?AiF<&UgAK4yJ`QyP@mJgB_#|Q3r{oB@&oTQQ22dr4Oq81w7tQ zxv_;xq?7|eM@rck)fO)DkQ8Yaq8Ef@Vs_y-3)FV_VOqtesCJRwmdb_1Zk#0B;#aG<{SWx3J3s|~%JtK! z+o`mLS>;rO;{@t6kMF$%P9V^d8vWZ9O=p(ptmeycO8eTCBtyxuQm-PvWv050>s_WY zhnsZGPK7w6XlNvLl^%cN=hk)p-qFMP1h|6h4lS0XMct89Hc92(DI(xZT3j6~L_7j{ z6=SbF4?6zZtWeq0{KQ8ppENgA`!!OmjyS|jTBg#EEn*#AOSj?Z+8?zdvcwd%Oi9L{ zR659%0a4&2A2?GkLiX*vdQ{b0E~Mb}P4BrH$lXA*{M0F%U$ErV>S|zy+UP~4%+z&8 zign4}jEhxjVa}1x14F)|+DD&6B@d!*%#2@)&2g^2yrN6CDC&cm92q_@QU(hjPc?}{ zX>D~P{U-`}f4CM!C1gnE4kMry;ESuR+51+g<&mI16AtM!VUc|%FgaG)Q^*4{+fd!& zm;Ec8VN^HKxR8M%Qg3&pw+K+t6sIJ070{4 zR)Oam6y3qobDatxKXhFSvH_LR=vapt?CKDmua%`aoCykUW?hyf>YWr(=A>)wPRdWp z#yj0@2#LvyN6;x4X<$iVO>29$pYC)xU*}MSE=!53shEVzzuK%`z1xRj?Zr|m(I!Y3_=TTXap;KV46WE1(UD0Q}zoD;UL zGY^?7(`6wq=8376m>Ct0Hmvzq&TQU`+2lnq2gxl|9;Tii1yuArrt_JgUn5-vO~^Yg zO(??G?u=det)3X3HZ|Fv$!>h4<@3g`2jo11?|WjlO<9^Rs;7tL_DM~mM}qoLIB{oN zj=ly!JJ&>B0Zf_lupHL!>%-dV;}tat4!~2HNCv2I$CZjU@V>!E762I$Xci3JzvMLp zwOxg+P(+AkOnX9cjFrbozRL}r4YNp%k+e8)>dXW8#hf@Ls21!c(AFXx4w5+U=HPDn zMxn`1s$!i1qIWcVb5LZ5ua#`juc|tr>&?;F={GYX=7(8@8>8FwON&2Yg1Q#<@rvoF zj7?z*=vxeMaWMAh&uwIf*BslS%<)5!9eO$~L%mkf$^hS{>!sW;hOVNVp}UQZRJ)U# z_&8JoJ&rpY!M(n%O3{9NvBK6jMQ5v32zTqGgxebDplfTi)*nIdWWFryq6C!4RGVl6 z;j%P*Khn#o^_7kps$O)K;vLr>;JO4fp|yxLs%R^e0TS1ewn|gheT>DEhJ-QAk}HGo zll7+zf2g9w*p4I2vnLU2DB#KRJ(?M zzeM|xa#5On|EPbda<@Y6PI|n`-ux{;f-@bE^drHU$E$piNcz6u48M#-((TdNc;z4| zZH_L+?c7S7LIO$V5X-Tbwp8u>DH3Tzu?!?~X$KP7qkU;uSVrGiRk;!5UbjU9F8VRPb%8!4koC%j9q0Zxyvni1DazI_&+IyX$M;gWBe z&duWjK8Pe~HWv*6k-rB(+n|KKTpzmli5Sii!^{}uH1&yTc{BA>IxEz*xC*#jtKRMv zQ94Z@=dA{x{QN3MKkhOR2&){n2nd*K7V*b>B>2MwjaR#+{JKz_F8{WHKp%w?+oL8N zguxr;0Xo^2^cN#F7%oqtfzDL>>`}d?1XCRhYSpLy4cXkHca=b z^2<83|B|$Su~bG*JtIdqKMp~&bWtgBqd-8#+-+=j`1NJF*BLny1k=XO^PHal@xK|| zZSJE-*P80|@#W9xHi{=ZQE*8gxyXfc4lAf?DtOXwD92pln^;XAdTBUgwfElJeAcV(~cz&vXK$%hkL2o*MtUng^i9Kt3~i z9<-U}{EM7Qy(4@G*HZ=5WG2O|xYTaHHC!}ZpB@J+FF^yge$4OpvVLm+#tABZM6!f5 z>8+o9urpNac2-4VPH7p z)mRcG@oI_e2ld$^eRUGA?0<2G5l{Wn6&1mWwlj-2?#29m6^`|Fuxl8%g|~2zWMy=x znFnz>2{DQCePER(-)ugOD(pB7$%qz&L%>+%-X~#~)%*Q~z~SDGiu_{in5y1V)U6l; z>IFzVI6llCEYLp8jqQRg9+#0XLi^uUW*u^iP$m3kr}2Qx_R`6d$Yi*KCE(Sjs)_11 zzYdI0w4@%MkU-ocO0qPn?^IqAKQM@2x)P8!O+bm~FC!0U36F1_C7-|I&r6Q?xjR1h zL7dd1n>C>aqrEQ3;>`HeV`!VCQ07s6f6I+ez(gVFT)C}o9g|}Wv1ntCgD?+S#vpIY zVFZ6c$r&_Y9zCM8QdxIg z7A1>$o}8K!7&PRbMY3i_N9eEXv}YkMsFNi!PrQNwGBI<-II>D3ir3Sd8GyP%wGhbq zgnK(mR5UpgI>ze$3_97NA6oH;i^%I^0{o?|0*cn(#bkTVP;`LtSL}rs#%xq$%B^e3 ztHAm4*DouWbLp$D*Pc0<<^ry`Bqk7fLy6nKvB$d&%;T=UsR-Xtj&(pgE0QF7p*M+F z1t6`VangUPYE`L8$~YHyJAMQc8A!DUL8QXbb}x5Y8yHFR<|1~<`Hq)#xKs+vVTZu1 zI-Q^Hs`u%K^*oVhAWzZVlAH*Jz!%6x@EEaAFnS-3yh?7q!f9{B(Y+qFJMES06#9#0 zyobfFvu~Q~bL>mSX1io3>SvqC#4Ga&JM3VuanARbt(L%!c@eM^)UCVaq2Dz@GTw@? zElEZ)N3Zr8s;D@RVHO@(LGXpf{@EVT%`D~%s!Unzvm%QMr`Ab*7LWr>B!+x zh@k#;iTba;cLtwHS0I`XECzYfE<)p(YbZT?^360BVLlhin`;k`x{gP^E^^e$sNat{UMD$JbwC6(Soq@u z-{lOvpEK}BkyF?nAbbG4EYme2v+N4lLKof4lpf-J5fT6ftd+dV8RiPOym5DxfF){@ zN~2($8VripR}Pza)laU!5%u76=apQ1g`5lZNltT*SQPj_%6qTq1ygYWZ({;d?9y$# zNmA(>*K1}gSO><1v2+MIM1&7=h~$CY6rlrZpV(z9K6dCn`5lpKdH}- z95KYJd%*zwNtMaKC@B;e&Xo}m0RQBBHzZ`X&XQS`%Z&`cw7ze1RucvV#M3DtfS z%rNQSNO^y!yFuiSI?MAt)gpueXSCnzSzLXmwg((4;UQ=2SEJ27JV}nv%yg&1p`TS@ z>kOyDO@?Ov05uE6S@f%7ORQmT**iMlgeA3+NZvLQw8)4>}ISC{2@cqg-Z@+LyOgl#WpaT zKoj8FOM|~g4nv=;Jq>0)2bqyg>L#gPc(c*8Sg|a{ZV5r(`Y`%_YGgBgV>Avy zL%V@DrjgAw&Mc=JLOxw!G1qz=dhO#8=4Cw9cZ4+IdKy#wozVT8LWNaOJv1Z<&ytux zlf+*t9!~M=xPU(gVTLh|OLraN?V=haj_NR zY5*6X4|yq9QQ$gd^b>p7kjkPcW^1Zj@RT=7(Z7yr;Z~J5oz}uy<>~r^^t>xMi{8fl zNsEw*?^V{ra=UEG9S>sNGh42s8GCl|`*vIg8H32(=AVKLHdEwUrf!EU(53l^&ETac zAu7G-O716T=sVmzOsVN1YM{H^NHM;a`>XNYdXYf%DCYMOmIJ)>a&6;9SdpjcUfM{z zYJIet>-?v-g%-ll<_NzyVl+(QNyv+}50d6;2jBMUAkFzxl=+C#S9)2(jGT$2A3M2& ze|dJ%K2Wi`Eh_JyLk8+Fvvn$O5`+2?=vo`y;11AUk?XvwZaDU3Z$2g8oqH8;$o+V1 z)KPI0vALGh?_@*^=^$5`Zk}(B_(**ZzX=oRU2LoDItRu@9!;blRS3ZDRZq^+H04s< zVwrSOJM(OY_khaVYK~IIpaa;vm?gxav#H4YHW9&UiUKN6Z4io)1A1_oWK-g&B!M$q z=*9C{s;IXQCJKMP2={uSSQ$asIpBH+#D^RZwF0LvEvgm#Sj2 z2Y70@Jt0T8M2g+!#_q0Sd7umSbFL84Y&bvAhnW3`CGiz(lB|tg5#BS6o@}#}57k=i z>rLD)WglVAx;uScBm4RW54Iv5cIu7{*X6RPyAXBh2igOAz@^5}_qy&Os$#erYa{rT zMR1y;{WXQfR2!7n58!o^y#A)912uTYoj@w`p6NXO_j5h zl}Ucoez7>zK`f2SNiy(`RyzFVXofGx$q?BTW`-SeP@Q5Ba&+Gt=t-VRq%)vxo?NO; zgcBuBlxM=mUy8PRvbU)W+6IFtddkzbZIGn&)S}+Ce3a9snjmdqAlK@MnpVok<|R(= z+bmNTQ$mO8#PRN`zVwhBAtvoKCegRJM%tgR~Kr;rUg+jb*pYtUb~rFqq0Sz!2{e|4eQ05qxP8hK_hYBHf7}Rqc^K#`CK#F zn1PBy%7G87BT&6L3ON04^&0wpRJKVUF}NY_q-TfYJAb(|X4||+uBd4`b_ey~G2dp5 z`Ew(i-oa%!x10d`rid{Y=`j!LAT~V2Vnaie$PLAoB87I!q_v;{cRIvBCKME88u7m6 zqbCFZBkYvkptq{g+5=IWd6&y&ure;97po=j??#p!;^}XZ1AamV{FmxR`ZNDph~%~w zmpA`5XO!P*qq1AC78}^R0n_sW(~}I-5PG3H0+BXFW#?xEaC*?+1(c0ZyZ8mnSp}TU zBSze&uwLha>hSl+co4KbN-U&Bc4khBo~X9@nS$`rZWntCpPH60$0@JybLiQm=c9V^ z`)T>;q+I6x57mv>t5LbMp4al7sP*eI@~6;Rbk!-_0-S|H?k58DzX0@nwUxFA;Lic@ z{HqHf#hBYhjzFMtaUCwecBl_><)ET}L^W&A$os27KgH_}pn_IBUY)~@HZTfR#UlAn zs-xJyBP@z3y=NbQ{${Ya5f7xsYN6b8Fe+CE;DcRFEwA{J>c%jqvWrvcLMVEfIla;QNynAA{R0vRl-rz35ya$tH+!!&ZT z+!duEmI_z&TPhH%_XR5ZVf8F@SdFsJu2Y*Io{Z^Vu*(RJ+#+N7JXpw`1Q=^;9jwi`%NfNh*37=B z?P5L%G7oy2O71OsX=a?WMv!NZqK|?(VIWqj?25@#vedowRS=LYS8aG6F|8M7RY!mo zk98)k#^8g0pm&06MqMOo7+LrG1h9YcB;TVNfKJ91GJ(FfKp7cOY zc(HH!x{A*o`U-phPmD42A%3-0rTq9=$fqig35Vf^8T#g*rg4+!O1_{^s&E1=iB6!x z6eRFaze=Glu15N!CUb_eaPLO3_(^REA~Vz$*B zT^UCM7t8J0Zxy}694p;xKoEs-I5A4nsmb&@EM~&P%jEI(bjHWPEaP69c&=7OZv>8+ zw7)7&4|j3&u81%EzD1~?*@ar7*VC959vqT9#cjm&dpz`7mCv>^hwJ~VxVqn0#WQ+i zG?>qGwzC{+jy0)}p}$O=(3%(}j#;D6utti~aDPRel0g>9vypq9*+M3Zl4XAC5xRMQ+(C2$2~!q8HPz{p1U9&wO4+H6!u>Rqxe%2SL@5-iT^TgdMtIN;wPPw7$w0 zX3Rf`29;P<#UjOP(TnZTR3_%@;nevl)G}q-5V|Ch&I`avm`|QDJf4&Qt`@7Py2U(A zmKltiHK0qzk*|TJ`m6vvdH`r|9#4*so^>_w;!RO~%`W_Ril_iGF^0|c_8^e1Bx(h% z4fzJi&P-J=^LjOE%Z)=GX5sGP6DU=L?`v%=dNTydw%6@Yw${g-E&G6Fpu@7y^&wF- z95%j&d4$;=#t8ehPu&tXBwADK6ZYv>E98}t#h{NOrkZ6iZPr?&H}MI!I;TAr)&Scv#wo=+}Nj@|)FOzZ&Y=VOYw{4$ma$(M{9Te=#y zW=MlY|CqOhv1@~wfcO|J%Pz)b?VJ~Jk?;yP^~$_0OX+XsdSlG6a_;}Tu6G~$d~E;`@@pI$SZ!1=F6DVT>H`J zK?+*btD2Y|@~(eSl`4sx%!i0q?%~1nxDy5f*-iMTJ&vW8@UnUI1V;1JJimtj1v9%~ z%4GTr1OA4|G=4q*c-)+1sa2>uZ-ME4i}5L!e+R%sakigMW6?im1=^@HXl+NblA7HHVBGCwX#Y%!6H{b8Hr1NA3 zQu3#fyP3|~PFLqlq1XV$Bt!3r%W^Seg2LtU{CF%}sf@34y3l7r#xs!!-8&#fG9eN{OP%PS883)nm=1vI@y`~c7 zIQa`46`}j&f^%1@{!sQt6`M@c4K$Qmm%V=kKq2AQYj-X-}fRxXB z*vyi&WXA38BNq13JC!*CB116<7R2;cWtgI5(%Mehm@q~%o|t##(|as-%iA6NG8vjX zlm1!x7;Wst(EhD*w=~CdH&~i`y)uHe+|UVW!9pT-@2VWfAJ(E}mfV?m%-7m|uiBtb zj>#2jGSucgE5RUq!@z_n3@W4#q*{VoOC z94C|7Rn{YFvPHQ^8p94>#Pah&x*8_#rLi3^w_H0N1bs3lY;s4}RqnKOB!@fYX0Z5I z8DXYU8>T!OcUJ{ldQA;YThdK8>$P^kqTV; z9_r+1&s?vEg}N9~xKQVIsyxUvdpt6d^NM}Wb@I3;M!ThzM;~OF)IHld!@9MJX)s(v z>FZA0WyvAARl(@g=t;YyVdx)KCF}qaPX*f%eo2M<0?u+5hk5v4eQM`ds+z?}r;$9)b z*E(4bd%Y7@{Kx2^67)dzLH_4N?hcAx0`Ps_r;|3r4}-3+(gM}t=mZ#X6v>SlEQn}b zwa-r<<2nVbG6ndEETpB_{I`g1>cri=j&6t&sFpX)!FfLEWh&f;crYAx`ev<9n$Dv3!fC zvnDa6KPYBs@zk9kW*o$?U-7RZ5YhxbG^rwyVwkV3Sfg<9m)e_oGTuynTw=aP!;2}y z4?nEo#UtpZ`b0`*l$c-N1n*vVE_~YQMb{+S#9!K7+5DwY^@AXN9v67t&HZHhR7Swe zUjU9bCYPr>kN(W3!VXtpGtFqE-}vogowm8M%?w2Oxr84EB9i%U;*7y`$w7M0l?<7n zQ!>r*Auni3@`X6Zxb8OBM*hX+#{`v5iE|5gJT#eN+OqaA{exkhWI@VBF1R=vku3VC zfyq=fj?Um>E3#<%Zkp<|ylKWN9q4bY^?#l9jH?wEHEB045!Ukolu1{m2*Z;(2!6HH zgQdR~t&s^y1i!UB$oE{3lIco6JpH9`VlWflbf5axxPX2bkI}o_A zK+XV0>Dh^5k2Rj&s@q8qy7>!#pxKT592b5r^-JEIZCv)ZN}GFvvz#F)j38(9c)gEq zW@xrbsFWA$T5N#@R)|lzB_RW!J|@+R)5D8(h4@g5oi-dxnTX4jN%U+TG@)MFj`)K5 z&T=7a->=3YPr2gDk&Gk!QB3&XCA$_jfRWZtbrLerYb4pxOdOoQ&I-2!{T@tOU_(IB zEZ{$mU(-;Wao=-3WLOxWyUdM&cn$T9Cc9h@$@j{H;FYtxI(~c!Qs% z@(?X>ZCxVw{Wh%q%x)BHA+=HT*h}ho&gngOHr<6tiXZb(d5m||?MxfMul3N`5;_K%MC$@sC+4zdzPtYHr8L%XCw| zZb#5a@nqC4i;D(9ZCf8i*2^j#H_nUOM+q=vJ_uHWg;n_bMXj)weQbXWZCPCkH~1x^ z=qvoblsR#;zX&3!gJ^CEw#K+bIvIG0V`BgUXw!^DrLE$w;nVO}uU*P7Ml$tIk%L8| z#L-CsiszD-qa265@iRAw&! zNTZkrlPY4VTegs&%SH^Q?g>NHnR$a-ZgWluvVg6ceBdKXu+{Ok>X37)Ix{(G)+9pU%u``~8Wp zGGE8I$D4FKQ$MWwGM@N_d}?dCuO(vmobg0#b9Q@;<<2=rpquSQ@IrMn**Q| z+K$sF70DNJU(BcAL1YfmJCV=9EHU+FBEYA`NV%Pc!DB^>_8}^P+#Iu>5vjgK+kP!! zuHq;q@%(R{CERKS!@({SpBzT3i&Z9odTNKWxl)iF@%am8y`qS`{fdDpBuT;SS&_PG_%nZ#UMt|sjrz;?wSFGxjf^OWTA_F(qRzY) z`rzl`vmjq3P(p{2QqauDes1TGWe$YTwm#aur?UgWV?!D`~vLMEA~IjM+o$`^1|JxmzkG5$@SQu4tC7 zJzW@xBM3`+g*Z>}2#wJPnD=D7s)H0D)*fYC_xn0YXH>hxxnnxyv^(G9+??j!r;MR6 z5R+IN*K!k&!DoyMJx>y4_1#*{3#Xiz7k-~>+)wMZV&!c9^A}kZqZd6@tKnuGPuC0e zU~P%54dGhPlFq5{aP4lHN-p_|%-J)wO&J1*AloxQ7k+$>vb9aejbc2~o<(yDEm|C5 zh?noW(jM$8k7m9fh4(znZY`IjJ8E;J!GFVS#0-G&;PrjAVK;UL1s-zdeGJWAwQxV` zLhsWqGegWGRv|meO+W|~{0g=k3it{?JF8(dxUE(~CI@0WT(^B^YulGvZo`;}_3+U_ zAgEe>-*%&J`Wvc}aM4Y*g?QXUVtdF;bxNcxO3sKkcpR$L1UqI_`ksoV1@5$;er{L2 zP-126P8rwdwE4cemZ1_dMKlpPHbS~QPRma?_7lu(RqP2K@Rgx0|7`MxToyZlFJ9EM>qht@}V z-%_6{tpH=jX0&{65foo%^tA6-TB95o|7syOneCz+6F(XqWGiQ~f(0KG{ilM7W+WBB zKVUl3g>LsCO0K9b5u!H%)^E?%9F#RM=^0Nlcghp?QB9M|Tdu}Pja-es(vkQ?Vui1tjF_{^ygMwTpedumR!0!O0T50ItHTKiiiS%~g%aVVn%J<)Z#vq0OgnR*B_?8A zVuzF{3!~g)9wDkG{k3M?MsDX0&qnw<*Oc(@TeIMBfG0U~|DDYJ#L3F&{R3=h z`dcfIXGM#DnOE$IOh{CdOe+<4D0Y7I38v;ajDn<%ULv-clV_@ZE$JEONUgYJ+sMQ$gSNJisN!^ zMqnaAH5MI^i-A;`TC*4SLlQ`u1in5AS8s+Nw)mej_F7T0jAl2BtNyr$DLDW?deI{V znfIWH%swUVQaR#gKOrYy(E!YQGPnF&W^qP}&B8wz*2`n9^-9iGh0OMq%r&VdNEJ;A zgG;7z7D$pL?aR1v{m+M%IVziGCGv1bjy9?53IvERPOPd~LbX8|Qwz8CsZj;Ze0ZHs zbJl669T{ghZV2H(Z1xkqX{Llc*jX({fJuLhN>>{&oYC#06p~*_iu69f!wuqpJ06So z4;Fl0z%A-}NpHJ>J9vWyivf!4w!G0ib$^FgP=P40-=$gH)|m(FfeOO$u2nxzTggW8ydOS}eq4uQPd z7rD1S=c#0Z5EGCKz*7Ubazez9JUQ_HTrHYSISP&~$mNWllz))olBxT8nx3fUs%6Fi zif-#rY^t!sq8{>5s4$DAUR9VwjB22FT*X@3$#T8V7)PhJQGH`B%}K=dX1#w1 zV!;4gpitml{-Vmf-n?AxLnJ5N47EpX_H;7RXrauY;hk{utdMCq_Jrhqb@ za--e?2}lHcTfneTSpiDggO6Dg*3J{ABTH2m>Qlp{gRo-4yBnZl0*V}n%B3=9uQ$G; zrhw!HH8e{k&gkCYZvMSgt=HLV&9y*zMmL(h20U_gBI3)S`&(48(iXAM#leSNhwor& zsgP;ST*T#H4O$bnL2XufMz2Ftm3g(gVER-LsyBnXg~YvM4d?+SB<@Zb>l?u^1j_5vK6_XknJ+-I?Id(AonW6|4x@_G!}9Y+Y&{|Z9} z+t5-7woKp{djcmq6PUkWWBt}(_})iqJS!7qb{8l4XM)07Jfn1|`HLnq>pNaJPudam zRl^KR#<)k8!Pmej$SE9g3#r8fsw0JLIn7q0etyF zD+K&c1dAyI7<6PIR?u4 zi57Y5O5Kq3J1Sji8&j6EE|q%-t*pyuYIiI1&_y|9R>=jM7^pByTZa3lxnlDD8rA2( zZPEB0A1(aP$bFK#GgBFT+i4bDE2&Hzl;O3`)YEqUYaQqS@eh}EZ{3}xx4$R#5uSMr z+;9-I%F~s1Q4Pz%r?Y@P8_4;dzNW5(d!G3opJBvQiAf1h;U>>(FqTpD`x^f_jKzq} z;)OC}ym~WB6*1KrKredQST@WP2lgKmxwy~GHG7dlfkMo?OoVr_kxcGlswr$5YGN@F zG%1gw+o67~Yf<>$OO;L3X)!WS0+`82+18c%Dr z&1**%po$hx*GKS`hqK^ePuFeChduZxsdnkO-Vbi-Gp)lO2^9}x-(~G8Ynp=QU=^Qh zDM#RW!~EeWvkTQ9>?5AiUBv^I$5E*Al32bvtTLYxC*6g@77XDQj%bTjQ*YMs+UIm8 zujwr21&a!WI(Vv%6Lf;-@BSJIsQORtWEIcC1I)J_qk?js?;ycaw-XI%wAoePo>KHi zUc(yzO{y5+XYGS?^>~CYgWKd9VArX|ET5%=efqa6K>O=*XpuXa*3>f}G6{;EMebaF zdk|JsYLU`$qbF$DO2;9geXa&m(xSo<$lL%?Tp~!B8yNYo^@|(B%`DQw>YCRdU)JJh zY_T99=nRWq8c}P5s9q$7Ta-Nw@3xAazm$Wdn}>G~xVM8G)x|ltxOouj_{*cBihR4y zx!*;a!>&+kL(qKds2WH&0=hEq#P>`TN)dC$@o4E^I`;BvPXbT-yUe@wSbdC~U2IYpZl~n9?TkaQ&J0ue7H4J6F?JUe@==#!irsF~)hR05 zx&mUhgxXM|SGyYdsPbz($a+*;F<~PN!B>B~c#REj&r-0JH%5|#62;|xOuI%PZcnV9HGxI6B818JiQih#15<5eA$|tS}^&!8Q!0DjCnWB!9^ZYBL_(yhFt*8P1NfLeN zvuX+cb85Q;AnFRkMoGE?r{y=PD7IrRfKk@Qiz3xcA>fP?^w>4V`s6+}ri@u?Sod!- z;;o~j<41Jg9~$oQeAc^>?K>6+yIs1qL+NG6m7?C1cz{k~kojXf76G5I!N{;cx$Ia_ zzK1oqagGJfWgTn7A39_Vvb0D?)!tzAu`cy4Kem>W1%CeJ9cz_2K|+pGYlAVu0_2LL z`#RqOqT>fF)V~=?QhBy$Oa+{>WfjPgE;o+>g|1j`)zOij0e_3IFx6 zuk#Hgz07g_cS$chq%15$+CAis+iIhqn@;JLm6bJe!f(^gO-kcm_Wy&^()y+KPfANm z!>^<)$2<9Ar{*@-FRSXxcB-~<)wHo(nd_no3MZkFky4i*P&Ml;XS;-}KI%Sk)uf~A zX5=_^KSkaC0CPgxNCq*B>-JAdI%}pAx<6dD$*{^MaoGt{c6btxDqOhNC1IcpOhs1K z#I!2_Oj=SFKzgz->ui3LHFoUav12C;|Iz<1!w9&8q`p~ak9C?6K(=%Tj#Zv8vFePH!E>&i zF?e=KVDJn^sfwvd(@JI!E-EQ6m{k~e?{&`R(bD2#XrZz!wi)QaiT^@GPw3LE9* zl~qozSrw7IR)w?8MmyPNqa(A;Mt8_It0I%ks)!`BDk3|sI&S`4)gjreibytVhLg>j z9h1!}C)q6jD!01oHb%`v|RUgUuzjipnA$Bkx*foqtc%hPzmyX8&@6>5y@`{AKLmGr%_)x!jIMH)lQ@FZI@YB304cZMtv`wSg+T3tC?u} zo2wg(j~?r24Zm-Ve4ihF|B*{ysb#55b6Aqv#60K(r89dYo5vMOl0-UL_9i$L8zT~( z)d8{z`^86xe@(Ptbdm#2bZRZqIhiPCy|@6C{*cv$T;c z+ZsdZGgq4i$moweYNuw?+(gM0k}0v1$OA1Z&ktRkBVbFlbKo$uutSZ`0UG7AzxT#> z(UNy4b8>*5s#{6VxYNhdef6&r;q7Nvx;*;WT04!e6-c;+c@u^TpC$ zf@phK5Ud&3n>&9=WlG3L$i0^%!R|tZWNw!#xMSk_W4xFlB9|sE(WJr^2oHj2l=h`z z-Yw{BbDzf@YgjmF9H3lNe$yAAh zC$Y7rLh_CXa+M$W1u*m~bPB&{htcVwQZH2$y%?=3ZKCLq3_ zd%jA|;o@sWd!)(1czKf5tM)tc<4miS7~1Nx(mF3NqAlzRfBd@($%?eHa)!^!1akIz zhH5<2QIn|c9C01PKrEnGWoT6wo0$agl=u=m^=M=iVK28Tb{m50!6YK@>9}z}n5~Td2$F++B#}3J z>=#XSCe`Nn)b}*gi71<2;(-2y+nOL4XLmnpv{gByB^{a-T+}tksrHWBj<+TgWmhwL z9I$7}GKJb2u7h}fFHKOHSE`L-1cnTeMSQdw=hFRk&`!UHxV2(2Xnt|6LW)2A3yL}v z9)rSX(P}CDJQw~?L}7_5IWwXL0^Oj7Nz0rHU+N0`yN>k|AZP5HPuMRI&R=oYB-r~Vt`&W*`&>xmWNe$Nx`r!mqloFR(idY!&mSU@HWYz;wNAx(*f~r`ZVb#5v=?G8AT4dosk)5FuMMgS>nydm1yde-F%uJ>a=Z)ikbM>Zfu5M9f z>PhUx*}QhjI$T0d-%TECkIg$~hw)D75OulEsdT$XXi7YAz9%)*9^_?;QN{>5LT#6e z+SB2vdeu9%)>w8t`PgP;Y($`g7RjwP26;vu6ou1i)fzF6a&TABG@z`sn%8MGFo*iJ zYtA_b^yC6d?YIE02B+hHXmF9nIrTA74=)4FdPV6_KEsjb{xTJENKk9I>brK;D}c#O zyeRIk`B&W*828wLF~w|{jO5{n>tZ#2eEJ9;5RoiGRPXebalO;q%~8knRxH*JsU}tV zC_01JnAbaKJO84=%>XQ*b2@WHBOPuViLp{Ow>B`Kh7>eC3_IavS++ z-b!($9#4X+T$=Y`rsVTF8E?y0;@X$$xm1k(vHUUKYi7Fj1jnkA?N6mSpvw0tlFMSe zsmeibe^-y{=O%o=Qoiy&(sOM;ROjfA`TChrDVL|!42eFyB-V-MePehpM>&VBwHN^= zWa}mUN~$>Vc*WTv6KIrq^I(R%^CT9A`XR*@LR*eSnEfb3xurRYV#c#VfBvL8XnkIx zKbNK8Z?|Ioxz+i6xBfg60tR(muRs4#-C})Spg+%+#?9^e^XC#R1fOrwpDU&I+3ouC zw@&TF`tuCwJIVrWxAXa)D7jAzO5?_HK$Fj6WB9NdFW&yo^6#&-aj2s1&0th%BB*T` z|9P9yskw^IsKV@T;)R*Mlf}*ts~b&>0EIb~?H14Eiyxm+`f`L8T35Igds4|?+BhtCx)Ai## z=g>A6m@u;|BgEhd=O;^kRz+Whbe6{L?p-MVbln>IqAHf$Jyj+*DM7U_lQPp8%)E{SKlt(@dk?T_Cl(7{QLY-!+ zYe5-oj#MGJ9-U@k|6FIGw%+aZ{=CyW!t=(9g^Q8e=F`;JEB;yXE=d9di>!_=tk075 zfzd%uC)n&Vc8bZO6}fr-8mlJ{b=G{2gsw8-{$*amTvXfvWu{`HPq##tdu-4Y?K-KO zDzk;X`Syq7UBI?ReC)2)VxRoYmCa0*ThYdPkk%sOG>eJ4_y1$>+XJeqvc~T{>$*Lf zmX(xR0*Vh%FDR&>fx%Tl#eCFYB_*I>;sXp&LFHc3DeYlp-=s5Xg_SnxOgg2#CzA_Hl+!rzqQuhXP#GVfq&_$q~gDc8@jcUM>LXwpZC0gyKE1V?vfAb258SP6diWjzg zLn2wlEyEnwJxg=Udd`C8l@~88l+1F&$vFp$bM7H5Y=XN~6Buy1G^-`jMfO@@_A2Ak zvzLU9&xpkt(ZCsV(OwFG(@N+YE{mY6b>4EdNg*FoUC?D04+dpd;7 zA;NiC(@{09+;!~SY^id_}Foy%rMXfjUCUfMa5IZ%^Sh;h4Wl79e)NzVLjng;oZ z!2{?f&7QELI*@=Uad2_lO;+G}|7S!W@&F_ys?Yv({WB#As*C8XO{Qu&99B%H!?;}I zi`kBDhRG6ZT~@KQ?^-wO>yO91;*i7aEz>Au7~(yfuy}{oJ>0HyGbA*lcGQ_6QPDee zRHCe+ZIncBsvS~&HpUz?2k8rnKWX5k5IQwh6i_u;7Fnk$uD(eZH95FfNEY9aH6iok z5xlXwiB#K!*V3~Q=^VN1QaWMkkUS3Qf~QJPcLA4|GQ$wyWZI_HU{jJ%6-JcoVO}4Q z7%Q2(S!D0kcIv#n?CNf{$0#izVn=`DqCLqdk$j0yjN|l-A#hhfauGqm2d+#hvtPYh zJ3`r|uscCFS%Gh1k%)USRd=&uJOM-q*ysA3M8(NP0)0N|BGKtb19VI@A+T2zdm>EO z?}}xRb>ao=ig8xe=l?|~b4FLAcs{2epNOy1<7ht)fjuIR zQcsMe=yl?28V0)A@7D>0rd?x2oz8AkPH2SH?$$I;bCSQzLu>St|J|(;Zi0#m7PUc= z>_H^7qPRFi2dMX{mb3}o-0f*Bz zbzOQ$-S751BF6Au4o~$lKl9-5r|BDv2Q-cSE+ztFa|Mjq02y?$TTe6NnC%`RV0s!3 zV2?1yLqbD3`4`9OWRbW7w}(?AD8@*K;SJ=pj5ya@^nCb`rvI9>WC9Ncb_jUZRS0|7 z?MOK#@vMu}7_ZWp0OvH!!z31QG9*i!_qZr!wQ!wqH0Op zr?$k81;|NX2bzrIauC%&p$E|^mURiXe1rk89XE_CKQA3sM&;+)NPHJ^5| zuIFku+#hJf+;=U+=-5bHaU+;Po5uz^VFW|P!#ILDnP5^PMNilr2!di_l&{4wv5|S@ zCJ9?m5O`jZx4$dYcgOFEpSfTivyjc*wD*wqHrLRSBIs6cVT4|059pfzSuV3=EHDF4 z02vQyaWS)+CX}<-i`W`c$x0@38dCnxIzv3C>HOBM>5LV`(prPnzAfEX7SG}J($^czk9z3zE^{*nF#3rK@5n9lt?k0O`^;3F)XA=9vPkFaLvOz!boS|6@y4!sJ~E(S_PV!% zPkiYjyWbFBdPO}&!0afIcQl^8+~nbYfXo!KohBfw&ukrv%udDA&Fe-%JBqw?k#QaZ zrQ8_*5T`^mZxb1F+0@yfVQk!IvPdpsdmFU2z~yPWr~F-S$e4?eBX(-9hp*_UQ}J+W znChnN72T-Bk@vu;wIV0ow{#5l!t=3$28aRaxEGzu{?myp zD=k}4RJORZbm4zGrShthImdBLfKaUhBotJXE-IdLLOCuB-J*o+Pzj}FxO5g3E-G03 zA54T~&|9vJIi)2P1;x0ZNLW~0{vYoPrHe_Uq1nAxGowk~uCx(J@4i~@TqRaPu6E3If*%c#7nd``i_mT!ONlvORRC{3tnWf&^3 zO01p#D~e5yEMcP;R~{c9tDwAOSgX~$q^#viTZ98BVbPL>6~&7ST2WD=5sQu0@-^p@ zxhJ@KoG{-J@mj91_GpFuZz>7?JGJLMIzJ4L@d=^^jTk5J2g0C9EdDRHv zt{UmgTT&s}$A;tDUv>1N!o1)_dADU9!0nF?>O;NHD=l51Ue#)89jWy`N}Z+WlrAYz z8iXA&)n$v8;Jl!e!<_GyB3dV|l0p@#R_#RfX?H}WzE*@CROO14*$T=RSm*ggiz}*> zVjJ@ZR0e4Opj6zJ6%XN$LlHft0`YEUs5C$^6*=3_Er6tFS)FsOexLT5%@7@VW}(nP> zvT~KZ?)0r+R7Bq5((>X;6{;5Nyd@EG!EmfP;2X zDXUeU>2lGkNUuG#Mrcp15!%zC5!%z%2<@dcLVGziLVE>ig!Xi5g!Xi3g!Xi3g!T-p z5!y3IBebW3cYBtt5qegzMrcp15lZk2WLeKf^0M zn7owJdmqVFTa5Eca8IU{m)`r@Lp{c!iW*}F_j4*5_ishfxPMc1;{Hx`;sH)|;-HVd zp}NIEczvDYcpwe(#d$%v6c7X+JU7L*z@a>q`atO%dW{QWYYvhn$5l6EQl>RMB#6g| zA~ClZF{~ay--Y^XFn{TZcCe0|U#`Bb0oZi7AtbH8d1?~2@#oT9Xb-}{3e^4#qG=6Y z8Ri(uI73&IggHv0g5-=cSWV1J)kk4*nX?Y?)2aDoo8?XQ;Z9V58S}Ab)P;KnhYnPhW3uS|MqKTYd;+;I_vz#9Z>K12T zwPZ2%AafkVfu7UInw|x0S}a2tqsVyOG;-!Zu4kk!7A!eHJTjIFVB=cQ^*VCLYT;bv zMx;p$E$@f($B2yC4~!GWd}#_VMvw*oazKs07yj*3f`nI8kvaK1sMOrq^gDOUYz-jM zmU6O={RAsGDdR46cDz@`KSZvC_Vo~7+m?4+dmfZfU0Axp(-r!V4#h)j6|)V0vxwp7 z=^~(DIw^xhMv6Bm(ia9|HbeA|6i371&*9j!Tfi@5h_jl(FXGr29t0tQEl zJ6SMjhR86l91A&F?54-K+kI4I#0zqidXGxb(q4W{Q+!@|C?UlPB%rKKnH?_=;( z4!*$#zMNhc(p3#U%UI9%a?<(ztuVX}UoEbEI_v*rYXG45&{lXH43?rilSK~_tm>U8 zVmxss%#Nb3ewm&)?8mFwcW^ez49(u+VRwcDEcWvZPXy$V5p4|aOFC921g4YW!gvTY zT0%uNPwM2nAwosv}qVD=fHCDB1xooVy9?B8!-}R0}oC}*-~_j+?j}C6Uuksfat8U`HarX-^uA#R&WgHh%NnY;?nx%-w-awWp#u6LT;cp~vAa0|f5ks-jFf)tlB5pS(Gh3<%T#zek z%acGR0y<-x5pE*%ZeRvJX0Y$iBJTsfMa%awk*Q2%_-=fi5TQm^9(%Gg@0d+dBT^-< zk@&OmE_Q>@c$y7R?;=q`GY6ymM?BY&1+u%zqc|4oE!S=efO`T_@=624UUwyO*q=yy z8QU01zv{}Qt1I?ao7+RuGoQ|LGU20wa>!8(wt1 zVo5snC1bEs>kR^>KC6>;8^?XbWMLLw2Wcoi<(h_-_ekIir2UjD(-=iM|6Z~n>eU_h zHC@TyHDAf~8cM+XI2)wIYcpW4KWN=Q4Z_;@41=>$*Lor%Xf6jNG4s*3xF93`;Pdu{U226`%#K)oGzPDoVxhdRm|Qp{RA zDk>z(Rj;FZgcLHrUiZ&fuGC~vPdYu8am6}2KB{|#ryE43%C1>(06+T1(g$1`C(a@3 z+PFI-^T6cZCxc*$a5tb8kv`HrQfy*d)x%RgZpcm|WwPFJy_2C;Bz@kvsgutsK6QXI7*JVL3BkpFRLDhZU&X+im{3!<8^fdMQEu1`WK z3`&*hRjN+%Qzxl?Qf?&}B>mH1N-+Gr zpxUkZw56&KMIQBDs}&jjSzBxVvyem*-V3VN+Rs|3^!iZbLGM}hsWbF>>-C*)!-SdI zTwjEV&1PGsdSKUn(Lz1e+mX0LQX{A_;OG|7U$(X0z6>GS+^}%q)PC7gU4|00Mu0Py zUmZtfeicH;9tS!fU$xqC>qDu89Rbn*2yU7;aUxsKEu*ts7X(6fPzPhgjX)A23tQBc z3wPU5T-vH;TPsEwTfZ`CRp_IYE1u)OzB!(&S~iCm?&?HVg<>#j0sFa@grLQI@dRI) zc$`-zo^V$t9%AV%T5Pe4+zw`2hY)64hahH~2xhj45N4ZbjYdtiX;4tgUX3U8&j5*PiF(*P8bHd4(6TytR4w^C7!RE(x(EPZLq5QZG;rMYK zLilkVg4?Tu!(gH5utTZzC2C&PB4BUx7QUR^i5Q)51b)Jj#-|>)q;cuOf|AQvE~Aoq zGTjmmOT=C~XYrEu+wVNCq5ki@Yqbo8Hm6w33~n_bu!Qzo-eq(0DpN)}0%R{PDJ?E3 zu5bj~Kt&~m#RVk@S5ct{*}P?Q3KrX~j3J8)%F3-+)&27dmQ*ec6O@N#N*tyl3MxvA z)oftT5quH4RE=*3)18fn78X@f5gleKh21}uSbhDgTB38Go7i|hpO0MpTIaOr*L3__ z(l%F)s9?(xUhx;)t!@mEYqN4Gp!t;xk6N)}V}BtnizUO#y<|OWWg6LwLFnt9&_56~ z+lw?VKEmhh46#H#$y0YSxx~nUrKJM8W#UUEdnh!Z^u^+DI{UuJF#41Ic$ z&}&ZeLD_2PnwjoP_pvv`O;d3rN*<~_5d*E{(KG|_HKF`4Ce8i8y=K}ohj?aboJRP5l@Oc_OOYnK>OtxDJ z-SD{>pQqsS@+9&a9?4#ipzBOFv;$r6S%J@!@VNw^o$vq)_aAH_^cuV zB2~Es$AA?{>~IrS;uG-6t{7&ruQB4ek;=wQkt8k_!?FHG6F1;tQZ0PY0~a;oam<7` z;+*w_99{G2AL^PPg*89wLfq~=Dqa zlXt_UBp4A(4CzVi4bYPcLt^2AB>k77F5sxHvDg^&jUg9O$azSs<8~_B2+RnXeH0g_ zq@=*vWWWXT;@IX&a4x8I@oy2ut(De(I;6Ii_2c~D?kniEZt0Ln}HV|Ujs`^KeRz@-xnvA|wYZEj!#OstX zIEyBCW6&|0;tR8^@!7GU&7s$t}W;i(TdNO~^ zD{?f$;cMq03o(Ba{Y_9LrTCpI)2;|QV%`u)qVVrs(^yr7U6a5%Ho5$hef?SYO>@ay zauSV&(@tm$D*Gf4&mWi?qF zQ>Vt6HLjiJawNF5LsiHbGcHQB4{dgM9w${i$J($KT~=J~FsHBQkPc2IZ$TdwmcCQa68)_n8-G(bq~vUVK91TarPE2VldQOHlhzNiw6TVNYP=6!wuSXSiexg)wVmz+ z$c)&9BByjb9*c07mIikRrjssOB&l@fAo*%GQ^uy8XTY6-DrGA@N8EwGJGB+)?{rGv zDc5RdH~RAy>+fWX1l~1z#i)@(Me^_|nGkrN9Lch=xlRpY7I|!+CvTx~6WHMusLCxM z`&^V(vY@;3ex!H)KUBiAM4sm)au<0Jlk1+!+sGIWnN9lGI1r;!$;NSh5yto4a3d@$ zoyCsKEop|DA9QZX?D7jKB5#P8Lj%{xRgy=$?^^;J#Tp{^5pKg{aO?g#g%yz}`7w08 z2cNn)mHXw`f7X>aA6N3-fe89~-j#{KY4907Hw6wNY$1ME;Wuu-ZVg1i$IT$K()RPN zRPwG!7T7*=6$*TN6<=CR&4k)O5w>z6KCAGFyFm;P$>#i7bbX84b7S-&zN;l?d9Wnc zS`gBI(sgmK+u28Q25h5hpi4rohC_53p^&Qs>#(YlSqC2e#b*>SHVAmv6-znX9M~(> zB@@L+c+bUtS??sSpn|~qh>)%HscV(<^E1~pX`6a;V2jeMOcdBHQ^m+;!8k-DQjbj~ z-AUYDZKJDeSh58~=D0EA|7Xm&ba5^wzCe)mO>f_~gkQwWDl5AIY2wMreAr|3(w9w# zbzR_D4;K$>1M{;Ee+t8s^-6AsKZAAGleTb8ht072oaS~ga^A-d?%iQ-F8o) z2(vUfX;y+5f%7K9h*>Of;N?0@OvEZQp+6n;5bv~9v5V%<_>_3KF~IKX-*qLDYf1i} zHZO5=#*H5bM&>x5uK?+vo`~ps1G%%|TFmsCK&}FwABQJQvUWTNiByb|ogE3s(;_l- zBIYhZB!4M}k$hRaYW$%SF>Jy(%tDh8My0@E6Nb|4uqcZ&>qmN{8ODcarKX&8RMiIr~e zk4dff>v8>~;Dfjqa0K6=g1>i>iT4~9__{H$hm?-LLjqrPuH-C7VH!ob^zNXnSDZM-)8pL zVK#yKFr07Y%MCXgc-onfkN*ndQ%0r4kIFAd@zML}8Syjv#gE2g@+c$!kk9AKH#WHs z88Z(ND8F8Oh#&dk9y5c!&UXYJHg3b$yWNM0@{Aeh#g9tyB`}|xxM{X%7E+T*GBopkHeGMJs|y?d>%Fw*2*Yur&qY0 zy0&O#sQDA;yrNbVC|f@ux6Vas^$w;v6Jqm zHEmt!Sv}Oy`dOg$v%sOB1-5>cN9$*KocdXwApIQ~AgY zYjik_v>ji-FLXM_fpt|NZVDa)dI?B){34Qz^~v-4d2F-&5AJDrM*hm51{>%|@`ayV zEA@h*nMiFq1y-_M@)VKNm#_1-3HaPUT|6kp!fozK_z)2{<8h>1U0GoCr@_$zYFXEW zPhB72>E}*&tO9w^)l!6&Zd59?$Gv)ajYoZFg#Kr~V6`aLj`5plxm18oQ z$#qU9pT_ZfEV+{)iEw<+-hudXF3chOvqq&EfE8QF16vd`#fTZQ3XcRsR62AlA5BMZ z+~#-5ByRb}z-r9Vo32Vv2eS6Wa$VO*W83G%;#s{HwNrmm6zBkdAkI1&Q7;tI(GT6> zNsb?kq_g5=n2-c1vCNLfOlBs*X!;-x4j7k&<(R=$lyfH@9LTGQ^dq6!@;SPONLY1~ z#{;WafD6++>Y9n4zh$pm_}NHaw=m#}z()G4aTj{Jsg6UY5H~5aamg$;_^E%d3jc$4 z2#&3Dg;+zLEJ#PjvIsmwWuQCsr4~vdV~5Ej=`d}U`NSg#n>SHpoQECxJ~A0}?$F^v zx|lbyh@S3(Omp>Gw$jsm2U%fKe9yWIHPu0?-T%knw*Izy3%SfQX%&My<8e~&=m&eN z8~LbUIVHPDqbF)~^67)Kd(jyS zm6|mkJxh~#SCN2^-7Hf9w_zWJkKD0vD^6tQ#l)T&3G0jo*;&4qokf^CF~1fMEl*SX z%%WEB{+#Nx*1r+nbr;HsMs}GD*=08RH&W#E817=5QTA3+& zwl2iYZmCGN4SUFsM!YJd9e;~8o!-gA9w&6iuzK08hSg4g(6FkVqw(*s@b8m~9xwV! zvHvrvQ@Yjc3V5g@k7ILe== zDSl$RGsO8Ihh0)}Ps_E;v(?+cUt2xk6~0S_djpOhbj+oCP)#7H2h|tbrTZ6^4n86y zy5w7=6kd>oPJJb~|7>JK!|=Il+Bw#G{yPq$)r#(Lu-|OL06AqOPZiM!atWb`NC+f> zI}!ZK(Bnl})PR`zfvMP>7f0F6*`ES(9RV?^cKeFLc!y@-0$l}HlfDY#edVXoIiGmO zZ%Xs)H@i1btJ-q;3+!@VZ^%~NYPV{gO>@0rPlq?@>5zMNhIuA8YF<2kB#|Lk*_O+7 zTh=YqbnaBHOM#c1H9o63>Esq8W?2oIzDQ&IQKbwK+zbmG&H04YoPP~&&h!$Ey-Q(N z%&!pH?<{_KO#gFf_lae|L3Fmp8?XuN80S2Rt?fR|j9(yqWd%I6cVLMp5o=}a=`IJX^c_;Y~w9fPLH zeFuiz8_2aYkiRr+w@+<2Wp#%>}G9v}PWaXy-bbWn|baBhV}(aI%abh-Kt7hGnyi3R zH?{pD4fiwQW=Ef-}{yNY7x%)ZiFsV{3fbf@cx83Qiz`BHo-@%_$DNr{h7nb9w$ z-;4n>Nbog2C1n8b&2H#Sd8umKC56h1X6+UgE-NT2EKeLUV%Vqzwm{Z)Nx4=E{O^*| zYhg&wwc3AfQC>mWqLIV%N=ggL7ukWqGIIpw6s%K{aYmRv)w-*cYCS}Ta-Z^%6w`$f z_??i+ax}@T&TswboUnw&*2?*?D1|ueXFgx$;}0&=Vzu>l8h>}GTNh&H2d+$5Y0LEmH0lpZ+U`Cwpz)0RFx>BsWZ^(e z>jm6^;0ZfY$+o;mpMSwmvXKBU;Xv9>jyy@HG=n%q7<&%^laEDs6Ql2CQVjhHe%>vi z$$Sv7g%>id0k8SDkg|)9aXDdl9ZAs|m673*}ag z@{vZlnZv%;7+m!+;@pYtz-^}0Nay)r#6;PrNbG2)9K0b0=uGhWd&{Fbzm3T~$C?R=U zNES0vh?D+4i7oL0;7KKGReLf81XeSPNBZog(KbcIM32S;>#_*Uaf}v!zgj1CNG9bI zFh4@E)HBEf>An6mppC77Pu!VSTn5Ealw3u>c7Knbn@Ctq%)*5G($UOhzVM1Dvc6A1 zZ@Clu=&H8Uy~gMcOCw0Y$SdX#7H3HzDDw1$ONSUanF?ur>lf>&pMH&|bEi7O-h>&1 z=l!ecr2UQSbCumZNage5+|^W1fsGH6aAC`F2Qf7lAe7S(CED(vXJdWfzlc6jQx+Fqn961G` zBE!-o=!6ZsOnQtV(Xy3EqIW#i0?vhoQ2Dt|=jR2(GB$;CUH`){C&C&Xy*CJ$9U%u! zB)%6!$jK>c19^4IkP!ng;^GK38x7n5vow0&4Y(ZO#|vtxN;5JLvtN!>CP4$W-v%{K z&kq9~tDti%=r{}dya?yKDNPcASAkEnz~e3O2^3-z=Nu*~=e~(FMo3>_{Rbk{U=;BzY)gnfX>hJt_@5;Rq`_k z0}tVM=)CkIBSTIRty7vCU3Zgi_qCuU%8SL*_=CFxdl7|9B9PcRh17Bg6C@QWS~6tB zR*ncw^CONV8S5?9g!_qvzauRCXBdgY?EPx;sbS*Si&e$)u~!y+5_bpzZw%yG1i$2R z<&8zetL2ImhqKp4oK(K`PZz{EQ7v%^P5iEK&j9h;Dj+99O2FacpsK_2^%6slGfwlrCiJPaLV4#xSRdmqG!HRu zb<_3A$9^(Q>BaBOZgzEbji21tu7PJs?ARgHP;;BT*HWhHpwls$?km^`YKKDU6=@yr zZS#m*%6cp~*<*pCeiqpjx7z)^oSiA|SN}S`IAy1HY(}+ELXBT7x$oz&B7LgV8+uL| zjHyyvuK3U`*ZqM#m^FVKmc*SXS=51ph#5)y?pGzn8h0YmIz~6qNBCO0T;}C^s!6hT zMOrw#MgND3w&vSkv610(lSt<17p~U+EjgldG+?nRXM5 z4bAm7P5A2&!e9GD&d-$Rq!JrHo6d)%IFaE)$}Fz_f{dB6j$nsHT4k8Z-$V8Hv~`Mw zU>WzkTc_OUw)aS|!@rk|M8KQw#7pz>RPWE_M#-kDtJmBO($XcV^^i6T?OtHJzlfP= ze|Jx_HW;<{IFBqAaip>6u!wnJC?CLfj#WxdWV;q)liz!5EoHg$b&d%@ZOE*-U@;XU zn-CA-ZzpYQ*6Tk|Uc^q`^e*sEIup0Gn2Ga(Gl0jzJXNbyhrK0N!kQE zMGfVtl9L=8ocI#n|9frg$vOw$=^U(q2dhg39H8wtJW!o0=wf>t)yuiC-ypYh1LPd> zOZ7$;7ICeTt_UB-B?L&AB!Z>V9&s1a=TkJjJ{C}O?r)9ll#kujawt4yOtZ#W`olUe z>!CZA=sQI8;{49b)OGG@MC@O)eqD@uNR3WZvH+r;~MVZkZpDLP~gu>m|g& zrVtc+t^09nzgqi<&Q>j`*&LJpPzvQiEiO}Q@B!jtq^e1{t9Zy-Y}<;L}g(1bcl>Kp#YCcrPR=nv>pF`L+)xRt#zE% zNMhhZNvW0)`KwOt8ZC~J+*gd3Y>}JNdA*}!me(ib4FX%awK!3aYxLhclwk)5I3<#@ zd|hC=%=7!S#0ofd71Hg`QZz9Xzcvu1RAW2R0hE?u+y{^za}0~cWRof+RO#&2?bYc$ zt9pgQQ2 zAa0^#K2hAkUJI#%|4lvTr53vG4e!5Mi4; zH68np;=N(G32)JYL)qHyo+;UJ=M0PkGm#YAV167@Jx}qA1_|$IlK2!ai)53)h;;xv(=qgZhcGl@DRj>9n004G-YQbeN34~h?((VmmxS^pNy%-z_f$#y+9>bWG+ zG={A)q>J?sh_Gx4r$4C+`zZ6!)(bNpwgzNr-*HiKKNH#S^cQzxp-GY;TZ(Zezs|YI zV0-!V@i|wuRR;Fj<&8ID$*a>?kO~t#Q?neO)>@>ms7-bLsFa~(IY;@(gke}MQ{sjW z5~N%XU%GaW#(iEAz5mEI3Q1-UMqGz~U$%ennEwE71C3PJ>0hmY@Hb`9P#Cf5KH`XM z#2v>!@%J+R%%Qj&oSOwb6Jc%~&2^aM8h=EMm`&v&MjRWqP8d3LsHnk#)wyIgNBKp@ zPzuAGC0x$=MbM#(Ij6IQ_vz~eMpBI=NGP(l1DzAE(a5tUGE`#r#P8x*hpfPmHeHY=##5Ve(nv`0egjID&) z^uqhBH1AhwzG!3$*oBJ;!>RasIf5tL zfTJt89VMTgRfjjLu`pewhsvz{Cyg(r8 zY(gbLI!eQdIn;^im06IOld=7#P+j6G^QRTlxh`M#U|rs`0_*Zk&whM~z$ez_-T3mZ zhwC!GNnO^zsOxff2R;6H+$}3*U0W}Ff_1eyP)bZd`W%r7lkj5%+b(#|zk`_B#2&=Q z2>$yS4m}RrZiju(VYgZ1jpjK9S;Zjy_ZWdd0j>!DaHk4*2*)jSNmLlWQ$M(uR5G^t zBQ7E-Dnw;7<`=QzHq_GkD%&Lw&YlKk8)qXDGi50%gKF+PSXnxVts;cB@1R5`6wKWO}GA&9lK+@W6dO| zV!8mS_`l};)!A^nO|{)jQ5U!5e|SFsGW5^qc$dHApr6kHFZ-n9=L@-UmOm9~aRli_ zNa0QEm+yEF{RPM6(T}XDK{6f1;!{X9M8L?@b5dYzFrz*HO;vJ1A{V4Y-5C$P#G@e% z{~Qdyh!!4lg#Ypd4w<`VQQnu zo8gmCd<@AOBQn;iT|^9Xgnq?yK0)KIitZZM(!LrGXL1MM^*Z_}lOHGZ$K??SY{J#d zfv@&iJahh29PV?R$eZ6>4ulzr6^Qd|St)KF7HNf~x_5QCkGOPojg4?rR~l(u1XWh_ zdm8C#>ztlXyc)PQP>O-u+_7+e?(BRFSQF6fHL9qK;h?L5TQ^Tss5}eygg#lm7(I`$ z6rq=;+vyG_Po&D47v?weP+ZK_+2Efp&pBNaWz}IA6v`mMK~=IgJMO2CN?DsnT^pbW zU3TQb!ZdtPI-9MG9HC5<``GOZo}+LVLU|qlPr9hNcZzX~+4s1tbb?9G#kLjXo1;#F zNZ0atVh)i)7FuFtD0XM!^9Kr8Et?6T{fcvne zW2iZwWwo@iqSwowE?B8)NcRO-CJrODFZK#QEXy(ms%rg0kAeow)K-$ApUyX2r_RLV z47T5??_qKMms#c=(!bOQf~Mpdw&4iGnMOEpH%lyMuslDRj_M@_iXwT|N|(V&w#CKh zuk?ZW3O;UCQ~B;CZy-ea@2>BKa=Qa>xMqqqYqxFNCbmfC1#7ici8W#^(aqxkv4LTH zB25R~>|TX1CaoWES3s&F-d;%eIg?L0Zkqya^8Eatbo1VfyYUnA4Bd*L?EiNh{r??D zpSa`b{}uP_ZNL0Hjtj_zrI(#x{@Q8p|3uCCH4LpR94y z%fHFG!N1k0LKBzTO$X<~f)j1r1lxOPtFuJwjucv~6KPQWcwij4t7_g9XDbDhW3tt; z)vO2aW}83k{e3}MSwWS$Ob_+h9O7HG9nQ9$o}oj0d)r>Pou0kR3l=S2*wp8@!=Qwx zsgq{6(@Ap&rw8T^mRf^wcx&#cJuH|`*iIqdnoY}Fvl-S~v)R<8MCayQT67NQt=V*X zYd*>L*4#y_c68OM9bFx&9bIkJj+3=&$H`9Bj+28_JGweGI=VVEI=VVEI=Y6{=;#`x z(b3hR(Q%5c(Q!(!Mn_kz(b3iR*4)kZ)_kh=)_husx8^QRZ_Qmoyft?T^48oT*jw}I z!QPrXIK4G@2=dn4J;Yn{=?-tr5zYI7ceoFChj=A#*){rcxF*+b&D~Bf%V*er(H*a6 z+OIuq*YG_;9H;jP8p1*Ll6nSto$uk0p6TIm4&rukdnz-Y;p~?ry$coTiD?hbOXE5vgmQh^xCM@>zHy zk0>HfHBTfzLKFE%cp`fgk!PDHQg?ikngiVf!l=MfKc|1>K#Hag28Ee+Yh+INV z4sO`q8g-Mj2(pbOG2f7wD=kdRuzsBlf0q;fc?o}2D11$%hW~RLvz8vEQ6C6GEenI{ z4K7u*J#gBHT4$r~Z)1jQ`e@X@x3#Q&HR?M-sI$VLW(1ctMx%bx##HNU)Nk5a)_xlG zC%Yfyh$liYt$vW+-ySRyz9M}F@$-e5-VBOsfJRvZcJ6Y*=B{UO!EDqU+lX2-P^11K z2sKu?>5(4|9%%B6fKGzG)6;PPCt)ibr1p0vC=<^5_Y{tF3y%plWVlon-}w7!<^ky{HA z0W;sBu1_@pTCz@t`@(L*)hC|Nahr@LPy8zWRdvjO(G zq*I1GU3p$%41@WNl)D>@{dBpxmdpSOBl%Y?xI9ebzosq#$*`A6s-a)2yo^+hov1fIY!y{=K3 z0K2mi$(}3R>?;LBj<`})a^qBm*wELwLy|*0_{E>ZIY|W%-EHDH~1Ns>n74F<{L!TbIlRNrHN4KmA^ zs;SlnrJHOdt8~*e#J13)%6_{hsAyk@7OiHCCUCDx!Z$>vVafQ~AiKk-am4RT<49;4 z(dnANV^$g?gVU(7L7r%mMlz-Gbx;~>0-;Tmp$RcoORT62cs%(f4nsfu&+Q5n(Jg0dIxwWyYIa9n-rZ`%sSUXTHm;Mrax_ z)L>hK(l{@4*2vcQHyYvlcD@a=p-B?lw>JhQksFdk?PQIATQfxyFV# z7QUA64XWjHDnn+d8TP6K&DLT1g&OL1I5Fl`?M0fzR!Jg%)-F~)LxjP{aD)GrxR)y? zMpT74t_!~ssy8!m%D zG5-q6U{?zI$`vkybElA;9L1mM%+I$R)ah|YP$vrc)@9YIo#b+i988hV1r_OUOkzaS zA_?AZ!wWh;1U-;~UJ6T{s^D~r{v?S0KBk}46hn}m-VAuxhQ0>R4HR_H6oC^t_riDAx8dJ=_v-ApGPMv+fBN%SXEO<{^7NL?)hE5+GG zlPT!j=6dMgIWzs8`FoXvV#4*IG>RGJ>_X>KNOJi8`2rJ)bJG5bgSv*J{VqqHb)5s6 z6q?{C*L4o+B17)uNQzcXsu*0!RRS9DXEr%50o@iL9CgK-B&!SVT5=4Q1Xs8d@fpX@ zD*|z(%0l0Q0%+m7){UQy;!RxYETP!T)e_K6TB64#3b&jK&ZRT`ixb5H+I)>VOe)!y zW#KZ7U>)g6);WW`i2`g8Ii5-~3616QbQ4B@*c6~srcX>F@p)2h>rv=A1ulxZ0#cLE^OL4Y;?TsCNfTH0*cMFLMr?ryD@Jfh-gV+5%PF4q?8Y!Z#KPCb>l;ZGyT_pxcYitY$VTodZClneOQqslRKG*x|n3yw02c$z#6U2pWIj6 zE!LR#h`Xq@sg8Y9Xj4^ML@5yw9Fj2ts&bu1-0N*p>q!X{<|J7~e1*me6>$Zb=AGqq zx}9F7u*Sd`*>|}$;go6EDCq)zGac)E46dT|kwZ2xdWwv3%xWTo6=QIHoXJs92sP+& z@i(%YznMD4lY$*butM!+xP>c}1ecMA*D=Iw5u|HilKRM#EO?$HXuC}9EX`LfFVgJS zl{%BxYC~$<+>tUjxcPhshp8SKSN~cMbkVi zvW?us!V4?2CK9tvD~RX&H5uhjU~HLS%YJK&1UQHk%zlzZzE+UP_BhA_130B+Sj+^ zkA!a2!)~>v@{(H_q%?1&0c_c#uCXEBa9Hl2q)$(F{0A!jEg==3wvNp*rYb7G)li>n zC~tZ^s{@sfwSB2xsp0-gWZ^PYfsQSOxYU1dt?e1rE$1ZIu;&%A`2KgCQ;rVv>qihZ07_n?#5nhuv@TBx} z1F=xzrMgcZ=7sc@@#9qLTZ4~WLOPpXwyr~}Be38A`PQ8tM?K2RPMgn<^Z7)~ynN3X zV+`(28Xzy1f^%|lhQLW=x923tiR0-+z0sC>yTIiOPETYftV|xKkU(Qo+H|tE$d7{| z4dF?@V!gfO!kt24u1{qdIyHq zrcLipx-yaWV}TvP*?{Om4Bi#U6+2~KN_1X6xAQU+Q^L(jNfbnrdTj1Ak!)_6!#Y4% z&y)I15+H~juuBwsYUpa^$LfQKxX#F=%vXp!PX`Qqqr-0awlV_9hH8HSGuSCb?Bn@R zor}N^xJgUTNM~CiV@T15%d_$eq6m%Exkwu)=t+2%XEylRhpArNtEkoE@DHhn{4H_b`yX}Ib#twdp zH-~0Vnnq(hQ`n8Uk?F~yh5XV&AZ_u=T$;q+Rt!_@Kij$_C>fb1sXLU`wu!F&$vQsxX+-Cy=fz?PD1M*1n-NP`-AF|fHBiyz+{-Ne6!&6+hd2BVVv(nP{kLq*(ikbhFO- zFLH01!I{DzRA+gH2{_V`Of2Le!1_v@I4J1zj-=(Bhe4YuNO~YQf5I@*fo4OGSWFeP zgI>t=)1R8W{8{U1-llW0Uaix&k&?L3yj9{N@TNLGSY)FMD;<);m zeRYuu+Htu5SxcKIyBsM{WmW-r|n^8cbCerwne-%KQ1eA)|dy$yAZ5uVO{8sf(A5cM|1#%5^TuOV)2 zhK3DsXEQW*YluJcUe+^a2+l0yM1?*y*V-U|R(7dh7T##{BAkB)dBzRJ$8gWM(SH>t zO>%2|@|?OYKsGx8BVWQbLmxI=59m}LRjHVm*S_0`*pfI5 z?wrW4N%WcuJ#jgozXc-5M_4u)U4Z#%GUZ#?%*iI|Pb%eGWXhihr7WQ5G?52|5yr); zDjw81c*d~$hgXcp-#{U~eG#{2#uRlu0xRimD{G<_{CG&?f1vET)@R0Tk=+vC05X1FXme zPa*jbOMuyp2nL-tkOx=7EMz+b$xuBVOM&}WReeQS&Hg7#c z+$-nQG$I3!;RF`4v{Pwc`{qgUfqg51&V!J_?1UobzX^Er~$ z{z*Ck+l{7BVh`c@XpPYqj0Wgb3ri2sDF-@T2aAiqT{slPG-ASCPhkzPbPH{F=#1l? zJd1bjy^h{wj3qu7EZ;%~2x-%3tUM&S*2eGMjUcdBY~ij0OQOh3KlvtwQ#N2zEiFbKiK>0cX>cWh_(l7Ka|I0f2%1|Efj3zT88ED6b$>L**S_o<^gly=A?J|mF z+k~;!jU|*@Ld*(+u~9Z`=o<_jU;l=_R(_7JmGKCJKG$Z+r31bLNc&DqR-flK2VzZhFlwOiX#ch30=C|q-)w?I0boBe} zOSO|{5`s;Rfo^RUUdH&gY=KJf+H_gF!?d(AZ+uwtJXjcjHe{5d~T!-3Sf||oE zk_a>@K`^@ONc&1q+tBV3ME`Q4L!kE8_GLc(Si3V{=X&r2GoNm>h}ml9>!C&bw} zhZae^WUsVp<%-dZrf6U0Ys_|M-qpGFnr~s~)|}M75=3`xcL{1wZdVDSyS1+bb*Hww z1nH-@NTRjLr>=YZN|1j>yGu}i=82Bq{GRR0yz8uXXTIj_6V1FUvVEDajcRx1qx-Z- z;?^daw~f#DZC~co`?Wjsb^T8?^XUWIIqk=`f7&0^B8hK_M4Zk%PW#z<+8^A`Y2Vxa zX+NR$%nwmHuug|HL)$smC$@jCPio&>Kcby;{m8KR$8$){PdQ;!*Jy>B1&Q4|m*0el zPY{RG=&Rbrj`ynghlF>s*w;gRZM$W6oui-lo>pJ2i@#!S|Cy-H-n-$kq#k6XY` z)lq`nqGzc78Xk4CLVbf#GbHLK5>=RMaGTRxRaQ1^6fuOm(;r6+PUAF{ zxQV(%b zc~(-jlY^29$`{GVBF2@0G$yaocbylSezK@GhN!g93(omYYf7$bg5~96nOn(ht`<+s zpJIbqE5c9M7}HGH29?5yVfCRwq&~FvUaOhjUYUh}m>5ow!&N0sZBnd}nG$+p65r94 z+sj4%v|!*g0nrLLkBd&Wxh>%OX+gD%31c3u+KiswLfzC%Z>DbQL$J0Y)|C*xox9T}yh{j#=EFK!$4`E8@V zux->AwT*gd+o&&Y8}+ibQ7>;B^(AeizO-%BE89lBs%_L)w2k`8wo&)Dje4MM)URk8 z^;K=7{@b=uzp`!A*R+lL+O|=@rft-(Z5#D--`qCpx3-P??QNr8+cxTVw2k_mZKJ-mZPd55jrt$kM*W_)QQy%v z>VIk*^?Tb!eP`RK|D|oz?`s?N-N7e;hxPF*D56+ovp&ULUCBksyY3TlIX|a(@w{Lk z3n$_Rp%w2Sp78VyAmoJXv@H^iYkMh#ye>g+)b7s%6EM;?rSRZp|TW=Ls*kyAT zH8EIiSQgyf)(f~?r5c&btE?DTmRdI7gZ#WV@d@9-VLZ4aWsyWWvPWelaPG5zTLP zN`u*+TbbB~r`bP>95zx!(zs@Sd?DdR2<#B-hSidi{invQbCDjL(&0_F!=F%gyLO4> zdGSNy#cg;>Cw;Fhb(|&fS^V3nP{7g%lK&$IKcgQfKXZeHbVL}-dR-z@Bp2X^3I43X z3&eAR#B7s)y<3>XU@-qF*t`)jqBF!5l<9a_jDgR8C8R{MiSUgLIDTb&(#wX}`2>&EyYA|5O1 z8d+`E2JCv9-n8DXa9>AIYXe#Ib=Z|CzoO`?!IcOGIRPd)PI3ZRnq@+_4JIu90#3^G zjl06U2_O@er;QQ#M?mLk!bmf4siCVI$|94VVfE|2*$ zv3jx(QN^3EvNYY?C}3Hxu6DcbE$P_w!?xdUck8uYXMuNsK1!^7t?>SalsfUXfU=D0 zy~&J!lYIUNf!r!ltv%C5|DuyUpobIphbheuqYeVbtit4`#gQvTBNnRS=CH+-ypbl- zA2L-S?$j;ZYt6UBSXNIp(zzYU@$hY8!mMr9wdNUeQaOiQ(f#&ei0C_%8v{ZpWB&NK_0Z8hQ`hD9jj`O@iTGEg0^e zVO7E==OA_&I{bELc(fgUhuiX#o;(SM5$mA4ZQk>5gd-&pb>yve;=z^DE! zTz^Oc-WYLMhCS{~_N@J^zsl-I)w&<03tc63c9n=}_HI8lS=XquE8xKLkv@T$-RoFN?1ZuW-NQh&4XjE z?Zm&{CTSqG*WJ@#F}WQ70cV!e8j#`x{w%_O(Vd7rxdubYNDj{Lq*VDewFKhdS(=iKq?0*up$fmQ7Iya7J@41nCkQ4+@55)6DQB5;mJ++0+UEyS@h+zNpm*U{`5LTq#mvq(19^hnCd^fQE56%2u(hsee%-SwA+wG+9 zp0FZ9W1pQf-F)r9O$pp^hWAPbO7C+AU`IFrl41qrA)=DIUM?^{2_!c-5T> zWm(z?@2Q&hMn&5gaEMIC?&DcLV=NQR6AOqi()qn#IsN>~J&n@2)z1#oS5|T3{)1Yc zY;a&>b84Tud3Nzpac{zT5dfUPF#j93p}T*JebgxvtahWl*+aF#<6q98uiABWpW!%ANgFw4GVg|sKC0y-oFMCYZRTs4p2z44%TdD-O=*#Wy_uu* zhdXzqbJ_@KpDW2WI~n_TxClFLKWqO{4}B-(Gq6?1ng0RzXXO=TS&{Mw0-rM z!Oqr9r?WLPoU=7E)VoY4@(o6HYk8ld-aOmRa&bjzfpROvK4X5|V;v37!jl0xZLVKS zQ^P}(v{Cb)G>Bzxtisa;7L!$RJn@`)OdZ6GUdMQXl`3ytXoo}bXJ?MY8R|>{e|MM2 z^V6SkZt71Vuj1T`-}n1-(_v+r=S-Y(*$?l1IGOQ!moE>b;&(_81kC+{6s39};-k0; zJzhb=0GA~ZPS5LvH*1U}^Biue$eXc0i!iSt%#@ABKKZdjv$xIZ2PgHf1yg$o2Rn*!D zKROTZb$0j>K5gv8`HxMoUh6)pO&uK3K({DQ*-*F+Cro1^L^X&!TobS!@<`#-$mS4X zM3d0(6sTqw$XW`rzEM-UOKk#4x3Zt78>|Yj$7A>vw^Q_$>oM^BaLh%f+iK`b;727H zX6Pp1YCL2U@F7&_$d+5@v?q0185>|9C+O6Z86WyzF(Q0_1>qNMg_IzAQuD=q>i!UQrZkH(^ zYvnYz(tJ^KhP5O^WcL{<{Exfz9ycYv?1WgRA&Iw$^8eU-7q}{m?O}NDXKlyry^DBF zKtaV4&`k;^6kuTnmYfsTffP`-iXj*m6@|S?PD!22?4q6Qf|XWw$}U!FWpwe#hc_H$F0J|o31S*BWbDx_ykp_sYZIUsG2 zh+47PG@8|HrTtGpS}}KA>xqpT@=RG(S$u--fsfI3cK6$%n%5*kwW;YH&9Hepw70M2 z2ak_}`%gC~_^G_eRnm$R8IBy87R4NlpPh0shO#D+V~vA!(h<#vT7$tq8EPi$6=Hx! z)K~fdala%6rk~FfeSJ4-?Ayg}Y3yVAzCMoT`(50d|8I2HeH=F>zi}uYx0CZ$} zEBLKWrhkJ!Yx~B7>KacT9Dge}`+YnUtASG)`o_rgZmVy63>lX{*IP+{%gkFMjx_yI zI&HHX0)%-RD^T8RyJ*L{U2KkZyI4gF?O0dX9qWn!$GTnYj&-}(9P4(mIo9nG(y?xr z0LQvrY>suiT8?$Q20GU5q8;mYv0sq61NmJya`IVd`YjIOp*Ud0>0xt4+tb>8^bFj6 z^tA6jdWPD4^t8El?G@zOwO4>^*WQ7yU3&+)cJ1An3*}$q^R;&j?PEEA?R9kLuf0M!f9)0I{1w9ibLJ#1 zD4c9x_AIZXr_kMLC6jTgTn-Bc*q1|jW0XTH;)@1Zcce|xGqow&+FG*-?t*Rzj;TFS zJa)N+`)p|)L#&$)Rg<+ZtbrQ)AYN=+_{y=yOGp1=_!trUhoKqZPgx?!JoKuIMAVG4 zMJ@Qkw0n|4y1b#L-JvMHpcuis(HwCTU0wL;s%efU(#+I_>y%6uGE!Q|#D+=MU=1*W zm+mytGDQpMR^sWVnZ!e`A#gbvw(cSzYz4dX6}iZAeG%dM2DdU@ zVKgB+KLHyc%asU6*ceGMMqT4$8>9%nhHPw#jYwP<_@^)89KyNINjG*;gyu5@B*h1| z7x+49P_ToV7Q~%^!jFrrPbH7VyjY&V%y5H~WTN>(8q|qZr0`)g4v$+5I#}F`@L$%Z z5TcLh7nHQ|mwuKOq1$pykg3OJE9q5rL%dNW-ky4%ppmp%oGaXSPYLCTFvL;e8MGD7 z3@|rXFf{bpqkFS(e}(A!A=qLT(sGU8BBWK!D;zi0bE5l-6W!$KC3*J3s^eUde`iVP z*C>(v1|jbl8!g!jrlN`7Fd5cH3rr!yWkSy~UA8*|Vyp#+P%W&|swR?MilCLXt6dAl zZC|jvX(p_W-WU50BK8}tcQl-SOu(v|~Va$#wiS70bP3o8wN6(dN2APbz+ zTsNbw4Hk`pZXC0C6u3ENNj-GskLr35{IN6} z7iTC*!CKSh>y31O3d`uW+7(V&Yer2+ram2)xSo8{h_Z-5t~>U~YW@YQ$uZxXG1r?h z|D+hPN*ky@L)VrZ*HvJx#K$CGfUjB~kdM|dZ#k9QPlj1)LeyCh?}vtHwje$}S~;n) z8s=+f-(0LGjqu?-%G1OUY8PLa{L*eBtSmn|`&#jhR(vaWBH4$mTF;VGgR48-Mu;%+ z3+I|Dx|+sDrbmD;i5z2O3rc2X7{#~Ul_F=TIExNI(?yz}#5ecl*nT-UFJr}gjC0>V ziA)3X#enHjlviKmD&h(Q-Y@BenXzhyW{`F zN-c>Zp1XrAWwwY(f)0Qa>4FuyPQ#D#^#a^QBAKS;RsOY-&9t%kOj7v}chSpnoNzz$ z6)c}-lgh(?`8FPdf97DD8N7;vt!D6Q4*p~YS8(u0GuYrH)8o+?)nZ0n%Md@9!IdoV z8Ie%c#`-QP)!6)ttT{bSSNlzF{tdzy@)MnHlg3sWNvZAWC@mRTP#b98IyF({>`Ir! zYM;QDKx8!ZKK1t|GFNRE03As>TaUh&;VY5JLvvym621QLn+_wD=oMn|)~DC0N&57f zT#veQrWX_>O-L$;n_3``vXjn=H>z5UMaTdD5o3$9g@2w3@w5FHKhNS%)Bn{!N6eNp z|4o=)a3R$Dy{2qYuvoYGGo=5Ll%75*X+l=qq&NjX>(cp^l~w1Kq))nL!ZqpX6DGxF zWhKSMP38Zy;`vV;{)vx|i^t^j2@|FkW)V<&d|Xysd=~w}Kk*DjaOvquSV+=@NeDD4 zD~>?uf5N3uAubIx)rLtSiZ@IA|4BM7lF~2vKaQrXsW_f6o%3e#uO!N@$dM^=W>Wfz zCJ|K={&yCKGiYj70skvZpPqhUoFQcVUET=y+xjJdGs4cV_ z4x#qY`UcJ1OuH<#5;~){HLBVo&+)3g@f>e{VfljbXXcld6;>>;BDw71+15#T34&FX zRI2+QbV_Qs=|efQnnI^^#W;%!LJply6FB`;iM%0&W3_9bUwu2TdQ zt)=kb7}qIKlue%z$wP4`IvDq2m^zmZ<7T43IIM#TDT4OQFzp;SY21(?{Zrg4a&8pc zP)zotld~r6xjC6S+cDv(sUk!{+BN zS9Q;jGGuF29`2_wrlC9OLvQ294^=6yJ{UnyW{%+gVFMkd4IH3d7h72OE60PRsyQQ+#MEY1^DEq!aA|!ZsP@Qr3HX z&i?@)X&NxW%v)&B8_s!woW-yaY|8Vj-z@J%hneXTd#0G96zB#NtikZW9>+ADNLz_^ zc*>t56;HB1kQ>S|tVCbjX5^|ixlXsq%TB%3ArWzQ|+ljwYTT+u&+UYX1* z$DL^zt7Df-t?Wwv;}Y;XpNUgS^LQiJB(b?|Dp>Jud4guTC?ug8XfCicWdD3xqF?dtJ`c# z8HgLg3dsv%Vz_z863p}n;xq1KvI_%?F#zsd$rPo%pFi@usL?U}?ZxCiF`Y60lkjZevndGb@KOOhC z(Z86y8_AfG!Ut{R*5LOAq$a`TOAhMJ+#n-uaXy(?<=3%kUitc4|u-JHqC1`~8rOBqXR;>*E z>{OibT6ea3Iao?*RHbkn1kW#%nzlLa$I zy-v&$i5JtW*BiwMaW}n>Fcu!6bLKPna#ua6NL{b!$aEnv@LBrLgb)C z6(x+QBVr02v!?aa&RREW%>Pg_9=R~ZO1ig>xm(a{(ADfS&(#BB!dZGT#=<3SE`Y~y zja$L2?tr76AA6?pE5-_OK4$Pzi`cxm6x^>1B3;9;ri;X@9}&joM{XqS#Inz&U(xEG zmX1g1fol%0O0*~%RX>`b5cV1I=Mt}w?k|nuEm&{XxURzBnIb2eoX@1uEpHk?5&5)E zQ@845I*wn7CSwoQDM8K1<|lM3*q01@iL5M8hzinenAT`aL{+WAQbJGb2+M^nBnJMm zTEKwiaB7BfcZkr7C_Xa}1;1RlI0Z>qO7su84!V>sC@q0m?CNq+y=}xj@&Y(Bu&Zul zFQq@=0Lu7@of2Z9MtmFiSBed=G)%Ydqq=psngZl>krPLckAU97v0^c|-N5f?RipE1 z0heKsFtAjBH*Yu=bGyiNLzf-&{O?g3O?0qsjBe!`r*Sp8v4)c`7-I(ebo8A=LoK?M zJ59o{8<9~hD!Qa8i5d>^=h6!BMx^hzABQ~Ab# zgy@7;7tC@Q3$O5v>)zfX=vIx4s$uzsgewP-NXD}EB54$yBn?CK7W`O4Im zV4ss7$##cFebp?MZnwRM+h$)}^VvWi=^*ImN;LPk*##N0l9woQOe=Yg?REs4S*V@H zlEl0SVx}JY^3qo_2?O(1N(hQ=v&S6K#-IaV%pi_;oZGSM)>;p-(Ho?W$mVtLfm50bD)LgWtC;Pg3+6xgt7KFL0T55 z^e(CVJ@B2dy$#ZnIN@Wfs?uUw>*K2`=Oq0OS{YKUu;O=UpCYL&_Uj~}-&ht>-FdZa ztu%K02`LX-$6QEzVaZW+^0oZsGz0mSWtV$P1EWf-7R=H{OjMku*BRP$30P_(D7NvS zHVc|#9hcE)P(qst-8JAmP4%-)=~JC<>65PR8YsW2w4zX+w)Jp03M9iMv%+Z>uMcyTZGrzR3vUriHPHACOn(_surob{%|$Mtnq4dpjw89pW6MFqkBw%98|%8()jW z$#in_>9Y062PLI&muruD)n>%}0{mpG1lOY)FDuQ)rbx0ypd3$kOa#Ts@*$vCs`S`s?Gc zR^U%S`NoYhV+K6z9|dnZV&GA~_cCnqST}~I3E1o>zlfRg*>)5z?1^HwlABO0!L|2% z++Zg|83l#u8wve3k6iSs@##C6+2EGL7MRA#MPBPIi zpw~2km|V&HzM7OjG6gK1OsJ;9BF@l9W=K&P`XB+m6b2=j5{4NlVGc}&nnu#f@6Bw(Tf44cL_7^o34 zv8IV+cLxQ{e74$>dB5va?7fZt6dVulI_Oc@spRByJq8bBFq4!DT&Kd_{>d2gwj<*_ zvY=2zah$E1kB|~+V7%*Cj@_BgItxFdeEB+T!Q$QUDvqjH!w1{_Ox-&un}hE;xQH7d z8%jC0zodDbqPai0mX;be-1&*R^UpOqe=>Lev^I#x&Ywmj&4UGc`Oq`o1E;aH8_8#3 zoeb$1tkwJ!GK6E?=EVGMoc|r(Kj6T9j`T$7Gh#p6?m}5986sQpn^Z=TVX)73s6C)# zIJ}g?B%u@dU;BC{E7R8?F^9Pd9qg zw@ysBhn)xT3x1TS&lcz57n#U;hKL$+M5<0mm)t&#nutvlkJ2VG*QsP6hInf?VxH`} z5M#5et=Q8cx>e~5sXcb{HM;n>9hQqrvPEEA+@k$yH(sm3K2~7Uv*1%lID5Iyg**Ih z=fEfSAnmHvfs*4oo%t)RuA9c?7~`=F)2Xoq_MN;4aGx}jcX3E@Tt)$0ls6wUL2L|b z?9!GLve(ksasNF%9T^l1T>~?pgP|EPb21FYX*Y8ea^a!VVCG6pVtdq5iYF>(al55K zkMCen9_^WNGs=O>5_hdsPYYY}LRz41P%gq;aH)JlEP?IgjWKldavZZ;@Wg6S} z$Rt}N5+0IqYX~42NhT{ok**o0bWMgOdC+wUbA>c%)Wbb7FYBxnT561Qe@Pcc8qPQO zC2Z?rGLOb$wx^SZoCf+|2Mbmr|4AleOfZ++vSuNtqVmc115@QqfI%3GW4K0Qy@0Sz zq*?5~h5!l^AiT&d(w2A$A{_{YZREri*MS+xx1x)vp~W7kmh<#VC(LXUFq90Q?V>zi z(`MDVNlp=CI8?W#&RDt$+BhJtlPr zU2XyY@s(l3_0D8c)O4@L!ftoDq0JXYe1ue?X#eUi#!2R;7rSd^^wrK}T9w`Fa4K}C zcfNGgO^oMi?9XMBjkDFryHyw2Wb@t4*EI=9nYpR{s|MTE37F$H4fd8(y#h!l74yTG z;U>ZM(CF68I1irowMh=M%bCIA!(_7C^_^6aB#ukqAlkmr<1d?|t`T|b8$w@o()qLQe2D8>{e;Rk0^pZW3zM>%7JcMe# zOUp&4Q%}%oF!Pk+GA*XL;dNt=>PC4qlg2Fj3}N$Aio5Lwe>OwKa%!ABnm*=VQl+!u zf&bu|n8r?2#7)@$TWiBeU3sSw&Wppfq96bL3no1om~QkL8b!JL_LV)9kX6vd-}z z%xxQ?0lEw#O)y#oBm_ z{dJ~cf1PQBdYx(5UU}Ld!Mm8mV$+5IDZ`YNc=P1}g-OZ+?}D=O>flIvlv-G#!-1(b z6FBCl%d&>!3bKZSVVZeCC6ss8(StjuL9FCpi)pVFxB zd1Ym06Bn1xF8AUH%eNO_Qn<7_f3bQbY_lie3VMdidGc+iG+bnfEQenG6fRh3HJN#P z*Bw8-9mwiozb5P%Y}==oz2x4uTfsgS-jl4)KDMJCgkD%!DmAQ5rdQ6zmFnTAdH!^& zb^g@XcD58o$6elq-Ycr)Tj)Oa6CncRiAjNe0Y_E+?MG`p^|RCN_GhO9taGk`mW`!B zd@40d#m=z+=|fZIpF z3%JEjbM-b>Iw7@9#LvK#_vvJQL>r3pSGop4)+q8(R3v6#tWP~C9VFnwZ2U_J2y$Vz z{#uEsu6II0Ys&10L?P}+c0y`c0oMjMpS{^GXg=kiyH;9E9GDDI;rzUG5Ghe*3n)rJ zY#%$4RRk1`;&29{f7ZVeit@0CYn*U)D@LT{5stGw_<3F)5rlyv8HmMPXYHVGq)AYY zvs%SSZl(6~L@{D_!{h!0NyT2raw_gIKQ**LrxdLee%R0W_c;j9(|%RLOO7HHq%vM| ztle5|GM%7`s26gL$rgh6jVKoMR>BxE3<7{P$|}FltHy zjUEBx3FDN>vXrxu!3dXUh1_XnvQvfZ)zF=4)Hz{k8v%Xhpzi#u+1j5va;f=lqpmUH zF|}2uO3)=3n3}-PzMwKsKo1Yjhsx)m#~NYO;)uplJ|}zvZbiA?7}+k7e!)6=t4Xsd z4XQsE2k+GvZ%^qKu2Y-05-bCfu}}Vn!zIc!7`F)7I4i>m(QA&3N-~~|U1Yw`G7$`c z*uEHTzLK({gmf#S~bHuSyn! zqoWOn-4OUQwlEAWqT}2AYBo=E4|A~Tf^Bjqy8E4rDWvn6gMEA&{DgZddXZH2{a_qfTOC>FFYBUb->j2)*w@EXEB^cm;Q` zvEp(}_3AzTGaA_;jV#f9aU83D#$F(1%em#R$Ei4^Xi@MBbnDD)=9@f)48nA1T2Ygoh%@I6z=;EyOZJ5#o2J1o9>n| z_U^?GirDQUT`S!byr{8$5{NZ91kwu#>07}_Hw7b2eMuv=ojDTHGeaPqMo9MsB85j6 zKOxemgfP>;Q=|S?(d+(B8BBI(T_|-HggXhUCu{S{yL6T-ohCK0;?NXhf*KJPz%?NO zQg>^B8$)BT05&*fx2J|+pR99byJk~#%tRH7SB;0=6pty{Vt;l@g zM-q%j$X@)}rvRW!2DQ#q8YfkHoH$<5v@|(QtK>O+g6-~$1+z)4F(fy^jLAsLR81l2 zeISK-nnI4Ck~@;fNs>f5hHF=Fn#PY61kp(LCHh^5Ni#?dDNVqoPhbk)5QM`>(pGV& zQyqMH0hS=@_UelKRkb?#7bH$xoUWVRu}?$2sZHl+N}Zq!u$cy$YFl*{;C`p6^_Ix0 zICSZ7feF`a!M(2!8j;sVPm%8`l|FvK>l*AM4Tk8ZXf-$s;Bz~kjT$2L4Gr;)Gl&(L zNGy>5aR%~}G=5!wP>+pF9X?-$E6s7@w8lwwiaAc2-_)pAka6e<$fRem{{IoRs_gU~ zAZjvcl5R&F?xgdL*=iad(3!6{sB#m;Lo@@Y3ieNF2X(xqL2p4&(r29{5;bv?G-D~!RvOhKwGBP8!=xM;fT zMlr=jqBgb4-OgNi+ZTas57##%q6M?Nebf0j>trQ9fYQ%CUp2C^Q^?cAK}51t8**qo zs4>6HtTCUoBhy%A?E>Q>H82iopw}JJ!8E_hV4bl_6r5&~7&m~8AK=?NvI4^?lpz)ww6)G-u1H$v zbLBcuB`&84TtnAd%S>_`-_zuN$mFh5h>ICZ}NYD zy*3h?3sXLK5c|j2TM(9&^eOgBN2vvWE7=ykfczzpUgCcy@ty-Ee<}lIwd+{+AI0Bt zAAoIAE!$+j6j~qh+gjxSi_5(4K)PkS>~wsFaYbROVaRd=X6qWM?#E5A6?jQu$h_tyUzWI(oHOoj~Q~v9tWJ%ekpN`#UHTlV7}Ny zT8DpTRm@LdiB~|+(gI=3{zc@w_X+pa^2QAo;;Poi!^--kY)k^E`(x5M{Kdx?Ao=eV zil1rOA9e}7dV;5XPf!hUzj2D3R`7~5m)iCTUl@g6C3gZ?+6q{xEfA#sLsQ-$ZRoR; zi)bzMt|sR7S0||yv%alW=TCLcHDoh@lsJtTFj|rF+6cM?)Hvw6(+$;Y=SipKW{-WY z5!|7QeuOkfZj$*DWZ7;X34&)SYQIof!eJCm3Fx`w5dq~7V$pAqx@A6eYZZydO7~x%r}nwS|QUI_LEqM;eQb?BO_hzXJ~DMr7I->Z$+WB%~aB9`bw8Nno3Q= zE=e?^Tg2lybaCm}Gk|=90MJGj*3K)V2R?CP1ojDe5sDS(3~|NbkRwoEf;gL)=O_KA z(Vu;D=_MBI>6whUZ>nlf*Lbki%LZXr?FS-E% z&(>z9o2=YN9Omktb1_eV8guoI{7wV4IV>5$tpOS>fOeBWce=f{uQ>LcuTQqVSJ0;+ zPo?f%A&kf$MgH~Yikx^HMWn3l{s9|estS<7?6 zH%S0UC-T|^EbMa!>67?X++R5Ee;mm&PRa|of|?oCr!nXV4&y8o?GJUM$2ZZg(*$f> zR7Sgice{D8neM>Y`03+3BwZ%N2)0KSOHf;v9N^u88$Rkv7RxV$_m+h96FFl=DKgg- z5C}ZIjD};(j&!I^L2{;~Q0dz+?p!SKZ7LB9ga>4K?}R9i3R=I2o&wSi3ipXvG(5fJ z0~mm;XLbVVYUiWmjTMPFV*MU`l;7Nd?wzJuJLxEsQ0XQ`>OzVAtzNU4%%xdr1mhQGeA{$XGpF5SqkUBd#6N!;C*EuGXeU!&ax< zrn2RAR@^2czQyl2TvTpl&smj38@glqN&ynREzP zu9;OqyGC%pY3EkNSvK_FqVzM4hf|#ynp2$y&s8c;^+R5qRmfBl5I#Xs!aUFFCty)FN(ZiR77qGJeUltk&@LEX zm{h>ui6WmLIM9@L=E`jT4`}bIRDT?XF6mWfQYZ;dYT;Vc^6?LU&?-KWzjK(G(qPNQ zpDP;F{XMBL(c~Z*|8%P4K*fJRqc^?19ZFXsyxw6&x-`%yM+IuMfW9z+h?(u1f}L*j z7*fzh!+ovb+=EzsA^m)FU^s+^`Ch_oWa~vD4PoNdZq9;fkudO@a|t;Ls81(pA{@EL zlfF^s8_LssWLFKZSTXD(`0c)W*y$w8Z1A*iEph_P3D5Y}>x@lSMs;-Ak(gAshPg_@ z;2u65o?*j|weXTJ<$PnTLT7*W~Xw= zb{<_Fgwc>nC?Yv$l6u^Y658;epjMBuy6!sfdTlQ(_JT@rF6+Uai@X>IcOIQtHqb7U zMm?Q4KjtUfMg8cUzX(U!W%xt;`k(cys~#HfLkce&hHAiEbU;0s^6uobtBQ14$TmMQ zrhdX$in264?Ix*wp?*-(QzLvzBCI44igSMJlSk|~IB8GwtuMvZ&ln1;opi4KFA50^ zlqOAIWbx=Vc4fC363}|t-BXu{_ zCSc^ZMl!7OCBXMMD5-f?)pGOv$MCRyyr>tFT!V1!t!)#KOYrM~w=y5rU3->0;nL z)zTZBn>f@VAAV2c?*}QMNujI!MCECv5$ zZAtbN-Ewa!y-xQjwCRCQokaodw+`FyQ`*jkXuopReh(hI{T^dl_Nw+Pg|)uCv&{&z z0kZ-caEETd7<+DVWLGL?pKT9Q3+_{G@F=(7K3|87_+851+=7o$3qox+7@pbUdfAMx zDHMw6j&5W5GX7t;(x5`LaRq+nkNAb7&QaAn!PXAo@GkIgrPP zBGGH`b4CP552NTARPeCVIXF!~yVI7viHGTPYK%4U7<*0)Q+u(yVcOYNuHCQ% zeyL4>U-(4Hoe9gaWtllYt1!L51O8d=0HoqY9IiOe&HIhP)~avLa~yfO0d2Ph+wQfa zO!2FaukBKeXz1FCQM-7OJ>>Js26UyuKWk`=FG)ETqYQ-t=OnVdRDlg;A$g4(@^MxD z*PJ^zl!pjn2myj|&evtmXKXoNH;3ojJUlV=a#G>^2m$)y+~bk=kaLSPzd>++Q-vJh zLjL9>Du*(a0$wIE1r9uBLI;p3(F0RP|9SxW6?XKGI+sh-4=B{{aQ8hRyKfjAbnlv4+?`lvoviPT+QZ>USwBxZcslJOX`x?>dXlhT>?cYI9y z+r|>vVO9;_#~N;+hWpLD1{ddZXsCZ^P{jJ$JV-qji!tIji@*WO2dDdeW~T4WI_{TD zSCEFx!%kDuo1@qK;kvGOsslH;%eg0@^FG3=-F1xBe*Ll8=yvY7oi(PkbZQ0%kKKtl ztZjJ(93eKk!)eQYglB()ni5BNN;EJV9TiaQvyzRfT+bpKMb?WFDY4OZ9Da(6Uab)Q z#E7o;se#lgxu|Nn$Qa#n8_ZDxx3XwqHQg78{?<;K&KP*?VKEZ=w7Owogkqk9;QN|9 zSa{5#VPzAzP)sAtxA@GAzi@+Hsp|O)bFwRaDab6XOzkq$%{o)NIi_wl=goNdnoL1Z zTzjp=Rc8>2ok`rz8tw)%5aXyiAp>KF+ z1b0gI^da~BddZ7EbS9IZ13J_BfgYwaK6T|S;5N6%cGr#IKP`EJ_!i$*n!IbYrfDnl zuB(E0R~z=>Rh{szADDODcKo~xg+G{oe7tM5!MqE{vdXdAP<_x~@va~3yerPyXsHXm zH1nj~5wFvBm}zumWF#nFV5L8&(<%Qr)lyb^Q>gUFF*^PE;Iiwiv=?;VC_eWZXvC@A zodxq^0DTI7>R6rrQmFD9t@NE8>h95Ly9{|7xR>mi7z0$@t@Pb0Z-w6STWNbZtr+n} zDZB|f?PZ0x!c0rG(q5r7Q!S{@ihq^!)A2WzwC(cJ^aVf;7+MgCgi>kk+iY?eBXwH9*t zu@-{wucga`esG@=u8&|6ts^$ev{@R9pD!vF_6)PI7YQ@2$vbEY!t=Gf^z2}(WOOc( zPwEj=uPFJ=0=hK37=MTc7i+1Jmy}54ywtr z_5$WH2WlT={#Z&mcnMeN9+K$rzw?w*Y^>OBQG)DZ53VId%Tq`TtE^$}-75E1%zYv2 z8yJz$gn;?N-Of`zgD9Z3;*TPCiu2*C2dxOqnuIDBzI>dyvwXyB;#F@0K=t(mzN^P?!Oe4)r{p|HEN%ABXFyKBeUKJw9ooRf!@fV z-*AD$;U={SVZfW9RE>wP6!6V_Q1w-f+LWz5&m6c-%PKzZ>Cqla=Ld>Yf|(1s-cI%FzKV%HB7+CbO|{W zN)sq>YBGM7l}*+CgRhKlXmeFJGv zvgLw_Kb!PLW-5sOa9Cel$MV}*QO6=u6u)=gjz1UC4PAA%7F?~Yr2DxpDJDYdwwx(q z=zeOM{8`3|!cl@O;Zn4pU(`!Qm=SbSc*f5P7#3HX){dI9G;Y%5TzA$9W1o33_;t1n4rIr`mfaDt6)vOQP>VCBC70t0Y>9lWSYP#^RH4l3Ul!*aH(Hx zFVhXq@V`R!_o~b^k-=tJrM1beo{>s zU#GrhOC7JuEzqe4JLYY+Qr~lQ(u9qL8twy!tuHRtZCE!;Lo_?AR(4AxC+)^`1vXoQ zebSMf)FPewS;tg|SEv57V?~>+)UP|{t(&7$zwNA|sdF{lze7+kPpAH%`G4BOWWv)J z-NM`ehk0VaFmJZv-44&our6j zEO+ws3=mW<*IBPuSsxZ~v!5qvLx&0aB`Yh@j>=t7Zj5OuC%s*LWY$=sk=>#d<`eJT zD2!sRs)k#j;cjEN9D178Ztkn=N_Fx&r)}t5=d?PfOoQC6RCd@X!j%YO-hwRDAa@)M zXdJ4JNDCD+T2``7Segm9w4fb6EP#6&j}Ts4$fpW_^faQmb_G-64`A7wP1C z?8(E_09&k+?+uZ=*-G9JqN$sf=;V#TO|4FCnyNL(eX0O9T)}8erm$4Q+#iC7re!+$ zfe^`!H9C1yh#J<_>f{GQ^^#8~|1CrfQ~f&mp-`<`r;-OkI8RU4=>l%0OIeKh0=LAc z!&>$g4-G4&DhI3-qUam~aOBdv@irQ+&H2I8Y}T}>M!P8VrXXK@{^ zYCCzCNfO3`TKVBhjljbX0nQ=Eu4x70V&1AJO1;&eSP$Qta?5olUeJv)^=iSL#kke;Y$|rQE|042zqDDx^r(V6u{IkyRntbn8IKzDj9b>q! zA9MB?_bX$Bd#lKgbKl06MlWQkt)A9Ro6h#t8i!nasG9tykM`v?d?Gl4GkUda1v85a z&XQyFM(ORY*BTV_U2sJN1;RGDTmnk+NS+dvuAXocD-GR_pf2pUh)D#rhLl1mM!-LP zDPlulgEX(u1wF5rb%88NT*sbiV<=-q9xnt`#C2SRkBj(^kI7hNmGB+;o3)gK8Z`2~ z4%_?4Ml1gBlG~qq_CH9^tO4LN+E(U^Sa2*!fDJzttc-qE(nvs!vo zy5s<+bj?M={%B9ll&=bEC>27ch6_0RFs7zuhf2lmq3?iH-^)ia6e_YoknMLesGGyj z4A^K-wN@;wTdBxB1%}JsN)n@4;{Q@_~h`$h~0Xx@huhVSJS;i%r#L3ins$scz&A_7rl7$tHQVpwMhfXGXc-$pF@)z#HuV zq>{{Q=0%!cI&KOoA-$cA?wbbIZqhA9JdAkJ3!JWadF0JHJyxY}6|q_3#R1|gB-6Ae ze)BP~+;Uu4ZaD^)HOGZzO<*Aj6tNoo5pXY<$x3Bh7Fc`wcFB<9}pX7$0}8cD2GENjc`Onml^`j*%$=k(B2e z*M7FYHW8zKF%d17h<-jgqO&_7s&{Qs$M|g~nyVz5)?Y)<)vo=(CpVb!%9?tKs2vzl z9i1kk&6lRCBK7|tr~mhlQ#$^d6+BJ{6xjx8?9m2k zc85VaU^xxXnQC}8bQqrIdC2{pbL{5(kB4IyJYZj!j05s0{LS*-C9~C?iqFCc%mFtP4<$AKSTu*jZ&w{6pRnO+9f=ivMvThAk>iH_y)}!Ux z)>*E=MAmD`V82i=)TRVbRj@q>4d4G69-i32z|Gr(&gRa>L?D^Ws%Gd_AxjBuW36%khc)oU&40vST6k$ZRTlt!w>9i-GJ!Vfn z+o9Yhvl*TXZiXG9V3Ee>WHU5L8lST@!;Vg7alvz)%;M$_iT0dLo#hNltT1v^uIEF| zJ|*}xcSsDFxpgmeGIJwe3?8A+s}Z^*s0ABe3^78VS0gkSIP#?q&HbV|hMu7@WJeql zmfTFs;q#*GnrE!8iQL&C#|wy^{lh(5o857QHipcAMLb&@Ap;(nH-$}$1mum})!8U* z+;yx`8o9ee*)N%+^y%O>4hf5NJ}pP-OOno~ZB4N!xc_#l{@Wgmdrye|+o}357&!9f z;4zb?F7{Y4+icbjP~;wroZ;A^B44pV8I#nYv`4ZSq@J-gztSmFc=eb}!45%H+-h$B zdO6r^2R9{+)O|tCBM&l6cRu?9OL*C&<;mJI<4h$hyxsu@sd!RS@v@}C23`;ZzQ-U@ zipJ4XIM@_WQwJb=eLFA^DDsU!pjWuyCu+4tnYs=DTO>e09h-xoUNh_XI1+8zdU&$~ z3}Sj**6}r2$H!~4wY``i@K=pBk|S+F;>M_E+us2OQEri(=v9ewOKqMBUa&tz=QZu` ztn(rd1eUPZtk`2%F*OP5I>I0okI9Pdl~g>26*K3|f#aF21#cbCY;EoU6%yCm$A#J4+$Z4LrVeXj!`ZL#FgdqZ~mW*mCvXbu8@9r5xC_=s&Zzuy4{Q9dFUz1Jnm zM{2!#G`}BeG{4{JXg(ZR!kcF89!4t6(cBRRsd!jc>`h68#@V~}~pgTffmZk^;s{-@(g zyxC9^ZsUJC?TG*Bw5hvyC&wRuK3*5rbBarf7cMM|D=v%o7A-C;FRJj28#i_Wxknfi zHzuCV$^Q;M8;`>idk z@uq23Ig1q*te+yfOI|uzo4~ZPkfuS!S*)Hy#@`Z|B>W*d@A20o#0QQHsIg2(oT;<^ z+aaITJVvtWZs!qr+!?NnG{IiqN_uP@F1?n)J_J zsw=Og&@X0aIfZ^ULzvB^`dUAI!(^|iBNdsfhmmPfH(ff$YV$>~*KH(nkMweNkG~qh zK5}?)QjB(W$K`VrhCgv6(`zV9Ux#eofX{UJRu2EuksK$(w{Z9yP8Vbu5=!;Pz>%Wq z_{eF!Q*Bv9OS`9C0C)t{jKb*YNo3ma128;ns+W8zM!~WtGFY)GPK;J&uxPejD54_I z5*uJ~7*ZUil>^S!MYYJH(gn;9Q%ddR&JG^-rGSw^mH)(dhW$|Sof^`!Rywc|5IZayT_?Hb)=QYO~MxYvbH^RVH33XaHoI0$>2Vb@OOuV z{}dB(SbtEvp3SA)W5lRxrArgEWQLraw!sblJQLv;T(A5|nDH990+6T1wK$2t@nz%a zDl&WGGGe#x(L5dSV^H8PxRJSTKELTJTdTG4GFAI@fghZGC*a&n5S3(5yaIfql9DEh z+ogWB{;A?Qd%KgQ!Cc4hDGgfEQ3VM{B;%xJDe9a6ebdj4i;EkB+@!;=IQrYrre zcj=%1RU-Z|9rXQn(ftJX40bnpp>_fG`fAbM^c&V;V_*bs42p}!ji)B zfB-q-GyPo^&MNVmZm~=kT43`=c0BtBYquc+HzkI4EY(%cz{qKufBv9k@<+r9c+6i0 zZ{X$^CKk~dSRQ--{+brlKOrM-mEHPtw)o0lSCAfUdal12_{gzI_C~b{)>;CZLWY<9Mb}P z6Ey!p*WxeAj5c&9l@fO)S<{9tMWUE?C4WJ=FkiV`haY_8-`I%w5qJEUcBS(>$!RH# zK)k<863l>)%_dnq>M!8@t*4z;P z#yqEyw0c0|TJH1^mY;oL0)BEHmQR={;Rb3$IzC!~A1v5@?I6Ln51DCSD`VcH7&xU7 z89ItH?vE@z-MZ|i6vg?M>!f7 z%iqAp+k^3Gqz^GtGV@|Sb+}Zcd^-r`?H0;c8RZ5On@t?y-G>@%PblR2*=zHkH1bbv z$iF7h2ZvL(5{SppQ^A=SF)fUH2F7f`z{Fgu3(gCsI#(n9CJ6CY=_2PxqIqnom47Pj zsz_Zk4Y%(wCS1x%lrn84!N!N1b;#y$oDTnCrP_F_l2b3!CI9TSBpuk~qvNPFlG|q# zu>CLY6r7>wW5d!rfA>BTcSe$_QIbL60e1bH1N)uROfkVRQzO61upz%&A#aw*8|}zH z2#I{XLjInGyeVHJzs^FAI2IfcQBRKHJ<;Y#Y%rI$Q2aD3@$jJrY7h5yHol@{Hj~Aa zQwwEMMzXWKnIxap`WIAq1D>}v&(cIRc1pz5Kmuy(B>`CADhv;n2Mqy)+!UIOZHf&2 z0>!H-*m6A0;6C|UNy2q0NF>J5==C?-G5 zR(Fby>b!hi@w&@(`G@U$vonv#nkE)CTuTK^saMjnv{k=OmckpJVtNI!nWoT1YBNDe z9%jN^E1# zTMU1z<(Ven9m7L8AE>3N=8ltV?psI?wHU3rw_AsERPKYkl~`v^5x0GYyu*77c47k? zxfVI_hA|D9(?FB6N0w`HZi2qpz~A`D(S}E^$JaZjQ5oOkp5y|ASmg{yh=2P=1ubw- zNbb4H$phs(#E=vk;sy!vZAS=7UFqDR1?>t=*4<#*_5t|7M+Pr24%g!bxgx(-TTgi( zH*zukBcB(MujGR0YreD^=7oc7?xix%J6 z)wuS$1@zy;h70V*92%=Ms=o)JqVtWf1-LQ@#f1?PMKqxR_i}X@KOA8m6;T9nfr1#d zhixXLVSS?nxq~{0RP?CVT3-PB2dMCpb3D74QimkYllVL7dsV>By8R~Bl z^z}fI1=BBC4Q7~^2LqC!z)BjF4BiA7Os0Z#<{=(w_&N|}q=yh(nx`X%aYQ7${fi*S z0XQ!y6)wwz=w!IqLO6mU|C9$K`6JuHF^VHD%Ii?tXimtoAmhk|!K^$1qZ{!fhdyxb z!^QRLBgg!hP9HcSk+V9T~FqG*JLn0f5aT<9A%!hgPafH4>=178Ghh>%x zGE0;!g|aj>NGb?az*CaWXs#U68QWlFwX`G=5dM%&dr9U9iC~&YEHGxbkZ?4JiuG2< z8Ruj0EEr6|qWU=FtQLBCaT*0@V`_8@A{p`-hGxB7K(D$WoRSKw9`zYzFr;jVZs&JKA%s(xaBAhXUD~X;fWJ8eZiXzgNjrYdr}oE zvWa-??CC*t!-72MhSj5TJET?N1nK1oj>gTNk2^kQKMX_u0GHPzU*b8Fq?;^!IbWB- zHGK95r_=cDmW#do9j4E(hARhTHvlkV2WLTsSQ^4#0yy%dvgxedMVK;uQ@>8V_rQ!;jFOTyS9< z!g87oGO7nfaqM!Ld(0-GG7q3JHn$!Ic+~BoHI7s*h=Pb*Dja{X2~qNaifa5Of<#if zty^%XZRY5f>(g0=Eys2a=s)OLBxl{uT6($*9G6TF z+!y#uKyRY1yc*l74~7Tq4)dO&J zO{c-klfct)Fy}xKj<#|8@nc3F9oQAj+NYb&r^&=2(Ps-iOy1{<^TpL6p*E6yfo&TX z*n)A~U3P%kYT8>>r9u{0W4(Bu%imH6iQ|gkVtb3c2UgXo%`T*YgE7|#SeC%oR{7ZI z9Ij3v2isP7F^0R^!c`dVW(!v&uzTWsQK-ri1))9?*`@$~ z%d*GNzsK-joqNoqn&3oOmd62;f<*Ee4qfaKi!q|>^5dX6UfqzZdagKG=tUH`(If0G9DK zBgt=qXF{l{J~!`4yDVfMNLI`lZ>!kWnFgufr2D2$-(gpLe*kw%7Te6~kaut*EXHQ3diV{dP z7MY)iLW7Ui#gmBJEv(0{ld(3H$e4v(0byQtI(}Q_rG?_Aa{X4kQ;}y%N5@(djw&SO z@Lr(f0?|=QQgvhD$fMeg#zaLPi9}oQYieEr{kyavF3FdKYbwPRBrDlV86LBxXAM&D2mM{;A%sa^1%%jVN#8g#N@l7_sOnS1|A2J0kcR3h+X$mbvODA(K^^T*_$~D+r+p+HMB9}qR zBl#FVIf3j_6_fo4K1VO+Gt!fD`Kpa}x3R8n!k7#fwu$`d>C$N)A04kan=JIhFOKUF z%W~Y9OSPydzAF6L(TK4Pti5$D9YW&PQJ%i`xsC!0W#A+Zl!ajtZrr%#nFn~sP5UMMdUt6@QyIrtn+x+#8g=oXw5W^2I|GCUN}eg#&hYpesc z6+OpM`EzhWXdt^Ie92Ci@t{k;Qwx)Xz1s2QJ{Kc^b29P>SK9rDm zPb%kjlaQZ?hzc@T-kr|c>SZU7fR`M!P2DWcT`0hpqS~8aQuDB55yS&c3PgJN%ono> z6~e$)KN-E~CSZ>vh9jQx*He}W@UoeuECo&~GBG2>GiH{TRF5?yzMR9IRb3 zG##)R`_+Fy-XI=Oz4oDFn%3~!t-7l_oMGy#Mj@Xrrooct9waWoW;Q1MjK4?1Qj0I` z(bFfzdvvk+uZQHBYY(GTrUBSVJ}Bf zSH432#F04;dc)NV8#D#+?sa6~6jDqmR`_7?WMiai(%1A1XeH}!IMQ>o*@-eraIrkn zPWlY%>YJ-wv|Bj@+m|DvUSf>`Gm{%O`akE}lSE!VbFfWD3NIggXQuMKP9p9GG{(L9 zZecl}n%7bdAHu=I72faoPDsO9>)@axSFC8*xN)OcFRz`j%ujsPVuffRy!jk~%$#7- zMT(AE<6KTw$>^d9?(s{bTfSvaq7me*8kk))eCF6G6GiVI6r zsJOIJsiu?`nqP(GSbOzN6e`6R?~;Y;tF)|qfy4luZ+2PfA_ZSurc`1ux~SNUU0AMk zWk@}zq|7R5_Ux+i!r9gN6-ZU-ToXsB9V6zIGh&PVdv3g#f;*(@Y!XVYNP+$y z9?QFF*`I)Nkr>aWrZF@|-XDGV-)g8?%YH#$RcpbG__G==4-2@ZYI;-CV_kT~4#R<* zgPg1uxdZ#C#njPA(6Y5CwXzYt)7hx=AnBeu)_n^Z&|aDX0{0wCQ$!*gYjh7Gi3!*) z412vk{l6x<9xSGg!Gu|Kb1di;X)JV^2A8BjjEA1oMDvRnQXZx!WaN;Css;WJzJz7f zwBtB~#eys`E*@tYc@q|woEbk3L2yyy<=K2_^R}Mj{m69wl7t44b9MTClOn|M@rZl` zGKr57R}QfYLFNL@DZeC}$WABdn#%)g!&-D$!d1E-}RY>$ya6S!H2~w`i`nJbqsB zA{y&T!7g>t7}D5_^^EZ(jG5q>FxKN4H)cZY_{2F0XU>}AEjn{dQM|W^mEC?*DaCTU zA4f6AqYW5>lB0nBCSohR<;Z%9mtxc+PwFBMlUzPKj+7cZYapKKg(X#$#U-7RMk;y7 zQ_Wz$d)yT$IiCLfU$LefVTudgEGsEQHe6OdH-3q2{EkgPEVD`qFZX(8 z{oXpI^DD|q|Bq6fHR~|1aNJnW@j&8A-yw2uLFxR;FC7)C;R-l@!m;zua4Gs>K%1#nrp2+?D){}37*jLN5hj8BHGmW z#c1 z*Gf4{DST?6po}%wBd)JqjtsL0`bnX(>7W*I!nIakqPUdL+oHhlC5waxj*Rv(g3sviU9-@kI?cxXAOPVH% zz6h>^8(G|Zp9{1h|BYL0<8T|#fK2w>`XL{@tv}Jx z)^V)-{zKt}c9s>D<#cG($#@DHOM%16`~+(VK+q5XYrMGv$D7MO-dv%^8%0)@6{?X` zSXnm9JVvu(d3@cf$5#|NtP_d%&KJhSmMNm$<}>fF8Yo8l2x?9jMkT`8{5BWdrr~0P z;j~$bbsENFt~s&fSZRteSdBmnB2hwYBnYHQ`>eiQL!^Yp5qXD(c)?N(znYHH^CF_@ z@ZAm3rLJC(mqL>zx(GjKM9BDI6h8ywVOXPZ(#RSiGH_j^H4!si$FIwA#Vf+N6dVYMv6TxpPY&1XK*SjpG2 zV?vh;*Xablrv!ht%O%)~!ds5zQ_QAlyjwG{5h@2;QN;|tClJqgdQ@>io;pvY)5FbV zj>2`3*nkN&VcJ^Dy><>~H{<p4FeQ>7ZjDg;){>f)$?=Ra&pc$c)gFFvdEr8}!M3=&o315_yi17Q{L;cod1y!*OZDy-B$sWzMi1k^ zIh8=(Y_7PG*IJB#97NJXC~*~XU!ew~mHw`ic{J_|GjL7**wquR^@kM{@N;5%Tv>rJ z|4{Zv+;E4JrW#$#?WJF^w3<94!I!=~%y6r78twu8dbk(-MVIm)r|H2ic3Ao@%!$i? ze|fGhcC$ySy_Ws2)a!JrN?O%{oxMf`A#AQio2)|H7(0$&*nnkHaw0t}*C z->IY^HF*ZOw(#A4EYwyLHoDfL%OE4FMO~GUtqjzincBVRIFH+TCHobRa>>L)wUugD)0H8=iWP$5Eg5H|Ih13GWS0B z*_ZR2{oLf>#i=K7Hy&~K)8|ms8)DL=#Zp))=6RXI!|>Zr|K~69bTsWW3L|@89!v6NNwlB^H~+OGb(1; z% zH`?!&&RdGSIUXreoR4#CUilKKscc?#O+#bC`vhNF*7|kwg{#2oms#5>QE?TJ3S5TC zjVHg_b=uwQ*i8F0`z#N*>e}S_s?-7r z%v_yyO=C*iUG;oh*MuELJto{47w4%BS5#KjM&>7a<&kBqPi`i`7Vg>(LFndkEo_Kr zp+=wDs$C4t-jcd@vhaZ5H{a?&lbp&GJAG^dD%>P65@et|_?d}>2e`>GfAVaXO*;(Ow?w9TK z_s1|!Wq?%`GsAXeKtdul_FM9;U?C$mhk@~mMHTZJ>}NZi3DwAd`>9t*1(Wubc28p)=b7*ui@zySf)*VV7 zkJAN5$3Z_k4asx6N*vt=`?=%Sg2ZF{PYc>T9EFDt8Rl2i&2?UC9GQPY_0)MOtEjE5 zXlkF7T$hzpA1O;h-jdUtF(gvkHPetN*N{9p4au|9kX%ti(%2h14qoqdo4iPV!E)3& zdcX@RYU>hm2srA;`TFa*N*bSe1CJwjRS;Yq$@Fs#TazKC}Xi zO%(LS@pGo&lq9xd-$bTY^fkx}wjz&vsPot%EpwZF}Mx&)4ltxSMltxSIj7Cdq zPot$BNTYRZrhS_ImY~tnI-$|h4y4i2I?!lo$uwG8dm62;L!Uu9)DgZf%p9^Yslp(3NvQt<#c&JXS+eDJ~bS3VR57Pm?Co`vH< z@4azI$!aGw$*geW0*DIgD;obVu=4+k7h|=R(@`+C9a9b4W?7GVz}8D- zK@uFc0iq2ztLHD6S6yYRI3{2qLrS$_Jm6_Lj!Y&Any;*^Dc=Guq~d(kNvbaf4Vo` zru?_T&k`+nLkciQO)^4sS-g$DcLnJe@nR~?!zW`9zqHZCd6NEJ%qRIx+7kazAM?aOes5%LscK^exmzg~GP3orsJRK#+Z10&UUk39H;-3zMliY5B?m9%M)bNF_XwZ-D(Z6&>1AcUm{-Y~8^+)$;udXP48&$yD z9c5Q4*qflT=~UiEX_eHYhDx?jze?^@k5>IiFhi) zBZG$?$}c3NkScuQPp*tN$ZBoSQqE0OqQ)tqa_SqT6KiNm9-SAWzJ7e9!Ng^=7KT+0zDX6U+cb5t7|#^Bpz1$ z@Btr_4g7+mcbnV*oN@5iqC{DSvvACjo`reNSuhvv6dAhtq$*o>R>cT0{DGwqE#9L1 zIj59axYwOjD{^AL5B@Kqduc;w*KY7KE8^++LFX5Ruy9Nmt_*4d69p7Zx zz2?K^T>?~4ERQ~LEnj#u-5QUGI0;!kP0pfdofs)1M!lY*cNwH*h|70xNAQy)1+I2y z()nqe=V$RLbe;QNDruseM*5?x(ilQ-$J)%EYPj--hKek0vdaHBFtbIOZ}2rbQ=KJF za{UY(y2}|=KHbUvpt~W1%%F$j>z&pgZ9k$k24jtiM!-n1ns&sC+j&ARqKj?t z_mo=$>$63q=oRyFn*KHo;q@y`Wtd!TOr@(B{NCa&WZ2@PpYiXW81KhB-9bg?`DjSZ zbqvIf0W_qQ{u~Q&dSQT?@{%(nuVihcQf$N_I6?0P=uHt((cOA(|Ev$wo${7Je-#Ik zyTriSkCmotG4`&xVqC?=mOjgWZ|6RL6x%_!@urH>l2kk9Rl0J9_^LHTlP2fU2p-p@ zRJm)WPzzr{^dMg*I4x&~X++KSbXJ~`P9s|BPdt<@?!vL0K!rg&Ly#t603)_3@2hIq z0O;?G;y>ex6g|t`=UzR`oy>cVV=?c62)^^n^d&3`XV^h6wCnFX-JJd+<_OS7L=2&nmq{vvLt3c% zQmoh+Vt1#=RffGX>lws;gfXtO#&|w`;%Y6QPB$<#{@BG^j30P}A0si~q&L!yGOCYV z>qNZH@Z(CApT0=dsGtKh}se5 zL`2qIFyI9(Dte+(Xdw+pTOC&rbBH37kpV}l6QRrK1m8Nw&c$H$1QoDVf{L7U+MsnQ z%1%{_F}eOgv3OpvmB4l;a^9g8C;S3<_<&ace!(@yfWi@K*yYqvOh@HvQ*TDd&tV)Q zpMh$VqCUXPO>rw8-2vM{zo-q(I14R_G5nnA2;K$@%1q+9Y)%7c_EW9nyI|R|PB(0C z-dhKt{_Zg66dfc$`AHHShM$|#Ea19N12iTNTCH2;I{vM<<{HWckasT)jpHXb11a9H zvwT+B0U|$_Qq*UUqHtt@d=cwx>a|_btO(9kG)>_K$%b1cHBRLJ{$Z;W1Lir!3#nTp zMI+;Vs^9`1<1OPxOYuQGZzJKDMqHppeSsqDJDnJ$YM)q{9?t+~UKZ8);40Ua^B0}q zOvHD3J<8M|jM`QKyXU70Uh@3v zR{pn1WlRv=jSK;(kE&9W4760FMyiZcMa^WC1rMIW%DZcLTtfxn&Jd~(mcto{LBx4V z&8x-?J>4n5puoKHQi|pc(q2YnBfM<2{-}V26I$g{n6_5X*zy@@ZLEUgnXCo^!93=uXAl#xW(((nvK1S&Q1& z>DDLKywk>5nBHM1y%ElmPZifNf;N__BKn)Vk#3FU@tkhNUKt2?Ie+E6w=**GCXlDi zyx@2cXFPNlqP+Z>H^7A#sxjG6EqWA}WPpci^tHg#DNYZ*HZ**iPHw~;;Hk({Y3f|w z`tdxTq;vTf*HIw`(}Xxry^Zb`^y=qSveNRXOqcU8zU8i6-pMd{6fqwUVx2vRQS=p0 z`c<)F?(|o3ljFEdKp;WKnRJ@d##*b5tp!$;D(uroNAZ-82Xys8^QP$)QH0UTve@#* zSnwBKRcDG=*-4=Vuh3E3saud{MyP9$7Wv?emEMUK)2)o?_Ez-wXqpC1v&O)=bc>OT zX{C?3$c;v3K|uf>ecamtSFuT}mA?^&A+#imM9r)kN9z4(8kY>JK!wsC^2?M_g7Lkj z{I~mPX;TO`T7GIuRYqa5)zbiH5}zQgT_?v5lQd|+C{Y9QQezsN0>I&r$)|kWWOT4U zR-M*z*_i3{W|arCpRLZ4YX~Y_<}M2#2MHG~&xV^Rv%q>U!#g}a(c(NZ3u#dr zZ*KY9Xq-xm+JN60Blpn)C;Vdh5T~u%JsMvsSNXRn`ly+)aw?<`c&5A)_0Z;6+xix& zr1yC<|eB4qhsdow8%*}j*Zl1q`w@Lrye0X_-hb9Asxk~`$W_Vnq z*BS6`>zgN&hj z1Q7ta_e^CQ{b^ns9aA~J5=Z~W<}mH%yr)!}s}-%`+5U`I;(9C~=I7c9eW_ywzu;`f zHd@7t^EE#<`>vTx*YV3|{KDf|)$HT+LjKL-BC@ET@++5U4sp&Dak;^Nui<>%kD3`m-ZCtC{z%zrkmCY+?AJ4ZD-plyO$#ezp*KeS7dHxRcte1@A3Z9V<09rt$ zzj#R9f-~v-Eb5;-SyA_Og6B|AM)%TrTa;nF(wEbc5Jef2TCA7sI$p9mMW6BQbfe%y z*TEMZ6N9{mE-0sN%gIwYp6Wv5L-dxXlI~dwSCmv6q6Q!J%%#Xfyx%-P3|_Q0=VZEh zX`VO?`kM#gB*aiwe^@Uc2p-_5M<&%}(XrgG1tHtZPw#MB0#c0@GV{sK+JpMrKK{@_j?NI4@(c2=leWC__#C%CC~F_&im)3S#&S_ zZ@#KMVB(o)I<^8l70h#)(T}2SWbiD{+Ce8&a<72WaktVL6$)btd*t$w(C&`oP}Jp1 zsXq^9dJ9@MN`!{>G;&9-6C8>E(eL1e5h%9_&dp+6DgtgEmHl1chN0HWfPcF*OmFaP z^YH7#)IFE#pT*x}*U|jYX_y7jX)oYb4=ZdwKNAT!7!6rcdH#jG9pz#%3MGB!E7bR8 zn)xjM4bt>t-XC-~H}SfsQcdDrV19NfO%GB3N=bc$8}7s4=|Yu12Ci2u&WbXBuDmzR zFe5iUJVTj3!+o(yQFRlPlqtFeccRz2`^@{)q=_m=_0P?sM-lDvIZx#%p8NZjZlOPT za)*KnVb7=`AH-&3rK7B?+W zRIba9;qqIlF$=pp7W$QpWiswM_*6u(yHLy=Ld{JKhs^5$7+DG;$3W`wABkdYpm zTg;%0H^i%aWc?;TZ(_hvITPsvm@JwevT%yjOuA6Yppu0?_)4QiE#okxGFp)8nC6Ug z!1MLW@g8Ij4X87+;U5ygYRzoyx$l=W0o7QZ!dJm}OHye+X7RG6auqD&%J&PkY2O9Q zQdR?-8VEAtT^^kecME;JB#o{@1z#=6;|H!_FPHK@P1mIG{{C`_eV6e2YOURk?aU`? z3Eu%+&fJVilDRv_+V*JD7$Y|E!-O$L(PyXA;uVYx#2gPo<;Bh@pH()w<$aPd#Z#F+ z;l4bGPCd_e(1YmI3%XMepi_9}ov{jodVqT+B$G1ozDA4o=+KcgdUgpo!t{6wT*W`h zQ}j40+l9*R#xp%-Pf^w?VYolPbJcJUP3-k3c>F*UuGN{Z7uf(^lgRuBR}FpCi2X)4aclHpW2#81*Q&8n zvAGv#;HECCwR239{(_tNs&~UszptD-KSy;fqT-2e=p{0 zW((6gL!d5IATzz`3L=n>glfAa%i4D3&IYkoqiQ|%ll7V+Yh9nF$q)X{og%AGj9ge< zIxCFoy5`zjist%gbT0YBvhRT>6>zIfaNLnS5ETWG>7h8ELPm;Ds}#o_mx0{uyB}Z9 zNuzJE;=hfzh*!-=7!T@NBR|jaq+50{5bK}Rs*fnVFzO7qF^QU#Kd9e&pj5u(J5xSX zfy6DAT5`G4)&Q>r->zm30^2ejF&V97>F?j2$+$&2G0J#9&rh$QvL*n_i=DX^P*QUQ zEO@as9+tUTj@WwiNzCVjRJ+6hSKkPXE@0X(f3Nx}qg?^s3Z>@#!k*%N$nBqv_WR@M zyl+4u@WzDc zX&xLg3I<>nTvi0na;pakvn#$Hmi*!ps#bGL9pgh6C)6cZ-II5mkXvZ!A!sZ0?V(#$j( zkjua{vsRrYW(ebI<;vje?nXryZ4u$jX&b>i8nqt~@9ZpE6cJDK1@*!J@yoTe1|m70 ziROqsGrV#4$YsQkH;ta+qYZH+J*6Z<`r}P-F-i|0?6~hY@ObT@3a%<=z5dztgl_rP z=J}_}Pdk(0d&=)n~-gJT%IWLNH>d>1d=W;B=jZtJFGv@gkijKi-cR7FIcU% zS)-F1@m$q}=hSV=yHp%OYCgVk@;*josD{zqV*%XYWC&Z0pZZ`jYhbmQd$z^n7m2eE zf@E@H^ z37P`FMhZC%Mva>jM2@TQT;-L!3yrT-{(<7lbrLfGlo4>>d4Tn_dTDtP3lYNA>!IGk6N(4Qc}+X4<8 zpK>kLjYTvq!-IA6=9r^sG$`R;A`@rF5#|#Lbst4wy<;Xxf+0xmo)vSB2M4SGd7DqW{7OxwSvJ5E36erHG^-g5*@Oj6TiwA_hW>DRo7 zToCKk@TnFvf2u%>-71617*_S-o5E|~6t21i!@Y;zI-&;Sw!pB%>1--i4fYmD#}GcU znQg9mr;59KICPGB5jUR+V^?9S4#4ZxTv}rX%`LX)i=qan_(N9lt#V*8KAx`3b((1? zoJMYVFRY~H9>m>l3<7)}5s-QzZKY-gv7d8qm!#U&FI((X|4dTv%9R!vJR;XE_zr$h zHYU{4@+HV2ydjy_sxtzXH0xajO#}WNN43SGyoj+kB`(??V8EjD-Y3m+;CUbM*@r6E zqY$3v@?xL2MFs*uf~XOEwG7(EP}HaCcO5&!jqPOg-OJ~7vmATsvzlssjJ1)`$T%M4 zo}3Tzx?5CsF0ej6M)YgZxSCYtPzgDiVbGdhKDD4ye1(_}Rg=aQkEPArMfqK3XuTf{(vt>@Qrpqh?lb7Z_ zWUrS3F(ux;KD4O4aTZwB_?>w=J~n;`w^?7@$%M-qwE?1MYdy>3&W!)|D2L@ekqHlz zUZ~>({y>jHHHRM)jPF$zO|rE|C5X*u>ssik9zlA%E@Jc(E}F&p{zZ>Md^gw8lXVe( z;}v_QE+h~60dw>je>vkKhBf)>MwK@ljlMsZkrEhiKgqfF_u!=|(rQl`bmn%N7N(Vl}78tnFsqcMjXaFj=NxR-1+6lsvG;w{fh_Bj72)6;4-zb6~ zT9hUP8ybPoqq$fvor}~RYOcBy0`lGpq+Wq^(a*u&j3rDdjo@!u_$~uf$Km2NPFJ2h#`gE&g~E)C13Y6# ze(F^|>fXqNiPRGSuMi&C;h-X4a91fY$|2-+3G^o^Z>BRTw50eiX6L6K2NQN2Es)LtB`fYPCY zaGW5It>+JeRQ~8QOhKe##T0L9zFB=D(Yh0Qf!8^eU)hsM6da48XDDwvLJ?&vV>tMG z=DUu|r$qL(J>d$nL4NfJSbtUy8uIDAPA>C(!w}a7-%9C{> zH{NI!=5q{hHgkBWLoecEceFLw#P|PbKUP{}!SCrNKBD~a)bxyN8=_tOhOt6;W!mNH z=MY)zoZ@TTmf8wMBC-{{Wuw-Ql%D;DNUhQKlYN4-jv*SZXV{(wgM9B`x<&|Ju0zO73cR!;}7TuyX` z_|DzM-yRnFo4*$?;K5d=+KM=?4bD(5H!ONuD#JY9B~agaUIE^Rc&ZU>kNzq;u%^T{ zpiRPwlwI+5a{3*T9v0N0MuI{$6f2YQc4sf&>hxfp(P6Kyk6C;5Be(3;buqnHKX5yH zHT^cH`0bX4=2nY(d_jY$H3DF^dXA!Rqp4Cc#tQH_8GB7pYc!(DIPoV&u7rPK^tCr* z5?R{IkGjCZ2J6s~-~9O^=9oD5&(^DyTg) z`4mDERU3V&p^dl6p6gV#35|C;x)l{a84IJ@d)?4>cdrJF-lThZd8`;;+T6KnDmU^9 z*uUGrZgo28w>$ZjTRQn_tVMctuX{Tecon@e*1GwXTjJ_g=<4oO-a}VEt>YXx)rYL= z_ek}8_5Z|8kHyNz@O}*az==Y==WxAwtu!NxPSFXIIpOp@nBWab zdqGxglf6RLhDhtUVh7!}&XR4xl9^m*KfNWCah<(pQ3N3h9=gRJzDEwxU}^gXnP5Il zD~&&(m1{b-f<_Yi{vLyGr>P;Z<_~|krXPIwC)(VCWxv@?Z}6GVS6}hIc+S}ujn2L( zpl!S_u+CH4q}VHo@!xf%2mK)9cMiIABbg(6dU$}EClSP*;#aw-e%`@Y(9Ct zSO3VBaC#Dw=Sq3@b+Ytmn!Ky&JaG1Y+)8xXW=I)pl3`M{z@>xk^L78T9k@jqH`)!? zb+QAc^0NQk=4&_3gEZ$qXmf{$8wa*`?Lm(5|8gH4dOrUT0M)@Z(f^CK|9?1GPG1cc zP!j2pzTLXIJv7R~7vECe5Vy9P(sQY**y4>$f{Di%VXGA@ZGz2cd`1|7geQa3cwvY# zgUT4USGa4)gAlFMkR~W5D)2AU6?7F2AiW+F7O0*YER$vcTkerY7QJ_tLZ*5c_Vhst`=$@!p>5YP@#THE>wbr0q&TMRP- zMFBAf8YBYPl_xn4`=7Gv=t8DOekX&=I1~LkTI^kF#X#t&5~YQkkXq4STo6Lg?Qu{i zATsD(MqQX%rk{d}rGL1BDotmmTjG&&#VIvv^P0>8gpGGm5ZhHLtqBu+XFi1A6+G# z=G@FVd)A0p#8V@?rhR+c#o%!e+-SZ6JdxgXWzxpD#OGjI#2+VB34L=0!(=XpbZM2+ z@kq@EuBu#4j&>8kSGevhX*YNL~F7}_isee^&41pE^^ho>eQ(*BF z1XYo&O8&0`#?bEr)64np9nwnEvdGY?5BY$CP^y@uhtcM0H zmpL^0C2BwKp-V;5GgfKEGGoqnips+>fK@VpEDS&yC({!yAURYdE~uY!iNwkHAW_ve z-Xd5exWJ}JnBHBy@&U-hu&$s~@ z^MsF3s!YguUk9(=i-3bBf)7I|V4SuOuLwi@h`fG-SD*9RDwcflL;|^WQp`z$Tuj1+ zt`pIw4gdbst}~x-XO2eTyf;u9j1g&lxOC=H{v&-GE}gl=d6mwDoL8$ei3F!JNlAuI ziaJSo;EyAzIVqP%CoN6Nm7!kXmTs?GBT~e;2bW&|nuA_C*LZ6*<8XcpP7C1>>>Zy|=PSQ|1RwvaY6+BKS%}+`? zUMJ0Sl7`UgbyBXAbkb}mX}q;v7H+XMa9n@4wu*Q+FVoou z?KcKk+dAoUZ?H8K+KFX9^cZ6dfQQR6tP*7w^L6A*Qu{jsS1N7!|) z?HSb7d>(>RE&PJjZ6Daw%gZ{VUR@GCYb}dX{+HCclOR)=x5y zx9*@14yfqHo;7Ev{3?rwI#gF>(uWZrzTTuO`Y;l<6omSm4yP+_`Y)WW{Ez&y9L_uY z;k?8jv9FaQbO3W?j&^^n7n%Q&xA+;B|0mlQZ@4i$vol9AwgVZ%<%-mV7gW^QeqXBX z053`5TWnwRo({g|JxLB`jN}H44xVU?_TFcVcHUufEJ$cT6VVFdsTMOdc?71_eh2A$Ang=>Z4|b-gGO zmm&%c)Rh=h4@|JHRo6e9;=i}!QRHyxK@dTtsl`IE!NkSgIuy(@9p~1BuJT2EtP6yH zp1+&o5peS1^reim_r+yXCi2cn3TDHMo}1qcS6L!&&u1!il3=cjtSpz>Ss)Cva@e8V z^VNmwtlRl=TO!JQv^X_6z{$>!o&H~8c@@|Sfe~XEo?LYjRO?I>@d{pZAEPu!6#~nB zOXZJ1xOYb8zF|CXb=iJo5$Hp#4A)tS8!1y zm!ic$F6oRtG~Q=q*$owkXxzctIkPd44Y4~T_@ZO7I1My_CGIo_*^LxP!9*+9aVxwP zCioc9uv$4g#C5bNN)3W2N@~R<_i{yNmIUb3AWt34zOUyN&th7Tt`S{4p<%yp<tq*YP5c)f&-Ei?x6vzQXOSA8q2_KR_G%m>@J( z0^D=H$WwT{n?x=oSaR1wO@aC8f&(gGl#Hsv%-(IC;aZ2ad|#z3b{uM+YSLfw@D7&0zVbgCE+TqYuKu@z>59~Q%(FsZbM_ikY$ zl{N7JosN)i)a45*s8lo`7-H!d0bD-1C`4VBt0{= zq+#ns4(UaG(7+KZpZZk$uOl4)*6GeYHu&a3P$(LNFyo`8@lxx;D5Y3rBv;-ADyfeO ztN_QnAMbjVN$cWS^jAQn8NN9n==}my#xOlb12ZLZ$E-YFn_gdlkYD1XPz&X@nwY|4 zbBB^D5!=CPSQP*SUB+3DWw2Nan){?Lm>`J@UN zbK&>oOh93&OznkPMM{w7gy?8K8c2csxZ&qdc4M4a;e{T zPF3Y&fqFdNcKz&0r^4c3QfL7JjtGtcI$X$Up7p#e_{!_Z=x1PFLPc1@$Hp#Tl6bb47ahNk&w zKrkErT(tj|NifV2Ze#fX-81<3D5vJI%p)J;i+8lEgQkUOa8RG;$*T0VfRX)ehsl_M zn>#Z|7p|ww$~A$9XYfVbqS@q3iBaPUYpLq>QoZ^&Bb(;5(ec6Sd6?40uH0bU zFaQ`~t_}#m$ji%@rk7@N!>0s=qgR@)&QN}_tD(zcK6w04y=g^^;ZT9FQS)gJ9MIeq zgV`RRBx4-4xm)Rq*cQ&qA6D>(43pt|t|*ql6~V~t&$vQi`7KmA7FTH)T0k^ju$ZCf zD(iSmkmmcAUeb(J_)2thUT1hb()OL?O#fx#?1FYj^9E=ZuwN7-%?tSt)a>f$L8DS* z@5v4y(|bBKth8hGluu>kgK^l!Z9JeWsRyhkfwJFVq2pcz+5y`L$Q?C_K5LhaNr*XZ zhn53l5etCS8NK%waC!QZv7A5ndTxw7_E`Exn(Mgq@j*5Xk!E!>?iK-N|R%rGXoX>tiJ4<7j=K2^)eIL!! zHGtuBnZc0p*U@773}Dj-&@nW~Kn8vX2g^ij!-Qjn1HL{A07su1(-d7F<@546{C}hm z%%-)xSf3g}_^+Un9jJp*i`fkADhHl60uk11Ufkze1CA zQl{V>#bW-^9I;{)1NCZXqT2OfnnIslneXzZxAa$Cy`3$)!eeh)zHv^-RR)9dHt79l zs^4(6vtkojr3%5Vuu<7_A1)L ziBC6M`*R>CyvYgAG-GGe10>!`p~YNfX^11@@vF`2)ksk-f-+?(XRDzXnt7rhCWy(P z#afAdu>kv`Oz(?l^xz`E1 zeyW%$ojMJ8GnJ*ONxU0))Jghs#yXyk<=WCaHFuP7?kSumcZIo2X{EV8DBEuiL_}Wo z660wnf>X|$Nhvyd8{TPQ6Zfb4y&-A}ok#I0s;rm8aZhvl`?M2TGsBWPX_qf^l~$KO z8}ZhQmH$LX=PlhSdy^Y>)SoDGa{&YUhrcc=5?N!lc!otp?KuG$SdWFfgf2B)AxsUa z5wZf~OmLO4AsKcX7w-ERlk>lTFNVb-wQKTZUd>V8L_qVwZySV)yH);ZHC%hWGIGFd zhV|Z&753~-nk%u<#)0aw9d<4GMj!48<5%We=bdpeS43t~JtMiElw91kYB#VzaepcX z(R6exi~t#-)1{>oWZv6ZS#vinV2>B_5Ol?)~fI8&E|jz8X+sg7ZF>@DHu7 zFYwHN;us|kbMkD4a@yUTX*c~Pma4B=If>CRJTH0;1XOHtZ^O^qv9KkML#DbhTrJKn zd_B_b?nV$X<_S0(iBWR=l87`ef9(-|tGiXH$C;M?9OJmS1y-_;F^w;;mxSn%Sn41vuX&2150QLRtVK9!pC9mY zb1c-4vA$|+526$!@mm?`n+7YX$aiFH!?^ioMQ}#me+6G-dg@itu3LDwpPG#`b0SSBSD0E=!WkUb>pBtr&_uWh-8Nt2d zwXsCqLrwSQnSsufs*$xqcqJH^M|~`$tgsZAPKU)_BH#?Uo)7fw5eJ zGgZ$?Cz+rZrRMk7+uwZA=9wY{^!iz0nf1S!7uSQ_* zw5o&zY85MzTjlWK7Mf_;1p*r}Z?GP4$HC)Az7lI)qee`(fqXSEwsUgjxUtIHA5IR% z%f;=`e|Vdr65VO6qd!N(_H6_La@46xYw4po^AYaX`6|D^${A-->FB3%@?O5TCW{(I zV^QEw<7^&;^;g@#7-^gV;KChjUP@Ony%TN1{Fi}lOZJjCd77<_^A8CLZdx}+BK_YE z&ct_lU@vTH9krkGvz=^wS5I{=r9|@G+Apoy)6-qi?v#F<^cxrzdAidxDJA^&nE2Si zhM?|^iWY6+yDK0nOyfn;5M<(^20JvHGk1d3gNi8Rhiic&aEhAJ3N~*YyrMtjM}H!yC%hV1jQJi(Hl`Bg6;Q( zLN0h!Z_e;FIP46O(jkyy9O?2nw6JLDmO-eOzH%*x|KxZU+E~u}CS$&;=37qt#n~%3 zf*&R``2&T)2&b)3;Tkjwu8bmxmmZ7oAiz~$#Q1>6(+6m{qmofRC9!mFy_v5lhX>g! zMV4j0$Fn{%AnWU#qNGj-4z$FUGpHylaJfZxQT#HD&!1H!cM)HHTr_I#RPq znzUcxt*Vp})09?f$^!4=5eM5&FLk0BELCKAW!gfqgHVrmhFjEg zR`EfrbDSKPPjxC>ZQE*K<(Gg@i*;;K-fP5JnpkY%YAl`#U$JLf-@j1_C9t^iizvbb z0jBZ)4Bi^`pvH2oHz3V$AKSfTA$4igj(t@DG;VT~e>j}!AxW#k3C}ZD{A+}q9<5d7 zW($6Zd!FiwMehy(%j-FYNg>{x*bQZ2&oOwB?RV)Eei@LdCgCN7mqFIc#jo&7ruA|m z$_%kyN&)2GLK6+eVn%NBP%d`n>R~MtxQ@{tFo<|OTiu$CG(pfb*zXx?C`KZA=tvp%W5J{hf*QHCA<=lN1#c@~?-A(>y0p!89yKv2UX789e<` zr_2p@7qC%`Q})B)zqfIs)n+2!O_sA%5Rj9!F>xbPFxr=Nnon*he|CYIG??!vFEnOf zi}JkFFO0%;a8q83PSHE*7e)>5T*n*ibf<-_9VP=8SH==C=;iZg%|`M@NH25BKAt=y zMTzts_KfsmMAoIJdSQDwq9oe1i*Z_ z`YjL>Idy3}Mc|!@(qHh*WH^SFiS+*@r@Ll2>H9dn)J{)Nq<@>7zbKKu!h;iH-?WKz zxU;R(c36#D6vEc~F-o&!q7yMHk@=cL=2~blnO>dy=tS=FnTai%$URST`*rRUN+v2W zd#&YsCsE>Yj~rJ%7bfjr3YdDAF0$Oi@U-kohBK3tF=e0JKky7uZ2PN74?C4Sp_>Kd z=RaR@zKOPd@;ixKzqfLUA3J!&QqMbn|Eru_&*=`SIU`j;Z9VMx8P4_o-tj{*%gOmC zkB!)H5Bu*2fiy`#N|IVe`fMlrtGeP_pJ%jnqVn%j#>MD^F^RXZRr${91bFkGa*Ais@s*4&;dS_O zUe`9RZu|g?ZsWiGn0ljGZ^Ky=ng};35yejRQOoz>+~#y){Uan58#lJ5uu*T2V)PFYiE5;K2qCMnwBw0O0$oS+s2zY zPcWh~HCjBHw>MizN0;s5qL zpPH@Z@^tKekwI7D%UrHuD7=NwX;N#cAr<2Pe8*Qnb7HM5r=D9Uiy&uzz{0-7gNHdw zWyF=a5@zVHLs(>Or&!`1Q}zP#2sh}$`9hJLg`#WWRMVCmCrUlvuF>8d8s(A|%B)Lr zLi$eJDf(t|gDX32upLsfahX%}1FPs(6fI3IdVX@z1c`82f{L@Y2`}O#5&eR#<84%9 zP?d1>mT*Ns74D}OUbFIzVc+HaGG|sc+~!@*`&Hb%iyXlAa{J@vIVYrR3iZY+q~>n6_15zCzEz zh`PkviuC^!z~>A9)AD<>2G)gPcrUwQ*9d^^}$(c zIKSQFrUh*jf17%)Qxw5@$b{_u_z%FJt|yT9_<)TA1f7RW)KtI2ZhHaqqaX`^31MEc__6?PZlvYGCZK2CS4y3wg>i&d2zJ(DT8SDdQu zldArhsOo#J=~o?UTIbaCkg1((RgB`(CD(QDHr}wNj(tQ+A`@+lZ0CBX(4$uKpThP3 z*Onq~@2}xQi79|5-Fx9?!Gb}H?;DfI;B53$k2iv z8chFLg68-ELtD1dDfZpL)=k1rQGL=hZgL7O?`mzEt-^J71_vZyuO=m|+X7qyqjVoA z$uH4;qinA#HZRcLUy{7s?YzUO{Kl?FwyewUOxz${leRGiU#R6JK0m*OyxqKxEs+Yc37a7(Mzcr$X3fM96Nfb#}Tq%$}L(#gfe;<`9v zjnKxE#pOzFHt>IwqF*+SwHeNB&_^*DV{06PcuvMh2_cz9(LCxBgvF>X?lr1G1A40{ z7W#ONs!MW1U-T=d=PTh3mEK<@dhZ(~j$o~AIJzv6t)-josfv64&7vv7-dfpJv$y>8 z)uI-I0&rp|eYL#O-dY@H^`xs&MiI-G|ZJqeY>!c-`@RgUrH?l?fy0#{lU)#QX z`qt#~cd4iYF_J%cQfNCIQF+{oo`_8`hFN>|fWkwp>AAms;q}J7j<1*#EnhJy@D;Nh zS`q7Fsi^n@A6`x?QFnRVbOGaS=%!({lvJTMrOHp(N2NcI_?WNmgT#4*QKGzD&EKPG zB4y4+1AmWhvA)TdHsP=OZGPUy18cd}s^xD|%dNVWzeOLizR8y_lWJ-10qdwGo*!f# zg@D~T2>gwQL*~?Bx({O=l~Z--9EhEM$PAIg#Ix2>(tor?lVh)hpzc4);_GnsRqZUk zIX>7s!AuHDR1)|>cdH|_&BG|dS4NZ!c|~}%W4~H?D^6a zSHV;-5$xWyvL;^J)!Dus$Fyta+{gmky32Y?M(NMZ6FaBgXjK^n|Mt zEVt%7gesxOp^{CxObebPPJ-!4*J?N=)lxWcR^Z`vzk(_|!s?vk6FXUGrASQ>IAu`x zOr@i4KEiiej~d~CU#TWRkaSBNjPCbcg#%R{;}995O#Uvz&Sh%CFc>dPg5Ez^bmdg# zqZ13c!(GJjz#ZJRY7uGr#XtZ-ebM3_OrnjqJ19!{yIfyz??P}cOFIx)f%^e<#HAst zf*0%x-bMwRI#j@9)h<`-5!Ub*)Uff$Yj^|G4UfHa972Jl(Q$?Rm){EI?ZiSlDo7W$ zP$mp-sukUgQPXaihy6yXaaw*KE#GXlJjvEaym;o*0mam?T4d)sOvfkX7ZnL{O@5k!^oyDAxm2wPs6PLTYG(29S@JC=9V#v zJ5niChyd~PScKPot-Fw}lo9R4h^~r9tPueprLWMvE4jAu8eO!O^9$ETn$e<%gVCU; zYeh4v3=RmHCSMcxEd^u2SSLTvAk+kC^=)zArIKE0|0sG{dNo~?z+^)G<$5PfqdPGW zRF4kN_i=y!u+O|&)ylI$mQgJ->hVl+px9i;FE*Ui1yoxi-gr;9?e zIPl=2qGK|nNsJrYahsRzN{B2iLC9uX(ba?oC0J(&VB|;HQlrnl(St^dc(j6+BpmCCg9VW8f>4DOTg*EO>q;K|E z;hUed>vlckeEdx(BlD`K;Q9C|9#g+|V-nXK4l{mtg0G+}DfbNIGZsyS5CM}0XHcGj z^v`H9*k9N4>uR;hlSxl6O@*|A9`^)243~emG$Q#Q^91iG5>X~B$>K7(qK4M|3co*` z?ESC&S*PtkO50`nbczUI)P5t)+G@Xdvc0am7(f@_kuFZ+)Qwgb|EjxqhY|Fg2AS&$ zy#0#q<<352b@qAP*@vaGr_l}Wpa_HSP3kcxztEhj1u+lOy@{?np^%?*`ty+|5fg)H z(PeTYf%^;+wm=wMy(A@H%@Y-=VLBtv3&i)1C)sxrRj$(FlYr`DRWQ`50Kr(yAT+@$ zh0ualho-A-@%HmpB|T`c)G=15T(L2dfV2JgiNRjTA&_6N3K-NKepfuS&j5jG^bwyH zuk&U#XnB;WVew=UGC+SEZTukmqq3sDVn#(>IHzvmyqwC~>P6w&L*}0uVa&bp&?xs| ziHsv4WopA!^TIO^-Ht;W^xVJTWi$Jh3T53-LPzNOL zKnj48DGg5&M()3VS_0O6pP;aqYB&WSMEb?uUV0t z1#@TR%#T#^iUE8HT}S^<%zFD4*a?^@%3~-yePu!*dNnhaz37Uz{h3wNAZ`o!E-b% zcNg-@_pvFeH@{uxE>XD1zv3<0MbZ9PlO!)=u%48>EUuIHyI{dn%JhaLUlwoj9Ifbk zS3jh3ipi*N2ua^Dc52?o?R>{z+wu;y^N&_nO!6kF!@QG79+s5sdf7=H!7w`q=jetQ z2G?(|>aBVw*+^_mWVIcD1T3kGR@yy>uUjZ~!}lKJETSfw#!vf!K|pF#EkT_os5)wN zYEA!>Q|sF;7SITPfW{q^ zERB(9{H_7&tO(=Mm#PggDchgG-!{JHw71V11?0r%Sk3nP2E-G>dV1;DObFN!KozR$ z=E?F<2BXgEHRg^v^Cg}~_Ar${JY0)Et?vg?Bbj{LfCq+jPVG6kQ!p zRV$555KweYJPQK1GFbs*7=$rKxsX<+&^DEDYkrB4=QsK=ebx2^FZ4fM{TwdzU#teY z(MNjbJ*J|IecC|S(~X-M)XJ@2oCWhr-3pwqG1NCMq>NU^uuQt7g=^&+1~|qe@BG!O zwk!42*prSepgoySRvEh>)vU*#U5ESweSGBq6fawolS`fC>+IxGb+^)<(9H|=15XW~ z&RgZ+-loo4v*wzeYxvKaHBa(C{_n{(YZj{4o#Xg7r`IDaB`F^8%{eMI!N|dl<-+Y1 za{aGvuMSYY4nP>7w*2olADOlrCv-FOr_Lzg|E6A)T`;OZ|3CG@sr=uCMvK~O+{pjd z@V}e*AKtI;@Q&|STj^I@>1#Utwsd$$zAsbuNwXJ{KP-T3+({V!#a)kd{MGfd8)jtB zjLgpo*Ut{uh8yPdXRrNSv}icyBA3y@`ST++hrD0sgTpIw^PpSaAQM#^`Yeg&Imd4k93~a z5!?Ju)*nfpoXYTwhC`q2BlAsHJ+^3`(9hwVV{FxOswq&5Dett!5U80|MosM%k9-T~=^_-v*+j-zq2@iZ-+Iiqp z9bEXSgbP2FphnI1)Tr4`kX2W`#3n4bPxWOuX33OiM=G>y5*6Atk=!krF7A#|LB@uc z9tkq^DDGZOQhI`JJ-VGp>KK;`PzsMdnWWOHM+AsItb8COia&-3AtRVE$2Had6mr0Xn8Y90+X6FiK!jLaH;KtZN1tH+j?~n zw)Hxgu&wt&g>Ah%6}I*2OxV_|y|As(xR2)+<^5 z)~mhzE!B~~r8=^<-W_Fash!E%Qai}nQgKWGg7DHuKI-#xGMcYgVC_gak*ugq_Vd^` zL8zb5388*M5}|&A#{OKxLmK<*Ph-Gl$);)0IevlP2L&hE#BEU`*DjYPeZ>uiqwlaW zk>MGg0rm~|Q=`f^&e-eeujqwlxC<|}Y1E=zr+|=>p5d^wEdxncuQEJCDU>!)jTtsV z>9FGFRHhY%E6RWkb}1KX_IZXXsw`fk*7955e$pA61D)s8{i2W=Q89%8Wk8z0WolrO zGD^R1X0?lV^Cp&U(TfN$=R1-MTa5(3OjeZ;`GH>gSN*Bb@r*vc#Go zOs{h)KGzvyy`>M#S%>Zsp%Nm;E)kzB-Qdcxz6mLl#dmm_=yq%0US=Eukc+6f&0-U; z6z=jAewzRr1XcD&W!5t7Nt6i<^}#bm^5!Xon55}zbo|kHSWn{6e#RhcaSEKCf1Tvb z!+cE$6AUep;oGDPaQpzn4oi`zXq1!dGSHKr(`d6egG@~BAbSQN+LC$Yt@4U%J5z&0 z=@;=9-LqF*?br7Vr{0xryY+mn{5eRQWln6TRQ^t)z#6yBxA4CR!O6L4oH)F2q$U63 zl*v=L@%}Voow^?SNuCV)^rRqGWc_S}<@OAKLbxYGXv{I50hH3ulOfL8M(}|8OXxrE zPt@9WMt|>|>2%;`x2;#jG;;thv(RO&M5UdE8QI@LhYpVu9LBoOsbI5PAHYwQj%EFt z!+~=0DB9wN2a9|d7dfg^I}>&M%IXB7%f?jcXvAxlAjw`t%ft@J+c;P{F&1{d$@=a) zM?1B=@754wTg(O-&$|;a!!^dq__4b)m{Fd{@EKyP!9aMo#3rNHTqSfb6q;Y%_<`SY4%3jL7MU+r@+7Mcx&G~oW#V(efCF+!#;W)@1fq#Sp13o z?zZh?dv09i9Oav02ZF2q^f&iz1@A8Ts>m}8o+;EyPk)o1aW{(Nj?#eeYD%@OyY?HG z4=0EcSy!T@E?Li&-y3Vv=io(mzhrM-I|ELyZn504?H$IeCerN`fQ{N>H7p5etksTw zO=u!A*tnQ#0XE1$@C3x^rG-1%4GFWkLd5UJ5?a`X^3-!0fX27caPn|t)^NAMgPAHb z&-97^0P#`7XJ_6JHK0P3d4`&_JeGH-jOA0e18&NL&Nv=6I-KW$&UtoDb9%9p9SjSA zm5-uF09Mu*8m#;?YJrtCMmw~wwL$!07gRUoY!&KRJ@In?S-y8>&)H4&oaP7>oouwyNc`Ww&d z*f3nX?6=*H6`kMduzv4qJqT9RDSj5^{{1p82-=X6HT*KQg?nHPz5Iei6TJmp@#+gJ zQ(_62^d~50C4v&{yr9!AEqAx_xxXu(dYE(1b6@(99Qz^bq$>|4y7EqGr&Yh|YE8xj z>y8j7?PScbQK+-0KK;VZTH|f!+AaMwE}^aQHd$4xf9V%>*an>YZudr+GB>>ugWlRF z>Z>H>j*B`S&=>BcUAf9Q=&sy&@ga9*`m_UfTcWdJ%oo>Ou8uk|4 z7;U!&U6*z`tvd{C!GA=5%oa?aen79k;a*!vi0*rf2o%0bcyiczKp~UV0|RY-T#}&7Ki7D{vZYJLo)R+Zi}PTPPN(*pxf*-cS66_ zlf>*vX&1HOAmJFgpef#0<<9l$OLE|mo=D!MrDQXG>Ooa%9tWW$0vl*E6(|70vYgzx zOn<;;b0)5Fcw~pKtH7MF(qX1niar}3nBPmp>x2qgh11a6E<2RF1j}alASgvSa0SMi zvPEZTvdVulpdC5G1_Z9a;WjIG0NjR{0SN-E%&iEyCKAX?c^5Ycf(vEa`%bi}p`A0G zc2`;0^r@<`TvfpB1acdDRFQVMe=clqfojO2%(R7Wr z9{LwNVz;>aQEMzu9I=8YP>>A=q;MX_FLUVec$W0)DG5P#IdF-25l5Y>%IU`+-S&KQ zj{mq&m{yAoCR4p>&fs2k!6)olDkEaKP899ayW?T``lhQyWzZ6ylP--~ol6;gu{h@l zK{1tXiHDr3K5*5PFjj30-YfcB=g>9rH2vjEiO_a7@1sIx-o;t6_9|^Wt=%xrVMw-+ z*RttZy{vHegn&~~>_MtaP}$Ya@Gf^8%#`&}gOyJIQS13fIG>B8anHs&tJS4$|Nv-Y@80d3iYk062~qi{?6|w&-rajSbZC z@|nChGDIuY%U_>zXM*0}A#R2cUV1+F<~@~vYC&^=r$a(6{l>kAKmHt3K`$Zbu{E3b zN%t$1_7?`=uic7y`FQ1;tA~tH7bedjk8k1S*HW}et#zC@mCtwj`6T@Gs9U)fM87V; zfDE$cAd%~N@#bSY4@;!KVNG^i(IVc|0}$n`3zI~fFo5qEuPW6(Mnr2QmYP7mzjK3u z1^=47yXQ^87*EDVnvCT@jJm0!)bOrC42+TLGrBouoja4sV1z2nmAzk=1t%NYsf!s< zBTYIfcc_@p!R<%E44#$B9b~Kn=z2HRb`+Psz!||>a+osE5T>J-!}aM=K}A*24S1T9 zKj(ip!nm2wAQh^C;ut>@V2#vv7|AvG#*dajhB%6ouzp|$A@V_nf^V;3%ABBW$0LAA z)wHzO*=Gx#o;+r0M!$s^@1nv{nLU)6ib)0EgMV14Wj???_Dw zjZHlBmm_Gs$1uiFTVor%beb3JQpRZvQHPq#*954sMa=32ej?b|4rfN{oqoJUnjsks zj1|ABa;Mk9!{ob6yImk4&&z~oVC(!h5oQ^~5eSRrJzGypjmz@nxt)FX$d_gr{ z`Nn%pdbc@*Zm*|C-o|htI!TS?o0JZ+TZcQ5_iM5?Pop!u{nj?xTwW1CtjeIJiw(!{2zTliuTO}WJ`V0P zY5o*B@P3sI!WUla@rbDR$Ckhk67RvTyayLWRK9ot_iH!nJohDX@bh7+YSP=yEp!*< zj^>9ne&7;sHTxV$ai=(erc1+)HS`jv!@uxY4#4=X<5d=iA#$-!;QnsF1^RBUWZT}2 zOP!*B@g!jkI}_>e>ng|l5RS#Cx4xz76KqlF4uQVFYiuQ}xoTd#2*UC7BVr}Caep(bL8pBXfb~et++;SYhhLFk#VY?%8 zM(jhF$%0^T94~E*IqkNjBm=ob`t>Pt0qAKr9VMFdxRc|il%yFcN~HhP@-uTQpZ-jf zs=}1c_)-~eMmh=r(7aGdyj7Z8OeX}*IdHX3)jsMK90O0=@TKE!m6i81jP>&7@lstH z^~g0J4e+&6AbxLSAs*gb#@gYBLEH`4I!~85J^6Kt%{shTq6=je^7PGLB$q9Qm5rK0 z%HM*iDnV!%2Uxn6JGDHGT1J5^g0&|t<#m}X)s6Z8xO)@$D2t?jd}exR9!NA%6BTqJ z0xD5+7?cD|G?`$c23&9@@ERo(NYDf%NB|Q;W+E(t2y%$vZCC|ea1{{`@BjrBJP<)w zTxAzLP}dU=L_GM{x4NHxo=GMFT;Jd4-G5+ap1!K9tB28 z*!c7k+dMFshHZiMj-m=Y@}fg-3+J%+*t}*vF{Z0HDnrbpvR``2t@$l`q)zonjbn~r znrX*O+r*4a$(7bI8a00b?zyDlH3#3kM4yB);&UREH~=GTN$KL4p4Y%KzbvhQ6`j}& zxQJ;e5z`3A>%6e6lP|?J)#CbaSMejZaKcwU>ZB^ z@cjfQHPpH@q?Ip}N&b#a(92I29S^um+3rrB4DbzXyhl1fRWjT)z<$`ohatFf5_fs= zLZ_WMrGR$d1LXLrP@3E%m*9f9eZX*oCQ3U#tAVA<-f~1A*nbwd7KeGCd0#5q5$`Ij z{o|#$wi=5pTQg2!SIRKN!oI$&%W%1UF+D7#5ea9y@Y1>@TtdGEb7_|XWV4j-nnKx4 zZ1vzhAlkhLgGW@}kMi|Y-ml6pZlin-mH#_7(BiMeY=B>Z%MCs?!z3V%Dbu?13>cof zFUx|l7|qqdot$+}YC2^aDq$xp0Fq!%(UALP)_KwK|VxDzp@EvdcTQME|>(J(o!mzwBxt4*Gs;&Iw|oyvl!OgRW{fvK(6!XWN@o-s66 zO4wv>clzL^Mw@;((|X@ChRx}SCgL>2zdT)F zhGBa>(C*<^TMF}H{)|8Jbj%bJmSbp-T@FiT^F$q%_Y`}1_slnA%igQ5VdntdUtxE{ zG<&d(x}L3AFHu+R)!y`EnRg|PS6uM4;Lj(8wpWd?*b1jw@W&TggwZ0ZvHcXs9>9r7 zHCRLn{)31?J(`F6ELe-h5s-u2e|VQolmb;+*+JwFhae2mkVaIFz3L#Ea7IuuV(f%N z0qF=fsv!mW&voYx`znGWb2`8oP{&uag^CMWtik1Kwi6aSXScBnQOitw9gy3v{fzZ;o+GHCUnMeN!f_7%YQY+%5>6eb;I z-U3lx!fTtTD8Yt8oKVg$(iG`CXn5e7cw+_`hF%h@rz%=aiEL0^5 zIe&&MRKcz)D1yoG0M`?CJ$yxk)6INGly3)eYhc^|6{#F`50<&2oc0b=MdvBBgJnlG z@cBLcLfi0K?(K$rzqrT;AsDeOIEZ#gRSm77{>7fb?dWI zEDI+>H{X!FQud?r7j9w?_|p8 z3Dsn%Z|r7^eHSx@^K1$evHkJXN1?}*^x;150hlWsEWe@MNZ0*T?dKt8Fc)}n9dQAr z?6ZsPA*6>%C50r$9N+b{&-Hgf{#jlu_o6|&(0YhAVbp7{6XnL!yI|5HL@R&ngH7Kx zHtD{z#3|~^0ADrk-??+=6RD|3;?nv+zHV?kOq$C~M12S^o4A!ht<+H;=%_nYl&B-- zv16@*@K3hbYl*wU$>#`bce$9b>3nJJk$GoQ)_~}+%zq@jaB}IKRN)^;IdTHb-1nDx zR|WW*Yi{VODi*osW?j`gUq8`?4!1~s*?1wt69Db(Poi(%DL<#Crm~B%D%qPVk-Y=z zYm`Fwbx%*l%Rdqxgz#oh7lc--yF{<4(4*mA2)(L8tHQ|$y`n;op@YMPe;YPz7#so6 z_vDhfbLWEiOAJr8#LyOcRndr>sc3tFA#HC(#tRK$&sGr^wIpl0qH2+wsM{ildJ<@Q z5tFouNqSKvNjG1W#q=VQ=H|0!3npokL(*g>DMY2du1wOCTP5j9nxdsl!X&0rke|Eq za~Tt}3qKF%=RffC2qxs52tq#3gq&yA=f4_4-sDw;d_blYQwwR9T5!Z+0$u#wq3Avd#GFxqTl}XVJcKY)= z9X1+e_aSh?BN}$V!Ito@k}2oNB*>kW-;ATzg#YiDno zn|rzc$m{&pZ0EAF=Wn{9?Zq)rDLO*5!_~R^YAwLIh=m3E^egCOK0zsAu)AcQ5#X6h z5)dql&h_pN>BZSX~MmAZOG9b8Jw%#H9OB||;*0e5Gn>lE}}HZ&JQIca^E}To)aKPV_p}(ERh3`eUUSoTz+_oxYGjPNZkFyP8kp zt985WHxcFPQ*N3K17fhsH^;P^zb-IdD<3m8ZjPw2P}kVURpa@s*7%a=(5nnSVXEww zfFTF@+rzTRx%*{KaA_83lMP89Ha{&VV%ru+*R_=x{3!B3_z1YOv?tJdzgLWMj^%fF z!3Gt2ek&W~q5X36D`ZV}bG_nKZ$bd~xUy2SOkct)YL$LzA0Ch$(Q@2$@itn zr?Qzz=wxa1B^VK~6Fb#s7j&w3Qbj_5{!&qCkCRgaS%E(0%l)sI{-v7D^J-K4tlv;P zxW*L!hz4J$RDeh$5UKqKQ0w~#TKkvZBIe{M+4^Orrlw_~$*DbvlF+PN>i-Wrm^h^7 z9i02L)4?95LVh5>YE)LAz>xf^s{G>O{(&JB*&k>Z_vcSOJ)53=#uT4JJsZf+N~;>3 z)j#5|3jeZt;2U3~1`OZ^_NUyzKvr2+pP^JiaWSe1sA>ZEaAIoK08`akrz&3pBU&{o zbwE~+;{K;pRb^!r7pL|s?mr|ep#F;O>J_@`ujTV#X}GEJIdGThd|_z$)`aV5i=m5NHC!I ze~2=6ZA_AU5M(5Qwm+jIJ|9pGA7}zlZ9nYI{|^xua(;i)59xdL|K8^R4|ZL9^HT?$ zqk1qO{ZaLS?#~vZC=lSj8s+XQDxTG+U+RFWRtnMJP3==Wq)(tfbz*b?{Q_dRyh&=^>$7?C!zvaIcktNK#!_}@#Arv+HiBvE5CGHfdvcq|2Oy(3~O$4smkH{QgY z-P`rpJUhiiX781Cmg})ucEm(xKbtUj9-C!HOhk52NK4He5t@i1tMaQi!_JS45ahT7 zSpyBjAKPV=QE=L%9J9aQZ8DvxH8R9eFlEsn?ETPccpxK2zGH!i=U7(XjTb|6l%(M3 zjT9J<6I#dsx@j3erb`BJW)cp+jee0+U3b>$hcDa?x<0B-sdjX#rNGsIdMQKAY$;ig z8A-NjtlW$5>zJei9$=r@+eD1$=pQb#!f9YA(SIkfvUHd%?=?4xnMHalPZ*e|ib!d|aEtldJU$$5pnyO>H zt0tw((^zky1U=*ZnmX-0&lGWQIGKK_rlsN8)V&t_NE7c<%3YN5K2qj+%cc0KA+b@y z@m+|LJ7f@0_}5EIZ%hYzqT|4Hxso*@O4Em@tGI3%qBNPka*GU^elFs4V0Si&@f4QXqPSy^I7Lj?>o+qxCG-hA%;*pduBi(kiMP@FBfyY*|2;$RcVx^P_M5N(;zO} z@8KNu^k**)!i9e;zP}G`;trn89o)nnyijcL45Yjz{a`H=*N{YL2lZgLDdLJ`>LDrK zKy}o+>1?ltW;2MjfV(n{dO`Q@aE_wX^z`T*LmkH>((c#1$bLb2K8!XU8`&?)A?qn9 z->A@N-mi_#`t@)IhSRYR)T@qt2a2yt>WQ}R`Zv-;BK=aw-b)Yv@<;1fm!G_(A56!t zh7w6%nzMc3T1R+m>9=Ecl@y~Asp|Cf(L-12ioctrDxQtw$vw1yiaG5z(nBKs76ipt z^l)>#>|Clil@%&7sbZhh>(4$@;n(dFoZ2$_s%wH5Q$uk&olaP0$Rb?Jgi&}*Wr)>! zQRG?jOo!)nz}+XcaX@iiwn)mBnc@y;#V^E|_$*W*axSBn1|jaAJosi2x!4;@RBO}e za6Ofr-dFY|2vCL@o=gc8IPEmoZogek{jtEk$wxR#8i4X zAPdknL9LVM>YASnEw{Hf%Q(nypBtx$Pdyo8A?$$C125U-n1+9+*;<3Rh4{(h?|-Q{ zxz%2xX*H{1t=$aHGz;HbC=+3Q^b~w=^{{R~70(mfC_(I{_s2R~_Vc*t0{szBpucVp z=`~zrf$W2mu~>>zo5W>x>5V+mPs|YG2C2DD3r7>BJ{tzL28hXnPGiHe&DU{}vJij> zD!iXvmaNx)1~k+LM5qGLZ~!7=yWpthcqQOu08S$iY7R#&>Y@km8J0{70ItNgK!&D1 zG=(Ohr%Ofqf!xnXNgb-De-X{XiK?q-;}mMoM4J9{I?ybfNVBj5P5-ax;pPs_r~l6l z6~^hL=W@Hd_jG{%n0Rwyg?O+7_v@PzF~w(y5k=Hb%Z3M4k$sLM3vzPp?Wkt*3gs~}lik{=-@H~o zcD^dDTFf}uV?1C#m`|qjN!5RNkm~lI{Rz6Bn|~-xTtcf-8XU=|(mc7imlUbl=a_Z} zg>Dh;`_*1l#M3qu`^K0t$}!}GZF*Z;C5sTh*#nQnkK#;LoiX`w#xxs>ZJsXJr^4cE zIETV7a~M8rALsCTl@8q}9NV%v)hEJ*>~5HnU*u%26ZWT}aefL#pKA)`*@d2lBPCVn zIlfuWg`R<$m|_jGdpb1~bhY#582EWPtW5{-XCty90;ls0^ej`NfMIiq^p+(qG9`MM z5=Bml(_5DKqbZSUN(^*LoYJzyrKUu(DKXe7aZ<|?|6@w@FeNTCH0lZ(HK?2;42_aZ z&S6d$9Iv{dUk*A`ilqIpIbhGxb?x;KvJ?Z^L5kI}IMB^13sBtpni9iBS|;a-JlKMo zi=5$bk(R?n&fs=vF4D5O$O_Fx+9$~l7ilRj(%2H-=~QQPkuww*IRj85SCd){Vh99D7z zeJn9(hrfe(G8VifR*E3yy?Ojpho59BNAi=Fi=TuSZ*{HxMVqIzTs-9l93;(mF_nYC zP;O(md9qW$#Z=B#Or^`gVB--6{Z@I(olc%sdCJ@)O`cYH$|fgIt30JA&g3~Hp0d%- z-@(mOW@V*|&0rBf zxkOfe%!EF=&a;d)Yd+(Rjm7Ltsl$y@wqzR={d~sd#j9Qgrc{3%)^%GwZD8(cmo1*J zpQ`!W4=Kw6{mlIC{luoGh}t?Z$hFDTuyXN82)`NP6A!$ze$)V`*1}J_r_+YhzGN_* zHPQ4JQ+!jzFAd4`n?W4ZR@&uF{#e$CeZGNWIz_{-wD^p06F*K$+>*XUJ|NlKfH=B5 zy>W}?N>b9cXa=ZM#5XNiuz+_snqQ?qD^1kQW(ucY0tR5X;cGs;9N|X#lb8nDF%H1f9r68?pveh@PTDVHEUraY@~-L+m%;|7wKV5y8`ZLz1=e(xRQQtlDTBj^anGyZjpL!WlJ>*6MEMyk{@|25z6BhGB z6;#ON^5SkIEW8s8!sbILT=3M}44!emAJbXz#7E?Eg7&7bT-=1B`!HLmo12=?s~J8_ zyYCv3k^BkprU^8hdQEfe#Hloz36$38nm;RP{%m35yXMbWVwBsUT6%acrXVPup@;P`*_uCT!PnUQ$GX!EqJN1^a8Q&N zOM2={Pl}!cX-5HZ3#Jlo@pjB$4}5ToDkk+(E?D4Kh&#C#i(#O`M7?ChFu^lSRl8$t z`QWcm@dL|T-uy=_rT4N}B{IZolPhG+#XLV~LYqaM`nZOM05RN)1=Y4|aw0|&t|N%J zfl`c1PDcy+%Apbu5SZ|l7vZP96Ai?EQn57upbwlQj-}c%rr@S!$?ydWhKsmm0D-@u zcQ*pi{nxM?B>P=QO=DeMe}?--CB{;gj0^_TsMZ9+#)j0$kbp{BG+DfH9WlqsHYp93HQKQJ>lMoqv5+`EQas9 zly}M4MEa${dM`cfz{6sC_!l1Tp@&^~xQiY>h--bqJvrI%KRbJwarJDx*@W}e;-LNn zxJmWZs<*^)3cMMrhRqZv)_a~+Sj*p|O_KBT#AKFDE%$D1nWlf%a+WXo!VN@NR=PbR zOBT^iOAnAoV4xn(CULCrcN*Fz<$Vq`Pq~-gf?|_@mY6$vsuE|ZWwRDl{#z`h#QMZ7 z!+9zm-9)P|FLw5r=UxyUFIxb?bm{2fw)k4qR5u%LIT-&KZvT)ePdD${p~HvM6xiy5 z*rX~N&Fk=8HaOQ%NsriN9m24SgxM0y^n(oJi0RMWS*sO#m+Q&@VKhi> zPmQNW>8bHz0(Je9qp*qFm@tr@66u$=Y>(5!%L%k)TSX7ACeVynNe`Rxu!0`8Bt&lF z+*9M;dNVaV=b5RoB9X;+w~VR~pC$09zh#sX-~Bs5iSKS6rNnig>+n1s{!)kM=H%zx+Y;S~A)ST)NdM1NJy zM1KMO=9^(YnGv5L|K_#&2{y|g4Zb@ZAuWuMD>nb6y8c><3ti#Th)<|l_~2=ot%)ba zgNoP-SttqO!>Xislc?{_rUB&0mYVu$s&^Ec2@uCXJZaIJf1^zCcf=+B5-sacpCTl_ z?Ab^~o(OkEV56rCyv{rsUPO%jb1Y`nAD1Q%SkEW=-qBPX-jRJ7$qm| zZq8SWOoiR~;xNHXRf1B2ohLgf*qMN>q@@+DN=suRq@_C@$Sf_jjM7a~f0NRdxU|v9 z<`S0@RuS^jf28nk5El_idxRFOGSP#V)h@n(xH zB#m(iNiAsJz`jQ_G3jDebE%S(E^RI+?QU=%XmD>;PP)#?)2f^_X^_d&s+_dZ$oqp%#m87leX34+C8%hdRDsVm@V$`WgDdni_gl93dUS7i%_3# zKu3vt)OJn$g|c8nQO`ot`+ShESd^M!Qngq$N)7_^7X`HSL|t*DK-Eguffi}*XM+1m zZ8W&|DDkiUdBmq>LdrehmKN|}MC#gu!_hwv`L?<-YzdA&Vk#e}GQ1Q+E=|*DKVr_c zn=HQA^S67d;waJu+Y3Gp9Rx|L4bWDB}9ou*uz-UyKp2U!@S z(l4i9(J4b`$3M=Yq+rNEUq@^FPb5s**NXP#EF2e=XeecAApT&@^g|jk;zkx>L5@V$qX@)@?|u(jw<)|#b89+Z&mnKqC{(uEu}yN z$Q31`b5zJ%nnUhLkSB_2H(W(m8x87m&YkK4+!zU1=iQ>Q$7Ya5mm8FqjNUgNVR z;h5n&Sd6d5M&j{?WXfNTI?A0)xJAt3`S!dzzds3JKWd*LZm&h*QiaFMb<24*bS;K@ z?I3vTeURDDnVd|Gq2MZCx&0<_BK<4@yo=Xp%nE9b6rW96ZkDrBf;B~BOjW#Z>GL|( zt_L9D2Q(>u7ON=px3sE?IUQDUJ6{`5i=?^*DJMfRmTu zL#fFtzZ^PrC?$;^t&~{*ekHbKzVr8r<;NFDvF*wV>B|*=JAOYsCem*~m3V_59>&A# z^zaBCUZaOc@$d>gJcfr&^zZ~8UZRK9czA&xo;to&@pi-qTwB@9r#|g5BE8024O%~TvfpAWynMQ|QyuFZ^hfNWRawkIE#KBowe_S2 zL&khWLHcn1ldQ{7DyE0^`3{a#N~!#1#2bW@`K+h!Xc*jU)KkH`5E|XJBE3Ki-gGg6 zS+HQGf|3U)d=R@}K_h|q8W6Vd*pM@2X1aL6GZ5}wcwc_RDz&bpl#9X1YW!~jn6DX` zIz4RwrisARX)t{OrnXQ|Azb(`Wn2hIU28xZZCn(PzB3iRnrqZG<>T_&5A5+W6lzcWc5__#} zo&y$@>WQ!NXkWBmO=5Q>y=n6$u1wz2$m_l{*6WDCJY)Vr>F@bz#yrc{0|ZQkiSw3; zCE>c^!?F53O_On>Cxg3b`0$l0SHg1N0X1Q;xuB>8V%EzR%% zF&lMTDhbB18NA_u=68r^=@R5=hRnrE6$7Z#;IG@F2Y;j0e@lz8pAs?L4{08>`R=vH z{v&l2?i+)-kDH-?TTeb|dT?lkc=J>y$%8}HNz=Ad)ydJaq3WdQEggP9hu_xWr8@kM z4&SH4@9OYhba;mjH|g-dbog!^-gT-vnYvSlKR7k|$y95)5l@&lZR*LVRD4zf-ePZy zgDUmEk2$YOdeV7KpQg{N^r^IStQ76oDf)4hoj(|*j5~kuFyU9p$m6r-$6C(EtzmC# z&^IHVqd}k9^7Gp@=zqr}vEQ5~ZVYp`+ec_0*&_Qz<&e%H~^5ilf`b224u z)cW@n^SC(?ixKNQ&5nkSz%n^VouI_8gB*Dc_S55m$`#A}*g~mk*-+$*%Ic{xVa(o2mbDE|0GKgMEZX zu@xp~7j=k5aY3i0$GQ%&XmIop-S&$o^>OSdwmb8==kVQmj~Y`}epTA2>asB-;dc4# z)bzBmnYKzzBcC`@ zop!Ky4q9#coy*5Lc{uWb%PI>l>qW?z;|^YLN*)ihSbo?<>R$8ru&6FkLG|fY>)~Q z6VoT<&>DE|3~iSTer_x{ycq_AappbNwBA7L>YM_@q#1pmw^zBvs_P|da5+gEub4Y2 z$GC@Bx51R}Nz;pRr?WN8dYMVjefW7YKWE|DShY)f!IaC;>=d?hS1wi;;wb->ra3{% zbi<^nvT~$+pVrWz{)i6cev!`3CGO=K%3QStl}%1LMRu=~!nYMh`WH)Ow-v4gE|Mc~ zEZuFddQ^UZa7KO?0i-5ZB`dEL$2R$esO+Tz$02ZOBrzVF#Fn8a*U@(co;q%n@O?nQ zJ2P-_c{ue4#&`tu_5&5bx~>SxE)qx6%Kk*2GV9R|o&c=?)pu+LzoC4vQ^u$b(x{~Y zn}Hg&bOfFXN8+{_xcQHvmtdV*8js@>_0S>}JElU#o(iqm`bBb{C^44#JujR7`Hat@ zvtZ_J5Il}y#0{qSG&p{RM^eXWsZ;1%WlWCny@o3D(Hl_6W9j#NLUU3gzleRJeSsp! z=t3QlP=Mg5L^+QFi4+iH6ZKZY2T>M9T$RJ{#Br-|QU#xku3cH~D+YmIjnk&03)5J4 zi6DAO{j!+xqB98~xNPXW`_S1Imbmw0x< zhwK2rR|z}rV$vr1{?rzsCcSPDySL2-IQifV>NUFo=b!=OK||U!!o2M|4>w_LxK5$^ zJa*5BnHKJ<&7q(_Vc$Pf`mzo%seRqVOu~4u?4)|(Doo>#Wb%anu~T{(>$t8jBs$g%^>@R9v0Rys;h4gPesKaF}!;h&j5*t-wqjwg!-iGu& zL;f{nw`q#kskv0utbon1NA*6>ZmtVC;9chcL)ag(OI+{e_3B580Kn;9r-FH=f*&~C zfOi;&r-bzi_N!+V1-}o0rt^4dVQAk`1PC#UbN^^cPglwNbY(L*d5>bn`%}h@R!*^q!`~T973N=< z@XZ|lhQpNH6t&b{7L_l!z@URU?53O+}{w|UX#;5t28*Ky$&%y@i? z!!L*I$A zVLEG*!u4^A(4+H!U45fHIvaf$od+89aJ z`t}qze%vzFxKUY0kYNRKY~!+!W}>^siMppI14b;hgI^=hG_Z zdX@88_WM-`e<$Y1^`8dC4SE9gSN?1o_VC*eL-RtjK@ac-y+RgUz#hYb`lC1KAi=cO zHt4tdR>>au{si%6LobXYRlgu$0@(KxWC*9?x6#G^~A{*mh?(0eLu9PA? zn{7Eut44G8*hcI$_;2y)H?DZKq2$n+iz}LE{SWhr$9&~tBjNtvnEi3e{?dPG_9rO& zi~ptBp+$w;N2R`5zMs>jbtaAe63t}8&d6<=$;R{Tn#pGSBli=-+ao|*V&eJF!%Tb= zt|1AWXjm(t{#6gReLeVe%-bZMIdqhsBN$INfDNp2F9L0@0F<`E$7|^84T-ID>*5jL zLUwu7oh9@0a9Gul4@qhu@+)7T7nE`ixEjk7$7DeL<6+4Lm}LK8WC_{tTw?m*YplGE zw&(SUzHGfvd}$VnDZ;S1YZ}~q?i)TZx?(~EtJ~xhTqqo!_ea6oK+GWaPi{feHbfbJ zrV>9+J`A$*`v;W$R#A3VTa=~EzHbVZAZ~Y2!y?7)zUyOIz>!UGU~J82N=}Bf8fVmb zqQ2K7tO`;KSAZwWllojZLFUTtsqkD_DyQQ(2udl?tP9V^8hnS_+3gi>Axw-U>u_e-xNiXCobX(Uh zrq`(SnQZXp;^n3nMEV%2gyIIV)FqYe&s>s2Z^cs~n!kg<{SQKCDCxb0BME^c0dt$E zQW?t`tdBH=y4J%UE{bhIzfeaC4OBj8%Fn}*LaBUBmA8)+1dbF+RovxH`OeMmFTrPq zsqqh{#xkcwqN>APqN30)al9!pQr*3wwjX2Py`k7@gH3|TS>?cvMdXqQ*kcUrI8&n9 z!0zaRU29;+n4C2ZY{9Vo>`9P&NRHtRp9QC9;tz_9xs=eExE2c@HtoK&!~?_*I-9n>purQV0_PE9YW>0!v3a5Kx21@IM1`ve(M^{s}pXuoBNmpnb?L^ZGnTNeeg zkXQq)d#5lKf!E>bGld(}kZ3mucYtN)tZ{O+xVf1Tp~ijYX5;B>CJCa9!P3|5*Ng1) z3D1uvORof2$ol|aU%)w?v47-b$<~fOeSP+t3zz#%>Lz{51ENif{d5n5qeBb6DSX)? z1`ca|!^Khi;TgM53Tu^w)2vbn@r6~4FY&Tx8T}SJpG$D4D;|ZTDGBd-a4CJc6Ng1* zIBw;1kfIBgl)KbGXJ<|JFT|StS-46|PU#+?F;tvHXz+E5y*38ooXeus9jIW%bOmmK zz3{UKLvOiu&il5m=}uYNn*}#mhi^u81zg=&(RaU+dgj(CWX~dG5iVM!!YMj@i4H&S z;RW*IMaEgF_X?ZPe`c9eCe^5!bqD_ zK2yW3-e%%UhWS0(e5-FEle4?LifwgKH(%QoH-CzweEQ>t^hY#UGtstt!n&t+IkL{l zB@q|a{04;;aI4ct_uP1w^1=OC0hyClTwHuf|5U!01TWdjPx%Z@2>zH6+Rngy)$6EuUaF-#yqVe4bnbAXk_-(>lwvbS?26 zgYgO_)*~e9x|;dk!DRWu2WyCD$<4ARHA_AsPnRHP6^|?ZaZI3@Qa^&B!JRQ*R~n=H z#k16>xO$7XH$17BhKQcDwzt+6SnNHgixiU*h3_&`?oyd4`VqLk2au&9r&UU@VpoAU zpQQ)%!Sr2i_gHDv2eGbUHfG{rvCg+&)H`=1VolSo7q-oAK+MDYme%M7cx&@rB3|;rNZx^2@eb9CY%1&n+JK8(MsJ7u82EPS$<2Mr@Sb|0Qc>ktiyZ;_U44QRcsmy2S=_ zYuB1Hl0<{jbbniCBu>7Y;0Ihh5&jLhZ}#Z!dPPQb7G}Lw2F&VAKdn2~)OeTQzBkIw zV7Va|`qK0;I?m*~*KaE&EmZOv{tR%D0j+wUYm{R_bpJzMaoX z;h{Fju?=&AY3(O|`>>7nJ!jIxNm!pIRq#tG6Nb&MohsAPWXcuvg2L;niFTCM3f>K2 z<-!UE?JptTLvrPE?x{?Ex1qqDtewqf&G@`0V2XE9?lJSkq>}gL_2~Bw1K|pEFf-S_ z{y)eREA4D4o~+0I-?~$6#J2dc6H_gsj;@#^t?qE97}tz(5)OuRyr-uc8+fQ&c{X2^HgH5AzorS`+y zy349dL=rIyrEshqj)HcyU!h!w`o_>~;vO#ifrTj6!YBo%M*#q@s$yz*s;do4?Kb?V z+VI)Io1k3Gipq*>Pn_V!HHoYUTT6n)tr? zKH=MsS4d?Jy+L3cV=XP^&wCEII)G~ag}&g?gP2Mp%~Df^(yR%ZwHPA1@Qw(_31{mb ziHT6wiIwO1kITSTewRNs!ZJn#3trM%Yb&hab3XTz* zYf6mDPE)1@K-@%7ki6n9QGiaVGTw&G5#Ry2KM zaAe=t^-MCcZBK056WdA0nHUpW6I&BI9d~Towr$(ao8MFa_rtAyk9OBRr>o9A`|h>Y zT39y(q;Hw>8nDYAS_e0XVRIpYZFU1E0LzZ1{020>=I1?mC0n z=My0n%F4TIyHn$C+rjHmzY2ZeD_BYxHq_TCN#wc)Owo!vVL_;qh;vscyDqIgHjQSD z1LqBPz;Gd&Iya-7`dZndjS^+SgE?)r6H1Ev0Xsy}j$PHG>pm)e!bBdG0-s3`tJ;a) zBnvE+Sk^J$HS?jVog079qrE2e4ciqyqvFqIy~NKrzvC_+bsQ13S@g75Zs#=VAPNOK ztD9no3oA%|wNv>1DvB6gXHW@1%{h~Fx)T132SV23rcWf^EC!aWT8UgFo^rwbrmu=Z zp=^3D%up;{GjA9zkKNq}IDA`;i#4?u#-7H4KJ6aSuh-6V%4$;GROjT zEqo0LO3^I;8p7soR8OG*UdaY8_vODzK=#Yu^puTU7Pfjr*nApamru0x2Y_-?P1yVf zKWFQ|^I31!WKbu&+JDEha?E_c)igd_`!Da)O!1DsmQ31x+n2JMh95yNn`7IyvQHEc ze_{rrm|baa`pm_$G_~VGLhl5f!%TFuu#ax6^Se08nNjnc-D6*~X&#Lx z-W3w@M);}$sZf_wA8$}-6bp9MJ;n!^bqs7?Qn+3m6DqK@%-6Gt% zq79ykv46UR++k6Bqvsb-a=Z~|h0RhOW;_1D0j=j~5j{>6`4kj?Ub1BT@@ zjjq?bT^~#{Y3~-Gg_U(s^)>gsX?)cTUlaXxYh`s~P=0MlNA*=SzsaHXofnRvzu+z5 zlS@vyJ}$oLtD#YdRQ`H!wXb#A4|4{6O{Ut{nvS65sk$3!B~pqf&Xw>n0}?6KznZAN zn!b7|71Yrv$g-(r4G7|(YnR-po{Z14)!K&`uyx@*!fM@_wcEQQ-XgWwcaFMtO&^9? z04LFUU-&c{rvC4Kmsc&`t*X1TnMOgTFt3=sa5wy5IpEVmJQ;D^*UU#E=Ae_cGf(Dr zGj&txqM2T#8S0FylAY4RCj)$)O*Ct`bn3mspX1ImEx(x2{?2p2{5?xlbX5JSIyu-= z?L#O%0<56?D)Bdof3U*oX@FZ_<7&Z9?_m>CW5Leslt}*}yLNwwKxSH^rS7;{zSb{* z(ruW9*!UpzQc~LFcBr7WTDB-9QzuYp*A^qntX}Fj)vI-VqIca`m->U&z=(jI1aBq1 zNjAx1Q=&KSl{_{f@Qih`;0&$IVZ-kQ9cFNcb)b}fauz`a1MWci;aK4{R`aX1cSN9C zdKpUel|l)b8f%EaWJ{1yCpbJx&WOfKyBAPj|J*lN*()YXat%Vd{A@;eXgIP$+{{(u z4CUUrlEZgdCNKP#{R*3KAYGPXW=2`~Py5??qNcrQKzsjlx6rg}vdr=uLldID0^Uee z#+YKq{dS*(aO#Mn4rd|tJ5iU=2v#& zT*L46xCaZAtt+il7MED@a-N4UvU(HmFoz58ZmsdJDwL1(JySQLt{1JDYed}5wvG;$ zduvFgYrgglmpg0tp2_Qg>Yn|6Ew438{edFLQNR$tU(!MXNFPWrF?vURx zaQ3=^uF0az?>Gs9@vesH=?`Om_cZ|5D}gx#pE3*gcx}TP-^`$jiYrU3+kU3!e%vhy zLdAduiWok+HUln$z0e%af=Tv68OADYok#Otm-XL+^+LAxkpJ%N@=4`opng*ti)*GZ z#?&Gg{m>><>s~i?G#?jh2_KigNuOM+|8gU-xzTE z2u3^UA4Nvcz(-q&Ve6Q^(6%sfF{ClM{i8O93)t1d#+Rt&)+3bZJVeU{VB;4BcF&be z3m*U9=826DWoXydF(n1eLpCzB%Q)pIS{=+$d9GYZ^-QI!VUW!u>8p?Yl#1hbNzx;X z{KYkq1TENuy3Io-ooOx9K#hRN^9+yPqz|eoewl#lnpNt7)B(n-jX9-R~uX#X=#sqIg@a2=$Cy?P`ul zQ=y;uwh@85#He}&S8Ak&0cvw_nXOukDPHst-5dqU%+a>g_#`mV zD*v|Jl70+=N;ASYd=aetKYR125v8gkb|y?F+_Vv`0a$9tZG`>?jbDmRYyl2|Ke6XG z3H2gJ1daCoXbe#++3`jA`zoVI22pWMU_uPmQaw>(`2GLQ^NR47*B}TPVsJTk%MBCa zQVB&e6QoQ68@-sj1)24bVlPej%Jj8&x;02?eDxrQjaK~g^7Y?UI=TsB`R z71QG1mo#AocD47Nk``gL@{$($xFZcnmrO91zXcP;u#G&s33OapCf)YZnD~=52KBK% zlQ}k8cK8vNyY+NUUn79y&>E${?}m1KZ~^wK%+Wz#e_ZTHQe?qJhcBbHo5=TM z13RJCUCCDEPV-cNIC0psnO0)vxReBCwbj7K6}{hm{Xg?RR|DF@Dk;8(J)DkDc=4YU z5c0zT><53`nM`GyPu$6o23irpw%zEF#j#Pp42t-Z+$Bq+q+3#|_n$Z>o~PLN)LhT@I*td>H_UhoDBw@CkT}%YQ#?K9@r<=LPKdP{K~){`!8b)MT{Q3C}K!=#AvsTg;4ch z{PHjV;5Gt@C%s2nuR==2O1@o?;u9jfIMUKQXBzX$QEy3Jeh;)L9sZ<|;YMo~RpHY^ z>weGe7_swS&ov!Zw2H&FTN2!0wGP(?Iac)SSLw_AuM+eRz<^)0-*YYfW&YQ_piYO2 zp+v{6L)bnbO9I5u%+${4{-%f195fjxCfFGJi9doUu#;t`1J`V)L;J|Lo4aw#R%tXz zUxe&w%zn{r(BS~y@q=eEev%jQpdpRO{R za>@-BuXn!F8$nIpY;(Ajd+1AN0S3RAgk+s?wG@y{X^8y+6XF=F~AsWBXh~$%#X{Uk8D)qQI+W5PXk&VZ4>4Wr_^GU@>ypD6w z-dbzqmc>W(ui-jNtq zcW{@(g)MO4IBHn207#YMmRGu14$wPZ<3$+#N!=-D6}=}QGU1l?{w|#@M|r6}#M#LU zE|m|?n638e=8?SW@N0HF_Jr#BjO+{CE9XTwF$e!+MoO0cUk5yKW@$q?Xznf|#DeU!r3#jombgCS2;!8Zv{`{d#7sY@ z1i#>T7|_NLFHmQn&*(>+zCz!8pC$8ceK-sjaF}M>Rn_e6uaPyJ@3u-i3%H#G#VVZmuuUW0xd9w}bg!hq1xhIs;g6F!Ipg5-#diz83^lDN+D#>^@}O z^tYAuiu(>~d0O#e&FRVa_?04h*iU_$kl<-_%jMxyJ!ZBP({~1y!63*1@I%qeP6_4P zK2MxD?^@6AP(K1R zacib5EE*)f2Pc`h8WN$e5>|~g9NG?WdY2h=V9ZV8*L5OSr)GQMc%JKg8=a)VrXy4i z>Qt&j-7EEdS9(XTpZn!AdusajRH8&5-$dYt*H;dN^{m8r3$eI~u!jMOf>u~xl}D9T zW}_&>zJPllT(KtRj%inppC3Z8tLXWa=Oq@xUQQ|j-(Qx;hF9fOr^H~flvGJYph%)} zW$c1QNHr-s>;a9A$=z?jJoCQ@VSUby+qIdBCFJ=$mr=+|juS3=ut5IQqQaRvDE zR@v|e585K@!Z$aVy)HfK083qs|6TaKkLQ^Zr9lW@|6Spr{fqgb<=!8{Mh@Z*+B`eJ zI_tIh_DLE7mGWw}IN9~5=~_e(fh}MP_Tg}rZ%a(Y zj7PMg$i~&xiF!@PwsP!P>jKPLjqcXz90B{!vF>VfFT4?I+j0pH;ZTTkjwa0ge7F|{ zWw-4o$5Ke4R7%}`HJ+UAsObsEmzVJ5NeldADt-buq;vBENaOEw#5KL(P*_Pm?_Aff z=%QKwcnQT>ZXT(??YO5FpZ?b=xC|#WQnLMQUKxACqI6(CX%N6CcD1BWqDx(r>*>)9zstM}D5n3}(7~mY4tpjrmGb=Dlb};j zG8vDAQ-H-gO$xirGKJpZo=we|B-Www_z;UUjE=qMCri=avhLf4?t4;FR$_vFM`ENq z?C>i46MZ~bGZ<2wqbJvZ=DWNul^~>gl^cg9ht3i0RH%2sserhXd~CotGU5JWxJZ}J_5gZ;{DCXf#cd`+&cJ@fe4|T*Jn$!c81y3HoI}h=|X)}+c ze!l~A>Xsg6*cFT5hm=c4JQ(yJ;u2*F?wi#)R1U)!<_RZVA>}84yQiR*Xj85R|VtK6otb*lh2GXt-OvgbO4`z2gV-Y~zbDMT}h7eN^ zb{z7El6vL~QcQIni3RyhqqO**W^s0CUP{acdc1*_20`&dg1Zx8mtEdQs0S^BNw>cf z-#;qaJygH{+O_yegIf^XV`_`io03YG?`NmJuS;gLMl$vfQWX!IDnGIiwHcZ zPJ<7J;}36W;A6=0kW4jtFKsB{E}Hkghr_$k!K-CEApGHSn6Bw$3Cv6-r46Z;n&oJ} zz$q^%VJd*Rut*WXX(d19Dn+UJbG}R4`mC?Oz`m1SN96akKPC>sfRtkDxd_>hB)T$M zCc*M?HfsygP#3#RX;xsX!?T`l`I!Z>T%;`LFzZ;w!B_k<8EiLks$7I1oj>xL=;6AJ zvW;9luz*D+boA$eF2%2F%t$7!Y`r5o@c`gY1wpJ7_BAV-n$1=wJGM9qT@T2#d%D%~ z+NI_Z1HiYU6brH!%F&+lUSMGQ_$5fcDbZ`=8KT(521Ys%Yc<64>wHct!f^N3+dO~)h!uKH| zg_9+U3poPqL2t7`(Jp@MS&j?d-+)1W&IX&c#r}pc&kL0DEkaqNL%SW$>c%_?jc5X2 zWDc=f2^+`q3>e;r&p>TL_xo+;f1iWiWdykT?o77kE=0>^o7k&{ODQa`AZwldr_wvt z7a`UFjQZdAvneO`8p%-&;3m6aFloiN8Y^q0V#yjS)xQTVE<&>;qAOf1ahZ*Jnrcv- z3)pvUDrN_{nu(RQg2=AZ*vUo)jwHg{TC8=V0*dTY)j2B8PSQ*fH}h|oI)W}6ALzY0 z>ou%x`k}!GwoM8$)x(!e|EwFsi8pHT$E}q|6eQAPubYySHLpG(3jS$+vL77}bT!|O zkmqT$lISfOFwmS5v8jX>@W|ZNop&w6N7BVQC1|VKIX?DDeVp{U(Me^&7muLYXP550 zr`IAAiKeaO0zWWq*UsUW9w`9b=zgV$U-h$?q@xR**MHD>8z0MHta{%$+}*E@s_*0d zQ@hjJv5A&HID(=Ate@8M%sTMEB2mt0@auKnH;J>NDr{LC)9VVHF?)zE&?dfwo{L{h zLr#wCt$L;`VU(!LvtfGH9-p_-&Z%X#Y@8G1$p(Mcmcu)I^v|_H%^m!90LuN#|H>4< zR8sp25B&M*#1m$hJKha(&X@TMevD84-eeYWHoQ|(7I+@<)E^Or(U^)I2m<0?o2^)a z;00$nLT*ms(XZi13sayIo;paNG*CrMUXrk^klN%%KO6)wY+Z5oiJ$G_1jF*y8+800x6?FpBV`Km?Qa?vcD20Uv!z?=MIFGk9rO-u-* zQR@k*z%9qKvIDiPs_g_S82Z*jW?EagXrOi#2u4%GqN9B97?BJb(lI84zzIYi?7)iS zNKT4RIOTlme|4$bB0UA2)7@|#vlz+1)NA$aW<;)fUM5Z1g6^E(h1bW1!D+<{1W>`_ zE-Qwu+!0VO;d#^co<>gILz_%sFn#R@2PD_se5l2f^Dd@QH#OdM};?Ni8EGYxfV z%-dDw$t>&ze=l`OX8$;pubxN2vrI2Ba8d8&J#X#-$xlSHvLW~3cZnHPAdM-4&6(-d z(h)R)B245b_#ZP>hs26KuJ&Mc)zd!eanwPS-`svnnRdX{V!$6)l~MIMk)Vnxo1DJEO(~*~iBs`}Bi@@u4g{+1@FF zJBZeVlS+K4m+JBJFTq3{t;B;Rr*YS;@k{VvJ-y!{-@S$m8xHA;8m5u!GRx4#EzSN! zx{ZLOAVNI`?#Ad1Egdqx0Fua%IDql#BMQR97t12HX(lEzK_ZD65igR7CdF?9 zCGoS6j64!b_mY+}psh##$|VjI?o3tTbm+{pXU~MN5BAB!D;a^rjrp%M`@`s`pG1Ra zWVBJTN>1E*1FGLc*FDpxJ#XaU<+om*Ngj2J{0&q~#zl?%rLEuvQSlJ;E#$D+dCmj?MJ10upgsE_Dss0Zd4cDvT z%YB^lxRj4LYRi$%eMxHU%Hws;%7C%gA}>AKcFsXqCH>~vw!lCDO>&jWyUGCO;mQ@l zM67t}dBjhiHgzsV!w09ii7}x2ei8cocU@%TH&SFKHufO|IP#j(+sT89Tg_rp@qxg! z4<|{hOnZrp8mdzLJf|H%&9JYQD_zz!sO~!UlK27|?Wpl6LQW?eH%y@a4 z>_@zlCg}F@nYKtbVfJ-FTs1l_G6j!@)Qomr_mF2LaTY|qdNUmn#u@|YCSk5tuGo>( z_G(X8!A6H*>@BFoN1``m+oK&hQ5#$UUa4QyajTxS)kPzTZ6hAW!dwo&#;05`=LF~OIfo6?M2{pvg*d3@jqvLJ zeR~xt-@MC-tm5M@9e^e%`w2cw6r<|hokcWUaj~XkE+ZW{ED+eC%%m|VaQ=5pP$3+K z`=Qx*_qlL|((9!7p6EgT5KI9Y4+sb4??_E`0qOunz zZ9X~%;Xaq_Viy0DglX}}mtp*{%wTW#@723n*t!_XA3V%ZWE=l})~&IW4ttK8V}n ze0|MdsHPNX`UOD`BZ<6SUF#S1lfkS3Gp;Xs44IUj1#gK#NGP|*BrNB|icURI+djAEq%whDdck1fy z|G?i6)dnX$YUlHB98G{b1SiYqKhPF$4>xh6c4%9QB_lc~xy_;JmKdgfdq74A`XZ7M zeG`W4RRgGeV~8(tnk{Q|%5&k?+viVCAw@b8w<%JX%J}R*?dd@Ct@eZ<4kwPCb-Y)A z>?6SarD&=?y;ahWqfH^Va%_+wO$N21Ent>IUmN5B+L6ON$()!TC7Ejt*Gn?0aYuuI zN?$2-$5?HQbOum;x@^?a?efDxY~Gkp+~gq&>PV zHq0?xM$RUN`nxrKCQw!6Tn+(oet!-tcTC9Cep(m1%8mL~FurEA-2!`-a4B*30>(){rN_E#; zQKbIBH4Un6`FN4R~43cXBb zZ5#~bTYQ7dj*Y-W;G?~0kS18*{ya;;X)02vD?h}?ZhsTL+XLcm--3#e+=QWhv@Ng+ z_?>r+l=z{-tntcpDYe``!>0;44$OJq%9SeUG#V$jBKgYIuMmwnVe#>2Lc|`|&NCzF z-*nL7g(+e&Z`!qY@h{o|E0jXkXdHWJLv=dne||rTRkl%4%@!i_|d1#H99q zOid@Fin7j>6uPVj(^^cREDBIW%i;o(hsnha&G?|cM#8o_D?)_16jqEgHTNLbpq#oM z5C#vXyoN2E?;>jk9CV6Q>`r3v&EgA&dqt*{sXoK(y zp0qsn^llX+L&G+rJ&o*w{}Q)UGDWzr;3U({g0q*Z7?Uag*PlEy$>qcT7$3CLph$ps zhD}$bvfwvRI{s4vrKd=Mkf*w`vjzqsEdCn8uQH|HW5y{e8@Q$;K$SX3%Gz zG1fo|#i;R|U2*5q2XTH=EsI+PUyHV%olnsSE4;M+UoAPROLiPheKU-Gt3Ks>|68~W%3?xQ5Z=>4 z-w=;jpRuvjgJz1uI9EyIFC7($TBAy=8*T~V_U@?z34Q-7mujr9d@Djr`CxDX9sbb8 zOD)QeNz!f{;wbqySrbCjAQsyA5KIH7F%=}HTD|U|3V1= z7|;WjRESFuA`pqHcC0R;h{`M1DQ}+AypJI`4-X-yaH7`?K&!X_D zn{8DNt#ICUrY9C4kH%Z(RXXLxt+O9Id^e6Lag(F)`U<+*k^-6^JDmpWTPz-lXrL2_ED@zM;5N3Fyw79kuPCiDyl> z*Vsc7q6%A2Ku6XpCvgh(wym|F!S>nCz1fW-K}Q^-GQq^e@;T2%SR(-W6$mVS8cJW6 zXuG6WP$OVa2;aDGow|1or1^CSc5MXB|LVwk15uQkZjjEy|z_o))ekcBsc0ePJ^z5D?{#hH?l_Lo64(m7L+AD6v7|qMl;w<_GerI z-9>jRpYs}4j;;P7P>|7y(vhiNo@<#r^+mmX-`9Z0OVXS0IfH5Ezh{!k!}`bV6aLvk zco?)p@hN_-#ZUEXt)enQb89pE1zBgDAjeOxYooXlx$((LyPQGcExyFcp`=$h<*7?| zUAOq+-Q!3)j2F~GP}qXjuV38K+`-`aMcwWW+uv@pP#<*SF$5|_B;IsbtjBk52b}=K zo!c);tb$rAI8Re=?jHD=wG)zsk^_w-#xTQv+V>5ylyD&0WYm$9O$E}k^pH*^6 zzJa;VW;)V8Vpn6{iA;DonpmdhLzsH4<@?NZ4ZmM9it<~AX^LvMU@n1&xglDT`a~vp zc;niVoLqWM6q{jyw6-uyW5=`a53YusCeer3 zC_;gu01@$tAV8ml2ovw!)B=XVp&|M_fj~wkRLwsLoVk>6p|gz84zQ|q_IQcqTcPk4 z^V=sk1@uYFET}S;@R^w6{qf#3)-Xxic9l(^bQ2oTYQuj~7+(3dzjN`jp9}m&S8(AL zB2HjSdZeoqp``I8%vL(=j6@$}M7b{|Y|B52D{hqNN=t867Q-ZK+1XjgE*7MZBGdd= zsRe3&JfFw>XGdOeL#@Jg)H&JCx2PYui0*7c$_Crcv2L)xzbBc8T~lGbE?Iw=)-I?( z2r5G?rWz*Q{C%2^(I6T?d%%6oE5D99SC`7~l)EqMo{H=(r(M(eHsk+^uqa5B5%Gs1FOKzx zfY6MUDPT2>lKl=#6P)uG78+~Tfx5hIrm(DP26voob_BCvu11XBrh477MvT^`TD<6u z|MDb z@tD{BF3y_%22u}kA(jp|$9_V&%_dPw%Ch;hqq#2;wqTeV&z zd&(~p$x^QJ4Eu>Sy^C6%v@4X?;1dqdBW24RUX@;zJnD!)Q|aQMj+q!&E=$=tpwh); zI$w;i`?-a!IHL}UN;PBe$?57y3lEgIqV7f+Yarxty1yqoC^1m+8qzfqV;TCNriu8qRN8L zR!twSS|;aPAHEV=vg{B)m_l01!%Ow&Xax4EN5&2u^S9hKWc*Yn6T=bj32Xc*FlJlk z7vtA)2Y$I`Mg`F0m-y2Pp6Pd}2R)80LO%0|-itAd&li8Z{Tgj?5L2px!Ba-|z0vSe zl8PyLtM0!>Lz|(X=*vdiyp3t2Pr!(#W5A#8c?^2n7Lyo*W+j&Z*{B-sH(?t46&i~9 z>=UVYT7zux-kGjKh{U2FWLbgv=D#eyv@hA(N^+|T6d0fPgS;oW0fSdV_H&%TB(~PU z!0@NvmxlJ^o^Qf^(4Wap(Y0hc`E8jqObRArp}zIG86K@2X8xMocVV{yIWnj z8UQcjQ^kF?eX^UFe?`T0gF`o_+0!?J+$VLK_i|-480bb$veshrO(M6(9L$|={_i#t zuWazVweE~?w{9geGO!WS;z?;+l5Op3fj=BZ#iJ!^{$vhKE+7rf8Sc zdFg2h_KOoRqemGV>A4UliR|SdVy@XKbTmO2Mu}9*Nv&0*#yabY?iSa-T4~zm6Pv

        Im7ft!Z%8R1G^!-0^PZJl=8R<=SMT`pod2=~%KK9CyO_U@;1wDH?{}`_lRjrCKhZ z_?9Ds-A}A(89~p0)JB3`Ly<843m*xorO|W=@h|SLdJN_Ovx#0t;Rk9;t6pD(f zn30T#D=BDYPIFZ3_T)hrE}ed6MZ87F7%VkqPGzepvrP84wEjSiJtW2j(f-@2rm7yg z1oZ;|vqgO&hC%^a7Y78Z%>*^KfdKrdyfMn+u;%W?&tmL0sD7ZW79lwP-qP*}15?{b!ebUBT1x&|JKt1s5-OFc~ojjcR&L=U%hLKS@#NC?@-xnbc)*ni_>B$hTtQlo&=6)cExw>I zWpHcVICJ;2!C_64qzdaG#I(v_h@xe=4$aAr?{lRwz}jF1DjEhmd4cqQJi;&C#%4^Q z*+Ob1r(6NLBEIu0>%2OjKu!3t9^RHbr`-eY)5e>8{@uN0Y7qlA=D6tLJ;5N-Xz*Ff z01F2iD9l?V8v77#8b@4VB9Qb?MGA_OC3T7ho_X{jc1U04U`_Y{B!k>#8ZBMo9tctb zaWqtt#-HI@>)T9n(T+6f2PrI`3*K;zCUXv0%k-ywDX@x*x_?IHC%xK=c=T&h)y3?` zp0Px56#F7ngMSsVPJg4N;WmNHa*)p(R667M2*X2fP%~NcRLRmcLwoH=XIImrh{LaF-}Qy7d0zYziwZA*32k zk&xTJU_Ig5-1N95!VFM6S^y~Ntd5Gc5KN&|!}ES4gE@Cfx>~2=XATLeZhtr5xXO4{ zM%ZS^t7cNI!y^79#l_a$)0z@otUml~Q#sit4x;m|lWu9V7J;3$26&0`MRl3PxiXE3 zqLSMwvsk0jVKMt-qtH1-4(-`gb<=3Zp-fi^ula7sicf@POl@UGtj}JMS}BV2JV?pDpWFgGi!Z0GstyEFM=;wrGmb`Q+`NeYS;ILLm@}M!iV<5)c8Ai z{J{p_fWq}jap_XGO%44W!eyyJ68psC(!i5J-o5*Hm!#502u&Ws0yJb6zTA%^BrtX( zL@~+(-jX8-x>KkcqUI~$t)xg<%Lyy)B}xS59@VWI34}`Kr>J@q_MkbH>k%KHn0|Ou zI0)Dyt;xoh{=xB$peeeJ-k7NvmoH7i)9o+<>drpfD%bZ2AqD=884|DcR-oo6 zfp`BQqp>J7`0sN<*`9V@l;wDab>>ZGZ+mEj+aN*0cF}F_bnmnanVl*41QS$&-z;IQ zOi7<(Ir#geLL+nK5zs(%&XsbnDCiIX`ss{%#-c|h8h+xDD1Hjd_^AcG1_-6%Ssho0 zTH#|+j+S~sP*7Txt|jC6=s(?#)90ik9|?l2}o(dMf{3>y2w+$KadV^fy9<|H)Op&3ZyA{E$O!Z|b_#4{lE? zx2aoIQ;Yz$DV^JCOf_p9ROkeGpbqa+Vt4~770A8Mn7qgZE4$mn4yrkPy%sqv8nIA3 ztnJMx`h&YsI%oz0)Bj1o+Yw>6mwwdP5!IEvY2Kj-fU&cc=m(i1Qvf|2bFM6s@MFqv zL_85+L8fusAHTkPD=8*Y(#?zg0%Ms^*y5net)anfg}&GpG4tBfMts@0Uw%-}VQ5iy z-u8>&sB$0Ty%CpquAXBE9;u~b`5x?S4zHI}IgK=DZ|PPOo|dIEfFKFv8FJoXzJ;CU zFARqWUqOiHb=-3)TR|CxZ0&P7*{f0fc-s?UB~i0>VMPyNveTswT_hm_@^$=~_9ekdZ`y zBimIamSuSb9_n3${I9)@+_pO)<8H!D>@y#X=O+uV&xXShkA7IrH@})svqTaWH6X+Df z(K!)RYXJ(=6>rqS`48z^-@K&8XvNDDxgZ~w(&2JwdS3SGtwK#XSztXowP znuKtQQH95j^~LgQ&uUnN;q=-M6sbDmx$0YVtZj(umCQ}aM74jb3+%(Uj_@p#}i>M?#rWQg=H z&R%C|u~3w<>#k&BF7!zt3Te0@>9sZ8(f$T@OX{#1Zh9W6Twt!~cjPL;VeT(ZnW|HH zy(LGDly1pwm)i-=bZ|7SQc_^N-toqZo>yZRW6@LyQLF{mNweyrFU@cSAUdZ2da+WsmpfYKH5ae5H7?uYE|F(9~KWBwv z1V-SDW{X0;zxt2Lc?IkZU3QRZ`N{~+R^heYuX#~bX^jn_dqLsU7%oZZZWZchPz4wCSqa5 zcT;5ca#3C4dd6!K(Ojj0jB*1;HvWe3kN)Sw^y} zuD%OS$%dir&-W*R+LafnOERrfl4#c;VmNJzg zxmT002~9|6N1oNherI(*tU@M!lw#O_lUwoLQRep_O(PQi737SF)0N#Dd`$32dUMNe zh-zE2q+xiFePZ++Pw@q9eXV7diYD9#5cm!gMMp(mn?{b?mAZAnz37qdk6;E8yn4t!~brbw%&JTO#h*?3=mu zqPiV{!-H>9&BQ*(@3!(*IW8D>NgecNb^;rTj0m!SRONmWip=`y3%y#dKgekNT*()ti#0|b7kO{U3f2=9Ds<*r)KxE>_l(6d z@EML5X;{it&tqbpnukZxV7%DF>FzFx-MBdrXm!}F+KKZ_ZaX<$)Q+gyjNcDj{jf~z z$<#!pkl7a#xH$ST=N+cALV}CXAn7}3{SVHyR{zu~azgRYZ}>0HRXjzbFp+#iBCyac zlhoEyChdcdZRdld7)m02z)|SRtFZ2ix{<(yb|qZ(&>;D#Ul!J$aJxg^)iPcxSJAcjolfYz zhkv76rm;OY6l}%A%kR~{+qs(}kMH~Qp$KJA%%;OqB1>rY4r@FAIMdA45UX8M*{1N9 z{N?7@zb^FDiY+^1sbD4!)2sJB1va(yLHkQuW(u7j5lnBixZ{f>RO~TiLe?+4aIElLc|Vr7hCwd4 z@%5^_%TnDXR}eO~F50yn>rtM}E$l~~JLHk+ zG!WhiSrMF%sJmc_>8_Hl8(wl#qg&Y$+mD=F)oOaX5Nu{_fgNFh5zj~gH^#r2TP~U> zYZI%%-f25`DE_mc@jjSO&LSTxU^V&eTsAFlah|{|!0@75Wns9Y$4xzNoG5TgrHtIAy zAD*z#|2cO?)iGWYFwz;c>rpI_D-Ct4B>L{k;O@LTQrE^pVbm0-IyW(3Z>(KZv)&Tq zwf$WJL6z9|`RPUhX|cRJDE#*9Y73rUwtnKy*6uq#$G0jQ%}n3==g+wF4E)(UFn7f_ z$gMe?VnAvL&LJJmKzQO7FUF*QEf$O zMmia)(rj*@;Ct#rt9KuIMkr1EW+ToNb#T`0*H>(k+O+Q+vHhhXcuwh9nDHGbdDi$D zwBpMr_4`d`rvg)jsl3w?S z;wR-su9XNP-AbB{WxVR*R0JNo7 zMuYDcbL$`3?XQ>i->Z2Rn=d$@=f(_W4TZ5qQRAW-oV7IW1BXlqKPd7N1933j2Lf7Y zQ`pv@rO-RbGk(8gv#q0p(H{(JIbW8_S-dGGfiHv|FmB@c^l050+TzIsV-2jdc$Gm< z)-knkL1+HUd-8TqW_J~xmhlbRm`xKSU|EjZfw|=$PNTDUkhAHe7*)mv$F8B1GG$rO za4y=aGj5S)Mr6Zy0N*`%3}WrMK#_;}0I=Hsn!)68X>xbrC-ByaTQiuf@dRxM@t-w_ zW4-Gr5DOaqY}J!*p;)?coQ*&;ZS=&@>N;?!e*A_Ok*dB zZnbO+(7c;tw0#$yRO$y{iIAs=E?*8ki8|q->jDGYCQ&D`GXQ~uk zqJ5s23>75~c%o@$oy^FeB+nd-!w()|6y8{uWpbyeA05Bfkxo?)nC7jNs;1V7Q!zi^ z{TV#X;E{>~m$VBmI5G6KC*c-F^RNoAqX3uSM=LDFLyNkip6AUt*pxB0!E6xAY5J7&mCu{#EK;(PKqumdNW zbC}gfIhB2(4KHTENaT$$SC7&^20-U;;L87Obv4s3+9~q2vDFBc)GW^Pwq{AdbOYA> z4(IH0i~QWeBK2L}onF5*_z$3E`#jLZ$KE(kXq=}MT{*Jg)X(2)IVG!I30!(Fnvh>xtZsV8b%%ozris=Mgy&d$MkmQ&N+BEHckG_ru?7#Pu7@p=D|ib(s4usC zvZQjT1V@aZq6hCYobTzncG&1+kglvG17Z`Bo&t#TB<5mz0WoV4^Jm(ufnLa9;84$M ze;A%a9+kmNw>lr>yLN)Ua7U~5i0bt7Uwf**0>w;i%1f)lOA0OJrqCOnlwP={JXkl4 z?<1A49LT$>)teIzcH_V@-Xq@e%;sDD5-=6t@d(+vgfnr&?(x!l9-x*Ar#bXqf`if* z$!5^|XF)j^*X?6!F~lJ^#bF4?^G_iSTs2$;$7}jk(@mP zN_8K$1|qn%tGo%(!deHTUE*H~k2x159;=kg`^(`e(U=*0!S6t?hR0x=u1w_bE#a6- zNPASm+jLkXYy}F_cFDfHGFB>nleckA4gv0*a4e{gIsGP4PAt+W-ygotM9-FJdOz?v zA1wEKWB4mpZFLB$`@BY)f&!R z531Pm`X=1hK%tzG=|7Qo>4Og{-U5~~cuEi!K8!`@%JymHX&zaWx|Uof0sx`$_TI(@8%8hWME zkd5hsK0+Qaz>8yDzT8LNsq}!9c+W1epl(`-Q`UwIXVZMvXK$MHarkPSbv$VYAh@9B zklt(xu(}ofeNvWQCqK$lCoWs#3gO_lwXD(^F!#{mFfzQ?x&SdZjmtskU4JG*iznsi z;_v#gHWrIM_a_={>SxWEp376F7J1%2zEW3lt5or=uHu$)se3teNX&NjX+5wyB zhm6wmIXgh^1R^KqNGy(~ML;8iD*-V*j+ca=11WU%G!1)&#_|?!WfY398aITqzos$9 ziG1N2*dj|!P3f=BTr_H|73H!@+NTUJ6gkP^&s8FuLR(N*0KzxhViL5 zH%~zAd(eNnT^jlo>@b9bSD2?q`dJlY2IhINv;34?K!Z|+2|>x3d~*^){hC+z^fPt*v8hoIlD4+90t^X1}NG&Fyxsqexi~$*LO50K|WTh;Vm4 zV756txo69(ZZ0>H$9(jDJEhYh5p_zZ_S^YHT`I3;knXaVRTv}~DyPA)T=Z}?BVV3G zL<~e_pQ+Curg(Mb&ZWieJO4C`k#T>%!m)jeY+mW= z9Q`!HshEe^WG$8VW^r-DCD7`t=kV3*nkwF)6^)G*>*R5~1u^;7WH`11PkVSgL_U3$ zJo*hXzY6mUm~fu{%jG^`QV6m&rHS%B^#;y*vnTGw#ACo1gd#mFQfY%{H(kwRIdYCK zlGaX!MK4a-;MYD)ho6f=0 zoxXvkeMI!1Eslw3=^2}6->XJCiC!#wC6 zENM9+8`s{kKzn6K+q5NE*%}-}v%7+_w3i1NdD8lT$u(4WpH%mOZq$A9gtW^WqtAOp z-4m!1j?KUzv$ua~rqVbo${^q`!3YrZyjT&D!=$=g(72HafSfCYOeFf1TguRl8QREU z!R=iv$5XbQm^UoA>a{j-9uEM|E@a?mp(lRI9>U*eixWFkb~z}Ufo4E+8rP8I)-WZf z*&6!j8v3J#KDvhfs3FOz;o_hg^8R{+8tVTVT*F*_3z#7YzR)!As?ZtNi7u$;%G0Xw zl_@;;F5tO?OheUac0$q>HjzW~jeE=sxM6#0r(v^?8f$|)3zyocsiJsr3?KQEmq@c8n zt}>a=Q6}>RE0g&`l*!0eCJPHzCZix_G73^Aqh^)KC`6fzf|SXW zt4yXsmC49aCL>pwEId@1EIe45EW9~ovTzqMep{Q%Ak0xFJH}NeJ2pgfKSVL#4X6-} zGr!&m((F}BOq_@~P0|3d7#5{&vzh_n zpMlC6cz{Gbrmv<4h%U^67?z`0+c3)M!S`PKX}L%QZ}I=L@!S>YJ?Pg6c&|!V7voAX z8FEDz+b`64qa83e8f}V|Dy}92VldfvD#(&$Q_TWJ#~X=IDqCR3u2FQXmfegKo=`<0 zpYT#>wJBtm=IAoMe`Vi-FEw+FD!&dV*w=i2)V%Wrqvvo#eW!~UQYS5jbh__!2zqr2 zz6}+Kmz_C9!a&#*SU?}PPUx-L_rN%gFXi&|s|WYPyIUowJ~$ z+Es!B)6c0gvzaRSv@HTl8Y)#IRn!iVmgJsuPpCRa1D@R!aA;qe15CH+zN`zZp*`qJ zM~-_}cjYJP%Fd1oNj({-+4XAysp|+u&?fL1W@ervl7rq1} z^geA3L)rcxr3J1Y(pYEetZ{sbxigT;=BPMoHCU8Il0=SU3+`FRELCymi{=qj?R|3-zUhVCy{0A8FtASXW2yzRSTGK`TF;4YS1BW8lQ%s#nsTXyrC%F_9 z@Q5R{{#_VPl6E@JI`4LQK+lEHm@S`C>U80y=DKio6?fr`7#U8kqasq@?B>U^>emA>fVTA!&4sdls2`JaT(%4J%n zYJfTyWsV81pDKo&p|BU(?xM?`3h$-1$1=s>vh;M`)#Ynu!j4(w!hYpGj zKHdz&Qbc7VNkNc41{@-qAmd#p|DGhmTSXBewx&H5PJQdCnGT9&Qa@AdW0ckc7%p7C zIAui~0CTGp!uep4rTa7R%pz7LwJW+RsdWxf(P`RlvUTHh)5=XlAmII@RvI*p(tCp1Kl6ZIlJbLoAb&aYbdm%0P!Lpf zFIz*Uuqu$pP@q1OAKTTE2t~*al5pd}!Vf??+2^$#wz%PllJj0+{hBQ5v0 zmCUyZqVRiMg7o1G#*7OAo)zBaso2p}UgN;|n}$<}=K)??qhsmR7@WM92!^6$B0`d_ zgK2?Va&ee(Ot}%(NkoIz%oU8V)!~53#`Aj`j!=B0PscerS|z(tX`+k)J+Cpm=`EjZ zJ3dv4@_4m#Tto~9F6V7B1Cb*Z*>YCcI6Gwe@WClp&9fb!hC#^6jg1rOs<6e{@hSE> z__ur6HycfPQd%I*%nNRlN$P@_>7gI!01lWfCnq=zQ4x=CdX6CjUY5WySV-9rI?bjDS&lHpRA>11h6x3k zu8Mo8xU>86W?g9{R*1yQf`v)d6I||YDk3*U1i$t!%|St1|MVgj|_{QSEA$r}5=FOmo8D5aXnO)PJ+PCQ1vlYE0sye&{Lk(TgYi{kO!L>i= z*1jyX_J;#==q+9Q<+PM*e^qKPr$+->A*WUSOsD#ty82vDBZE!#&!YNGzq|S;nD~7~ zSN|tk!__}0)o0T)fh?<&Z3*A0`4iiE!y1v1;N6UAq%61+UTRmI6I}7FBVb6uM!Vyw z#;*N2?)-BC$(rt^^<4cEQhgD<5O6FCq|J7!zY$lIWJtaDw|CAdZt5*fQybjWzu|(m zQeJC8+(CS0C)g6)>6zqcgUyvs9)-A7P$>tX?8xz*(5Xi#ho(oBN?Y<)}0}3Wr zLJYDN!k{tb^tH-N&ld@7Um`ospNMrFaHxr-;X6K4&nsa25bKTRrt~fGV4~;$8d|Z2Xt0NELOa%IL1GyF4tK<@B~^Ha%n?5>^zX z&y<#`7e$wJ6k=LG!nxD^%{kQ|s#(rdz+yf$@q8#=bvw{bJ~P7L0&EBlgq^&7;PnVk zWEXY?n{(_D4cY#d+3Ug)1?BlI%2-@nG_K+(#$5k)_Xf*3G>pw06O?;qD|PoMQ~Q*`Fur&s;3h zJ|QthB@+v^E!~rx0X-RMz5CcsKLIB(`J6_dC+W{dAQ2M+a$N6(UUo_IX<{3dL`+CY znS!~+g`;@1?U^W1C8e%6(vTtY2EU}VGMy+b z;8c5hBDTU#w^urXr#W_o#q+6D-5wV9O3EwpODb~hG3~%@<&DywS+ZxE8K(oeXswAc z5Ied?kvo}p-8&r;H_s% z?sDL5@YqU6*=ed0lv^iIP-{V4)y>f?CHwlZ&?)tfC$t$b*CEY-ircfaj>#&h5heM2 zP{#p1^@ArRLur+lp-q0GDR*7nel6egd`*N%vk9=Bq;*)b+yd^Zn($k`e(Z9AP#TxF7=%z40u?X$`|256U)Cx<_BCT+H!%OMNanX>{mMdBG`Ve7wyOBeX(i-g-v*c0qc+d7gY&4<^ry7(Ft@3mOeR z(OQfKwH>AzcoSc8hT6`sNirNeOdzapG_XXkBbgH`h_C{<-ag@ zLVT%?QXk-YGjWa0v};)Gbof>0wR3>nwEgjFpzn0PjL|o>hcv@k1QV?S-|6&qZG;w` z>`3!07{o%<2Z*BCmaFyjpaXrYD1{X%{}NanTbyyRt?yg!=6PGc%~S}d@KyfZ&<)Iu zEl{VMoaO68yK0Rww0o`1T;sbO%od9@ORV|ivRN7)azK7$o_lcD9iY+|s+nAFZ>@RE z&eR+y7%Rjo*BqbI9ad8>y+=u!%k(+j+{pb@JqKn-peML2kg6GPRwt@GBomiMgL)t2 z+MX5v%9jfNy18m@?WM2$oot5Q>CJGJ0B^dN`T$^BmU4_UDmpJy%{|Roln*;SUtp~2 z`Ki@m&UqYvJW~fI_#RH&D2myGeSPU6nNR+eK)<&V(+6)CD= zX4-0Au>6p`);fD5^a{E);4ZVi@*peA4EmB@y+r8Vz;CUxkG*D@{XNj^I@9QU+iO66z7QNt<)ty%w{*h%Dj|GPZG||9lZ^fDUzRKz7y*}G4N0Iu( zyc$)QcQF`liV_x>Ht~@Z^gTl)83tm;%&#%tl)s|Qkbyr-+dZkCW1qoktDWk0$y-n| zEN{F&Irs>A&<7qF)oPZF5o)b>3x4eu+!j)Bb#nzhYur85E%2as<&&E^7$ zep+6$p5bq&`Th)FqT*nzdG?4?{V?6ZYfE?hve!T1H2WO$+||Y$G2X%Ie$Bg6d(FfU zv3AUiyd%tva(8A-PUMM^XbgOOEia4fVaLN>l~dL_wZG`m)m!Z$On;B=d;!keM3{Br zE{%i{01mV-QBkndn3<}wu{xQSgnNTr$g3I;=y>Z)$Ig+9e`>k#z*G&XcL@hBF_02U z-;|CluZv(joRii==NmVmC0jp z;UanNw-OHr$u>Oi;PnAx7=lM6`ZgHVMkU`_^=5IW{~L>&=}6camGg1Acej}Pk|ytf zk4t3SXAR~U_@2=FhthTYj{W17+K4o{a=|7o6oJ0xrOD|pT43k*JfP^&npn;^6-u~% zdC|yJVs^N8nM%J@l~a}TaJXxuvq|27S5{vSnun#1#pmm(F7WlD&Fwq$c=hPluOBC_ z8kuU8BF~?xwEYdS7!{>;6u$Q1k+{80yfCz2NHK;K1{pP4_x2?#?ZaqbH9?i{*JIKZDaZl{1CZ ze1muS3amEfXnWBCe8~43jh(F!qeja*6l%UU3{drPI=jZxfk~-p1)6uMQ#7vnv#0aGuVDj z+~ww7XJ{U?rR|%%NM9@F`lj;g-9I@(ci<+U*+RaVJnaY>I>9Zqc^|&s2f5NPyar8` zbN9nOBODWk*>za;t;3xnUY@d0Hdeiug4{T)1122ejOj z9CVD#BH;tzPPD;ySjf-=kjYz20e1`8=79Z*f^9cLriG4$j8~3Izg;Ym<-+P_+yJ;Q zdQ-cikCtv(9cU$7=*kg?)GuKV@LF_uwg`7noj3;w$0%{~*R_RxXhQ(>5bmmDXkskA zf`GYDvW~Xe0Ijd;`5<^s6+GFiaW{7K)Vij{?1Uj^rLq+-5|0aA{3Ixn|$2( z?x=aHNbqb0VN)P*{B$7j!4biT(f;enbnIYFp$1w3pnn#iGX$uAriicQiWrpOWfjOu z2q4XnfqzZh3;UxDy;2PSy*0~h89MIpuMC@NQt?_26Gt#&G6)xBEx6fRZkPQyX--HE z5grK61bf5qNASMYSqKO#$s8hYJM-%cbNybT1*F6cR-2T@Xwcpng3<6DZedKPaARjP zegzR@@HX6A5b+OhOuo`m++r_LEFJ;&JrK?f?OC+$SxivR(CBx)j?dyL?>O!KmuWB0 znBI0PIof((x(+$2WJR09SL^BZWMz)jW@S=sDpIzGXNoG}y2=II^6@#oWO^fm1QK^|3m8$-U&kvfd#= zSPS$Vy>Q17*4{P`%wj>fAiO|^v7O#bOf}!58mzDObYlSbWdA%feSh@s6Wf;uU{rC0 zu|UC_r(Q+(f`@T0D%gnziItGr9eS(%r+2e%*vh&?&9#g_P2)a7<6uV@xqCG~A>DNe zV-R&_JD+8lI@WQk&Ac3r1$u^0d}tK345qzh1WoDbonUok2j+59$JfD$dz97rFeHVz-?rZBH@|`NhHpYk`VY%xGuFuVV-?Q zF5a;3h{e;TuCi|A_ea2d{r8Pf*6px8 zVpD!N0;(f_Y@$9Z7Yx!0_iJmQ+x`M&%6FBNU99|j+&(pg05JXzyB&tjAzQRD?LaeG zdg&~X{Mty6qq@v$sYCFhiqR8>$B!r-+oP~zbYWTHgt43)XMd+n>=oZDF+QP(_R@BA zU(f$N!c(p+MoWALHmiPFWWRv_?|JNlu*@h&wbXtQSFYQ;@J7z{@KV0(fO90?;B_8q zv*ze&-Zue?j_p92i7`+SspkorFYKxrAk#!uMqJKZs(M{PfkJV2u>=2BqeML~nFoa_ z|0Y38Y6dv*HL3k=nZ~rAod&c6*KmdwxfI8EP}EDFEq6LtNwUtOiw+q+t(`-p5Gi$- z(484s2%KMOEXn4GMnXgk2QKG?=umUA$l5W}=SwT|(L7EvS`I{~tkaPJj!f4kWH)4_ z;n7w$huUO~o3sd^`7lqJ+01kF`DVW3#|G&DAs6BM7j^__!RGdcpaA&j|-Bn zDjvsEYQj-8nOmam+!8mPSg_44Gp7}1GTKVHR)|N&U=bvro{sg0LPg_YWA_Z$Fxmsh z6}h$+rAW8D};HRaqkNc)40jys!-Ub<1&XdrE zlX41h@b{AIM`afLv+SnISh4Q7SLJr0(^pf;A(#la`Wt2g)kOGD=EXoKZe~jD5Yw5~ zcsl7Ijm@Ex3g8b$W~dbdFG3}U{8ZWQG09y*!w>Ow0M7<66m(3Ax(hzP5{zDlzYYJh zmBCvjoCUVVJFBQ@H9%XJrq$dbF{5+_TpwFw{t0I3q*(4uQ9C@bB{}RaE6+y9952wZ zSl!CqhLMd;dftBi`Qmnm0U zGdOc?l_Jhwt5yO8&8wS3xAV1vH=8|yL`Y%B(L%YSSrLbzdiZ%j-t_khMGJZIb4?po zDo8Wy`T|O9%TLIG9vCC<1Mj~={@|@re@v2(d%SeYL417Z)js0>a!3Wqb2l8H=bYGg zp($qxuPN8H|I^CNu$Z?E+k>2S(P68nAv;cRvy=lyCz!^VVH?-*v~ECY$6MP zpO55%{EB?ImhVwM{>XBdEfDVwhSj5>tZ3p<#6*uOmfTWFOgDc94jA4Q8p>K3R|4j7vi+oF+brCu{klKqS6+5^adSo$2!7_+|aS( z%1TEz5q^ai<5G>2<6SSrt+?q`wtbfh&;km!*ny2zG_om7@T&OUvM3k%1Y zUfRBt+ju;qILBx$xqKpbCx3Xc2FQWp!ioyV(J|A%`5GA~F_!e~HmE5t%r6@;+O!@= zc|&XG6lx8XmxGj|vVCpvn$Xn5+O3llMK{$?x7O^(hMTS*Q6>(N_m-#6$EJ7P5jVZ& zDW}n;#YJQDOL|P;fk^1x2SigseBys}gZuBfAGLg&H;NA}(~cNZURv@;PmPvc-JB|i z7nS6fRsG?8u_ZL@QSZM^yvP6cj#ge2;`Y4hp2h()6GN|||3g{=1%)Gu#yZ~I&905B zrx{zbXG+lCHMxu%2-y-%AF%6}7Bsrr!q>aZ6SM0CZHYnKXV8V?ghpn7v@3VBOBR(B z6jox0L*2cjvfL0$LLy+^#@XDuY3EyA)J06A!YK$}TcN_;*%z)TU7mB`BFz^L?r@wD zFj9)nV|vxU70DOJ@{KYa8s6m$Z&Evv4>q*?loOqbKE#E{7e;$wJ{9F|tJ=ZAzA>DZ zCHA&w=-1oF!iLEsie!4ddOcUpu`9w7+}Le)?4!Z4TdEf^z|~aBs?UZSm|9K^iN@5B)vN=4vxEw7U|%}5~O=3L-FzjzDVux#n4K=&qQ+gCShQg zsCd;!^RuB?uAPooEy-Kh$6>TkMJeDUC3m8&nU z9_H5NWLNaOw=J^HldL?}^Q&O>a)&3SGh-H}|09s=9dUADd#z12fAjQT6oaL6scMxs zg^RrwFpvK$;EM(oZ1YTIxR2Jw@~|DI&Wd)_v=aa`^$(eEmWKiAl;BvmYv=Uqdm~Up zYXb}Tn)iY?hMwVz=ey0$;&tAX41^j2Su&3wa_6yHhztjLPCU(kXrnh188>o!=L+^Z z+n1h(Q=Gbgb{yQJzwmTTYwL1!2Ve9g#6#TP@v3sFQ*4SARLmF2olmtN+!8prvMy0~ z`!#^bazUiIAZ9fJ@sM5ZP66?t4dNXMF0q5}0wVk%QC&M1ZoLb4o(mVfsjoA`wM*dK zYs2|ig7?_LPb7G^9sCrv$X?)d{xqkCyPO)t4H5qa1ohC(wpE|;gv&9KY;QyMzm4jydM&|NN|Rl$HXoWlWA@LDh6{AvfMO7IsuIL+G}meblh zpr5vy%$qF%Gl2TFE@bLVaZ5hmXxv{2n5pv=iUH6!b}Qz21xJgWuDMWNZUkkWUHS7i zl-)LzJEd!%*}=QKjWL$i!2!D?bn-lIul1L0s2|#3?h~jV*uncH_`V%{ph+e5ZYA%B z;!c?%US=15!>iry1TVdgPU%mZnN<(iMc=dAxg{_}$2{f@oo9J2q&>~dvxPRKPi;t> zY)DT_7dP4&o@vs>1{d@XO=sS1cELS1_$*-vMc}2hT@FP`_irZ z?cfK^E-}yP4(Qt{WG+sJd0ScXHe_e4{vnX>vV)&V@J>6py9xgC+)D1D5d85jSs)T+ zeR$)H1?rrGxWO&7IHVBo(3z&pgM0=?(v5b_KQ_W!WM>D&@=y@3JJqfb5YucBzer!E z+QDC&^ks?*^KloZ2#SDi=|fKlz(chL!u1va9<+ngEx7yWpi%s@2;oA;$>M4TED9Qy z2&b0yjWD*!Q!rFr4S{ods%}W=Y;#M!5Zd4KGwm|zL%2C#+0B`6g<`D1g|IagLLaBr z{($g_4dEW?-^X_FUdtfN*+kPK9guGaAuK+|hBpN8-n9WN5qR&|!3QO{(+)mlgP-BF z*ag3<5vI=4O=dzTdrb(QBF}Kjd>-1%s7$-aU)ONGFWL1z(FjjdTnOKWLg?sJS^x;o z*$~!CM;h#4gVp4~@8S|kL3lbj#)el6cx!C{FABUT?cin!K4Ax6Y65$8=f z(naWNEj}7-{kODeC*vc&AeX6mZv11-w33@=rP0b7*h_s~8u&;J{1I=LMlF{{?U3(> z<@*gv=_|5ZIgZ#{SEqsoX<@klA7ra;_)n3CJ7baFbEcDfv(p^8ZM`gpn=&-EpA4*L zQhc+RVKPyVOVrE3QL6*EXKfLq{WvILfgd)rU@|8OW5plS(S#HEpY!yQ^(hQpBKO~< zSG#Kxb?{CJer5;nlHfleM#oKENSX2s0wGpKRfVAI#rb8Oe2P3H>`Tcf9bcm6(m2PQ zXI_lc4r3I~Qv)#sw|fuU$fa+AZnztD@J(Oqs9S@g_Fx2{U2KNn%fNb0 z!<*M%RMJj5K1NY_sv3BSDl@lGzld<=h5oa#nK<{KmA{p6g_+BI<@8^E%lKR5zvt~g z${*E;2jJ=9^!kA?XYQ%Xcs>V26&t3Za<5mzVOtk+l$lB!i;5E^ZMu2#=URC0JKttm zrE_@pJz|+_>~`KMqSRmQQIG8DRJO{kY=GMBi=t=Y$Qw#nLOL-p=ym3D!rIA&IBEC> zuT59R9bl08W;MlW^^s{-36B;RJY2gY+DNKb&p{sgR(0m$F9r(jwFl{fK{7>T$x?0B z#T+BZx=Le4>QW3*nF< zI92)Ssmdx2H-rzCFg;(HMQsK{;i|&{jvwC+b~e#uRgUEQt8!EkI`gByL>HJnX$Ll` z6KPC@a6MqeGh0#Ddg8{$ZIjnuZK_ioqlLkXioY|rWZtA40Q%a`7x`(GhdAc;I*5bM z?Z^92)GxRC&!({Xf4vZS7KCRq;?dfVD`UwT%y@!(qnbiq!B@3&e9HEAdYPhod22Yh zINZpuD;MBlnTA2N=@U-5tWm!<+5OsK_v;b#>v?qk{F1_bjQS^R`m+{qI^h2 zQ1u~Vnhd_iG`|CDp+c^IXHfN=IcfuyvIL`k*)ur-s!>Z%^(0N+gpqwT;duZgjPMwcv zKgs#%^#j5fVw`>o&KOlk(8&b~u6MKjWDP@?NQ{?}cQu`qqG&A4I6N0tz+g62b7F0& z^fzt*S(TVh{q$u=`ETHV=Ju1#K^EQWuo9q`o~vG_NR@Oo_K)pFcPeeG#;boW$LB-a zLE}+=oY-pWNU1lIzqfO}?coJ>B17_5LO`3hlA38^lXt3$s-kipS1NV7J|)F;y)&Hx zA%qob6KI$4`BHAZFQOCI(Rr#bf)67f&yEucc)mr5jm;#4PXc4I_9AZ7ZQR~s&bNX( z^Yx=MZK+wnp;a^(mUlV)Ld_vXqcE!|Y8a!TkLtlidnCu>4^%KXp$9yr(LX%$r>D3y zS`vsA54U5g6t&~ZE(6(3I>QfOQ(wN6m{M^CR+GJm)6?=@jG%HJudEiO;s497QT_n#a1$$#eF zpYmQ<_~4+48F_huDS-far@|Dmh(5;$Rc@LPFd!*yPI@3;QlyxMbzt zh397E&C6T4lEPNg#2lE*J=-oD-#s1}&;b!g*=pCh&D48$aHPLS&{xyUR1zETKe%`A zPkT4vAAeW;Te)yd9{%HgmKV<)I&-GF0g`LU{9ocA{*MQ?c{7%w@f_&Qi#auf)?}6eU{)X3m^Bi{~t6?z>c?{v?Va{Ns7K zxW?Iurwniw!wyTY21xnjs(yKSm_AgNL&qmz)8hvBQaQbVrXCvK6Z6cF5pBop1-Fui z9Z2C&*lPYaN3fz}Rv|WgyZCv_RglB!OC!X4s>t6_1ZX8}bJ)0iOt#b0yosHcKo`bd zdR9-7-iyV*;Zw=lN23>98GpsQfp-G_GXs0y+4{oXz3&Y2ccD`fs3?_AO@Kl{PnpTk z0+6YLmclmjN>TVszvKd0J*CSKaV@VR?j*zsef3nDvnsyFl)$!yQ&#Tnv6oM=m3c#D zj`FgO&Wi_T2KUQ2KaWRYkdPX-t2BQ<`h|%FCVU*PO@j@7!>GM;Sr`EK$WMjC(E+_! ziCe%SSd|y97w?VN2XJAy)5>g)iHHolYms5CWtVBfDMO|gYvGh(rwt{P1%wO_)uwWW zpO7Jx$H8r#B{j^a%qF*aPW*~z12%T*k*R1ffV|?(Y|1F-oNJ^f-+42eVfAwI97&#Q zWgeC1$(g^ACattGTg2ew0^6j(Hi3R*P8MfgDVe`vWE_!q!#U^H#){DZI)n3Go!XBl zE`Q_!4I8|fM`rwU@n@vZUwJc+&c){3w@L0<(ud#0&*ic|N|zq8GXEVuCYOIp%D*Ue z|1KULmwlqvOp%irH^o5GiTqK5BfYDl*5ZAUfj=V%Yxy$=Lw;T`@~OB*{$0#_E_+u1 z%B)&cbDAAJn2n&+&}=clnqMWL<4+SGim!Gebq%O zwX5csZ1wEZMcg+Zxu>{qJ`!}_d?fg(p!^j+<@>8zN_R9>)3Tji4RWoxdR>B>5tn`4 zWA>jFb%`8&%?_@tOXc7;JNT#sw|WwEa232eSnbU1-G%hsUm=RS6G4JgN1JvuM9d6 zwpol`=>RPix*0FOxSP_>>K**27PLd{slhku`YW8)UTdBqFHBbFR(DfXC-Jt#B&p#v)r#UP zHH3=k%gX)N7}00i76v!cw75Ev1{6Ac!(0agv#qxBT&5rG<>w5Sn`^#hTMUd-vsC&R zm8KvLoHSJJQAxYv)lVvJlsfDhdCqeO`nTcla&tXw9bvrE@|}E-H_7LYzMJbcOK$~! z7*^lRD6fr$OYcB(a$j}U**z3h;Ld;YVZNyG)pbmKANesi+8?cp#m6TricA2dAlAr}C^u1==rcGvm!r=>^wlOhUc#{cl5QoMC0pQN z1MYH?`f~DM2NM<2LB7t=P+;Qh*?krL$)JK_Q+Ur*)ICA`fl~JrV2%E)+eUp8uAmDO zxi_JmqTVSqgd=(;fX?H;DU64^6)jNfu#0_FHI2tpnSHjT4@k^YtIzmapFMR9k z>>Ideq`Os-(+}MZ)0r!Js6-yq$LnID;hcaki0aU0PYK)twTr(TgZr{hNyQhp4Q9uw zDi%I-q+3i+fSPF9FAUNalzj|kw~DxnpALo9({$(t{WGjHTwYAG`{o(tw0EPnfmY!= zoi^4aiq;)Y9Gb0qbJV695YNw0rMPpB?gNu?uSnbzl%UR%-McU6TaWvcFM)?y#rFko zx3@|VIU5N4oXy$)PI&1!onEgQA_oy(G5SyDhz&JW3bIyDQDO5pFc^8E@eg-LuGQ>fDCQCmjPm_=rx z^YTnf#=m`Lj+&s(70)H~1h*zGFJ6rPgWT(-`=Mn((2oZ6W2nAcXP|_x^F_Wb4MlLJ z1m9xXB~9G0#L@UHIw8|{x}O%+fVcDrWpYM(N8@2J-weCs)-zNVMjTxfE1vFh`HoJ5 zvIK?8`QK~#ejl&;^x%?jN)2y<7nVcEX3{088FY3gJbi(&q^)}ON}+y*eD)=C{(sag zGx_`HP%L9$DELWYWv_2a9~DoTsiX?%tV*iLx%z4@@K{X_URJ2GM%A8X6`0jf>{1Q5_+ew6uitj7}@yZG=we)(yu6`b>D)iUnK4U#y^4LhU(eWU66QW;i=ilz3o?fw@O8)OIpV zUZ2q7;WMZL7k~bH3qvd8>f69K%zL~e6+|!@pXQ68*)?KyWvWjsi-G>40iAX-7;S zT2mP`-B-HQ$h$xr!C zzR`+_Pfn&`yfC|T2DfA;t{1dO`;_~rCXu#V5MZPgwQG3(O6*%Ti|AGnYou>$vZ8_L z2+?QSWQp^gr)uF?Y;utS(mLvFc4c(|)@FVXIqm=(-b7W%)byc}Am%u0z3BP|@u-eG?$@RQ%MBwvj5?^B* zVVnWqbiV~m)BCl{icKr`h=TC}`c9ZM+F}TZfgt|ou5zcHpG!Nxupo9xchoMTy_PiY zw%R#3+aD94QOfEIy~UkW>(COO2@Z@OWI*1t-~xwlGixxtz79k%(HO(0F?|&fdou4@ z!*sgnJblCIx9Rjfl76M|fd?vTsLi5>(KQGJ23#VFp0Vmv4VzmsJ`D-NBOe%5~-T2xCw84sL=5w<~ z8=kU*#?PjHc_B9^^J%ubX#}m#6c& zfNsz&J%ER@(54O)pO5}JVW>&-V5;+D_m0x|zI1w_2Kzd_D-IY# zrosa>+i~EQSLeXk9oClK;Azt+_urX}w(mY}=C7r9pLmA_Er*d2)JZ1$h$W= zi_0cX{v64pBB-Mz7hoyO0_PLUnOA*b=oDXReoQT_h8z^oNZFCf1z_bag*NQDxx~~O;+ddj+&f&4la-)#qgI{=jP?+ewTCq z=;z9RVHR1*BM^&OqD$~Zi4E=AIW@_ zwTl5QskALLDvCYT6Uuv7t@nMdcZtsMPH?^H+Hc&b z2pr4709in$zm-=dp6ZU;l<7|8|59z6;K#lVHn`cY4{yt`og3gTH|54~+!OsPg66~w zC-L_1CeXFJ(3#xij`Bd?PGvjIatl5rQ1`0zE~;m={;2wQI2%eu31ZeoL*xQ!E& zY@Od-Zu}c4WSbrF%yQ!25u7GFXme9O;uIVP4j0Ky`b-KfaoXmld=;**8FzCp2c3Hc zbWF~rX9Ge-!dwzP(H1XnBC7)JU=DmWM@G|?vaLr!s~b6KnN&z`BI8nIe9Jpq(FuIDD@(6OR}Ka?!4ir&33S}*xw9xZZg>U&YM7AdjvbT)B!saZR|W!C+K;@lR`IZ zqULk}<{)|me#ggsq{>+Yf2c98T8 z#n2Br!)!eCeUA)ttRM{i0JbzOtBU}FuIB#lz?%kRXbsHAVhb3g-cm3_o&-B!aoy!q zxJ@OA+ej0LQ(rT#oSXm64w^mznrL&iI2>CWR;l`n&Do7M#@^L!TVfrgxWRI;4^9=e zeS@zb0zxz2Xx9=UjSpa5dkuUv-14IAU83 ztUxTM&BM=!T|IDYyJ2oJzNs#j2BcDI0bl$@*lV6#!;C>=zMLe7WKB<{7d%ehl_u}p zX7fH-m&yyFN#-EHkPS?A3#{M*uXzfD#tq56TrYY!zst$uc@SsMgNFGIdZry~bfI3U zg)9@Tv3Aov+UN8qp4lqBzdZR2$3)eOkGjdFyeWyZOe+SWigHlEq!;gb@TXYw zfsE6mc(Pbz1uZkLa1_e{N4GiR>X2F3Mbfl z^NxWx*D9M)*$)d+*$;D7_LZZuuYy(fRfx)dh^Bs6kfwfEkfwfEvzq#0A)5MOL7MvE zuBLu?sHT3Hqp2SjVu`@t*n)vS*lNKsAzJ-G22YL+vV(H08+}|O3t-3Vq!IZeMmqyg zGJ+?|NXJ~AYYqTL5h^flrFL3b{v`9|RMslU3Je7+@`sFVc(8$h6Bv-pHly$FR^K`} zrH!QM!9LN3JlaV<$u&Q4vSZVwRj_50wwP>uWGysDmPLDwKtw+O;D7!zFyPLCvCpJK zLSr#?f9=H(rNcYIm9ZJB7EXVS=%D8w2he;GTTT|Ggq=)5&r+}`n@z_ahD?gD6YUG1 zt;GA+4VBB_&yIc!PtZY_lSL5v;x|;rs!fm)xPqhhh7Z$4ZmL`ZWr6+S!*ocO*dM-* zOWaf$>+cGWOMC!k|DtZxdIevESE}}$dTV8l)#{+uKVZ!Hz%73BXJF-7IVX{uWV-x zF{Jf<4i=v@ViNui8A`jS!Gr(D8REF!Q4iYX7I@AWMm!x>%ug!OVof)UUF18Rem)6A zgQzvk7@H~&bX$eG7e86wos_BjKWA)}j`{JVsUmJI08*L4t)ds1F5{0!cW(g>hMM#UJJ9(4C@660+CG13nFVB zMAkp(Ao3O4e@O@JP9O~^`N~Gpd>cu7PpY($bSooi1taM-AZdk*q%GY4RUt@vg=1ES zBIzZLdOQS4jBDH~g3+{zqn@e@LevYM-Q2GbRBh6|ebUCxi#q(c9ezoNSKHWnMTb|} z*xI7QD-E``1z~GOqiGlUu!F5PY-}a}KjywYuF7I-nEkBH@OUfKtgMrupg||>96Tqq z*a?_W+C|TMsB@qM6)FwE1Qmq6Q8aI9<^8UZ*VNQZE3MSjQcr27m6tS8Q!~407cZdl zt+i&Jd7h1+_I~gC{k}hxJ@d@0nOU=Dtu-@i)^cF$u!XHT7PgKyq74S;%|vW1z&#L| zR^ktht*-*|VG$o&C_H?D8H*{Jjz+^S%vtJ}vlDZc`Q_}uoE0jEF!fo$DohimMi7>E z$WbnrScyUaoPNW?$}X8+VqxVAnSR|$eIt~ z&B&|#9qcybZz}j^KnCxF9+XiC)imv}rfH=$O*`#rT8`5+p*RWU0#4I};xdWg2?=mA zAYZ_wVvo)^K^apV8OJDNnw4=h0gh6}jN(jP;xJ{*;u17RM{r*`%bKH>_?2-yvv{cG zXSgMT;JoRWH-aL19+T;*R{DfYPsWapAhW8IGCh&r5MuRHn9O}%gu$Q!G5=O=y7;!n z`_DB_%m%x_ua1fNLQl-n>J#(QADfsjYMhw&t%=!eP0TubVm`!)8G;jYnI>k4V`3@^ zsY4y}aDg&jbYz^Pj1i8B`JFOGIVR>;%6Lgn%x^d`FWD3Gt3>K(=fwOj^F~?|aZaX( zTj>ijJ_F zGYv^G^lWCh*dvH z5(Q`atd}Sl*C@hTDLDK&zlqbCG#2^d_7ObvE|>&@UUF}P=`;VxnZ{933( z4W@sj=X<3UDJ1k9Y0hMnwNX$6;13E?@%K3261LZNC1PT>jOwt;B-7(?>Bx$##RMyT zqCMxNf=OjR6suraJ&KQc8Og(phJl$Z2t>B3`zF`j$#v7j1HGx4HPohn%7#>LWOgdU z$xv{r5Dx0p_#N{U1YAEPOZW)Cvrq+xamA|u$$eFHv&lBCs$m3t zo|j55_z^g`^JN~fVC;LI2d22Q$yZ1J)Q$@5G&g~r+TVle6Lm}YcPaq)^FUqh=k)%n zpC{^0wzOlcVEV?h58_Si8#tE=Y!L)(T>+vB4%W?ZwzP^rc!(X{f#o7l0J&qsxdh?y zXkD#%m-hGg*YW%{m9|y0IUE>oCCu64Df3a-hARQyrq~>8s%&JzR$nD`rZ+NxxOC$l z{8+)IjJxP3$Msz&)=}Hp;d1dW;^z0&rFTf~z~EPfM>P&n@`pA}LM z^FEb%Z#wgK$h_swyqz-d4dyk`uuJk98uU=#P+Gj7)$hVL8;p^ajO5Q4$(-?4f6vnX zbd2448Q%r?coC_I?SLJ}iQPsQ6V}A8mJ>T(PAsbEII(ZbiQPtRuSWPs8cyy(z{_~e zeBH2%+}X{~E|b%7uwev0SHbBq+E?+hy4WQ-RGB}AS|xeXcF1SFU#50~=1{53@YpQ{ z!rj|&vTSJ~ibQVdYq=)ZWsN1yLvfrA%8A+;mjK`3xS-URYUdoFoY$vMX(a}xK2q#r$}wlQU(Pp}Q|gy<0CQgR+1s9ju2q=U+a3o3 zc-x}~ucWRVJ1j#|A9vZ?p6X{38xCkJol?=t%_9^&mJsrtm+z(h z*3oCki9^^nxo#{iC8XM*M2;8TClv}j_qgxG{TJ3_{rcydve^cSTr7T6rCtLzr5?0a@Ao2hIEEDQa&38PGUM};Y*Ks9dCyqHfy?Sey4Annbu6@@lvC-<8A3Ui zoH{=2>z1%|K=h>+eg>N>@wotf(@$j2>iOrKn(h$#j9b9TS<(zls45OS1 zXHE&_T(olbW6og8x$L#jFvM7lDUF7~vfG!uic6Kqbft4>!(`qCXWnp`cg~qNQs(`x zP%v7dU=-UD7RWKrY&3>8KM&9@W(_@v?4uv&m7dg#@n!WMU;(bhR^q=9zyu*fPxK~x zr+Y+aqr-W?tzSO%`kxS7L2YEFTGyMQr|fNwib%PfEJHnK`4+jGfNw1n;oj&p9K)1X zrRNw`a01iIReBbtPdd^wFn!9Ao`&fkRhkey-Z+lwB@)5+!8nPOAG}>D{dbrk)89*k z{~adD^mkTzicBB3($i%6TSn@=*g7M1l$ej=&sZ#^8M_fiuT_?dcvQR~FarizgL7}? zvEb&egn2&}eH3A99j#kBa>%Jh1(!lzJC(pg{%Y~BJ0-rzWQ78P8<8xpPX+F(aYr%O zOOaY(h}=)1+2#M^THS7y`U_Xyr` zoX@6BQg;fCYlT)nZ=bcRm60ot7!t_xoXp9S!PrG^PKq)Ac@ZDNcILdIy_M`bD4x6- z$3t-eof(kVAM2PPph5%xSU>qd@;J&nqWJs1VaJy7^k^a%32dThPhZJ|HJ9AuINeR9 zS87mS>3+tGz3xB3s=#LKljx&CXE3!kFrS6Vp!L{DGH$-+QvaxIJBu67AQx10w((XV z-9n7ux=oCyRZExbV@lm=3K(*hbet}1&J&NLM%6X-GQIII=}{t1KorM)NfT{(%akBl z^S2ym3|7}GxeWqi*|4?~Ti21Zq^?Bw?g+kBVVQMkV5+P((WKl*q)V)UAz~>`;WW-; zZ2`U;=;53U$>rhbz%~y)#n?`{!DQ;5*nPYJny!@O~jl_{Q<>2bKqJn}y3sHJfo z<%1(8dpm1J^(@$DtYf7f7JAF1PP7-7_6%=Iem>HsFnWa1w91`~6vV&#~a zMQn!>M~n)|z*m`Lh<6{RC-wtv-tF#g%|{j3hmY?DmrDBHnnU!xHkfpVUi^$a$HU4& z@ByhDY|Gg#)rB>|`b^~G91pTNdN*4@H*Jch#~L%0zl??KTQGdAI83WRPF%{1>r z=aQ|kp`UM3C!0Ce$tJ<3tHSo~W)RrS|6ucHBZUq&X}4KGSfl5G_t=g}h+@{`w6{iEI&Q_!71Q$(vm{5Qz5drdcWwcp*=i|=?g z?IF)(IChSH>P}P=mneOl8vk06yiZQK43mrmfaA~K&GqTPu$UfEy=`5Ame$cty{vqa zndE?$8=?mlkDxd-nw_IFN@5r3tevL8KxFmx=ya0W9U#ajiSj8{oca*?=;G-@3|CO| zxXp_a&**2q^>mv{1O12BN`!^DTOdE+pcTmE+!2&~kF1wiJ8~rg8=SRO(#XWoyhG0Y z=&~1O`t$^0u2lAEzYFr!fPdN9g?F0>dzXOW9-m!3j`yn2Kj?mMMFt9Y|nTpW`KA!j^Q!P4Zmoo;`@M`!a;cQO6ny9{%O zXmX8O|CM8ysHs9)w>| znSim#dg$TbkK`3=8`Mb@#^27iv0=5Bcj0-d zg+B0N1=SU1R*qUeWy zOHe{gZlI4lPxkW=A7g%AP*%GlkmOJV7_k!zl_GG+ohTInTolrGwE?dccEx56aSR3$ z{!w(N8%wv=#LyhIMI|zYY8Z^uoGU#J##Ogx{?kG5s-vkCUp`iy8+Fdjd;u^Vd8(9mRdAtnb z#e$JTrMiQ7%7u*80&XV@L#NSK8!S8(yZe-s3uHtb)iS4#6^jtntPcE;}3dk0sYt0 zlz3MQdfbhiR|}aC-S9}$pDiNyhQJaMN{MQ4KZxXPed0!`EF5nbuf6Wd(3XvDgE$U{ zNmNbjC>;ww$?|PA|G!>DsQ?EmKcDk`>swQ`oT1t{s=4mlW>e`d|?t{t)ssn%C zd$&)-v6u@(vPupS14VL~n9Q=kpevO5w9CzekPH+iDYko{a9ac8R~~g@tv)UB>r)>0 z=?1?(Wpkfy!VNHFwYe9yGID;G+{(j#1G}afshxi;!18($Z{C_9j2t@4ctM|Jw$cTE)$W4iGkW8(vx459#6a;joVW+i zAyUpVDa07>Te9{gpik@V4W{h&3L$y>Z zd3WhLD*oE=5T#Q#-sGnjX6S{Q8AI;efC1t=bGRAzPSm+yqtyXy>(;={n=-iv1IV6ep ze?j>`uUekKHJ8&K*Ia?^E#_`Lg2g<7Tj8WTR$9MP8*cXZ_&J8edq3 zSwFkU8!{%x6_Ph(?131LfA`%lC{%rl{8r>~qhyGc2`?oKmGDu5yi{Ueian?TQK(Zo z#5I<=&La3;N%)~&bOOB=!sV5($FQNb9)o4`g#8Ntqyq;Rk7147qJRfA1yBHkTaXHT z8qVOqC^#+Pye2A1?&QegQ6j03e94kgC46|8$i2lnvq=A|uKVJ(tSpC^WMzp;`h|hg z%5u0FEtAq_a=2N7U@i=FSXo|TD@!bMX&_r!mY69rC2N$J>#)Y9fi+oKUSKQB7Er=g zmL;;Op-wByPs!4Sa#t5S?JP~|cuezl=6{JfqIo-3gs#i%Qog6GW?{+SW&YL8Fh`jF zW|%GDw}G~i$GsZOOSDxbl(-i2Z9^2}#7B33!(6y?==6L1 z{Ua-l8~&_FR2W&0+R`{%YAr3`?JS!sx7FQSZFg@@ahdD@d4jtGjt8LPjwPlR^YzSk z$Xhxf`ESQHgk?4dkVV1CfM%HWsV|bbV*7JcK^W~|Qve+wKdX6IJKf$|yS=e>7h}e+ z{b?UUj_Q%k{OSvlWb&#j78%_y9AO5NW9i7By(dq|Q{oV5;y%RrQ(}*8H*}wFW{cg- zU~XpcfE-rhO*r9G!<@!#oV1#pY_~zW5o*-r#?)bzbiana(}sSo4nZG9(3N;l9TVNL zr(_H0fDo%8?6)EOSZ6C{Oh5>og%QeO!?EqB9ra2*x?Z_7RHJ&^1Gd@}xe~kDf^0YF z1r=qG5u{0bv#0%x5z`;gppLoJ)^n}ic9J4P9#Q#tqX{PUQ{~Y1y55ftQ@9@kvU$p3 z0v6{hzW+4ZDtoksjgPlA;x+O%+2Y(rt1^Zz>Xs4>!5-8ByJ2tdq)Xr&`+|?QvVIqQ zSi*!2-Pfn5W34Y;8SFC__W*RLXS_r!kL{rvmpJZ0aC|nsZ;02uzvSZ6fS6BF-rwc7 zW(OzeLM7^ccY%cbxwNtITep+?(4srl$XbLGD2=NGGh!dX^te8evhvT3VpWk>`p~*P zqpOT%5WjNz5yH|-SVz;)gCstTq;nF==|&mWIv&}l2~BB~p3(<(zsDGws>o^t`}|?! zXq&NA^x?bx5!hl=W@CLkMB?O13$Q2s+y3$R0b7|RKi9$srh~hu|vmFwdqn&_l$x=Ayeh(h^~-R8kmmqxS?szleyw zpCQIl@{*4>lQGDx+YoEcU=Q$!kmJsZ%> z!g=~58ci!L!ZK-gX@CbQb_w&zx?L2S#xt6JmS`H^-}B`??bF%t=BosLoX#C@`v z@gMxC&AtuCnO`eZ3c~ogr1LUV7#%8z#6G6DQu z{N4!pFgA@{H!&+3lSgP=#@$frs))m6IS+FV<4XQ61N?9vy!QZUv_^zXlv;U9Q z(s$=L!&JSnYH8e7cY5{JcPVVnFd03k@2js)r~l{4|1kO5t9>1TwVqbE4@D)~I-ck( zRv_M&ZJ14wOPv+> zB9Jh5tLg601a~VEX$b1+ryg{-gifghHJTpao5h&!oTQpV5O=e)zbEJlIF4Lx826Hm zgb@kFm2^ddtL1J?hlz2*d_<((n=Xu&7pOqXD!x-A-~S{o)A-+rbgGj(R?OdRT|vk7 z(7pXEfM|4_n4u35>~Heerk5~%^6-+JsUX{sXPU;Hq(Pe_=r=B&hb-8k8M=N&fV5vR z8zK8P!Y>I3iiZ3osE?cH{7POFX{;Qki4y#m%NKB!mZP+EcG|}YWY)#0MypHRjkrr> z!At>60wB2HF04j?#wgcWX&;g-O+s7Z3WozIfzuXt&+Ps*wh{GsrLs98 z7kp{&t{_CmlXYmCxePJc8X{=^Vkhn^8s^YoqO1jj;`Vbd|RiY`U9#gd|3yvJM!{s(5GQ%goEjb&7cp zp>{LJMrVMTbn2e`5V_Nd*U_c>>TZ1Q zvLq-1PyZKI4i`N`kT-?7Ly!jc`aGy?aM*}bJ_;CR!c5m`YU>~wqMz_lJn2vrND*{M zg5Mw1H^}kgSwZG?*gEk+>p^Be-Sl@Z9XqV56V5gw>Bp)fu{meL@)QB=s8(X3hb!QQDs);X3D#q$@%1>!bEz*BE}tXEU4m&GE?%& z4vE$pgZVZn7Khsggo0g`+WHl(#^2>i3{#{^fA6BdAmE zaADjI(}=Nf!E&=2z;FRG2e#oLdnVjkB6z{a^98+B$-|hsld0vROrx$^F9Q{NTsPuW zsaH%fRYtg)@O=C846#NumG@f<++=X*f_;Tk*u0)1l3;R=OfKdlNf&%cNqEB@;dTil z0(KQvl0k|QrT9;Qv*lAbx+)gzO|1j`a=!x0#d4#C>eL|Thc%KPHOJcNRrV^0D|8kb zM+^mFn49dlbQ=n<(SgB5wRE7o=o&Rky|vT~@Li+k245{TLyNCt(4m8`HR#g8*XTg{ zkXkyh!SP|c@FF>_5yoy;l`-9Nf;O~zfla~~j|JMPriWdt=@)Bj`o$WW{?&!mpQq}| zwxx7L^-{gqO4t~UefYPUxsf%Mp}oCP#rB6$s47;W@?rUjd#M(f|3R1!t8tI1xpx{d z=`YuSn3WF1ymB2=Tl(s?rZ#k3HT)8YhpI%f9?W=u{BAeyRvjE)t!A?-qn83Yp?V!P zCxa){S|@H|EpCb$jOp$(dl-Be`&bmr;KUjq@I$L{$fY+TxW(YHxceJ0l z$hFlguB*AWy3)l`|LnY8__gP=S9cb4P486K>j}wfPCNPDF*Y1JSZ2(stRZI%I=?URa74vLW$}l)@?2h@tb6h@`}EDiDg9q_^K~uXWmkMhn#j}Lx~FgV zez{lg-1Yd{@`L&RW*J?}w^z@~GJEvDx?ee6xJR$t>z+yl`0D-C zp3{2g=4Ah0`c3QGJ@2_|7P#k`URjyfESYolmilM+A}3n+^v`>y?KM})wdjxBfn6u| z5e40|u5+qtb(2~Y|$TF zMrKy8KK@z#`(@!G&GXOfo!c`n-#;reE3*&w)IT#@IWi-UY_!tV?;iboWhp0O$kVc< zln7Mr%B+#)T7oAtw`cdhmUyvNc@4>+fPj7jwa_sg0?6T}txiBdPG3u!V2x+`XZN%m zq-Ex3_Ou+u}PUR@)>e&m*-S90 zHf`FpQ<+3@8jUuR)i1Rsl`FNJZ0ShNBv)&+u$A|=yzV`uz`fDwE-u*V@C_#z<#cv# zFNf$%Ra=O#cTgWqCMrJrA%;+u5o$8TT*o;?K@=9^m&T z52_;OOjXAIF~|A=MydXpw_8BH6ahCJcejFHy&igK%l)}ry+5rmkNh0FZ^mj1i+4*9 z?$(&P2wQ9DUG=|_>X`-i*4+e3i@HjS=YJ*f*;FaJUmbB(_pARG;`M(+xc|>-zWN(Vp`nGIy+mfY$zs#v)f4RYyIXBuer;ZbReTM+LL5tL2 zKUoL1U_$ZpY`^Y(pX=3ANxO_*&-ThwzqKNQl8h)v$vRsap;%KC=)c_zRI)i&0m{nE z%hTRct2;yZX!FEdYXqaXz z2gKyv4A6R{GDZVD7$EPc8VLBXUOr~5&x>?7fPG{<%2yp(nV3A#n7zu(&GHB%w5pSz zC-<=$*7*SI+j@O{w8|XX+8A{cv)8+qHgkxre{%8SXvw@FIw)4C0ni_ zGW#>>dGh=DbfY*42j#g>M2!^iOpaY384GM67qG(k!gXGxkIoh;aKFE7Sbm|bt#`C!%eq$a#%c5&fzL_0MK`-dm zonB~~KA~Jd9uN=F5Ae#V;R|_3Sl{yTy0y10=b3BOOA@G04|Na20MEl@f%MOdR#3dq ziMrCK3UlTrwrc1s%oXx_j_mNkml=-J_xddyLPR5_?AdCzwU~~VogQ75qVDh zP9?~+#t4J{mDbI3=oH=e?XGH<`h)FnRdQTrI$hK@5iurA4|F>614g1)H`oXEejQ=t+4B8v_4 zFgEy0W7E;)NG|^37;=^wNi^bYF5kK-bvX(2L)5@p#$TE%IJ}BZU zpRPwZ-*Sf&#(~UU^{s}}j6NfhUJg*ewFO9LZAA;w4%;1pNDa9p{w?1Q$CE1}dWDYQ05U1|c{3_>*i5_+@zq{PA9Ak^j3lUEn-Su^M+oph z^0Y?nn2D;$?162t-Vyn(pL{6}jFd&bHM7|k)_~~)X(40Q>_!=6Y89f29_>TjoYlyx zdYH{@8^H8N`DAx%z#%SBrVAYG6N2fvI{h_&pRbH=4cOO5HT0@EMn1&g$AjEM<&6MK zeUF3SQb#!6ttvISU@VsUUTB{M0wxxCxS$Ci)XBc`!DFhQJuJQ2W3<0tC&GrhaexQ2 zK9pJaD6c~UR4>1%Yx((`*Ppt0u&(s~)!)M=iqL@Kb`?@veN!b)zo=8fwyN{J>-p~z z*H-@fa$Wg%{eboQUE@Igt}(PslgfVO7|v{(0Ap}zCR6C5L=(pP#tQfiDL9#Ye~g7C zhDFS@hIV_$(xcL4M(k~r+Z^tw!0v9B@7T81k0w&;-=r;sMu;fr)>Rt2)#s3a@>yt6 z4iB^eOx8pGj)y$0E_=FoWq=1#Q=w%vq)ZWm>9Jcc;>1Se`EH^RGEs2Q=*O|gzMmL9 zt)xR2Vztn8RW|_{sQ}0Y;U{*UNT$ebMN~_ETRK`&@lR$Ko>eA?=?$}`CBw1ou0({= z_1cl_ROG!Cz)pv`0}xz6J_IGF+QXqy!(c!rulnNEB0ieze&lYEjP(v9to==tcZDVC zidV;D^U}M*4fF)pV%71)s!47y?Cqh4jfvgJyn)`LL!Y72K*^j(!A0-pm(27m<4OGZ zG-7oLb%dmb`8}KWQVXz^CWHymptU?fYrFOZ;|4Pl<^ae1Nm+MA%fqoS(TERHk?)L_+^hvmu;b$Y3g=>tUNS3IR zQG{;t&PcE4qhL^yFk6Tyu8nj9l|>$VrEeTSw!97CP%thhSd>EyZclKAcuI1-xjC8q zkqNCd#{+O2ik9%(ZV%DZ4?!95MuW*pr;$(9ebv_q>ogfP=`@FX;|e7SZX}8_?Ehgw z9yg;{Z+(pDbbHZy(aR`=Wl#a17kOYgBzD6eV~w~gvdD4EN~ma03+}U`Nc^7R_Z?P1 zDZQaUEprx&}vc6g(RJ~stShBt~3!!Q!E;T#1N-whSC&G5kc#g)A+y(XTu+GLKDX`a%F zDDgXc$4OH;3F@k!SQgaFfD`_pr!nX?0`hPv)h~I3YcQ|9bkpJ*SVM=JCWj{au#v%& zK+Yc0_&F~#Ok87q2y!V+m&~$z#_jxm)8yLP@n=EY%t?v}4ZX?)+!{@5`Y*JmlPSLV zGa(}PR!eUhyjEj+GP{bopXj0q+qJC%R7>dX1-MrU84nHj5)edQBj}+zN!=)lq=z3` zlQB6*ke$y?3r;~73J#V^ugO9paKC_@$B@##GY^cN{33haeLt>&y?$PHt~IpbGOV?C zsO05`Zp!}ym8)c=?Bby`8f^O8Kh$)Ep_<&cZprk51uQCJ=JORK8WHe%QKf*r5G&%9qoNKhTvyO!{<-QweoaxuFO~+o zXiorxGAS}>y!JJ;!QM`*CK?KuuIBbQ&Tafds5KzKG%<%%kNa``O>v3F+gQ@_vC!<*v?w5=(hv`kg zM;h7@35|U4!Z3-13P^+(k%HhN&_lAlY{1^Br?`aUUoJOZCR^T&m817&TD!*dEjIIT zvku3K>8hYA>2>S#{7BIWvrswPdSiuT#q0WJ%0;&M#t6&L@B4i{-NX-^LWQ%?!PgHB zMAp!$HF8m$i~hK<&fLpI$XW9mH?DVBdSeE=CF{FHbSAKey&<##Fk-_yu)|7J=Yq(4 z^YQ%1#{>tOzJdL9-$>yUAw5ZMQI_7=MRxg%zGG$gmffiR?tb3aL*`Cr$rT^YJ0Sao zL6st{r-&5vFU@@;j`|=?f1J=5&QBDI$hMao<*l3bnq za2v%{eaKXqmPzB9^q-oS3C>*#rRUsO#Y*KdL~b6!n0cdg&P{9LMBlEdk1wH8({5ZP z2Xx#T>q#DmC!u>)MF1d_4 zC8Zv3c#Wp#p?FCK6ptk+E#RjcDy058=>BR>vCmyK3c>dK>d4Y zh#(J1M?~6lw<`i2OuR?u%e!aS?gWUqN0a@r^vXPSaf&H9OHt%i2d7We?@ls z@nWY)>xP6COovgldG8_8c8KRh%-K$S6oh;%ncjt;$3No{z#ZqrGUO!C0F||YIkIC= zHx~MnUq#d=f_4cg7%RIbX5-(VMf^(C4{?U+;EEns%T2?BBI?oZl_CK?9z>B#QU6;T zh_hhaajClzgOnRFqPGRQ&^!9?!u@a2-@Q+G}LUj&BYrn_@@SPFxe1S+?ung)) z3nF>8%E$I_rNY;NG70cCzXSj!VMAdLMAIB4XPwjjObS;H^G$+m<83UkU@^U?BaqZ za<%OYq|=n;gW5bI#z`QmFJt?qS`B5(W;_TrQ9MBGu8;@<+@}%ji%zg_TVTIK6@wY{ zlzy4Acc*0UCQ|QqVc&eIcRujXaM49B@uLkgWV18-l_AjM4S3Hy4GaH->=4!%IJ*>~ z*&8DDE2{HK(NJviG{lB0oy+VXft5>O*ku$$!Q}Q7=a8C^=<*`w(GG%$9G4{0jqHWk_zHK4teVq_2+;YL@wD=X%IA5eb!cg_ zuT9oX6PSHlDJsB*y85d+`!)VT!69Ba12>e2WI7IHhm9t=EK3t|E`sczeEh&apVfI> z()3BO$yejq8ce1fC^I8dPNxZj8y)xqiuX5xDX3)kK*c+}gqVLXB_tqqEQCh`Zk~Fg zo`35q_WlIfk+hm=Fpv{s=~+IoI4RVSN@-qeUO$NDxK(4F?a=Zodw(1~Df72jevq5fFAm3+@ zn+kI9S9Aouw;wOzb`bNNJ-q^Kz*!CU4IAtl1$GOAeHX!Q`D0+y&uOsl+F+L{u)7%S z8whq+OIIhP4*&zYe9@=8BhG^P47Z4Hy4!djhj0b&YXDe%BCfi!Do@LmK8nEOG_ zHlkv=T~(WCYI$zM>_4z#-VAGl0Skxo82q|do&KXtTA^g z$a**$#)sqI6pAQg!(qa&F9w66YG72bYeZ-txl}@ z*t9hto3e~JSQyFb)?-pi&2x9LPM5#5z2=2h*_Vhx`a<$RevaxUg=|EzGe`+PY>ZBS z3)|3f>BHEez7HEM)!MTm4KvjN2^_^;Im`-5gd_P)Oqdxo8FNtCnH>}>$q@Vf7{Ps` ze!euq*_pdulGDoi+EwoMT+gE~7(K~PE_q?4Noe&fYST!HbR82XWWcHUNR`d3IoROR zMo{BTeZjI(kBhbhjD9-T9?el|&LO^dXH-^yu|)8ZTsjRatQX5X39Eq_Lr444HqY@QZlaFBFv(wL9sHsQ%Jy{Ukhh^BE%-_$mciMRV zr$d*Q+r`h?p6*(_B$|t`N16GU1F+SFBC0ug8>P3GPlX`L!{snq9B_w2T8K#g2LcF< zeLwU;F0tA!5k479JgrNtgW`}x%t^_lH|;BnlgM+xES|le15)TKPGT7D$fbAG#}sKe z-#ypWJs!cg=*#5|{0?_rc(jRhS@%L$WI^?DiyA?xb>uLG=7FMVins(^z-)gQ!z*V( zy+r)-LtZ2{*HMJf1;253B{IXmvD*wP@(LF@%|+<`pWgHFOK#Nj$U(Ak7Zg-#2G>CM zZ}b(H-uAaCE{jQ+FrwaR%(;+9_o`z8yC@k_AATE@)Q?ut%Yl;PlBa0G)R{qLZt^vq z!oNerKlveZXEB5N((2pVd_YdY@vPOv5*kNP;%Js+7;hJsNpkx#pbOoD)gvbu z^zl0$NAlUdOj`1;7`bP_TrB%47lsCm9kZ#>i$)W|c{*pVnA%Qf?Z{m{=y3 zE2Q!ueotU16C0C24x?f}W+|RCiL3Uayzj{ZLdi;rcL!uV8<#L&F(8fG+yZ%DY!gj~t*b zug}+sR$0TjcqJDfHh>(T(f79+k5R6n>cb~lRAO~w3&=K3zf0?$`n4sCZqwK3&mU#c z4fT6Ey@`vjWAtvxie%f6&U~amhc0pp*{DRqda;k%R9$ zTsYPxQzMPD|5%nJ>Db)vx?M2qjsB6y>|Rt=$w&SO)G?Y?z%ylH1#MOlUIB4xWIEu^ zrc0Yf`79eO0aqX1&uhYWx%KGSJvWK(HuwsStpXZ#k-TtzAL4}v8!T zN7tbr)TOnyu|FZ=D~|DprIvD-Lj>|wBTZVb(^bKMZ4&sldie^4Z|Bi8eo~L2ufqMh z8P4~=(#v{B>Yi_`oY-#~?UJZm*+)_CPT8sD7AnJ_Po;&-Cda96aRFsptu*NXBfW|N+h@;98I!@-%wb=kl zK()WbdKqz;IL?Wg^`dz>=Xr#TI~zmRM&OD?^#*3wYsNyuuilTGm_+s9`#fH|PE-qWbWk2Tq*Ik9r4D_Ct8s+ zjb8GO;hf@oK7jS|MOG z8yK9c%L5rHZ7Qh5m`3>$!0*<28!Ok_FM7QZcalS#s+E;L=`O7@98__#4pGGva&;Ec zg@7Gws1P|Mn-DofBJy${cA`xOm#nn*P)pJz_4<8wxDtVL{s78}UhEaqc=7_NRqI5K zG<8cCWa&m-GM+%$M1Q+p#GDy4JAc+Rjg6<_b_U4ehBg*?tp7mqL2P0&6z8xN+Z_JJ zr_M2`D;X^>`-GR^@O3lgL$^%56=|Ude#jblt~?S&RT|u@)b8keFSBZxWUxjxqfYEK zUC1F`zGC~BS=C+0$qh(-*pDoGCfP8Wv3wLZ9(AT*U9>s61Q`qFe=`MU^4pb5w-b98ewKGVM-jTu+c?0~lj3RVW`_xfwV6>~kCHOO2Q*=M3y~@C zFaB|738e6kmMNs2;*YQt@^p zi9JU_FPpeK1(Ny4T_x}&|Asgx521lOdnb)^>Io=tNe* zJIyM)Wr~icpunnA3sUa%DhWMv$r^Ymhs{)W3jpAz>M2%7V_pGrG$MJ7^|511Abo#AAy#2CFx{? zP#Tyy0tZHrf3U_gf!EVI=X&};;d4V!ip1x8jL(lWKG#_I+@kUM4&!s1#3u}jq*dgA zM};?7)AOEH{Ug1K)^H13bPMlTt7w~CMVPfZpM)%*Ai!~}_usSW-9F;LuxJ2nR45P( zgeTICIPLR|X6NPnYzoehRo>4@Rktu72WL>mnj8=61Zi^ZtYTc{=kOj6lYCB8A9Fm? z1~Exq(U_2VLO@g6Y6AzCpi`-zc(%szY+Vo;qN#99*ihCO%_Xb>D17 z0N+~!oy1TV24_f#O<8+#sOI9}d`hg#@jxRctM75w!kPiZQnGp#iPpuzTUn{YT79UZ z34O|FIN%NGK!=-Fvs0KlE(Kdl9pPTK7*t6^YxXWm9#$2scvyv1WVq&G=b49%)I97g zRe{kBCB5WFI>FFOCf7~myls4@7iAY3?&Ct!24bP(rYv;9r3=A^ zI(`Pq)zh0S9b#gB6F>XQ4Q;g|F;rP1?ISI193A04B*QLh=W^}ra~d|iA#Z5J1Bx6w zTCHoG2p9v?i}~lVfUPi7{yd7gv*pjj__I|0JQT2sX6m(KS_yD4U<@kWd8B;8mZBtL z4os9IgA;kLl|w;t$ZT?RjSc^Ra3@K)-v=CkDe~ucm^)4WJdQtS$e-T^oQ7HQ=MiqT zH@CWxS{3jiD20SCe1ph4o@AMFKmD`haxXKNlUYAnjBY|u7rWpoDJ6p z+IgN}e)@9II$O;Btl09)LHUx8{>Zf^Xr_6}YHpHd%O@F(0?ew2eh`3SGKW5X5v;{z zj%?ub;C#8%7IA^Sy1;@QT59`sdLCAQQT|KqHOyNeaWpn))qQ+sDodY{2pVIFfuF7J zj?-e`$`M6cBg(b}^+^flvtSAkoh=oRcuNEM)q=SzSYh1KLVlH6$Y;z(F#A16HhdMV zCd1N0G@QM`&D587>=s~zJ!bskr;MCYvowZONi|Hec+g{V5Jjv#OidBi7+D!v6pOND znV=hqlAtct2=1ap#1IF;RamfxI|=SQ_h6)x;LdW^Xp7*4lGxT%`GF>$Ys0ms$`2^9 zU2CdFYl;0EOKb}MstDo(L8niuuNw5lD zCM}s}WgbOpfxulN3i>6%4TL7|$5qC5lBo!lW$&!LD90j6%MPZ2izSF&nJTELSOcL|y2*BOUd7+j5 zux{YRK+C$ALPe?rj}7+sX)>Ur`J;L(iyNSO6X`_S{1?f@q&BErgEuLG{P>&ikudxV zmg&H1IlV}B0zf$4O40v)0 zw93#E07V7Zc0cGdR(V&q-WfcuG4ZL23EH1c?61WA!9hvtvN4cxe_)Wr{mekZeU!dT z?4lv=3A~Adn{gzM+u7tV%z6x+ZkH;rafa;g$F1+~=CGuQ&gMwf{{j*_>GP|uy6_n_ zh>k)AC^5+!d3T-!fW-nJg)yH=!5UNO2s~aM&<<|Q=lW2U#SCR+W3nH2K8E$b(yie! zED4<~Qj!;h(^JfgL@=I?qQid)7~s*1_8+RJ0F``ox*eAeJlsS`m*`Q}IpGSSTppV^ z(f2}|F@l0+t>B|$GVJUuqP|XrjvkII@KHbpyj$D^f|@ZH>Dby_ph5hAAO!RuI+7@A zv%1xYqW9^he85UqobhxM*fvhgB%8ZC`1bd1$gk9n>7URYzg*qdcEFSR+Y-LcI3<2S zO;ZkPL;_PMb%)!Q56;u>B|Vr2HIwL>9NN<_!s5HdV-bOOlGpM1v@j%305W0ThJWi0EUSKf8k(ZNSr4e`7@G{99z(uUSD;>=<2K=i5b`4fzsT#~SBmN7 zPYgX?{yiWufo)?swjjk=?IkX0rkbjuzgNBG4feNfF8x-a($~bEC7vWTO=R4Zb}vQf z7}J`c4RhySqG-Z=J>7)8Ps=;$Op0{JCYQYT@k&CEC)3}n{rdl>98c$bep+fgL;j@e zl2W|{=iye0wg&KZKt$gJ8uy~&HZ%(d0x}-xNTy-E_`HL5s233-S@^3dBK<7>OHgST zFjgNDXXq(7D8m=Ud?j9|Q{1-aSxh3@|4OWscro_vVLh*znxn8=edyVSWHx)ImxDh;*_tGg?BNZQJ+FD9MbXh8uBZ^SikCSKuiynLW^ zOMckBN}3hD4W(BU`nZVHaxx0$BCBgCvc}R5AxDjp9g?QW zmlLQb;*9E;sp);4WtJ1P3jt&?@=^8rAM>MnZ9jh3bR%^gzNoI@_364j z99_4U$?A>;YxFXdo!2X`K>6&kyy{f*zv|~huU}^0Eak@rEZ;xw+Wh1MYTq`ZW-o0) z)CXK?BeaENeH2>mKzPMP&eB*X_38g8illj#-Jh9o$#(_`>o6{@Kw&%zmjWtCKP)Nk zifK%d#olS3bgKXHV?-2PjsL#mvi~7>WY_j`c|9H@ug87WwY+;>kDILPrbwjhnrKV8 zpmMl!bULqc`FX4|9F7E$fL`dIlV^EH(*BeJ9X_ChAITX`UrzL?XZLLN6Bo)e3K0J6 zrG7fRHw8JoHwD?GYdW1V1v#BDX%CNeB=N>Qv(hOhP+8a~$aFkPSV2U|m~Sj_a+)G6b3wulDEK)q7|j8_eV zD^@g9z~&42p3tPYsf5>2#hDbRxGC0x-vY96a}X)t3b(mx?Nd}6MquUN0}jBP;wg|b z7QPE8eYqcPfYWZZkiMaxM*31ig=072cVjC89_>xSUxJYuAr#%21G7eBraK9h?EfT)W5;(0hvx^ghsDNQ%a3bk8!en0wj2F^!*@WAArj=V;3-j3nJZ3ZoZq zHW3lw$S25a0JtN<89n&%-(;`_t+paZIzS_z??P(ZZ}t5y+4p&JORsg ze&)wuY_nBNzxIfDIO)rTxvqTJ;!B0sUHKwSk1BMK9@URBhGjZA{1T6ZV^2Qw(KEal zjwwd%FUR)DM^y~GLy>RkOPn6w79Jiwf(Ikz5vIk&^{k<{Ylg74(Tu!9GqTkhm4b?y zu+G=@igmD&XXGQCk+)r?u*&Cw;C!(L-f%V3Y^O+f{<3mo)RPWv=^ft_yp*L8-1EHM zM7n!P`ZYM~EejvdXa1O&;iC(4THQ@K9A9P)i__*4dpXo1d5>dA6Ln=`4My)8>TcI{ z4{_Z*7H{%jvHIJR-*tCt%hHKn2lWwA3q%_Jf*zUBES7IydoWW6e$42ptG0SU zx2j%`U} z0hKfh(4SsnKI`~L?p($RnCct*2WI9VkMmiJ_KVaifH}UQCY*O|g%L=BRj}J8pU~l& zd^RelE&qzhBcFbe>}H_A1E0AlU@^SuE0g~AOstQ543_#r@R#PV4d~h&GZlXwPAu~g zcinqQj(Ss(an9uzxokPT+Z927mU8IP@N{f$A96#0$u!DTIU#Yi;E+$BU>4)>Ata8y z$mZu6`C=Rl)M`xnNIj~3AQweCzigE!(Ek$SC1*0*ia68PO)Ta$N}C1~)_ZfXC#!7A z_}5iYzRHk`A;!po54@HBRiC~pRlZGC;eGPka!BxMkL} zL>OJKI^~CXxX&ugN5BM}Z!a9cTqI(B$})J89&xF4Z6YO)5t%mR)ao6fnx6-`m#J@l89 ze(-i>?Il;_3mJV8ekn?FPVN&|o!l3JMBa}@G^sqd_O;;0YCbN=p4$(Y| zQARF@puDJ(G*51^<5lrH35$gh(~Kd{l?du#I8;>WlxbJz=To@HUl(OUDdc0-9GC+o zspRO2p6FQwIm1?+6b8w)=KvAU;`yBV`;p(@j>4qJPRkQiE>Te~xx(uyU9WOTz~$`M zBSu=yui>H((tjOr3TEc1g#ta2w9Y)sUY~z_E*Jfgx%`YVGneObyFHh2b94`03Uu@! zL8$^T4Hw0AbAyA>Ozz-h7hyU#SB|;!?bT6Qs+*i0$a;Acopi1(EFfh`KIz=-UME^m z?mCX+h!WAA?+%9V29ZObDS@%>V1Wr$fnW0(FflNnJ<)Ws4k**hR$AxxEpM`}4hP$r zf7Y3$cIMXsHzDh?0`l1T-{`lB$7bT1t#g1-9-FIdTSmFeN{fzm}h;w9@gBL+9$^^t^IAqN@e!l_=(WO;MMAMhM(O zcUx}@$U$AIaiWMHeHSjlC_%FY&vVr0u`al|g5J)rf}*2e_My8JA3%<>fQtN;b9Lw<$0^Pk_wM-ap8wjo!Ba>jxD(NG_{#SZ<4qo zjO1P(2G&!Fkx32-L-)M~H zSiQpTbqhGk$=yDWHL=*jJeQu-^c5PZhnd{XO{;&-`rRL@N zPnhkZX`HIp=Ll@;sH=;gUK#L?9>qk%F_)os{uIMzh9>moxk-c@$p_G@dROqSF21w| zbPlmPUnS8wSfTTxjn2U~gq4O~seBB+hD?Uq%60OiHwjBjFbD@r2nQXnr0c)S)$+M( z6&70N%Rv&4#8d?>m&KICL>K-)-e&O18lqNKB~QpOnsaj5H`t)$+g^(qZ($T_L$UPrx&vpOC>(6(UvR7i$e2P) z;WoIv0y%mv_NV@F){Nk$Sm)Y^+n}qDhH47KT(4Rf2Mw(-kPk3Y81@@_acr>?Avq4Xo%-(XCp_}yZrh^0Vad!SJaA;&7 zOO4DKmSXT`U33M4h}X1e=dZ&2WJ4&7+WF+HnuzWDA|kfQKuB8St(kjkQM}n8t?4~R zw$TPY=0Tn=vM6gTXlc3OBi+*b&cT)2`RhU5u|Xdusb0!`B+zR$cVh>dRwo zky;)fgI*qMisbUx1hziC&0e5>%j0|zFOL!Ie0LNJ@*-Xydm&n`jDR{9AN!bLTT z6e_X{n6;cJ+Re-4ewYds+yt$Q5s)Z<%VjbZXqlWSs&SdrAgf<-!AlHnNs)7zd}bp$ z{S!UJA#Nvcvh#NO_5HOO**B!G|Jy~lFkM@|2-$^e5Xk#Owaoly6C3_f-RXJMTVoS z;nMBzeEdarZsaGtRD=-%b`%bEjwrwS(poI>R9YmZb~%tfJg11Ib}=##8s?XU7W-M` zw%N~@y4^j_p_SYD``s4%dEo@HpBChx*~xys(nU`zESPz;6@7}#n#sb}q*X#s;Gd8I z3)s_rl;}-2S#8@|zsRpln1CP(!UF8#)4WYY@fjli_?+2aoM z3EG@IPp}_5OD9g@eD?KVSNz=*%O{I?ZI;ls9RekHZs3j}?-HEHHXj7zewrK_?q=(U zaT^VU9uG=?v2kSDI}>r11q%Up zL0+ZxyCpnX$*)z6c=)D}ToCM`qY-x^-xuRf%@Ye9kg8*wp%SkLoZuL6TORCt#WY&- zGoPCzM%Zx&zR~luH_)LirrY^n2TB?D@gS0MYXgacOe!R8@wi)Ri`xd(s4cz~$aFWQ zP}1EoH}8TAmA3djCqErz(cPPYeo9N}A>D!UKldp4Yu+BkpgHAA5RFEbhV0}TR+`E6sHD9);&1xvdUnX~jGlA?H`o%$Q9LMia z890XAVt3;$HKroiFcsb}pk3K!2L95O!2Jcj3BLty<@4l0r1TiAF%*j~pCF4{x!L%48U%Jus&KsHgu& zCk+m^^G^$TBuK=dtse3RQg6sFZ7U>aNz!@EX>np+E^!@t^tOuo zQmAhsN>A%HhX*UmYZ)$_qYwodxHZe#Uz&Cyx=bnAM` zho0BvzX-aLq3z383~gZ$Gqk<=lA+BDvNtL=g#AI%?tDvrS4^!5qBS0KFKi1PjI!?qx@U{FC@hZ zMoXrHPvj~dvBIA0@{1ak$ATQpA>fjIPUxJ}NXTM+qB}HZDdoKB4ZW=DxFJGb^mgJN z#)y|kvLa0Y?x0%)lZ=L&-a-%RwWO@lmD_TAuqB`hJ}6!yy>ul&`)1aYM1G&cZgo*- zt70RT;v~zhduhO17Mw$Thnp)#3K@8cS(a}f!_y>8K3#}C6Y-2=2*E~r#uQ)V# zdOg3ri$Zlc#^`>I)qMz|D|xa9?MxwBO-S{Kad3xy;R_nh2$y9qk;Xx8aJSM*T079D zfG*M>p}X~n4g$Q9twj7l(H={ap?PmE9dAr^QM{RWx;n95N(E~0GhBL86t*mZU3nS< zD4fP75kF0A)GqUabd7~BIWT@pXxx96?{MfjVO0m-JOT1|ayh4u?o3^Eg;n*esw&@b zV{u(oJ6f-+Ypvlfj^J0!ooQPt9rYPq&${cvt40Qrs~djxCW#!{`e26JZNh19o49Zh z$Hu@hW-IA{ushk{8!2bm*V}v!cjR%p)T^)C-0HGilyf{rHj1aaiY)v$9vWJ93~6k^ zLX`OfE+NQ1Bjg)>+?28Hyhu*+yN*e}LAUS~w{U+MKO@AwPe+)(t^_NM-C858gz?a?38OHL|BXnOkscHp z>sRnw02A`pW9wo39L??ileIiI+@$+@`ij@LP4u^mj!S;ttN%cFZGDyuYWB(iw#d5A zIW&v7n|0-phJAuYfp?{!d--TOLGc2qnk1-yd2&f6OZTmP+0Ldx7rB4RuTS-iq zkD^w~TpR)EpsSP$#WPWLhNbKVG)%_P7$?jl@U^Q1iafA~BBzRYiVr|EkE=XGI@@I1 z9TUFrHGw6rMEMS)HAjSjzziHLoq+5R6uX#pX$oIO>+zs#74rSpd>*&kh=5OA6?8)H zOQkWi!H*T~MQ7tLq~bxn$w;EF_%e|J?z2r>5>X!5s^zfV@mCMw;uU_o|72 zGJd&_XoM6BYJ~KW!s9jWfXiN<8>1zZ7&OWuz7VY0^#8E;CGb&I*TXaK4wuIwn?_lb z0AWegBp8+e5=a7u3NG-kp)FA+LuP=1WF{n&kZqC(DyX1>7OZFuD%gSwD7c_PT#LJZ zv304mac}Exl_ga3opbJe_q{iHS={>d_kC@DhI#j%d+)j1Ip^McmK@SRG)r8GCD1iO z_B4t`e4Y@hzKw=ql0BSVrmev5(|c#( zcGaOX6n1wQ(JU!mIGJqg4^5-ZkxLKl@3S0H&lq-d4INaX+f_XKGgUqJbyUxXW<58> z){~#2>S+|CrL%`9La}uzel8Z)PBGgn$>B$WnC&U-Tj(R(gU(cKi}5Qe1EY9p^f+sQ z4^|IDmTl0EWkfn!v<=u$Cc6iQdYz^8ana%~_=BE_^}X4`p#E)GX<2*+UN^aNHIE= zl)MS#NQPn1Dl5^!Fh$p6$7{Az?{lSsrx&@9NO-|aV5`}R(HQNTeN~gu8lGK8*)Y&7 zl)+KAWrFPB`)zgbDcQlj)WN6h9b_jpv!!`t%%9HsCXQzF^Vr}-K_1S9jxSyUq|cqk z-malO-^%9UO&|u$g}SzCZ_yV~&Wqu*8CMTF_orCFnqNfL#VC;MuQfr}-dK^^ZEh(yA7tCa$?idzY1%i#*dJJPzF7PZ*Wf)8NF`6Q z9K0^8p;24Lo@UL{`T7#lI3ai4Q;$OL$Fj}P-WHwhWuId-8zrSRPBW!%Ppp73-Q3&i zRYj1NXSD+YrA4sgj@yo_=cq!DszM1==rg0xVz!P7U8@S^n9^uWp)brr*Tl3mLlt_{ zBYD@YHN?9n7@O*950XV-?Ljo#!EyToxiw4|t2vQ9SSv`YP+KNB9ig5is00J*VS>VE z53~=JiqiS#s`fvYirx#P{DF>CVAWoaucn_cJpZ6I&NOyyO&lHV@DKZpk=U`-5Ife? zsIm@-O@lpjGzVZaeysD@L-eV#P-JatFkDT^HPRG@bYluJ-k9BRLmA^rKb zCId@{Md@yU=<4bWQ`&?r_7w*CUR#ailzreKnKK)Ok)cu;VcKkLXdTa)&okoLP1SMi z6IzGEiTL9AFPU9c9e`umUp%JWz(uN?&&h7)<4~PAn-%5(8KXI&)36kj{~!cq?U!(B zY{mz%@LG%#!x=@SU~GSF0P4EiJy|fs+3c$-o75~g->NPLM1}F}SzP5%WRH6`6n_@P zz$%<2k(QXCP8&5_q`&d+jszNri1N;817&{pCIM1=Rw3>Me)bI@-5vf-qIUL z7vjpAcv^56%bAQjo~}jDesANIlsiY5f{Eqzp&O`KI(p~R&VfO%TRR0Bf?`#&#%F5- z@;0ZP#>OB&TcKh2FO#296Pk~`K^h^?R&9iwMz#%al519yaw6NNR0nWh?5e?gix$g- zU92YTpIs~h-uxEUBTY(`2hd{~N^63SJV0XD-2%ZcqeQ{kS`CN$%jjA}^XXcQ(7Z{F zgk-yU07Vj9#db(ULvWo9_LCN)FTnapNRF=2ycnPrPRTxYYjvE6PzJ}ccRbA`XWoar z7+VkGDrcu`pp(T$0}@Yg|L`;qx3lP-0$fz)~lwytj!HS7XzOxZ)(i-g=Rk^a9% z`Ve-HK)Ua4_6P+?WlwfNldgr8K-hxf%{55~;Osrzwps$~-V8;77{XLQ>PN)ZfW+Y< zW`lMcR{#Zk)rpT` zW?0rV6kE&gpiC{XMN5#aE^DW3y_pGu*l4*%EQ#w3$R;PqAth$wDg!dJ!~wFt#G%dx zC&(tJI$fn!$RycNsY9LlHpnw%L!}ONHkLZH?ut0nIV9o$nICbev)&1^(W%ZRC&(dX zPUBf-g)|=3%ACg239`wlPFK0pc$PbjXSvgOmOG87B{4{ntI^nUr!igL26Vm?bp3Lt zadm=ha)KOE;WVxlR>&!`XB7^0HabBLsdTEdvW;HVS31pC4D=2&a$%EG?XD_^`OU0y znl&fLhAO97vq6rNeXDk;Gqc(OvZ30k&g!;SLXFc(sA+Q)@@pJwudivN_C}}Ln`#`e z&Wt*ZS=0ftG3tOplM`fSty7(5BGBe1P{w$XCz3bTWHiyUDu^@)1(7(9o3o2ZdE<=P ze2d4;E>f>ct~!T?^Xr@jsm^J=)mgFG0{lfv1+MxwhBUL@sZ(u1H#k8zwgv6F)M+tX z+6HvK6LkHh4&%|}1nFAwqfSJ_3WtVWD;*|c$VvxnGFP@S5e+My>b=Zqpf3ASJJfiY zL&HNZcOr3@J1vRJ+vrf^!I6yXB;ebJ-4N@{M*D9w$T4jZl%qxFYY@LsG zMNf9QUE1?xwU8>wjiY-T$CCNM|_0=|Dr%i>SE!1&+sFcSw1=i z{-2ySI&IA8iD?thN=q9zdSdeU^o3)_E?5}wj~(q#EeR|v3>38QQm!*F$|s?3LGTCr zxRWqurKOeaJJ2^=fSepC{ z1s6-dekK$;m0TztOae%8VcDW!$oMD`&Lqj-B%mdKWAg@vSiSW87pTCIQbncXz^>?m zFtS*>_zOnDKIzJ@$hS0roi@5x0!S<{8xb!5x?5W70fQ7Q40y{z!3yKsufBTHmvW=o zQ)MnGmEToVleaJ!Dy#7Niu~ipV#WzL7&LJXIZy>oyH}2*S@A-23JQ6ps`09DC=d)S z49me-7%nODMQk75l7$6h#*CS0B>HXT4J3^I#NuU7GrqzFOT)zxqYCk5!ducT!z7b} z#qxW3NiY&9mmmIMiFJVC(->+R#$I9$WLhW?F$M}JMs=qLx-Iqj7nX#JOk{e{B8pgR zM{kb#Ua3FSo6+6*CS*eY)SKChJ<+F|bf?>!vnz$?-a4L(5MMYzTy2B+%mHGp4dN3A zh-+;SA2~p*vqAjb0pfZa#D@+LzqUcV?*OsU2Jx;HA}k<&V}p2Gf6MNG7$7#;ApWZF zYXxzO4dReq0T2~7h+AzCe|D&2vw+woAl`6*xZPIAYYq@w3<%V_)!85Q0{}AH26CqX z5=4Ez3)w*$5_>hj7ch8h!~DV(E$@a5yixz|47{{>;aOu+ix(F97G;(L{Z1M8L%0l9 z^TT*$AXE_c2Se@G0z0z(O2}*L58;QMal6|YuG|spH@cfzP}+V)3(6LDF!r7B0^E_m z=^s_r`YA+;c54ZjbaJd0_(}ug$94{OaiGFckXaB87fRs(7rp!`*tuq=F;jLxpTn|N zDV|^*-qONgf%05z_$r3q1>rIwTEK6A88jRWhhjc$WfvBPeUUL~_OI3ug6W%IHi$*x zLSJZ+wLc04_;uEJ^S5e^}Bx_wVDH8UYeYB;iKA5StX3ETRW!AwdvyM)gwW2ah-^*e(>OT7JBOT4jo+0%?KQ{wICAo2EVE%Ek?k$C%ACEk8^iC0$= zuWm@ZCz%qjt|Ztlgj z6y&ylzEbZ0hys>8txp!#$$THFbF8neoy)4mNUH{XWO|4_v^-h(5?UJa z`4^`y4f{e1Q4$)LGWt77GR~D21tSHE1BHc)Q;U4Xu$RjUB4s6k&eZ=sq>Ik>i*Wf) zytJdv6@-f`ZM{qDpm#s2q|veD^PhJ)@+E!lpS9 zHjVgopad^bjLMMMghR%cb%9IK$Jp4`o02ZJ;0ahrGJAt)bVb?6vYZTx6~L$w-o@eY zQX`y$!D6~uI8Qe-xx1CM^)Q69o>uPH#TLH7q*Yxl?CFFU_H=@cJ@vA)r(QAasaIR< zsdt;~skbA0>gB|qdfB;6uh!fqwi$bx@nv$GUJl%*S8Hz5D~8+jvT~bVc5ZWm;x;E3 z+@_DoZB9_!rgtp2Il+nBoDjopPOynceeE)KKfzF3|6`hxYG&{XG_6>T@hf%IMLZu> zxuSXMfx|4bN-A2TdKjM#@K3@Ax<(fIzuC)vF@-bkw8l9zjP(NCk&8}JGshV z=|SlPR7dxx$z(Xw^#k}(5zkq#3hE@<_Mk~hGI=Hqa1k$1F;GYN48t!qvljqjpC#u!vUZno;$ZSs^_GT0n zgQC#TRxO7tWRiIqTQ&pd@2|C}!p?4T=a8=iIhUF96mHi@(*V5>PbL-O0{9QFU^aVt zu_MtWQrE&j9XX_^Rfj{Sv#zrtwU^HRg-XC&_@P*U+DTg|)K`vF<3Tsi`fFVJ{C~pb zhsk)PE&#tiK#gaZ-EnM3-EsCZ4B$G})sHb`c~CE+c<0K5B#XZ=5&QDAYX!P{Ok*{9 z)2DM*yOwOlD6lCvKF zdjY~|ER@A_nLC7@r=uBs6RS|~wVBfuM(<0E&_Zy03Y6ReBX|@NFn-){=AI4PDEbA) zt%VK)F=ORGAiGaqc8)Z1)dn4Bbs5ITz{A*-u-ed0JQ=dD(O_%>IdPi`1RiTl7~ETTFx^e}3z3d;$k??JBJ?q+&35}JZa zn^A4kOw~uj@$Jn#xh8T^3Jl&bvah&+5YMH^qxzj#hoHM%Lp*_%yn&-ta`Ik^ zpabRmVnQ}6Le2)fdJ%tG*o$aG|HWBc4rieNACDEhgLY{j;rNU@Vr&?g@@O9OzpOVTX?os?TMiQs2VBV!ASO zWDqdq!9a=Ekj~u>yuodI!EWP?+vE)%%dHwPjlyt&y7J}br{xY3QcIRwix|~*MY&lG zpaeBA)$IpA-FooToeqAGXdMlC#zMx`&`WJj5z%TEsgi%C&jZ>NveBm1%gO8e$iwHt zKc>lgZ&iVG9aILJ<_T2aO>H?vg=Fqyy3>#n?|MF->AOLES}VN7{kA{JtrUgE2z1RU zjA|E(8!*)a)OIjJnsKhv@ShhKC9wlNC!=qW(m3gy?h(F{&l~K z(jF}&y`_thJpjsSd;n+9^}vvEBUw`kdIG$!jNHgo5+x3;)y|fJc|SFL4a#hN(s1(a zQ9AcbK3A(e#;-#=y$NT6;HsrzG+|beXLE#glIg{Y$nZyGwGJXc?s)PbfZF!@i}IME zr5z)OkolQJo6{)>n3jMfy9~wzeFfbLBUDS{%_4cMho42_fm`mit@xP9O@S$^YfyNThQS%aWt%LzmcenSzBZ4wxYNk!GoAGQ^{tK&9+G!< z4+%B4m&=ldbMFH*nlB0g;Y(MA!1bECwHU={onUVZGnhXEL^F1F3;OkEzY#bd#(}#s zX5b_aUjxs(N;9z3hM`q#ngwFE0bycUif+*iEFU(od`e*HIGN0h{eUJtsNdvf4c(gsrcGs) zXxZB$mcpyG0Wx9P?w(8zczRU8_ChxpBhmR_Ca(z8?d38eFNzq!S5S1KYI@Tt<9ScLvfLc zG!bw5ha*Q65AhvZe<>81dDqFKHaqCvjsM(T3tK1Q5`GL8awEmQWP5t77|6OzX4UaL zeI`&Ij912h(xhXEJ?x(tjmygC2wM7Cx52`N0J~dHB>&Py7#-lNZizI`S?qUu4trxc zg&+V7R+lG{o3(zE#lXBfDY{Z1I3bVM7y$vun% zqs)%#O{ja?hH5mS_Q;{u&qJ^D{boyB#-f1O0GIV!BNyB8A{=+U9{!-{osB*|Zjh82 zQd+kg%mZiO=Nc@T_>g4J&(uW~Of%PI(BY{kiQvQ99MS9>iQoj>p6YPRubl2~sXC4z0Mz@(0a*OT{pNl z;6ESB)%9nLOVKSy8mQs|VDIT@S-xrc9Qgg$zKH^X&42(+@!Ne9$tVx~jfXPM;kWUu zH*cdTrg-%d&8BFskvydYJW`?Xj&#t$E)@&Bg;1#GI>yHMG}_JzCvM>J(+Vexw?CHW zNok>*-@d}{3FVFy0YbD>lm(+h)0=+X`c|JYTM6)OETU&BB<`&s;g^onu`c4kz~m zdRLr`rzQ|s!d8K0nuEYXUa#F4J0d!bhB{A$7yx@fgugahs+Udy*t;0fowHl&%(Zi0 zU%7T(4DA;SWVcu#n981m^*N1ay?zJRYK+d|vCHUA{h4O;45N`hiSBGOyYorhcj?X- zj@`*mHXZTFJ7D&#i`L=&b#fh!nvQPK`%3Qjw@{@Z2RHRaLtP{X?}r5M&;jam0d>si z_LbCaVLltmV5MQcKuq%;=)n?|+S#Gy8A84!;t+?H&LAinv4TQhh>ET;EBYctg5t;B z_Ce_z$|c#olYD!y8~X!oV7nt^4}1d<8LD<)9Id+NmQcyZ;|@sq)l2egz8pWS2Swni zr@;Wa{jCI8WS&a`tV@Hq2TjJ?DD67;5d>IPiLIBfRQ?^#QX~7QF^3~*VCRV$rG$EcP1kcyt_Aif*r%X9Hg7z!cvRm-8Lg(_RX#vWeEyk~|Pj*ajYD zkvPM4s(y^>|2NDCJe_{eR<6|@6G-2zWaskD7u}fAl~A`$XRkIo5q?C z73da$1yRmDc>@dPaW-H#TY^4&*ucr01>$05;&>3a*ss>Y*ndFu9j~|9^(;*re7J;p zfTA9vOPO3+4J>*HaCxAHXzqcYv&A41MO+#$m-ve(;pJkK%$1koUB_FHI2-*GT3aU2 zLpAa!Gg%yEj0w4QDX!FyIa>_eYYa$mVg3PKog4(&!;_{1WgpF}1lN0+-;Q{{Uy}rQ z-^3u(Js2-$@JKR%XXSA8sZz?%p$4z*vqntt=i$vb!t48>BactQN#Y|-lKW4>h?idw z9=1HdYAe~V^74Q!oNRiKnyAKnm&fqtM*IHbu4r7ou>z;<3i^GlVh-MDVdm{dmyt_s zTOKE7x}g?*x&GZfSvqV$+m&NL-N_&16_xl}lz?nH#KkQo`rpF{fp~uU1>JmQF?R(+ zzqcf*VOgDSd(0iL$EcX`&&^LB(;$!y}XY9@9CAg;XIvM?a z3^+wS!A(~6rkvD0m%Q-kD>y~nf^&F0hr;7D z8+?R6p@Mg1el0;g?2j&EIqK|=?{P;o52(3^9b7aAJx!Fr$r~487VDD3sxrtKG2l@S zn;TNZ{$h3UY2;R4$2;*1ru$DHeLA^{oC}Z~qs6hZfZ8~R6{a5=uPUtf0YtEPJ1p_u z8(6{za8?FFcyc1}5ta}_{C3qHQkOu;9N#Gg63-G=u!}QT!fwtk*-q{evV=?2@y+CM z6GJnxg;0?7NCQzD>$&g{63+uYbI_v>U4NZtEjXExkJdL%!RxF|#Dy1U0D@&R1Qh&W z-9y=#&?90AJyy`o!7+U0-RN!ss#6TKVsMDqt2Th$Mb4Rt`gz!OkvJ9|!)GyZqp%&B zuaS3C1aM)Icpyx8LG+R<2SJ{%J%rv;P@tSV9s>*Y7>r-H0`S!nVPsiXY#$%L;V+O0 z^nsP7V|bD*okcJz_~f6V*OYktb)LvZ*Jki1$@tn!Z>M!@v5F^Mv*l>e8}5^?M10G7 z7|M%6Oj|=EW>%!Li<0=)3n>#sE8+a>dL&!Otn|^8QI-Vb(G`B|($WxQF8U+^@whf1 z!eg_8wa=jbfTt__HC-XThMrVwiE-Rgm!U+{7PWMKBOO(u767YFqJNX|MaH-|$L%Z9Q72G+Sci%G*e~*U3LcNkA@Mc2Li7sg8xByQNH~2= zCik3}Hk~&~Cl|DoW;Dws(>sS1tD2w;hH0(~;5ltLi9qO;5R&PFtqj!|{OIQULsk{Q zz}74R|BWKh-{A)Rd8Kmc>QSg)W1Q3RQS)X4=NAl|Uq=>mnh^Q+)_#E_^-@o|>4LJy zB6v_+-6IjF4hJhc$T$d8zY4HkD}Yq1P1$gQ>^r$Wc?d*Mk~aZXax1hyF8=~} z7zp%Hj~j?$1qMSwv9nvq<7VZX#qF|o8dSJu3CcBjgWHvBNSGlj+~k6ANgy>64i}cD z2Finl$)&}TE> zrGb*5uP|5zN#$vo6;Yj=XTl2p+YaheKRqJ98||B3>orM^WSu6X<}*#1^i zsEHpxwG$9&Mex0v@yALB6Go?xO&>iz**|VVU`*P=3FFh#CZ>`CerI-5z@Ij5+*$2! zyv4rK4xDv#%67(~Glk*rDC)GaIwOmL_?8txcCzuCq>(WxX{o*fvMVi(Wehf1#5Y*!f^W%tiv5(tJ47@0=zs@S{94|nGY8%?GT)pAMkbHA&Y{cKx$c}A}ogHdo6;c z<)x8uNi1D(+O^-SdS9mqLWi9uX45$u*`but`g-?AUUQ2B6=jiN;SVGX08j+$(V?>T zZR0y!iEiBz%=KBpWafC9~6F+5-cq(v!^U51e#z=rW6V3T^gvg z)fn+Dl`jH#yI&kGSZo^=0xAkbe10D-Xq6W6EwX-wd=c2c-bi?9AY>oEg)n;ll1lsd z#f+-?j1clE3&WCN#Bc(Ir+WFg5U4Ob3xrV5wb1zRMUZqFj}c+{?f}XDppgm_Q)C!) zkn04arGkPopaGSZ*O4xSlch#D9E9YYLPn9Vq}0UCsHZGM0}Z8&MP^CyBGH5u>MaRG z%1S~G0QRM2%?TD2#SEA=cTu<;_EosVu}#=H-hxO;p+hDLclhOy1%n(k-BoB-CkSX- z9xf;Q6GN)jp%9#a!^Vci7h8G24^(sFsE)~>cTVFG|pClQjvLZ|ex&+JwCj-AMi?p}3?p{<9 z&${?^qKTI1uMMeQR;${R$W+Q}s|gcq;O1=rCd83@3z8|kVv1k|mKt`%FgfNVo{Xe% zSs4f{@~cd&#Z%CEfbl?hvUIA3zxyj=(g9YGf#@xy#J9XuF4zHvi;)4A4Abs(Kx;GF zL2a4w4ibj2xczJu2zH7er@CBtNXMV2LD!cGkikGX;4F?mP%t9Fg_ZK7 zAW#y4x`n%$)5P*J2ChJ)qlSV>OUof($BrHI>(LVFbpTT0wf`k*i7z4Eq2H3hjN`Qnz z3xkVfE}i7@ccOGblQuzq326yGk}NgbFt#=$_sk%~PK>}XL&k}fYZh3Dera$Ku*fnc za2V_v(^UcJy7Xx@OiV{GQe=udu*bsIZy|^o3ByDiK))^P$yk%EQiO11p<^-9TY;|_ z4!woJND#L10zgCh5<;oVR|zcLZ>z`@e0;Eay#+wQf)N`;Nnp9J#2?doOa}#Hv<#TN zGp0ysS@WlpY#7Ug3d&%878#t-uuc_^JGKuaD^OG%AsTXq#V3<)PLsUsF!rVSbtceG zpAb=!W1T!8H@3Bjrv)QZ`7=tvRfa!OaRiE`yUWqIeCYlFzs>@z#M#IjLf1+Fr095> zs26{ZQM3j)d9c7?Ugen^bH+lBZ_y$cV~fNoCejWSG*wa35br>sSn_FcAjgk!*a_Ne z<4p~fbQl}IIRF!^r-g~8i==MGQZA7h^4yDGlY|EYkatT00huj%TcE9fiqO7 ztZ0GsB{G#9_!zU4soeQw;ifKL>{}oPXq>eMkblKV5I?dlE;gpcxY(FxbFneq?qXwl zjEjxwZF2^;Vv31JYEN(Lf+1zGKcW|3Ay|vqn=`n6Ird!=+Ot-tu zn5NujOf%eOoMXDpm=^0SW15q*jA=2>GNu_jutM%YvOhm*hI+Lw#pmu-d=`HKpXOU^ zK}3ga*=bno4M6RL9sG5k!1tp6jO)3GIE+D_>-MM+aa&b^K{27u8qBProvN$xPE{Zw zHf-AOR92GEnm~6RH}fpdM3#`_Nk`ivvYiga%Wn<`QaiplCCm+FVX;cE>hzvCZ;~>BXW=ADKC-#u~S&8ppE3Dlty$^IQa$#fXTM za0mSNf^;cT%BuEgv*kG5qw0Ig6+2L7-pej!On%X$o_%iedf|E1&CVRmSK-*i9pK5= zlTyg4OrDjJ8R41G+9=fPsL3-LYuuqKe5+N3+wBz&?M#JDJ7tAuqn7C=J|T13RKAtx zu3yc^^Q`RvzH2+dNYKC#SUwP_v7F&Z9aD zC#gkpze1uZb^*B_PxtarhN#IHn^Wr{`QUjq8^f z8+}za_dcJ^wOq8T)T#w_i|$b&&>vQfTpAm8I^WE@(k(;snyt^k)+f*mT|fgc-akJd zWAz2O{-!hyOBM@m*!nB78S}%^pC4f?@nSv&HbObaXmg~VePRx5qKLhR~Tq?^pV`!R2VXEJ+>rHQe*olFP@^w$Q;;cryHdkx?w z1Nc@0So%N8H-YyVz^@y?cg6rWn81&>jfN2c%mjYAL*OBgDd6YbC-HPmm$cAKe_2>t zmo1ZVytDKsz7&2<#qEsjVy2-tmif3U^o9|}z7|@4%4mIWP2M!mqi(jpE)Mq~o00}! zoSl;g)#U<*9>uoS9Y?@TZp>lt)dCz4Ix&Y)RwUdOQC&L)$idop@ht)tUWgiT!_eGn zcp(uvR)f*JwX^YGizRselM2;Oj9~8hfa)#-)fXuuXg)UaiVX`d6xr_f!+u2EwFLJ2 zy5p4iN7p>+%{_HycdjR0VTJS40_R5!oS$&7;K?)j^}thq4RxIf9X{^)qnkZc7w7qt zn@t&virVDf3pUAXZk891rCy*2e;6emnSd9I>g=uBuw%)Hwd6}~G+KqvduzAzsiVgN zW^>W~6Dsfi2~bbiO}3wBv)@4zRBlIY<#p>NC|Wn_wN}tv0Bvxi5gdR%P`l?kz7A6M zyH#}E`~zy3SE2>v1k!xe*)?@@fTXM@LaehdU4xMmRiWXW5hZoVGpgiO=<93(QvK6t zVgZc>$TiRdLr=LuOz0aNpi$YecCA|T&nn>G3WpELnHN_sS!$6c;_F-XU zsPH+1fHEaMHY6t>mVU=NYGU$XSrcmY6A)}RYHk`e_oiz@XFKq|Ow2~WQ3N=NYELAf z2@+_P0GLbw6GRVh5lv1Z_fCBybRHkrgFj?!X*YGlMvK5(DzfYS2IeTQ90KP>eHB zTwj zno-8&$R(=Qhjj)mKm%fd-fso8sttfimT7*^UTTV3#2uAH*IferWD|XnGm;e@hkq9v zt7gbQ&CYLhQ|Fb>GEpxyyGlFr8#+D<|6AjZ8EqPQ+Ak?qYo&_#+4Qwp?N)c&V>*jE z`m)nDaqQ%o1aSUgqibgqkaaw>)F@4F!96nlIPDns2eL@po4xgJn`qguVmq>uL)OuA zwV2&}tetL7uyj){k4YV^gbtTVMjJRfc0vx6=tP7%L3==%Ye=)2N$f1#r;N=5*&2<+ zXx}dlV;!rI^LQpf1%p~>BV>8T(S^h+NMt>7@OYv>IYI6c7=Zi9x8npjWTQJB!|f&{ z&hj+6(K!a21w0Je9GgS_?R2K0-4nVht7Xw7!}uqDBA)Zsu}U*^UU!A=r!F+i03kC4 zj|r@H57Q=l#<9#eNi1luCj;OgD0DL%Z_(uu+C_PF)@?H0VgOz21|+8(#5BDO&fPQM z`O!s+7Jr1zi6agZ)FvI_UyE~zejX4=G#S=TBadza zg@qlTAic4%c(nS^ve?g$%Y%$I>A_++%7M z27oqdIV^e{N#*9cJoXyoX*oVtah!Gi;1YDyIS!irecfiv$z)ypm;)ti)}omSAdeC1 z@Bjd-1Fv0l*kjrn_c1KCbw1kyRsPvEFGsY;(e0=HB<(}91d-IM-E8@Bm`2m1NSvJF zd);)c1}lc0HW|MP=HTjKrw)b>&is3L@+f|rhz9R@(2X`M=m8QTd&9EQZ{S-%%2HhN zWV71IWYXi=j;jQzgbymX+f9BPgOu7Ow3-V~rYOBfQ{Yc6SFTN~_yQo7ghcnrct!Jz zI9mAmbY>XGy2+cH(mbP<*I)+F7i=;WNWkS++Y znPiTaV){e`&rrsvgG|uRT*BCH8W(=CCP{HRRn}?&rE3Sg>$yi8BlHo}TFSfH+U8y=C<`Cf!d)=ri!on}H^Yk{ggR~sRZ zDHaGcE!^bU1(WoGi`Lw|bs025?BWb0X>8~=$OV!zSdjEd6hdASII$$|ugjoSo<&{< zM)9mbHlGeF=yx=4Xp@d1*OljkhQVg*+oWr=GO}%7#eV_C_sF_=1l^A15`7=T^yX|< zG{d;4XpA@OxR2`C0>>-55{5tiY??ZlW%Ns_C$P#rYEuj`3+|DFGjT5e8Jw-U${Dmk z?2f%4$sB5CJ|z#*7-k+JT?*@oPFSW z%i0W4jJsEl+1JEO)AX( z235l3+z(t%)HV}_(x~k{v$jp0s_kQ{O}`iZe1!JFavE~c{uuqkq7x_B8h#RPk+yru z6CwN!ujL8sgis0Kz`*{=pTHzv&F`bkLm9;`)yP-ltFBy^q9LjP#<#4gg=x2}2U zmG{EKI0Mu@bOut(gRAFzdII9xf$I@q-w>9(SB~R2_HC^(j+dg(VZ5`e#?8MEf&UN< zs233gsn-rb)*iRct_5+9I{PV%zW%o9m2=41vaf*jem6SaNC7fEf$P~rtvsaO0`_3r zU`-aV%|u{V;Zt8$>KP=nq9yZ%I4*x7u8_sWp11GX#<=X{>B zIKs7GyIIw7z`B->D9IczqtMY2oWE(C+{Ck1&!-$#hmKAM80X~1EOXtwEM1v_?3(Vm z4|oDdlI|5FfI>|>lb=cVggA}tNiBrgd!tDyCHdKzkfgJxwM3DYmzh2PCWLxc^JB{W z(L7?7_2YR;W;Ve-E?^&x<`HwzR>+c+`IweA9C>2O{DK+h0KHDW@DRSAi8J~=?xTPL zKtB-OUqfUF;0NR4FdczUH#^j%2~h~7_H@4WT;oA4{~QzKeNBoW+2E2Pgh5c1)JRqua;Gi@K9C93DZ>;Pl9n0a<{ZOBn{v+)f1+wiUiQpKYCLHuUb z0p|Gtgao`e*3Xln4-OV^E$tg}P<>GOp8A=IK(m~aod7>_3Og}}h4WxSU>qusmEBUo3hv4$i zmqh5s=P3Rji$8w}QnY&Fo@wHBB@^<(Bz`)-3hKJp@Z~UMRxFTkgQ=deQIambpX*U` z&YCP`u41u*$a!YwCh6o1x$KL?2oAyW0;+kZ28X`aqj8-5UfYJEK(>4`Aj|lkvqApf zFMUCzK)K!IE~*AkE+0|S`PuvukmK)!p+H|G)28|^S$au+rq0~^SZxw+>Ey5YyCCCE zImX-{u&O-PC6QI;B?7D$y>!!c^x{mU;TK~H()%6L5VK_;($(>1`4>h#x)FXaR5}Q= z&F(#I#D2i1Td0|JS>wY;!s*EH@;R$oiA!fI>`tiW>smY)ZUWSX^I;@=ZKt`t%8l*? zM{w`BH;DdDW0xxW`>k8@u|!IgXOs2tXF;2+>ZYF@r7 zpS-RKXC^7Md1B&GkpH-H4xlNm`9w>ihqFC<{ zrxSLlW{eQV*zI^{3Nto9&f<&6;d6F?_R?{@`RF>Bq4%<`=o^g{uT-zQmzcOdfL)&mQ?`_+$Mc*C*yz_a$OMzK zslqE^ARz5<%}NBnhM~J`a&$(=h}Wy*g$$-mWxw;_jcC2_!H9p!e=l1W21#Ln;_Y6u z?N>Zv-Q9~+=)^=;n1?P?#bp96rL(Xb3GAd6j&665tpi(u0rZ6MUl<1OxQ97zxH`TL zX=fHi(zzRoKWqx=xE~CO8|4jH2qhT9W}P8U$eXkctN_}h zXH2|WW+$hy;9Azhe-5h0X$zzMkt}#&%mj`G&vUfQl1PWDjS2GK1a5H0t)nD-CK>zsT(N&0V0| zxFMdZo`c_yfOs{O_QUV0x68v&0(;Yg@h9pj{kG~cyjt;&mLqN=&~7P4RjGxI~ zUsffRWCMr0XeaIhwxvss0MFZ-Ny<9`hZBysQ3 zOJGst;sa~eb+oWALfUv33%y>IcOBOM>n=I0yB{5KQ4pyqhsSd7XxKj(jAI9Ej_$K* z2h?P!EnH|$R$~`hqr1@+4tt{dID6CsYwq#tG5BMeem$OLTdD*ZtM4+I4v*}csw7HS z(S`UI9OLOo>1F?_!mC>CfBrpZYAu&t)}L> zIOnjHgK$iUh*?>H_~2m+KMA^Uv(a;7_4bq#Q+rpM&PnthZuj0J@^C6n-^~UHYQSGX2OUd>V981SWF(3H-t8wQ^YvWRD{#BL66G zS3v%8k6)YE{4z}~Tj)%iK^K1k5S9Ba-dRW{x>ZG4ltYuwyvqE$t zh(Ra1q*+F6GmJ)@pPqH;(ndb*{my+H8G~}h)mY!DGy0HAJ9px@fIZ#LiT~373n%`| z|6@-4tIR#Jk(125bN)_rg;NCa z7f*!vpVxdsbFhkjOv6NM5{x*rfXE`$77XCGp|*72VAjwcyyT&JpjrByH2t2`0F=LPd!R3`>uOQjhY{;pr;u(U6?!cUgKgSDv)jz<-BC@7AivzhA3HK5V6&yg}vt zlc)}J&ttXQ$x&>CuUc>w*DoVvHq@=eX8-Q;iwlh`K5H8Cn+xzHLG8sE+7E+(vf&X4 zN?nb@IXQ=SCDOBv=|BBO)$qSuru)xifw{aZs<#8-CV(-A9&4u^hT7MYGAYAY0Q0yo z9^e-BhWy{C(%-aNNM_#E;?aoIhPI14YdxE&^b#uh3d)b+?p%02T zahJJg)7=*AF;Xa2N@(@BDa4*JG~@Tuc3V@YHa~?+B`S6q91K_E72E4_>>jDxZXdj? zHkMzc)l8sw^{<6;%z40aeX_>Abl=LyKlsi!h>u=T0Xj7XQqbnT|E#$)zgwlVl zU5m4WK_ND|o7Kze7BvXZ#Xd5-wyM1M+@u> zv-z8qT7~0nT?p#?Jw7OF1HR4vDtl(Oh*Mm#QZe7(sdm3|8&}G>71wbssfB;U@h%gO zvvl#GQ@DsLksLni270(2G6%4dIAs8_P1V*Sdw4b+i?4>Fri(M==gM?9=axA0Sc(1DW3BxNgthn3wNWO}7 z-3IF}K#$cx$5JuO^x61pB)Xx-Pg(pGyNXZ2;0WyP%Gu|R(c|KzgDFVw6)WJ*cSvuXmo z+iF(#%DioEj86OlUG$P(0LmL6xxC(z`Hs=mo1x8oTbl-VPN$Xz=g{>CS+im=-IT+?l(xXe&dfKS zOj*qrip4x>Ht}Ao_AQy88b*WA{6(?NBf#m@*}6-9|Z~M_iLf!-g?J`dQ$G*5D3$c*qyT6EEnbF?cC# z#sMr^sRZHY%#wGtlC_>UGj|)(Xe|kkKx5ve2GU8=)y~AtO=sTIno(hH1Y3Swk&qY6 zYVL2<#*1d=Q-(t31f*W?k!2iq_EtIu4i||?(=hR7cL*Ojz0)qF*se3O<*l+AXWLTq z>k50A_J7nm?U@_gH0_^Ye0SOI4ep$Lo+&o47pOl`G`0_lON#cSLC*HO8_@776;=HV z)8&^fbSk#j^_I-H3Ac|h2xB^X+Yz^01a9xuZdbV7;?4nV*xuSa`h3dmCp`V+B!yc>)T*#hqrC|(|F*G1AtYXb7x8m5@t#7+H`ZdCV~Vkh<6#9RkqGyUu@3Y9Y4w;#&+z$0o*j=R7$*itYjs9QEQdhPzs<&ib>z4ay6s&=t zLA~c1+o{n4^&8mKS(-=gGfT#Am1aB&wJ=2yaiUA+iKI1?Kq~7}`7QsiX2A#CG0r@g zAFT%2Y4b*~d<xu)c;C^I8%xYYA51p-AZzD{{`sDH<7 z{e@P}0gTLh-QvkrhGmT`rc&&DUi|aXW>eomCutUNra8DTByQmOIchq z1%+HPMm*Y{GMQp7W#Kt2oxcYEq2m=as!e7+5?KUwCDU2AoD^2J7S5)^jO1fiYcrBr zsAUe{rgl<4REehBJ^f>-t;=kDW5n7#IrCE<=TiW@iLO0g$3w+od3u3UpNM*;t$=<6 zaHy24kH!z>Fr3W}TC6MJkbW+*AH%*m^KT05Av&E!>Dl)maD?@G&c-LrUu(_AQLfPd z-UWvY5QY>7GSbP%4`8`T8!D^+drVHQk<(!0-05a+;Th#)kZ6+mMKB$i=kPF3KAXPD zw+g-Ojl!-1x0)ww_{R^f;Ug<{Z}VAdcYkcnc!-y(_YZ3Z2nka^K!VFjNU$C`+-zT+ z(uQb^EwrzlLNIvdV`t_ks-#6?u_Uh3;$<73*xUHbB{5qBynyvbVle_5xCR=C!rA;p zN&7yHEw!)hQdvq&_|!gZtBlKprcdp|wnG~x`|+8Xkq$M#3fSSRX96&*Qu1NcZ!-K` zp2P>>haN&3LysFn?#=)~=M*_zt!mkq@*S&iecr~5=YQVDj5pdcwm@f%GwK)Cj3;o^ zUU50jC=R$WbY>wQHMT-yTQ%VXKpofBQUAUGnWWWR4EfTI-V?@<*P9to(?Qn?thS6Q z>X8Nm6^Vo7o@vNHK%_-g#JVH|dC`SIvTy_|%n^)-5$q@D_{%oNBlDkT#wL_z@>_uY zn3{E8S<8{xCz>hhxpK9iI|<`a_3r=O<81!B0~7s6MI7iT?$Lin45^2)fi^Y^k3xD$`FCW9CN>1?Cjz2v%x` zFdfE2?`&M2|KFqLI63Th+dOD%juANAZAai>w$L9QOXv@e8O@@Lijc!?k#o2T-@&cU zw|Pte93C5`hsXNX=1x(1xKqR*9vgXwTO#l9R)KoDnh|}tC8CdRMjPqYX0#FBI@$=g zM;qy8jW*KFDcVT4RUHPlB>YmAVd=G2^Ei9d3JncT}7f22nT z@ke@C>+WugKhirk{zwlMEAlO&4`%zHXbv+jmH|_roU5soBp=0kBo_L)87)`W|S?y%_wVpo5Yy-HvL=0w=rWv z4K(B140Vie!!7YKcuag7?iAmKTjSddjg4=^W8&NJ*!VU>h2SJDE9iXP5z8&a}l`Np2_Rie?M%kz!k=sUo<9;#N`y$FI=>ag$PWGg!)5 zP)sb#zSb}xy7eQ?7Dr@^iX$@C+T;Lh;E-_`G(&K~G)oMT@i8$(#@k|uq}yYNq{qY% zNpCZT$Uw&!BI!;sMAGdsL}KeS7@ZkIWS}jENV-D|k@VIvMABnoh@@L%h@{(Nh>TY; zM8+F2L?)OqM8?O)5E<_jLu7nR43Y7+7$V7dL_iODDk{TEu9Ld!v*z+F&ncY!(bdAe zWblmMMA6qGyGc)D?=PPN|IX&go)pghS-$5qd~k)b{VRAWZ!#2D>j$Yy4;rx$(8*H^ zs?_W0(@=M6A}Z(@@8PE^_&09}o)lhtP9=Z!+|&@#i9AbQ^<|At!pH>`$SW-9l%gB2!kODBM( z>`B*TdMtmqE<+n9F^*So*IB*D*PH1#2p6g8i}^W-LhdnAWzO0|MkeQ~t`AWKZgrcn zA3lW!pFWr8dKyrnqjnCT<uwcTjuCwtSfl#@xtGXc6`RoyE34d2#yLUM0ZT?-Cnbb` zP@8h(5`pkew6Eto$Py?4*9)s$%O0r9;OrR}YCN#}CBU-?z-m6^Ww3xn(o5|H`Zq0pnvFoMb(1# z3_nv-oTkbhunb%X#_f7BZV!IXar?6MxV>wP+f63o^dvQzJu1kH?pn=JX!1s=EtN*YVuf5Kda2!xtI<1 zGhZHOCGcObeXPd;jB$sGJ^^7)ges|CPI_0o!gIS@xZA$bt);PL$N6iB-YSqDxbVtr zG=GKJ{4p{<{w)Ba`;&@F)^!D|*iV0F)S#b$^8o(^u&!pHRGB9%d7|!0T$q?v5C+}b@DDAH`8SvG>2IGdK!37`$xRoUm z!2484k8HM#j8MwDr%z%eN7zMSFN63Ca?~hV0$%W`YfrXA6uDBXzDU7es@LVDFmK)9V zt0fuM&SE#PX4L!rxCWy{X&c?&YJSO0&sX5<4Dcj&jR5~rfNuhDsjS&_fdbzsDb7|R zZpp*=s8Og&hW=7sg{1po9Bx!{6M3lqxgi ze^i<0HRS~$m%O%VW$2?Hb~|d+Yo`K-I}S1s>pc(A_{=?+ljq9njf$}TT-Ei4Z2ukS z_Dy13e~~Klu33h-%U#iM2izsnio4`OJ=eg_kCK-|Xg9&qE*5?w8b-$e9=1nQjsY^~ zDjYtI!C~|F#NjvX;qah=L!*g<>z4|LW1StlCbP^+X2*NY_r&|2_VB*l!26FT-VO5< z4%bMpt2zo3JCR&x9g(a6y;q&g*{ih&rLOwjZnOoRW@`oGwXx-E4enHbv8wr2*}K;b z50{St`1xD}(pZ8K0UzJW(HM6*(#guO^5l1ks$v%tp+dA%n?VMjj2r*<+Ay)^boA_j zKe8}L10ZyS{(AVZMtie*;TIqIEN|7wEv`qr`D#pt-djWvhlgyo`t=aGbhs5i5I8QZ|qW0%% zNX+%H9VUYL0g2!`vYr%v_R;C^bm^WKs467k6+v`urU-*EfNU%+mSI-?Q_-aqj%>X6KvQ>HI@R=O44o&XS+5^O=RJ^Ot(e&R_dI zm)~~Q(ek^)Sbhi14h{*KM8l()j@Q!@D8sRuFdn1UsAE)Hvq49TcO*iIEs}se2ncP` zMjqqW0z&A%NIM53R=Ei>fl0ccC)7?nP@(^mqZ}$gBS&n~x@O zpF&v3zMNsJtt?EwI@Nu8ew`^=cZrSp(_m(9GBXXwY-Z-ItulwytIXTYOv6^u%)GNz zW`mKLM=`(YGGIN%qs}3kmxcZ+5=b_H^_+z!ebA|m>YDCSRr+<8=|cP(V4a)3z z`paYY)Xm7|^Tp9We~oZfj85QL4cen(yjt{Lb(o8oj6{97KAy5h?_+x*tK;Z(!Ed~d8!A_8m?5r z=2Z%1=}V4y%qqN`&f-E^Oy*bN{1%goz|Xgqdqp1-~^Mvh6fBX$o#DbX!>~ zFwrvDr?tl=F6%G^FFy+M2F#oLb9wy6k&Vv4JMbmg+(6|s=~Vo~me1e`O#1+funL&z zhoGWmaji**>sp1@y>9dF?=Q9c+o9$>#z7se#b&t{-*V9*BOMS*q;vmD0K1Q(v9Ygf z_aiCKW0%4C(&~h>@j8XZBNjAXtv%E}8Yj1j#s>n8Nrc8KI~pI=ekjnm#%=Pr^$LTh zEf_re{RiUnb_U{YV<2vf8Hmgq6dEsE&}jVrXf(Hj#%l%|x5c30+MupwpDPIlycl@Y5+AI$+u*;q(Y@M;h3Ir0SOfa);ZZgqhXDyf4yJhB#x`n3A(yIt z3#)z=yXWrfec&v`&q zwxQ^_a6cDs=bPA&dEywzSw1G>h0Z1zCk?$Ys4#=Bn-#x#s%`JW`6kr9wxJqLs0XZ2 zDMQuc;4Km&o*i+Wlwuf44>6M4FoHxHYXRAWG-e(~_B8EOe{0Vsr=D}s(ozLcA9AZ2 z(?;WE8P6t2q<8XFS|!t)xi;t+4%oeQ`^9BpmcA7)lb&;lr~54SD4bbJRufHn+=Z6< ztTay%)y+S33r)A%2a2u$Mz(0fB?5QYv+0_C1dc*FjY3)x8k6qt``wL6e~4kt_qDa` z&>Zo5nTd7M5~~BNxYou(-`ke!M>OT@$e!~jG8^m2l+MAR@uxGb>a;!Kce54z5p4l~ zh?U*{tCnQAM0~+epd__0SlYpu#2Tb_!pNu%%bN}tnJ zl?u0sV9eB!Ng8043hT3?ebc2_Ter4IL_x54aiF9#kbwe!r)pHIVL=#&=ig^e9c!fc z1MIbmfeLrDtb*b8Z1$`(hip$;NT-$tihRY3!zJzSJB2AxEGN6M1wbLg3l~b|W{bU- zX0i9uOzRlxGuy@;3m)$lkbGJpo-tDAd?^fn9U99FO+^`tx zYE{739Tf1nX{gdonJsl!W=q{IW=q{ov!x!&Y^jIUY^jIMY^l4|TB*CmTB*CmTB*CE zwNiJRwNiJBRa#Hea;c}?a;dwrT zjX%*UtZV^%EtX5eG_O0&YHu)@_ACs2Kw4|Mg%-SZjR{Tpcx<}Jnr?i0r7fO8MMBDg z0tP7r>_VatQcD4TVU|%KTx>L5EH@|-rs80M@!MF+Zc!)x9D=(x0Lwx&44>!>ME)ep zqvCLhvD(aGAEJ!Z`q>OO$OI-3Fzj|<@TBz!AYN+yC=1y>0T2h!{3;0)7#~nKu50;; zh}+7Q1PaXtN()MY3j)?QY$O!wgj?@tRTWO+#ER| zAp7;H{ z!ykcr_OSN6_F8MNVPTnPGwhkh4B`SpTNG6+EHgGdoPEXgIrud=6q;39E!JNp3uk+n z$iFCHdN{juL8S#+UQ#h*+N{zdvt29NW%x_N$)Hv6^CY1AN==C1JGFg{B4!Xz9nlV4 zMd^Y?)=;QzazY*c?fo)$ZCc>CrTNJx1HDuv?qO?cG(;auGtF|K%x`OglhVcnCndoI zXK11c&d@d{I71I;f|Jyt3C_@tOmK!Kn&7mB>0xi*1ScuM1ZQXmCOAXeo8Sy>V}dg@ zXo52|(F7;On&71PmNzMFEpJjfvb;%YV|jz!Jx!AiFyxx+8BGmCcl1u=MY^K2a&bwU z;weE4h#TLd@$fxdC=P>fPT`LDbL>dx&1M*=F(*vm$}HZ2@lV$E4|>9;G@~Bp428;L zio#o)`$tHhC_X|JQIBP`uv86HI>vm4=w-UF(5OK0&C8Qi6;wm0XF8R`S1BExt_whO zF)Hpg2c4oM=D}Viu1sB8v_oDLoeg2cZlgKXYMH<|B9#^ij4puToJ@0CoJmIhcBAd^ znQfg7`&n-p%bl}xpoun1jZ+nP7jR=L#TjM*-DFC4rM1@Vra-M!+0OaJhiB~D_+GUlN9L-`C_8pl zv@HC#+qbPCn`F|U25_zw%`s^a2z-PFjh^T zaPngW_zp6d{0kzPNcgMuf29Y2GHL_63Q=g zpME}~NIrsnVqGTaS**#-QSKm=8I4))j=_&$n9IXs@bOJN3GP<)?38o0TD5{|-od-0 zbEZ}#E}-ga2{4!~;p}FfZJxEAOd28r@uzC7m)7K;+DiUMD19%Afgm~O=DCP+vn<`dJSP(m<|&cx z^lUs+PtH?%x}M?bs?{k^@^s0pQbDPe>fdFDzu8!1;Bn5$L71x|9t5x0ANXf<@&buF z?GFZ#GkG*x)t!&`*9ds5qAzP5*$Y)B^m+iG5A9$86{3zN)f&8N&h(b)>!&Mc93BpJ zWVIrR%;YTEXVyPog1YG8YeO-_tU{2IXbxR!qmb17+z#Vy$9Gv<0_}Dvw|y0Z=WCvW zo1Irh`(jTllgr-h4*h&)-%)E%s`l5lx=c%c@n@_8!P9>CGD2H78#Fg$l8I<14S&Ggsgac`nI#I1~ z{v4)BEdb|~JVKLK>qTD~#`7xPt!Pf6$y79@5Gwm+Du=O=M97UJjw_#XH=WNXbXJ|4 z!u#`dxoD=zy zphYd0sLP~c0bQ|I(Q(+)&bj-zVH&bs(d2DnJ(@4I5EZg%A3FKG zM>8yiF3NE_bqZW3(C4UB3*NZS=gpVMVz z#y9pZMT<8wruRb1Y_px;PJ-#z>Ud5$=h&b!ev!whZH$Ls*}TulyEb*$w270^^hnzq zU}*Ih?O-~?2L5`?)^9fT-SL7{L?Hyvohq)N8(-iI**{N>lBs-{r&5$2RPL=XG6DYP z7Aol2W-89JSB4ysN5lJQrj5P5nSp!gZ6pbsc(~<=oAS_97~~=I8^foGY3G*Uncm zhvR|bMPG<7^TuM0CDh7FLeD_OzO{Q zaB8NC{zB0)&|!kV?=rb@=okdNrrC%g^#&fxqxeldQwJ(-N{+wSWObI>iC&b8cYH|nSA~scn20&qKTxGDlqMAvHA|=!-*L!A`(X5n~7jluS%$fgye?QiuLy~TyevfD?d2R1lsBI6XjzO>K)eIO$C;&ZooLo9yH4)LFDk4l4| z_kqcKgAYs8^VFXFC!4>^k&VbThX4-<%|mXMom3um}@WhI@+yWXMGRir8FR zEi#k7#Q~u@-o$*Za-Ros+BJa8znNg?QeWs&d?s@lMWoPk+yH-!Q4=_OXZ$s_S}W_m zJ(kB;wd*YAPdHNzipWfedUXHJFfS1gk*n%?-WWZ2RcAFlTUN}#bo@VS8T&L z?*!lPEmxVpT%gd+dIgVgHoaSI)~jA69AR&{mIs$>S?7f1n(o8DDvY&S;jPmZfpwzl zZNhW8$Eo+nXClJlE}Ca`jvM#edH+4n`-U@BK|jT$!b5ydEQ1bFGJdB2A;>H+h`4ZN0@IdYOD&N!=bdXGv>ls&>mQ8P68xh_nha# zqSc($L2-jzU?2>+5L48nxw&T&o7-;2B7wFAo)Eaxn`F8f^6ZXBg}z82th|ky;2Voj z6YeO$cv?>ion5N4o(t7a)ctiDxVvsnJBV&?hQ~`&t!NkGQ}DiIIL{h5)ur@gEiBOy zUfX#r+(g}Sed;@fI+y!jy{S{VW^wQpr5*`+T@t=1_=OGe*5Xn|54}Ml(fyt489!TN z;f5YtyuG_0$3au3aH+%$1l54N>21wEj<#jL?yM!5qgBRO^(6o3Z-f9jV<7?VI>Ea&n7-P47tD6o2a+z^0#9ZIo5GrL$bguRyYL)ELE-kf757krFz`106mKbl9t$ zW^{lK&+yRU*+F!euW?iY4kThMI09Jk9J;Cs@sE1zW7^!=!-Vb+U=pMEOs1*y+E&OHZEfiB@sg&-rB+-%FNL-E^*1r9ROXd9;hj zwu=Ug(|7QYeKtf`ysT<_<-8q%EfZuBe5 z>lJ4lnTn5!Leo7u5-i>Xu|rTW#CA?=F%7S927Rq&s9V&}R-$km2Nr)bk0y zH3wTohWGTteT z{A{SFA2qJQPye0735{F=)2t|ecNxRKtMqR-*LTX7Zfm?A@(>tgN7)j&7B0!e=wSTfUcLrF|kt(S1%|Y3%Q@5p)F;2t9K36C%0b>n=P; zWTpeT_N*Zf58;beK2kufIlUnf1g9URqCBn|?F6 zpT)#=lq?q?#}O^~cR0y8jgOXtw0N6$H`SkE;l182j_H{;@9%-O_HbL3URxJIdY3Lz z9=%@%{+QSCOqH>nYL_d7Wpwx8mZ92y(hVFfp#x~qUW*^b*mgc@haWO+UW>sGaY5u$ zGA+uSL>YoI&&w2)IZ06lqp~te*+YWzq|~4e^KoYrb;I(XB1rq#}rc)_1!7*(09D_87BQWPUmDi0STetzF2I8 zpcLN$r5Im&dXDYVXSz!;#HILLdF0VznVIG-L(h&p`dmTXMO-^8FX18aTnp^qW_<1* z*e!b^Shq|;ji3T!8v8ZmZHlrpjp%{;U2fqFu}rJr?)H7Cb&V; zA_C>glVnwZFzBZ z#PdYWJKiITBabLGn}us2%2iPpY#Z#7&x1g=%0A)2!<+l5qM6LP9$N(#4OHJ^Ub2F8Ai~r~EhFAafx^V=}wLp;S`E8={bBakux_ z1b$0gY|iwylP;~T>E@;35=;ceU4ESAWa4?KK*{wGtWlPxpLyaYqXK86NIVuhlc=PH zPRMQ7n5Y1~DW$UYTiN+EwS@+tUhBa43mi$C!(~KUQbmny>x`Ua&2V>HHAC%a`gz#XQJV6{+nb}&ddyKn=-K4P+s8nj33@r zbQ#}hG?kkhkoZETXfm(N$tAi;sx2)+v-FgDyG^T#c2vW-S3I~>HhCoaU}y@6nQ#Wy z34(^wgJcIde zK<3yzwNHC{!@DaSju3NZQRNJ5GJ6!RhTICfS%Dvm7plbP>9aM0JVrz`<3XCPfEzv` z%qVxg_xjQ>&o;V6YdNe{y>kqbwkW!IzAbgXR>c6ao1n=Zym^9!IU_QTHpRrpA(wmI z;UnvtT`#ZzZt^^l?PdTF)yagWg0sEQ{0)>#bC8E;vf-r*DOw|@EQdLY%1UnS5!>2J z+}ga-;A}Qjm==p@fN=ua1NZ#kWr{A&Q}@f;%mi6$w|FJA8Tu#~yVKw?ihhzugLA2* zpQ7VmWW2?EJa^AID2lC+rB=QX*^5S;xDq4 zWZ_%QtUOd@Z%A~t>v7K%FltdRNbm<4!ScaU0^t1JgvhDf%#! zt_G`l7|N&PJc8>&#=*7E=km?fq@sCQI4e%pca_iZDL+fpNtRgEo8%hX9@DW_+Lq-f z|61((qw;j&&g}0AvFiO24IP&V#cYY49hWHfOF$X5U>Mk#oc zoNVXKPrezBLDhYeFS0CypLd7jhmNoJlkd?U7D;WQ>bZi>D6&lHNcYU%iG$&65nxjl z7lD^@-p&EC;Q2( zC~z+P+s`{pp=)fB zrvn2@_L7gJ6Fh!7is!m)_h@yx8UyhkNOd7^PZ2${WTsZ;0mCF&$;}E2B&{c~mEH1w z1_XAh*e;)+ae6{VgP(C`LPn#X@pK3|_5g)e+MM4d<|O+$e@M*9@^fAeCA3rQ=lof6 zR@%Y%Id6p$hFS0DyqB2M;OG1;F{jbb`6MwXbgj+#r{vsW$K&UGnOG;w&)J`tQ|#w_ zo0wDQ=PU~+j>pegnV8ey=iHE()9B~ioR|~3&gT3yF(=v2xic{*%g_0FVotG_GmZLq zFXSo886*_`SW$31fw93Y!sJ6#R;HZe_bK{8D$P%$BTJa1EKlQ77pH;my{r(YBxO99 z(a41~r&JXQroVf1F*ndv+kr5Ivzs_~b}3$}e=-`L^`|LZ_c8bO=M>yULrXgoh z@^(+bei}FR&=RX)zYvE<-e)H?F^+e0Y4Hxr{Z^>AgjR@(KE)j(lobulY|)V%%5?{e z-l&t;-e@W zJzmxiX`n_FcL=4SeRriOc=3UAy$qhNjGw4^oOl6znCE4=T| z)u_G-T6y$wd@gKz*2G1N>7U_L^QE<(_#02JTxo4QQ|QPH^%(>DGz`a8kE86mI9}MJ z%hj4=t?X;PZTej!HEpsI;>eF^Iy^aX)f2|>$L0O-vv;}(peAaLa7GSfB9R{<4ooIP zc{a3)OX4k`7mUB32~82(o;M({cd>&WG3?flumuJ-)3_uEgQ>(kPpit2U@y_qDJ6hA z2=pxdm>Dsbsy_k+5#>G(RSTJEd}*Y*mK$*;ZW462uTd+Od()bAyB%9&yXQ4O@3VGq zSv-Irn{f}pxG$1%r@~6ij{Ei;s8Dj|1GSSF$g81T{{2f)VZg9o(ZfdnyP|UtIr1ou zOI375l5!{Fiki%W7|mDI8R|6kSFYoXk=c=v-~ns7^^bOk?d<36B+!0dvl&RGHxOg^ zA%9yyf>ms@-4LcRo?yl~)g0S;+vNS8;I9w}QB>8hgB)Mc=GxT}3ckqxP&~~+4&gEl zn=W4ZoLRIs*0NG00SE@B|6DOW;Dhx;*!jH~f?*La&AM8%%%6m&@bcYO+fSVKrORp9 zs;E068qMlQC*>=~yhdDAghIcAT&Q;mN>@Yb)0f&l$c%`~= z8coZ*`fBwo)mZspXp`MJ?}x3SNu_v*BSg7EBl|9am7(3dS&Sf{^zm0ZP zAGgiD(N0fevUxJ~yNa8S;@g7n=%FVpguk?%!(u=0?*_Wt!+$o9s>_Vd+pu9jNf;E9 zLi6S->M;e ztHHw9DF=Pj0#S*>T0%x7{;*HLhNzqb-Kk9K2ExJZM-qJsMdauV*pD&`Oc{9sbyuSd zj1}=#kS!*kx&~yb*P(owDSxb2UThji@244gHtOE9wu2uXsDq~UDF)gg-9x;fIcfWJ z4@3e^k^Ddp++$E_LaDBFTDvY2c_W05{cIG@F)d`a?Qf~=Z}Lvl-|j}I$Gogr6`o?h zz>6VYT0%}0#3b2#Elp4pbF~50`xG|jt5u%$>I5;a5!2O${C6QQ=`7)dAbIY7fnC?< zZ7Xkwf{IIi`g^-^{?<~e!7uuexdSE&ZZ7w6b9YJ++&op|=I)A80@@tT z$=~22_bfu|U$6i_X-Dw>!RDFQ_JwMJL0?WE=$|tUPYcD0T~U`+m3SQSViWmwZ?LEc z9nA}N^o5Z06wh_0t1pCtnkOGy{ks<}xSQG@xkf*4T|!ekYJ+XPs@vM)xAkhrZPo9x z@P69v9(l>;-4_llVX~jT&GccW^r1eX4|{bVZu0xEH=z&zvi1T#yvN%1A?uGO?=nhf zl10Y|u7~EYa!&brysy~yp7RgK05yiW=)VaUy@8vgJNR_Kxa?M?!{k(|0mDQo<5nT3 z5aB6>K^HnFnH}<~0Xv;eu=+2Je&UI~3e9UKaWwV!^vB3eMG@ z*6(ThJvBq?z^xQx2p$o5y-}m=Q)_m$8ZX+B!|-;3`{Inq3`)mij~k1OR&*iEiAApl zBxsZ~hvy@G60@_;`{8{|m8Njw&}B%REJ^^u8@6aTAkk(0ya+?}uiJsV;%S`piImV+ zozodQ!?><$qY{_=krG8)J27X?sZL*daS1GlFR=>Ib#GWeZy7-MDwy@+Nh2i^p+%cH z%gxQng8gxPGhlZrxpbU*4_j>-y46GJV0G?i5I&s>I?BVAf3d*dZbuvXc^`(1Ua;Tl zOthLLjvMA@qRrkV;^rV1UholpU`e6g>QFsF_##a#yG<&3p>m^|mO3v-oG2{Cbb?`Y z4L{-Tlt*}%7Jno*FtpV6IO}cOtB>1BG`zg7^igNKr5gOykNwm}FSUd|bv*(vMSJ}a zEua%11iHk^AKv+1#gpH)#g}!_`xsH~m@jlrYnmpZ?YQzRk;Or=PP&@^mRKU} zz5f9q^^F$Dom~PtX$=QRZ}ieV$K8{}aksecw=ezg`(>c|>ttJ()>*rQS!KeEGeHa2 z-`;~@MghW9)a87S5h&jziH>g13)?s1lu5nazkyV4bSso zVy9ww-M1uzpUKr<3oQezh5c|3bxY?Psxpa_kAUS7W70@i(LJ?kDDo1lkxI>6(>+zA1Dj(;_ z$7ubLyIyUO%{+mj8|pmks)KXBCS7aj=?W&%X~I`21ja;Pd|_Jn+Rq@qnMJ)_7Iwzc|=Q*&E1Y`uF#t?RbTX zAkuZF(8~Av4qA%$wt?iWPs85Cd1F%heRz%&-v>N|I}ih80|WA|mVX7yuK{HTUJuks zld5tonL*A(KNP& zHCeQq3Li&leMpd(G>4H*ooNpJw}tf{{W+@+yDJW6Z-maMpO57N9X42gPoh^ z?{jXN4|HytzvsDWIjnONDAgO`W~9^v2IF=9n?n@H`X<=UrxEbBuQ}xyp9Jnz&goEP z_Ac{pgL6^BCAZp=7Fqgbn1KbnH{Eict@{^4pybaW zw}Y}qru3hQQyQWmlr=J?T*QNtMZumvt{JjEtxlCW&XHjD8VNoglZ_YLxAl>S4myj) zoenaK4GEcgQQz?v^=EAtwN3>}^MKy*7WHR=_{%C7AxT60hbs{2*2VoGH2Bobg+f61 zRe2tTCjAYItCe$6tN#d<>;|B4OaE}+J~RaJ2GUy<*ro0g1oCK@QnoXQOYm;|DC(q) zVaThxjN!yTEMmCySeIN?fbr~HG=e|3bxDm(rWK3f@ghulJ7fVS$n5$gdDq~Spp8uo zg1abil?JRBa(c&*wOPLp-4b*!#e71GZe6v8=TKzpl8b(IrZ{R^@2=(e5R z#itJy=#kh6HNlsvXB`vl?=ELmu#`{y9Mcxwyic1#`|b zTcKAQ)M)RB;^Pi>M>HIl*!3+Qr<2?}u{B@jn2^!2SSGno2W3ubwKAsLvJo}yfg`_v z)U^L7e9&P;FFI7ft^bigX@?a^>k!eY{%?)5b(oRf{=XBa?T~@^4jpdnd&Dm5AnMzH z5=QTEg9CbA@`qnOds^kex7nd1i2Xk!OxE`gBK9A}DqC1y#yhNZ_`=G|M;*=(4!Qm9 zj=gMJMd`@X4hLq%jA;ko+dj;)@@WeW9t7?GB{B0l3^sP)i9y_&|LdZz9XeE5LhLX< zP=;e8`206xllc+F{IFEPh+;O{j~gt}rA^=}^5Sh#hY_r(eFUqn2Z~_TwWA1D6byLQ z%@1RCgbicX-G(vi9tdOB-4A1Sqzz+sWH5}`kqKeUx(CCUbq|Cw>mCSW*1f|pX5ACQ zm~{_?F+0i+V|G+x7_;s+j9GU-j9CvqjM>p`qL&>Jj9zv`o9Jan_(6rjfiQN*1Y&gk zATdl+AU@PFe#EA5VgN9e5G+h31`F$%5GO4u7%NP*i51o}7@h9e4x-a_3r1P%7KpOe zEg?kTF@8*-UN(G`Y7=EjwTlOXcvfbjj`72d9ivlucniI0C@Gbz5nspgmS1@J<#VQ$ z7hP6XStN0E7PQF#&NoRmdf#yt%H`84yohHr=a$*EnN~5&{PZJ%^$x^`3L^}T7eXoF zLx)T%vN4rR0dL{E`O&1h`O&2MbP!Fdn~f%QeEVop-Gb4idIzFObvsZrscs!dlj`P2 zlRBYIG^rC07EP*K$I+xZNKUBZMIGW9sVZXpSQMO5Kdv14A-wu>dga_{=BEkO)h{6! zS+XD4j?l#A5>Bqak68vFpd_wnFEA3{!X_w@A1uy04hF6I)63xXWsHwO2p*<4cW0oA z;8yfQ>QVcUdV|}9)H|l5(0P;)I`5=5q4OvZIxjULbY5yObY5DU(0SA@bROBesjCg} z)h!ql>SUSU(rL2&hTyPxr)Y>qmF0SBhWJN)Xdo)sP(L}E7%0w!VCxl(8a0gP*KWFj z!I|%Z`<0pBXMd>~TL+ebM)@j3oMnmC$no&huF9!8Q^87nvRF82zvZ8b9+Y+oP;9;j z$^Y=R5T)w%N}M%hTSc$uY+JX9wF&JFO;L11?PkxFAElHlDuzeuKF||;BP@PUABe*t zr3o&h`-eVgvxtHm(Z8P{Dw{>h&FB6u%2U)6!5k=FxKd0QtV))O!9zy8xY#-ek)#ae z)<)8)KHOIoara)2mqyaL;c$sjx6;MMcphDGXGR=EczP!e7spSaI#n)*dhl1GLR7mA zzn_)gOXYV)AUy*{c73<2l{ax^c>0C9l5vA_xfmamG;T+$L6e*rgwS_jnpGujiMynL}7zM=_XH+Y92tfdx zbM&ti^=yQA&N7vF8pjkKPd^Kb)yx^%QE{bO;grxB&2$cyJcIh>Qt@UrNc#pkF;~&_ z&GNf|PRpks6=IcLDnr>jtY3+2brSESBh#VJ4vUyc)VrCwr;}R(7xS|UiPGuvLZuzW zPY?yCY|$%6HHWJ$oC_z6Y2`TH%F~gG`~=k8sW||N?lWFVWDUl%C^5i6*-yIsTmuZJHC#3 zY=yhx{J`{Hg$LV1uQFQd0ZZW|$-c}Qqsm*GQQ@o$17SaIeUMf7% z4)jjUQ;3OlOsf7@Dm(pg48G!X`yf=NRV%mt3d}s|B1Qm1dC=MkH>_*s;KwKxJr6E^ zBBv_4E?%lK(5t3!iT3p2UMVPVCU$-2Rf?)sBau|SqUu8LNJP5Qwiwh<%eb)@9C-e0 z<<9*KE)y3Q@|1N-6>K0b!-`}Vpo`t87`uKKS4z%R6ZpF*FH)fBXN{krIh8(;sdi`aKhF;21!eT? zWYDA*QGs{p*YP~71pA@AWu9|9yD>hoK=Om~tTR2o)OyD=OCIVDgB~u77N~YEC%vhn z7m24HIAi%OE|l0tQMvRC6+W_1ZZvJ};kJPI&vS+warMWx%yL_Xx5x~h#;Elg=@)7Z zAE;3AC$`YO0~TuZ3XP?sO_;td=Xs+}{)f#xRu3A^+X}=dQDinxeTXq%WGpY&N*@0N zIEwBAe@+D=ogXK8PCvRt>}lXq&BeV$OE+6x`A=;FgRQUS1?qmaVyfH2&B_r=xBH;o zJzfmI$BjkUm)#NAROIOG&rQ(nOJNl;M;T{!yNpMS5w zbL*&P$HQ5SV}XuGs(o_8ql?wdGgWr=d7H?|h25H$3Sb%7Cf$f!q@WUIU!HhfQIc9+eP?2y3zU@+-uv} z@9WX?oS$JVmG~-;Nz_6YH+Os^Uw8}Ey$IpOz2zaMSpD69SxDD}b&oZev(!}~v^!I}HDGh#lV=%qZPyf^or~+PhV2Peh$G#1B zVFjasuz!$>m`FvOeJ4JT?n~wR(>JC=O~)HaU6e~$`?C-%-=Q+CA*EGN?r0d zlGg=!3r)e!_*g6-Bl-H}kLu^g2|U8bQd2C9kC^`Wnt#@A9E2MCa@5ZlLk<;MHNzd2 z1sd$%IdJ<>VZ2PxbU&Ks*LJjziHXOVYMzR|b%T4xJnbj;GVJ2gpohuEW?N;wW2{U6 zqN3-DrQ9su>YBWbMCnGp77Mu87vZ-fym4+4?*&8X^YAjLwS_!rTAX=Nn|MPkMjquWV&mCkc0(b zpoY?3iJ6Jpa8*h>A!XC#u+bvNWRl!e$z`jpiboHPd^}4Vv*}_~{ z+!V2OzjFMrcuq=_ApbJ%sdECo6>HJ0-|uWi-`|W);tKaOnLL!aN8N55moT1|z(a_j%)HBd(m@?0w%#tluHGSL zHWE8i-8)X~eQQ_4r-F`;?3@hi6elyF?osdBaqV;3gr;cp^VXAb%!f0*{ zaT8~&j685u%qGCIbo5m9V;oizehZ9Eikc=YR*^H77PNqQIbkbJ-vR#-@Vy6;n7$0> zGJ`x!Jiui;QR>A!$Lt;A2*PE`Y_-y%LK)wD2!5j1Ga?&zRs!ZcK z0pfzmcD@`Uusx$shDrOhOOO#oAdT}PSB2>&@k&?+4CR!ADLHW;PydZf38qNe7g)q~ zdISDLHsI~?LVWyP+yZ0uZk5%$Ln?e6mK}S0d^O5^8ZP0*o9Zo|L}X#+i1x?&@t~bm zs{d34XW;iLM1U&79M-n*FDHeBzvu575Sq-(>;GoSf0r;uy$aePTVsVnhH_JljFBo_ znls6n;;E|GrE8!z%bMlq{n>aZ_=UJ~(4l^qDSuVb`>`~-7fy)ZiovLlZg)1(ClV%$ z);am=LRvftL;a>EO-6nb$y7Df$W*N%Ox2f|H@e<22BvztzTz3507eYQSRe4_7=mI) zQE`Qno0~OHoW))UwT@we~F#+G?Uf5owqwxh(Y}H zTwJdpW@+lc(Q@A4#h<#RpTX%z*UuaZ7xsJ&AugbJHqvhS`!LTrhgbHWJf;k8Zw=-1 zH!s%+J@41j7>KtfqVN_Y>vAWXN)0uyNu?dS(la&Ch8se!BZS(lv_YdxLpdO8di14n zX_K?W2W>VL-f zPg1wQaRHy1Cu{l4{5~Yn;O~V!_H-^+4DlbBWT*j&3zc0D*g(fMQ5IAhLkdeQ;>h zshkG`k(zDiA>&XCO^uVLvP6U?&CFF>sM^L8Yv^lR`E@7Db!9z)IIrZEV)8H5U3p$J7MfB;?^(uqbMBY~8M*mRAy=*l`TdJzrlf~mg zll(*!6F$F$z>)>nr1)=%4F=xW-va-_%mnCvcdRPW$W9>7h5&UyioZ0iDMvjh9t&40 z9X^F>^N8|uOsg&&Adja9#Y}i}CbQAyBg9>jcuZnezPv^58%i!W zl1mgiou+3}a{jsJU#gsBc<9EK%&^%PBl~!rJy5c%3uVtCUMDxvX$%+0qhs^w$b6b# z=u%lfI(7`r$fI8AR8~mG^1rJU9XDnoN;@b`N%_<*pDGI-?r5`G&3NuI#v+1Jfa4y4 zdvXYkodx@OBcsOPeEJFF-$5ms+TrOKVUnd)aW~0x+ASaZhay}|Bd^h8nBU;32MT>+ z3Gn;*8u#89Mu2mA6v8Mvis|5ah4k`LtiqPaGPqfz6Ur5(=88)c8TCd3X2X(=GCcz3 zBOd;rm%_a;Z4yw&F{mpF=`RB6J_fa;wp2h3=L43{JsO@qFfLw)MbPWgc}aA737xl^ zk?~UDetyHP{g-SOP#?c=`g*cOMwWkAoW%39%>^Q(KgT49M_*j3GWr_vjNAnhoR@Ow zza(Zay%||1O-cL_muM>;wGM+7p$Hw7uOP|HV62)!OEzPCZ&kme$M%q%O8WVdOzFux zowlOGJ9)jbr)!eb{hPR4k;q^Dx$N`YAhcP?36{Ng0pgxlOI%*Kn0 zGtG?iTHO@ib`}$lMG7-ES==ib@7#UB>835S%&)c8n@USFJ~Nod-n zPh<@2o>hrXKEqc2gKK4n>KTzQ8Ub#dU*k)~ju>-_Y(F75i<$@Y11VxO}zZMFYgI8%3)1+pd>pRe9e z-@w2NPSs`)1FUWTSet)umw-?+*-w9s5;j z^>NtmLZW-4by(n6f2xc3JTZZfy0Zz-5X14RYl8t(q!vsHBRKs8bmDe6oW-6MIw9zKLWQ#IL2m5{T) zE=eeL1``hdn#%M|wJmuPudVTjS9iAQ#4sAA1C#Dyx>}r(Fn@PcJvzax^Dq;%9Q@rt zdB^~B+u*=xeMyVgP;hGL&Fj$AMi9=Vh=64HdIk_eK>>y>NRq|$!QDdzm-+V-Cj z0XQP4f9;7$;Q|m6P%TtsQhlW`)cg4KfS8{=nUUJ!ZD0TvzsCQn^9KsL%Z{Aq^rzw$ zZqr3*75=88LT(~?9nWoq_t?}t^oY9mwV^D|vHkEINP#R_;SstGem(^FzF!Y7eFAm& z0$N7Zcg|=7_FS8Nw0QYKbc2VXf-z8IdA{T#6Zlf2m*OpcSd8;*trLta>>*(Ui{u9l zVESd+W~Enbn_^z<757cq_1*D`AQ4f!m%ui4 zL6Y3t6P(+_)Tf!T+X?|&Y1Y7%s`ts0XA^I|UkJiXr*{zq2`~I;WMfUKY?OS-jM74g z;wMm7k;E@5WJUP<`=f@6*hoLjqq0|1^l@EB{y#{1yPN%mjpPCA`ihdyN2| zljnS-eSu08VfgnV39WGlH(tUtH4_U`pB{z3Vn#wPRi!Z!f{d~=BKmy5wQAnER0N!N z@a?#?#r|d*tc6qhEmLdgk|gEyYYkkO`DR@%piZ*bkqc=@w`Trqs7#AosQ4pY?#2t~ z>B>yQX5kGRHf!T?bpS{7?q!|sOfvAMV)HP9Dvp#f?HcL}Y3g%Sku;6>{W$z_iAQQn z^-Ulyb9b3Y*~%@oer4xkL|J5GM)@~lu8!AZ7C9wCF9ph{2e%N^S)$U371(2xf_LmM`FxJO6YOM zAXDk-SZ1Zll_%$H_qZH#)=}+TP+1ZKi!bL|yjQsNgH-@Hf4xY?K#NTfuXu};*7pG0 zT@0)zPD1%F8F-I*j852)PKv~AqWJn+imfiBCDm$8Qlgig0z1$L^gt^wQzxtFTl2)% z;xob$m#Hk}!V#Ug_nkdz^e9Ni#;DWIfVafuvei>Wjb%X|bx%jYp+$L1)rw=S2dIl| zE6*9XmG`UYkA@E!uDvvY$a{&7gsklx23fI}xgUCf=?v!L$@x$?;EO@3JR5pdE-d;l z&MX%(`)eVb@F)3?ubWFGs5j0a=j#a0q(1b1E&fQ*3??d@{utV>sOuMJ@z4LN&7;oC zsH%{6`SZNrFhOuQ?nfQ^iS7Tp@ajrkCDu^yR@3)A)F0IK<=pq;ZFKxr(A9i9(bctS zYCDF|><{4|7y@0(O*$obE1|FBnRHEf9nD&;`G_nixnyC#{VAM_-PRCK+xj)awGv#-={7#FMxcsq9f8;Q88sFG<9_Z@u7qlRaS~-j77Y)6J z4U49J8Q&{xXNF77aYV+@23K)$i#gm zZ>f-*#YE5U&vB3IM98~MJjfKd=o=-o&kZ z$1vd7TIA|S(N*DAK)#0i4eh$$Na8XiBCSx>iKf}t3;}9P3-Ywa7pinG*Ag2jM`iHt zj8czOnp>#GF?3oqg1W47i>Hcs&AF&a6*;FjP30bE+*GWbd~w|E0WC!I2sAh_SB_f| zQ)_Yb15cTMhSzjlZEi6d-CVnxDF&XAXXNc~un3+~Xki*x-^mpFM9|1Z>Tgi|XF2bypovvpdF;yG`kZAd8f{YjwGHqR$=Dw9O(WA|I9IK^?0qfSicM9Y8p#?BkqEj zala(s2`@!WhQt1I`L8%~8GT%n$u;h#DsNmZHJO_7)Q5wl>G(Dw5xdd7^88}9*DuAuEev+7ocHm3+O>k=da2_^b)}C*gEQZBdTni<>GWsP>51MHeI`y4y>6_P zZajihTvM%!45EJ}6j`l%x_Fz;PNmj_>^hxYwapvn^|9bM|E;HZsa>L5V!_&03*j!pr$Q&CJNHiDGu8JOf$lZi>8#M?zCY!gq=l^oFJWfodNV7{z z(}0`!RR0Rk86r2rjh!Lv;XusRQ;eC#6Fe=QJC`ap-Y}0D(ixh-^%2!l%Xl2)KRG&! zaqBnwVbLt(p5Wpz%S(5pGJOT7H_W~}!}zjO1`K69WO)NKm)sKM`NW4z;GhiXl_xWeFLc5*A`jBjG= zys^%f5SlH~W1^oao)+E5t$-vUhxxBlTCG#PD}z}Q9|3*^Om6*^i51-q))m^a#2itz z9|Yy-0xO$KDDo+MB1nwWsOM57Yk9B$ybla8%`QJg&El&LP_yBxHZ{{)MRTOWI?cE` zSYV9^BDOeLWTfg!Uwd<}uNbS&diJ29evpq6bJGz*^ zQMRFzjMI6nX|P=tM&CsO@WTk4Gd%5lf9DLPl`~2glrDsqhN$-&{uxdkF)ZDh9hXj@ zmwx)lSqHa0{vY%Va0v7J!*m=_I(v56yvjou%pZ;m1>=jNL-XB*3l@1sdd3{ov6iY% zz*5!m?a9bms#4HWl@csf9nVHL5;R$L0w$|Yz+~0w&}7v~Fj;j1Caax%lhsa%CaaD$ zSw;D23#QHS%-b+e(-suL%B^Vn6?4s?@w4cPxnk;zq)>ZP;LZS4UN*gG`eoMMQ8twM z@~xg-RA)r7X_|K>+ya9AOklr3HVVlAu^H0;>eyz3kyngYa_>@kz(6=w9GdTf&a+!* zRpX2O?4NP=R}w^Wt+_ZwMHvA1L7&eH7X3?GvfuHTZ>2IbflzEq2z{I;PYXFSCA&?f-+wJTr0}y&Fs8&u>G0 z`S-F~L&T`}IqgoTuZ?&4kgfQbSMe>WxL+!+NT|5cuUPC=G#6XUyJ70vWVm3(KD9n< z9`d^OAm}>zNMO3foeme%weeMuwdj;#r=HH|S}aHZ+nzfP$HmNl+XYQq zhb4zIJm0y)-08Cp?%3iG$o3GfGY-Q~&*6C2`2Nl)4%Z{f|A5nq!?`2=7aUtyA1Kw8 zrPF3#(c%5$SuTeY4D}t~X9OksjG&;;2${uqJP)XVuL7lgKUAFV-2?dWjG^b68^AX`?rbf#y9CX^ou(Lk0jh%I*jqi*|hb}WB?eEE>4&*Z9sE%A_ zL;~jAJrc~hdj!q7k8Wem9cgFI9kC03l(n!HXBQ= zxM7Ry3}_KW4*e{Fz+tm+HDBkz>@{260~sdltGyUtXTv~p>;PQoC+ruA-GY9eN^#ab zwt*C*<2F-`bXO{8WD_`2cNqV3Gx^L}*1e`eS1}1QjH@+JtM{{y?b-ES@I(^K3r`g2 z%N0Vr`zFUl!Ks@+<_y*R9m5HA9;4qVsaia)>axltV#h(Q;8tgC4=K z#Sl)eQPKDiHQZ>DKpFf=Zg!0-S}ECh4{!$>_FCsg)h$}EAL+%zx{lyCzMIpRzN%@7 z^y2R-?#tIT>o4Vxl~lqXU)2=e${*KA&Q~>QQYsf+YpO{btTLPvTf8J{ttsT+b+(=w z%WbW*z0wZ~6IFD;L%+_MUO08FnBP7L^ZM1~UOeOP0)LF*r|6ZF@R%+N#JZ+b;u zqCZ6^wn#iu#4N#3c@^k{R7EAF46m>sr+=y=#1BqCU+ki?p^`JBP+q8u6qQvgI<_y( zD5YK{$~m8AwM34fZ=GCi$2yR%g6V~#ZWseC_zY5(OTqE_r%cN zHAW)U3;Oe~@{ewGcPx(!Haa^a-CX*0EGd`2o^mipPsLWNER`a%n>#tR!NId9cXvl@ zF7_Xk_$NTpaAlaTKx^+oaE$`b#P$wE+%s74JJ*D1TFW>^NAV`1i|yn!K5Qq?x1q~; z@J;0`XgU}ALG~Dg9UF1|h~cfh7yZ`B zH6!JZXB^opPvXrYoa!e$7E99uUkDh1foEdi&+@=yI6zm1o8;)kdRYbcZMG9P=}wFX zgeSyVY&ZI?O!gDH3(v-q#xWWi%zwHqd1(}11m^@mHvGzf>_P+dJng2}LsL{r7uASll~marA@WV75^xqU(}9(NbvPgKK+t^78x~29ketD zhDrHqKJ9D^x@H8Y8PEV*GnanPVBv}yKk#Du7$9@0d_}*hoy+4afy>t3Ip#UV{rNal z?1Sj9*%Ixpwi@~}*-C5?YS*7*wTgdj$NC3-qV!YGbCK@!q~ksHFsz0co_cn3^0PXb zYdjtsfv{jO13-}{xJc0@S1CHWmBgT9m^`)=sITO)1u>gkTJPrT(w{6I0WE}eZeMO7 zNl|lE=GjQNt~27Va)I583-Ns?7np$W4;FI)F1P}^J0jZV#ING3RrV>7B$t!>a+kh} z=b_B?V$9$^&MEuinUN&AP7*$q5_np2PHfid%7J&KW2wMelyfd!D`qw`jaF-=xg`-$bA^+I z;B!3oVrvw$D`P=eS#=y_BJQqbYX|>!VmO4^@h@>;Jf7Z z^UTHlVn+pwaTB&oR>LpbiKDtIxFLwDvPhWbWD3e*4%WOA8<|vNpx!Q?J}9}mMY?jY zT>XF^RTT{3icGPxcTQ^sh-d)KJd@ZoI_GA4W2_J4ZeSjh7kjz5LRcd&Z&CG<(yHu` znl;Dq2F~EUfT7cRf?K>R^55kazXv;YNS5$$_{u}Ejfddb4v#52q}Rm%j4Av7xwb=c zZ3#~QDt&ogkW+JloSM@Sr{)A0s6_rRfrrzKRi^-x=5tTVcaPP%4U6S@(CU2nER`Ez z^}4iSue$i`RTrPV>UwDQs@wk*dv(Nt*sCKB#a?w!V6VCd*{dVJ2YYoy$4u2xnyG5M z*z!C_X&r$rVwedwA_^sVzTW@D^t8j&Z4I2_K&@?6_*LIr^=)geiXVmiBcCY>F8_MX zBrX9(3z+XZiy%=0;p;Y8T|8|vRSdh-b3A7`%)PA%lWNwUSc*V8Jx2B1znwKkyipE(9%eDDYxZQ%Lg*i>Jn!X@NHlN1`T{i7y~`n-qM)7MxW`^EQh|7R1C@Q_AJU zy*s6BM@L6Md!Q?S-sa@X`lduaXS@ofAJRoJ<4mmpjewbg`sG34*$WFvkXxZzEcwsbh9>7 zoccS6#g0C3XP&6_^jOfF7ecM*P81qLc&zUVPYC9*-hn@a5ke0ZQRgX&s+N!C!rBj* zJnqME$)`ZilBe=~re6A+SNtNO9~jz80?myA*uy*s7Y1@=%!s-_X@MgwCu5%|=7?Aw zTrFHDY%|mQNUfRQ(=fkyYIT2QvMxvpOzB7-15Z7V;?dd`9_;g>Dl^zg{>(ck(lD9& zs5kX4rEb3zu@)CFrM&uv8|G2@T(yV$l+tt)wuF=M?QrV4j25==M&1`%#=PGc*bLL3 z;_GL^>TOfFocQHb1Br(}vVz?(5xWgDOG_qQ- zzb-fX>v(Su@zGlr-cFTiNWG>O9)-R&LtOor^tL&K3kn~qDIT1r=+aD&=qjFPagl@zjj4T1k?vCi5Xk*9ZW2@Y#(06p zlx!B3*o6k0dp*^Z+VJ%AEtKPpFCTCwQ0Npj@O`4ZpJJa_7TDs)_LPTOH^Vv3fb#Qh zwNbz!yoge#e0Y}0g{7oMl%h5@Q^@=y=+0V?mdB>pEdhN#5awqG|JufXzp}B^D@+@m zMTRt5jt=HjqRcwWI33<2Ttr@vu5?VP8k^Rdna`xynd_0%=KawwHc{5he-r4J$-!Bgh|P&i*3Gb&fE!L?wC#_0p8 zo)z1A`Z5lC3BF+KnN<{D1lNV@d7i)J51{hSWFEeR5uKnnnQ~qaqx<5!@WfVZ#=1)t zTs9P`EgJ4;8tz(#`?-dDlfd1V2zQI3)dntZMCVNl7aPUN#TU)ptG7Jhw#GLjsgB`Z zSu1eA3jyx6wQc*`f*C|?y5})LT=lOZiTC{;nxObzwbqBayjFVqO{g9;!PT|mE1+2b zuNJ^%0l;vrHNk9U=UwUWzbvb|%q}^iJMU5jbaDw56e_1b4QW=|#ikJu2r=>#S@Ha8 zIyJc7SB7^MPDeOizJ0Y890`L#aoU_AM$$|ay>(SUqil2Ab-*h@`m8%dDW~%iD9X)wQKQW*!WbUo?8Pdu_+11 z?uw1nC%6cAhj-GV&HtuwI@C!iDLD0hp7!HdZY-JHS}4DGXUt6dQ+hbh@NjnM;WWr_ ze&235PX(v_ul^Z>)PCHhau>jM!#!GM)BJaWJ9wvV<1udI1>MFrY2(#)Z9EcgzkNY| zWF+YFHr!|@Z*SNOrClb`RI;ht6spXlZt2h^i}LEh-g_f;%Z2|fNOt;YGJdbd&}+q< zw6_*Tf5x~L$C1y&&2fmA-96@dg-$euSBdYUT=g+1N8WI**7SVMilf%re%&TcgP^Pp z1B?t2JcB;EE8fqv$Bpj}?}X9+YDM%RPpgpg&tXc>g;$)xO;h1u;ieqroW37@cv4J; zTpF4V6v>VJDANcrUl!N^$JhaOXj)X5DqLs-e3NQnl{xgH_F{KS$;4Afaq9o7v$rv8a1o&1smYJLQ2qgY0JSB20 zJs+Qhk6(v#&t1s8X>mj;XA*rOHW4l!k@pCV(4>mE@E=2CQ23|eF_Zc0!*~)m_mCJA zyd=UjzLjA}6FopfaQeh8jqzKWNdML?O%`)m>Fnp>F_g6K;2m9{tDi$nwxh^g>5TE} zDR`ph8gz{#o!!ZuHPve)@E+Wc^Hw@r0p?8pWH3zm6q&1@;12H4-7up#mzq(3pRUeu zmpM}c{dhw9QP-{?3%MWPNP(eVc;?(Q)k2f)PLm%|rT%3`8MzvQ5xjmB{{c}O5R*-Iw++NeTQLW%|H)VN3| z?o(f-pP0FW_sM+1iGGv${|&s|cgcqvJS@sYuJMA@*r03tDsE`x2$tPpu1;k3zmL5m z5|wDgWvIf16BGq@@|YShiShNu$PlJlt4)dofbV8HKD+e=&bl{u=)M!P{uQw9rQDJ;Ap8Ojx^XfMb+5hNJ#y{Bx$~ zH(<0)I^2J#e1!b>gE6@BGN`o0bE8n#&olk{UQ#MbA2=-+1@5%lNFMt2k{F;Rf7=IB6}`nbH6Y z`#Q(FAXCIR9q`UmQH?~-Fj9t@=9WCw?6wqJ{Z^?yny-RvSi`G5Mzaj~iejs+MAENu zcgHn=sXvP6>HT(lc#3S6LhBJ=psoLy6L41o2O!$A-D~(sG`w_2P#l^y$X0&aSj{d{ z*?cpTN{w_D*t)nH@d`d}DNiCviS9oFzExBrT-nD;DtBU!Pm@ovC6X;=ZAnok$H3knnnL`s%E8;yD0)w5qBr?(BC5RK zZlK-iE*aSQ^~7aR2{S9bg$xwcA`j)Xz6Nj^pLf7p8yxGbyear}Ls`+9vdOG_}f0L2AM z)IbFd60o4uCY{6@DFFo)7cjsDg%{FFD=oFMMJu$l(x$AjX`N!yDcfvM+p&GK(WcbI zR_7(@xdXC zY!;g#U+cjAXdn}O(a+5t`WnPd?g6NnmbA94Q9HGg4e|n(y)a@V@of=W_q13) zpEs(XQ^acBh}jsOK|T)uy1HmQtPJ24`B?y{>vapNv7DJ#$D-Di`4`8)%28L=_96PTzyS>nNO;>O+f;*oXAO6$71U8FZomhUB;k{Z)Z~uGMh@ z*m2rnYPq-LYzB;Wwjt>PE<}HCj~VN(J=w$^mL3p&KzEFGViCEt{3K&%Al^O-CKC%H z6{6IbnFv8tbn{dTnv((82Z6)2p^dQa9-zL+uDVqtI6wciyG^wV7wG1YDPr@)sW3B% zr$PHqV)jP9ZhDa?n<6$z z&!Ovn51Hj4Q)rpPS!T+gy)w7@JVLM0I)L+zpyTSNE0?;IHDlPEj&={}35ihaNeq^F zQ=>BNROj@1$`vP9d6PTVo1_{~QgDZtuW#(pQd5qaT6NUanxm%rE;(X`Q;wWeWsnxihB}6(7s<_84Bk z=&G7qP?%rbZ+bz=G4AsJ9=C9t>veqW=eoH9v}K?DT^*kf%VLf$TwmOP@$hZo_3&+B zd-%3!%EPw>U&xd8lcy~)Cop{-dQkNN2mOv-Q@7d@Qu<;?=s~Y%IWg!7c6k;I(EI#( zfVUHaKF`MhQ>&D2)NUIRTXgR0crPA8oG+Ahi`y0 zvcoqV(6VwsM^C{84HwN!W%qjDmoA23OzyFGIYs#%g$BX*VDW(u1DlI6$@qRz+1qH= zj0Ms@w4HIp<&mJPbz2fl8-yS6@Nq`EC{LET@Oc@mU}Ci=v!9W_(;fKqia42GMxBY} z+#%Xflwyo(B~Glyr!RrDO$45>3nvZ;rxodN{0UH~fE))znE?lW0@r~c^=y$ zhZrd)hokW+79UvYBL~ZYa)=xtKSaMiacQ#bkH;j~0!#eq_=+7=VKE52mh!qDs|_Q` zDTKLLhyMwYB?QzVP<67(+yH`Aem+zA$XwG>ja#~rDyUTqen5?gDr($oK^G_?>us#; zl>F|A*oxr79=SMV0&O8EXA#R41A1_R8EfFl1LF(&wTWiv11Z(A1K-)I57}F3$mDsE*aGD!Li=z zguWROaE3xNX2^A*lCp**yl41MlnRUU>j^l;O+Voe34!welE5d;ILgI0!~fSRp_ko{ zDy2Ao()9d^$GF4dPPVxd3XY11kI~};-2FJq-<%pd=Gb5-gDLrQ|Cfjr1x5WPH8U8+ z%%Wr5A8O7WqlVhaaa3jT^qEKEU~6isCh5`|DQi=5u!HUPf|%0#r>j`UVosCHfAJJ6-6zKqf}gNrX2=UkfTMDmCxYw=wZB+FD9u zTe~ezAwL*ZeW&8(s>x7;vx@VrU`rfrs$G-enA&+FE46FnYeHEG<6lA3xZzMyDogF5 zeF~SV5KHBJE*I1saoXBE1d zv|>C7XHIivtE17hJ9{mxcN=_!i8n zF%438&ER_ujK2KY`XjHP*sg2%)W7tlvQD}^IO~v9oS&OFskmr{5qug(Ny#m>Ini`V zmDNR!64kz^118KH`sdstl%6{s`eJ^bNuHLkf8#d9_bA7mdV%!AA@qdq&cH}<1ztyw zRsKhFWu|ELEUL~4a*Rw}Opi{VEAfG6JSMo6kL&)%?9Nd37Uzt8pq_SL0;>Hq?aTBR zdY%yDLk(9Zg&-<_b6ft-${);5MbPO=j;W&jFZ#|Oqk;WDM=3pq`u4}@2-JZ`obQ6X<@OORa$V2sE@Y3*_0Xuet=8rEztq3hmi6re&j7qODo!mQ(xl{9H9Y0{&lwQ!ZRmbQ}C!cx*&SV~%pCY7`n z9wn`XrKAOok{0wTX)RbuYhkNbCulvz)p1xMYNZphp?&hEYr!7J-xHN1v4-nOSbvq| z;|EZKf>x66axX2KSunAL2`1~>YE7ZeCTlGYG>4hFB_%omJ$p-wwHVa@<|-HA*68VL ziJ!pt)3IxnG|FtycK5}5;|0)ZwQ@MQICth0rBb%>1T<@FF5;iUB0xK&(Wu4o?{-9* zpF2bAd3pKn5+9}-rBKyF82Kpkz|#sKjxMbM>fxa^1+5vP7MMF>x)KGsoSt7=s)+Rs z_NdLga{okEV^&FLk^g{PKxLt#slYf8h;sxq~bIcdbwd_(!Y%UI!>BD$Sjq zpEo(bxZf0YDc{;k!T)08`p3oh9~?LMthl&={RhVmN|+QsV8W#QyaE05`W58CkS!=J zJ1#K=s(Um;&L3Qg{Jgk<1J4@VEE7nxQI9LnFjfmd;hYDc*>Nee<0$LJ6Z-<|zDFwo zO*1g79&1`Z=3znel%i%^Bbr#ro34u)#j&Nuur{HtG%yiYEGT<(8U%_BTfXC}?CH(v z9REj~5$TRmp}$v*ncrV&|NZLWcT%*Pb9&aSox=aP2WX@`9-;nnp=8tZXXF<4D=LPS zDL-#U?o565c)St13tYXdz%0d%zW6gSds=>(R=wEX;;Le5n$v5n(Mmvfv8EcWUD=Qc zMMX`5p$d)wE@=Wz`j;|+G)TcnG=rLk$Hz4dKN6qBCcv%mIaCG}Z-Wb? zQ3qN7Il-ftwc-wyU04K)u~rgYonB4iT1QnAwALA?7ile%W;(447SCauSsTkf*v4!Q z+M1uISlfqF4ER(!b}lJ(RY8P9ZNQXNS^(1kd|CQ?J0%}yCe-OP$k>D$YLDjQWY6h# zxZ$I8!FIe^Y0sOL_SR;lJ?~J0_6{ZJ*`c&|cPOXXJCyd;4yC=dLuudS4yC!}iln&kR@vpp4p01vvEy%5mJ-Ufik-03r?dQLPnBD*G?Bfj{=#ui5sE zX~q4pKVs&Or7|_guF`DP?pUi{(`JsQ7Abel@ar+0TgZ1~xtp7_8o!P}Hc8Jne(Hhx z*AXlWmhGVg7Cx7berFd=%I0;*?@n{(W0u)e(?|BCg8b?3vO3Gklnx~qP=U_Op^cd~ zB~PaWG>N-?uexh-SD?I+@UYj}I|P$~L#is|_#@vC-)sz7&6AB}14>s74HR5AQx zDcUZ;0Xb|BK?5Qi zV+k#Sl&;}h{o&qXr! zYWV>LBTK-02PM7f6+OrnNP+f~F1Mn10G}jEmcqZg9rZ-HB=Xzv5}UI)Tws*NbZOs2ZzseosX{ zROKnq4===P+!#jf7J+dyzK6WyQ+E_`^+PA!qPdl6{_-((B9~?t(A+{V!HQwY?B?^F z9$qc+IcoAeel$&HzbP++V${=ht}_CsLZiHmp7D zMesXC)mGqCXEer21MHPR?4-d5h^>Ipnl8#W21SeX8!6aFi$V-+Jq!hu=gZ_cnJ_@& zQ`Nz?bPq4V8S~pCLnqSPsli+ScF*Ox!!Q;{IluAf+p2SaBIkY+{PU=a^&N~8m64)# zoS3^&R3>A~4kf3s*IOrH8vxPw#qrQUD^EhVrV$vA<=f)qH0a=>EGzjT(IyU^$-g?psuysV|u z)tv7soK7qT_n|tP5>L55S#+S>r$~IvFm~klobmWRWZ^>S=qF33r#Ka_m4A;lGa2KP zby!K%lW#SBP1o?rc)xTU*JGi#9y{sI*035e7+NshzVuh~n*E4PwtB4VOe>O1=~;eQ zYrhHqpY${QiTc^>0V%Twuwr&r|NiiI)_?&6Vh0XNOi1iMcw*k5#N6Z3{Ep86c`Qw+ z`36cyeuD9kZiR+vXba1Cso@d9 ziMCa|wS6kk8cmRexo8&8Ez6!+Tr|5N&p6$HcGd()pM%&(ODEY!OD8pTw1iI9Gm9op z@${JD8E()%%!CUxXDTOKXDTNfTd4PVg$<|PqZV_fa^f-0R8F)jq=o00l zw;dmow6l&$+L;rmFg`H}vrkOIJSQgY?1Pea)sZ+ zI&;yl*M^nmdQj8@C)uS%)AHRs=^1Mh%!ql#Zuw^wQu*A+VZ0EKT~wSqIUnXUsFA`Z z5WGv9ol-DkMuYj^PMusd8x~FWI`qoKBjbss#nYQe#EHx5EOru%(t={US7Dznu;)_) z$Sy7_;v*ilC&3O|Gzmc+7^Ly zE|@1Yh85?}$t}+FHt>Ypl7fj|P+tD@{K~0`ZFclZhnlVAodL3*mp$aGHZ%L^i7T_#KUlNWpYHLv_bHF~uaK2j~a*JGZcG(yYRX z8sxgF_Jp6LyyHhNYlL`C)nn`r;qh+mO=A)k2>U^%Gwi$eXTqvy?j4=X7xLSGIi&tR)C#zw@@gd^k@bY89JbCyeoTR0=+BJ_M6j(GI&UA-)k(R|nWtV=B`a{(QH zNT)Bp1UrI*{AFhy8)rLv=ANzNMP8&s_;klZ)7}R}c?SMC<2N_bW6JBA9}X<@i+k`y32pEng(C6$UjHZ=EnfrF z4?^Mmi2NJOpc^p2u&jsOv}%*qlhR^kkQ04xa^e|b`1G)hbwe{nnWVn%TfvzUg?|En z=erSnstsCVm=)F3fX~*{c%`52&Oe-{O0*c`$H-+F;|^k{Ux&NoxJDCx<`UjTgkQOYx7&nK7U4Qg_=!unmIyy{3GcKCQ!K& z;d&zc#3fu~6XsZif7OKVxr7^t@B^1{olRKf5{8SgW6u-5_ZYj2HBUqtaAd=IVlB-R z;S%3cQS*kHC&I;tW}c`v45Ay(6SXF-mkM986>^xagT>(sY0i0v+;>oGcQA7Qqf8Dt zI~i?=RgNkHPBxRn&t`IfVqC|Q!#+JZgu{fvlY{SlX7Nv-J39`?8(JBTxn-3OvRWNZqJ<_0@5;6V-h!1dGzI!N)e z>H|x3ALxKnhTG0HhQW}AeZcn-r=4@mKH&S9kze#3r4v*cyf;17Vc_rhOgH%0bOR{K z8tw+4>Tb|M+-{dBQ3MUCeA}uOXID`#H1P>T5ViqQ2n7ZEiSp8YKx7?sa~K@TUuBgN(vK0Dl?i-_&9h zJ}mgK(k27f`-9?{%7wsTi*GJ`!N=Q>xgdN-$e#2pb+Ef8$C%NnqB7$gSs`X~?7-?T zITN3G+Qz`Yv7&LJj#P=yB<^>#U@Mf`igmc%Y$m|aStjGn5+lYxknpR9Ys4m zsLr(p6+k_Ms^)9X+-@x3*>p8NMT&>j^YL$Bv@G~YmN46Z+BF{CQ7Do(=m0Q_RdXe?VTHF?X^E});wCfZ?}e@E=~$#->!X1 zUH`?m4I8iy%1V*E0;gk`&A0KHvLOBQEx?z#9n1G4vkJErHv{hAK86;1i(Cura26UU z?uS_@7FmA))03K-uJeN?dXOskbn%Xvo2viKyrLTEa3-xg&rC2joVhgVps&|ns5!_* z49+@}vruG*!VKyf?#!}>dGxa<76XnmU8CM~4d7HCa=XTr{s^7(-$G_y*~=^jxm_dk zc)JFOYo)u!oTGJ((?x;q8gs0!0Z{LT?kCRL5LG(t0zrI~GSz9V8}UDkQ{xK*O@CN2 z@TYB93}y#r)j*~c=f|V^kDD}>_AG#s`PhvzCaixnOg=PDLUn_!V+SZpH}PrEEu zdRU|=7R#FeXF!<0U{PgQyhWZf{!-{x=ph?TAz=GW1$8L(dZ~lS51J~S6pRvy z>y;as_ZMcfRjVBTf_Yz@ya#&eNVRmy;57Jw&bKfcyUD=_xe$$2gZC3WHAs%)t>Wml z*i`A9A#&>Q&Bl%_Wj{;72sP+r>YTn0t!JfPHCm@L*_ECjHcPi$4ZjEC{L_KAy9SrTNXN><A9MQc(_gVoeC?Mb zf}$)Q??ljh>OJv2byCCWJ!%x@WrpZ>aHIieY49-7{UDAzdLOl~m|y3u*mYeE_Ff@ifF1(W|3R`{N)l z7fP`;v=<+whp{id_Z5;^{!v*6&@H~Wz$o|~NjZn9CEa57gv;zj zmsx`NhM3*zVKz!UMa*6xW>2}yUZhu!M`~t|xy)WR%)TUMceu<_k=X^X7$LKlkeP&! zNazK`?`6%8qURFNM_rz;8J?dJ&pR9N+)O-Qr3`L%Gq_z%TZi!x;k0^4c?4#y3&rb% z^@xl028dmRTw=sSm38VM0O4=Zv+@Z#E3f!Q0qJHGOW!a0F&j^WyxI6GW#erU@K;yB zJ5=dgRaU4%bHxTie2)+}xQIIt5z|v)fr6Z1EMiJ{pR$Nzw^BBq=4@2K?zsR*0u7~H zfCBmq*!LBy7Da>?6vR(;e$&Ej<~p%l)xR=!pqy?1WD&it5S?lklmPa5qwP zcbl}DcM!3rq_YS6Nfr28oK{K;iyibb^k zzI-FJOShPjs`O{US_xwC*48G9h@DEmx6?5e(VY@QF~P-UP>bCNkOTm%j54g4_BeH; zasiM@8EJZLg(4to`wjdyLs#7=M!`-btQ9_YfUEjztYmlN^cuhWupDTo&+}QNLD;6c zVsMfSK7g9=Vb^M170o!WDjZORD?kwzVgvQq!`N%hBZ9Tv8UIZ`=sLV>=)v%J{b7O8 z;=@op{Jz&8$JsR)@8ffkPEe~G2L7?%vh3#=_%0h>W#C`h@M;79)`r&@_-;GLwFbV| z#`pDP_%Aj*%D@lk+7zSnp`!Y2@YJZU7vmk`8odx}G``6i&52?BE1j@bumia?mmcxS z#gWh%{Q=J3C$7U&HJld3fBflk2)=}pCKe%()&j8)plH{~#$66xCH#6Z=>|$Qs*rtg zYXh2PAV$pZjabpR1DaDNMKDfg4+LQe@_Gumo=VS{4zX5Y>0Bayt*8@=oH+PzB<{4X zbL{m6SC^jwVF@7otPqwudaf6HEA;9I+j;^51*G(=7rQG)i<^LCw<5X4oBAE3u5|ES zc1pd?O$GfVv0i*#kt}Y9)UQ?QDsSo+kh&UDzfh@nI-@+rxeQ-B5_dasu(T2e;Hr8*@jG?aI^c8Lf9c5t4MY`*6SA0S@mKQ5WN9{HYq`Gs?>GjuZChr;}Ucf z_XFKdpu1nuz3&w2`dnuSKj2Ef*8o3sv>GVxF~E-)bFCQyA2V=Gg{y6Ww#d+Gt13Qa z=-n3da|NAJFIFii)yfwNIs^U)OXWaa+{hOV%nyBWINg8sNQsODgKzEc^mxRciku zp$wQyx8u9q^!?Y$z3}~(FHb9qsO4V=<9{Et^mVGG4=9ek>custq`$K8t4&D{GVm&^ zq;(8kXyx;;?`M*yH){VxihdEgq!u-DC=Ky)^Db)fA7iq-tszeqlkn5 zQr4G?aa#6nlgkyHp&tzJ78bLd#Qex&mXesCEHM{|??B8-5c8c9a~pH~$|~aR4E?g) zG{qeZ{lbE-V(8}<^e)cSV#?Hh&eT5^XnOowwGxr8C+yo5YPz)dC zhI!TG<1yyAmpI?C^#QZI*HqAl+(Yj%z>gSnt!dm( zS@w%0`w5o4g=9bDkzEb4Ye9CklKmNXz|}^~=PYKG0e-E3Z~Dcpra``O8)>D1?e;X% zla!|yI8TpJo?iAe(hA7akC3MoDo=Y@{0&wk{VZ%d6k4IK1G0TUcAX;IFKnv^+B_Bk z!mog^NFme-uZEF{PqB%s%9F(*K)OmH)eGCeaUbP=C+Gei%Kb;4+*g5=sz4n4ml!Mv zxVb+x-{gKFL+j?7ZgUkw4_eS`0u4)gV1Aug3?dH9ClS{N+!kL&`TK(NcPr)Z8&8Y> z48%)-_-94DG~l-Q-uc|P%b4Rz;`l9dTtOUnd#0R!1IOjS@!yK$%>ld0RuF^T%-{xM zu-8*%-vfhNfWh~Q!L2O)Mk3y0Mo+~?i3Y+&WE>oYy0cxhZ-CEjz~>vq=MFB~7p7>d zxQ;(Jz|{d)J^ai7?_|tf^LcdL#lTvtIqzoZr&hz=qoAAp;=}no9M*B+uB5^p=ED6} zfi<(hQ=$)`MC+kMAE*-Dr%IG6b{K{ml$03QfS9~L>}iAj<+KtBUWrK35=&A_y?A4O zzSsn!-cX_*<9zNV>KmAPH&L(fQolSuS^OQSUslvl1@OJK;A-x)W5iY{$}@nmRbkZN zbJutZXE2@xjOPL4S%vWeSLzd1Rlms4$E~VWGtTCt-vsjBC~tI_69BBXN5Cdmu?ZrQoshX5jIOO#MJE)~BDp$kg}JhDsWT_W=tr=OqP| zqVjF`SJ~TczG|-2`5G-+snhmH;qNAKryq|5#pj`~#ajC5M2SyApeU=40b(b7)X+yz z)P$acvC|7ZNb1F}E%RV`n;TA!Fv7o0mIOvik&s82n?m{Y-yQzVa*;D!tPRykapJS$ zea-2<&`aVoC8D3W3q<@|CoB(@iGBKa3-zBLD)!<;@Q`1$IVhvW%w*U!|AvNZjQlp4 zgN-fX0@?AGMhIA41!v9C_(TW|3kN_xQtFWnux+Eh(rh@;0eJr zDc3R0<2uiakuHt?iDLJ`>r93pfea^hXDhH_(8o4sU(ewFmaRI~WQ-NJ+%LsR^?`sWO9qtU@Zs!ayo3o~BnMTQ zi9=v{Fdcim_;F4a3|e$`Lm!n9nDk;R7#ZJHgd_abISbKouP+Q!d|MqRfg%~4n%FlH zNKZ=|?zVZCV=z<1m56a(K&Ugr7%?;HdF#fDcI_^&p++Q1L_Z2wpI$F$Uqj8sKOHYId) z)JdOso-A&wd=7m%u%CYCdkg7BC>&egt?p{W0k2f4$aks1f5=HPRs@#d|Ic11S`|uh z#X>q%N}x!CPvL<9{C6k5+DffV@dwqZUI_o8!@Q>eywgrv%;}~4tHEcf!rw37V?y;` zQM4C+ZGm4?;4j)OLG4Xkf_wZ{MGcphb79KOjC7waChnpz+@mw+5d1sI8xHUmjs9ot zLxii-QvU|{@nwN-S*kI z=hI_n9RWFk^vq5N@ZUme)<+{_}aD~!|_=v!t#~{+_Vs;(R^{Y5%@A}*h zmmr-p_fe-UfQdgFwT5RZvvl6J_|lQSlKjgf0|y6ihN_wr#WebVrDWN_e37YuXGI4mjN zsuZ&p;^;6JZ|-5qFZmj~>|OLRaIJvE{^)gPx$ND`WCwNQJPfT3Q_3BEDcq*o@L;=$ zTPu^PSuPgekYmytSeh;ZbSit8rmSO*SNZLQ(!dw{?VC6Tevh67vZ=>r-XVpv8S0GO z1)QN+fzF>W{HH*B>BpfucG-h=`o_0S76gSqNiG-Vd}XBeK4$)iU$sXzS#(BVaL^L* zEo43w$yfSmA|At&#{*3Gn4f1Gfs@U}(0eKx%r&(J{TYA50dx^&e9%7a6!HO5eu%2% zUud9|W8Z#<`}Rg=^oGu`bNW8*Q1Yz22dW*m>BC6dDqrI|i2DA@R3B-ooHQ*N$5#sM zdxwiao?HV37kD-i%C{?TqaXcS@4|d`N5_B!oLxGD`mCm+i^c1z&sE+Ed0lHSRW%Q> zyOWTx$pou{)qzrZKt^l4}dn6cKtcBX**-#^nc*2Usp z|2Q>i&EZL_W)q99a@0CYmlM+H?n`R$&vL~1xJh!en)3+bU+bu@ey+?6o;FQ7!}eir z=Fz|N_v5lwv61i1{Ef+Oa#Yh!AhPb#i8u^4Kuo4Rq>o~;&6<2lc;?LyR$cL0XBX)_0DwaqGJN~2HzxwBSBVT^}g@_l{B7t=o9PQ=oc-}!Rbjo2WFECDf%Wjk2shR zM6W1lQe4V{Vo_)z_K2C`YHnWYB#~2WDq4v!GO@y15Zb7)AR{-!)*^w%B4{~kb^o>k zlqT$FZIS?CffIq{o&2lBiz6E43lGX7g|f_#i)&EK!dY;+q!8?U2j-t#^cw|F7mq?m zR`bPn7+{_Wqs9>2EbOod27a5coa%kgGkmoTk23IT8=hj|_XuqI5^|Fdj`U9HKbE^w z`f`C&`u*;d&O3rFrVC-ghRB3T=RyNfcyi&70eq~J%F(puXSmBswIO>-7&mn7@QprE zH&kT64`{@nojpkCUT)pWgj)n%v`m;h4CTS9cP5!V67`>$U&KD|hUiVelp1= z{M;j9v68UDF9LYyO5~Ke6G!#ST%lJ7xH~^n;dbY(PJ`~8^9mDO7qAz11HU0)bxuQl-718#RtXw;n#%y+x2#|B6y{(@qa4*3>TLnq#lw1j zc|EEMN%bAv04p`yHP$8OmSuxG98s?`O0=5UaVdpaNkG$ABrlVAqjNier;S49^D(s| zO_XJLbhYX?n9EtN8*6M@pU?29P576H%H&N$hslfS<^ruV(pl}tRkGw<+KcS}lbDm? zRYTumj{j6@Xj)1s8Y`cY#X3iL+4&-UeIrP>l}A{1led}vRd|@g909wpIa*CGx0{|`}gJcE=buh&LR`SmMFqzCtuvJ|= z{-WMgk#v=|!dy*ymx+E=M8k#-yHb%ABUxICTFHqHCO7vU&wHBgQqk6XkLM1F7b-bo z1*4tT;HqnlN$S$@{_Q%te|st3r=-GKHOT|ue|2Aa@Gw5b5J2?j2!*hj}HV=~{ z$zE}(=#YNCeWSM4Q1zvupwOqHyWAoGhNlmA7lf3Zj5@%+o^QYjVSyH+b%ZKHX}pP> zp)s;3{zoF!M>Hy#nKBv+e+}gA2DZJt&)6{y>*sc=pDc-iRq*=`T|Zgk3+sNeVbIqO z3t+%!9p#E~)CY_<#Hx_-szS0vS5qNX2DQc;FoWS+d{8A3lxMDv8aMeeyu0<9dkt<2 z>fP9xN=SXuH*tFZO2dq&_1X`axQ|*U@m3xvS5Cw}IY{o3_+O>lIGtgm<;46d;}P6t zpJqKo|JOPFH&{BzATi`1j;OgyIf&IKT1X)_!E0zcM}O1csxd4!~+p`+-w& ziM!C!JZe8>K4&4HhouMi}$sF3%=M;Fq%}5R7ex;-$H9mi&1g}j&PSxE%O;< zUx41l;K9w=k>;3ly7viL&thf9<49)M?(b$w_+v*UK(&>_L0XvDyq@Ak;k?f zEdNQ0ZLCZi-+esHRK4W$bOj)RR00u#O`!m-f=>H{e-xjee9qZ;mF)|Occ|@Fa1n}| zbl5e>v2yw)6TRgNJCBW}F1SdXLDs0i74+CoL7+&AFsy1(iibI?X+lkqPr)DB4fk1p zs5zuUE5dNP2}A!NDF!@BkliGPeJG$C11tS=>1K2h#zx}R_bV1Z0K^BbpsSO}pbIs# zm_GVg!ds*8V6+MYqos2gm_jXbj}e*j4T~J2MCNFb-IT~l#}s)giu?s7T$uV z%QLB0Irll(QFf8#)_T39dbg%N(_LY3H?|&i<^B<{2A?U#Xq?WLx+BB)BNId`0#LC~ zMM$%0G9yV)0%!^+>Z#w*_0ki&)9o-XbZ+Y9dTBwUCxxR!0hM2)O2HfZe={x_n-TeW zUQA8m{chq9vYYV7iO@nR{7D(46u?x3(N}fXFoc}P)vO2=)3JG&zMZ}9*PM-s6O(o^N47+3+no5EtW(ei%*OGJ0 zC1ZM(JXU_k^=5E58cQtblb`uk0_e`l(eyi=RLVi1Qr-cwV*@!7l292N?kQ^Z0cO@Q z%zB8(fV-HOJ?FuKQkgOLQrT4p+rdR@3oT;gQ*by9R}*ZsSW&r9elO-5YwEAe&{mFo z2N`^pij4%BAF>%f&%D_fP+P341A1%gzgBOSOnBPa3~^b=k&mkl;XhP6_AvI*9sGWp#8H77y=;dzphyy z7`!Dd1-eTDjoXSulqJQbkvOhq;UZbd`d*E1qMOqMJIs#(pKS*;@-uj-HFTm3c#Dbi zHXNoM)MSF~a7CV{<6LnRnOZ~imM7MZqv7N60lKETc9p?st=j^vv3HTp{W;!l8LakJ zxA6%EcRWfbuQF)SRs~cWaL&NTTBw18%9Aq8aEHbNxD*HQL~$Yw;L?o1M11_xGk{ZCGQB+yP0>kt(iszrduvo@lMX9 zeNX%zmLmiG#Z-Jnv9Alt0LSNjF?eMe zzJq|c@MtxH&p0Z?rz>w&)sno&ZMy1{Ig`5^7Qokr)AnNlHgRP1O#dwa=`fX{BWM+eCJG zXvwi`^Q$>U^O+@D9K{S5btjqxIR>q%{LOAEf3=3j&Yv%g!FK+l4A{MYW4)8PI5-0?2 zImJnMk~9Q1pz#D2Y_U ze?;Npir&a}zmEe_)EIu(`6&QnPkg8xDiH=tPdclJ#;?=pYf3o&?pO%0p3sZ%qf-(t zN7=ONFMrJGtJy{|+m&d+7z_B96WgxDXuM_{Jr}<&Bep#@EP8C%|15L_Ao(-)gX^e*MQ|mgV2=u-9~vaSN6vSmMLOVYtnA%cTG^1AB4Bl93|U7~>G20V+mA)f zLOF%Zzz;e)%cshD7P@AfXc2>c9GI0Dpzjuk+p+FS!i6XyPfPI1i6A-HtJl$R!%bpO zbjX8B>Y0Q`(#4{(&aLXI?p)O`Pz%avjPwVMav3#BB{xb=4~;3sE3RMQ5sikvo{YTE zua(NB$E8$C5t~kG<%UYqDucOh+6E|mocDCN2n7AvX-52(UGQ5 z=7eKaTzc45qf%m+%~HQT{imYa0?+w12JIGq7%mInf`7+xz-~66&r~jf1ZT?{1nlLn5=>sHQOy#3#{GPG%~}b z%7If@OFV;_uJ@}gNf4*9Wv&M9JChL}a(#;FxCU3Bb?rGAuR(jlZ##e%;Nf_la>9aH zKaG|$7%`QP36XvdnZp)f$DdckUJZR*RuaAOXn(bsTwgL_qKkF9>KbP>40^*mvBl~v zX@nHB7h?ZAAqL0_a2WTaN(SY21gI*m%S9|R`MHr1yVfNBstu+q)XAN6POq1{oF4mR z@CV!p(6KyvSc&p{-iGuu{g2$h5>seXy}kP&Si$jxdo}cE3_^Q#XsLGqgsA)Do`k$& zN2v}k#b$rHbh>J{*y@n$7dz7SiDx`d4rKt0Jonuo5FyT7o(3X46RM|a6W-lI|(+9QP z&@#Mmo`8;tzlG}DVW9o3#Yvm-KV!`>*k})f#cBw^W}V45d;5L@Qn%b{Bk1e z@d&%;KG`kM1_LL;U<7$EwfUFG*fBXz$cd1FHsl?(QQe@x?5q~(F60bHpFcbfumUIh z&S7Eu$+s@C7(J0NrfKSA^eLr9G!_4gHmr+#!Y^Fu3S0=SuL3t}LB#Fe3;sb1mzZA! z|6Y$pN52{;x!yX?7|KGI$^T)~Rhy#uv=MQ(VxG!ijJcYKc8AXCSYdgvqk0GsT|0LvK&`%j3-FNA+7bejKwHn!PQhX$ z>6fciU8v(i6#qpi8KgzS!ZHb;A)1R;px0qGz*Fuv7&z9tWRx?UWjt!hC}J6ZZ(7F3 zwv79gjIAu=B#(@!5iH~HdgT=`O~Z_TAqI8ES1X_m1DE3)S2$-Cpny7<+%$Ay<;N}* zU&Ipg5h(#X>qxyt!<)1eN4m#8_g5r2qIaWz&k%HR{2`tJFXRku^_x?@Lco~;I{v&{ zLD85CK-2_aVv}!b>+=(#cp!PvudLDVnT&aQ(Lavv;IzXHajYf@qW1`H?VX5v{mXsR z<5+*^;~9`J}X>|Lic#Y85tS z8pXvFcazTCM%4NX1CzuLp`{cN^HrI;7%`Xm3(v)-{XUchI5+vz@#BXOhQx=|n}JV4 z;Bx3y`FPHf`uq{xVlado5nW_3fx^JUM&cs-;_F0!Tw@BX&9Bs zJXdR;k4W^|&J>l&aXsXCe3-BjsP0nHr}tD~_~|xy0)L}}ci3+PVOPK(9xyr=)#0kj z`sY~YjcOFS=E)%2?NTn`)W13Uh%RVcNKESEIu%=XOQ=k>4_4>X{upTbe}yviEb=6% zzOGN=rA+>`OFjv`5VH*VZ9qOre8c1`4S9|se@>BSqV%Ujw;J*-B>f*u{!f2|=P?(< zVyk0cfc^`^w>fqcOap(#@t8cz^-7EZ;Egl4L4Vt^t=4yb|(&H*!t1n*@1%xzV34e&-;4N)`NZ%Ow`^4G%GlTSR02cknFHOeHMPzS7@>; z9W`bTSKz?7(y6B3$?T6ngRZa?pj99#TM-@h$0Xtvrh%3dVNRAVN|}4ImqvO{JybYf z{H--e+TY?lZOX(gNy&1JQUz1>Dv*l1H~8mkvU^+JSW%ZV%N|FW?1LB) zf+q4sN13qspgLtdb3MmBr-XSq@d9U{ZaIUn#m5sfC!x z9KO;_$WY+P`7|Ggr9=AEWc(S9er%9J=lz#Y3Y1j^E8cWD zQQL~?`H<2MN8WU6;FXC}aIKu7Mjc?E8iPabd|qGjwDfsstv3h%1{_cI0S()B18TJy zM^b9hbO)^4H?rPsBSm%|4o5nXkzWPB!fLuGtm9@=eV0;j@9zWS)fwt4_CFLJfx=BUDEmYv4=SYx&)Sw|bX zAa=JsbZ_$x-Fcntf$N*j{MY%LoW`pR#s;Hb-&R@FXda&@2F46i^Z5Oh=)Eh>!<+K+ zKoKbnv;Y_ka&ba60A3>P^6!<&v~l?k$1>#lUp`vBpR7zy1DqFpq;fxjQT{RY1z${q z`MY`s=j;)!^`=49{|1|sd18S-PCNJCO*hUZRwag5#O5^2Ios zuP(&dD*rUk>5LK4$94=XWpIBwMQI-aKd16VoG6n%Ky_f6;DRr|ydEkj4G+hJ<`9Ji4wSM)HRUvpT}4tKeE^0>~}@`YcWv5n18LVA1F zo1D2U$c6+Wx~e(v51X~)rpm^)84x(cm}b5VErjlnFYfRc;sYL#$wy${fGzPJ zt`*o}3ngs_HdSW9=XSMLJVI*)uzKC6c6v8g+UA*j@wHEzXKo_0Z+*%7;H{v!5Ivb^ZgJ_qrZp<3Z{NQ0yh`~hxelK2n_b2V*Tzv#CT8~| zt%o&>N7QQr#}Wm>&(NPl;H)3N<6=Zf=4dUz2fq4@@#cA#D$!h&mlAGXzu8~ zk4`e_T;oBR$x3>yLEi1xuZWRKcEw>fS6;;^Klz&zq~mJFKjh-$kulw@OZF1+vhBNu ziLS9CfjGU{QMt-sTxXeZ_OJ~mUp;Agx%f#NQS!wSV}q$REUv>Hpo1QR@A=kt}b6}@#E;eT#|t~ zA9N%&OrM0J65WfM?uif%(--~K^xN7P5(@x6?b6dQeae-)RU2pGxf51jt4q}dA3UTr zX4dg6F*EQgt?uN7@ZAeEP=Z3V4_>0<*K8oAX zF74Sr;(C^JhT2jEI^*+_yser5+p0hpd_Now#Sgl4IZK$Xf8$MTjY%EQjD6}-#!f!U z@m!5T+v=|SBag35=BPF)$WU$4-m~mi-@tOdH6{wSxQ$sz7Pl@E{qfc-*u@ANfv`S$ zxwp5MeDIcjJu3RaBmYDK^NS~utuO&3Z-aB3?Et zTCE{(axdG(yO-@^?PXJLW70P)$s26R?~vpNS@K&(a*6ZNG5O&k6X&pRhuY+C00$K+Tg^Fks-Ua;>V{n=pz}xVuJ9HVwiqmxq zqw@{DLKvZa9-UKlcUYxyTZneHFTVkIunh-#Olib`{RznTksgYKAH z(^Syz>*W{a zmTUBPX~k)!l8WAWzf8TNST672`ts+jXM)~_c_{`Rf{)#jLgZF1j$u1779V87=_N+hHBkI? zHVE-F8~_;YWCV)L6f^7WqOs4>M>=mM$trxSxG1^lvSlB=Y$dvE5BkLnDBLm_d*x^X zhV6JqPZ+A4zj86R*@t3P2JV@;s$F;mUWDZ+m>B!T69#jVih@}oI;LZ^QVa@N`5X*l zR0)F(aC2SU2pupJw(u|cMOmFk9o@u&2fHyXDa2Nw$}i+f0GHiLKh-7tKDe}0h&lNP zYl+^Nv4ILH=HhkyK^NHiVALbb_@ACDwg$e{*H9wHaK|YTc&5v>q)&IjaGJrNY_nO) zqs&6b_`>LNKlm`XY6ZPM)*!m7?{7?i7eHUTByh7IJxb%rP`w(OwgMejNbRPiziAt` zPTB@ZBLX-1@p0|9p?cR-5?UdEMasus&Sh>TvSZczrPobfv)+Wv#r%1k=vxdr|bppc>!wA4Jj(}ZX0xCrke&x33g$qhB% zEws)SE|sEny2MDPMYxNCb(U^*j7JddSDhj7DOWj(_-bm$dVK!jq;1lDY#4>EMsLT% zA$%p?i53G6O7SO@{0l9h*P28tt=4y?n~u`mA<$K2IKT=fmM> zt6$a3uJmJo3l)qx6KBd;3P}`v0RDqvf4Aa!OB}2ifGI@=-jZ}W9(K=!YF;yJYJ5%I z6p7kyFt+*{TwkBm`1(3Z>8S6oPon$lSK@gOpSD=+UOCbY_MF!Z(p!zLuvc5D|Km{z zaPXXkz_<4>r0NYL>qC+SwOJaEpRMyK#63(0C3RHlwt3+c!iLY{bKW$>pZdad99{Tm zo5X9Nh4O{EF{m#KP1TruQK-g3{l=$a8KydI^{oDuN!-`mEA_s&4bg#ym&tRi#KYF5 z`b!#Ks>h-a@!YBpim~xWKLSIh?^^fjH`2X&Xr!nk81ewWpL@6d{>p{At={nQ?fR5= zO?K5w5ms5Mtwg%Hc;x%_DeoE7C5`yFiDN|AF~?kdgbELv-f+n6U?yFgy5Qt2!Odm` zhGRMM1*e@Z4=G}gc$doeK1&+f)X>f`>026(?8%KsHpuFr2liwd*keSvaqszndA)q3 zVO?!--fT3gYfa*N?x23^xCZqYHKH%cPO&Q#IG9;-zu_>hHfg_E zqxjN>qj(IO51SgqPab&?k3riKkKqT8HHOECzU~lyKn>wB;&n5Et79uzYWJBwrLIHXn#V|WNPscDT^2RVrqZnpuq#MHw z2=bB@L14)EWh#={c;(p)Y1uCUv73bP%(7+dGK^X0ViTD<&&^b#&Qu0vYH%|%rK7zy z$c~EkW@Ut;z2%JeMtei?X_1Sysg?Ga70}A#Jy)Z4o0jdyM{`psXj`oO2hyB{|MaC@ z3ia`(9Brz9G;9(rD_xBRPqL5OE%;E^c8a@xx}-7=@2EiToea_AAQZMO#@55qlq`jU zV6fK>^k3+$e^Nmvvha6L^eqwP8Mdvbc8?MCmYzrMq_r@X{xDb>dW2j6{}#}Hv!U#x zklo;VF+Ut%jxp1y?=j2$1B~84};0ay(i+ z3Sd9n`%q2_y%CfkKgWG+59(w=aY?)u9=lRq=tZk6W?*!YPUyFiaugJ!GBl(==92>Z z2?-3vEb7`9W#KNlv*>jY{bX?8t9p98>FHCrr#FaeC@PWzLxex?UgDoz2p?%#+~*Iv z$;DX0|fgeXINGmAmMR7E)Sc~2;Oy^EKoHVjw<4HnCD#F?&lrCfBy=5 zLp&F_5OaOjegxfxrcNE#V>;380 zKrhb>+E3u1cyT_(x_Q8lS2=KD=T+cTElG;IRn!C2nioN4@jc?y?ND5Gq5f?BUp%5y z&#u7lH1!f;7W{h|zunOQVL+b0jyZmdFC)vb52eXLG9eg(!4`YIBwH+=+LGTjwn`Az zDsfW1n3GJ0kp=2uwNwmQP46D})2mm3bEhADJ;~_q+~G%qEH>dP7!e6ju<>N1#(CHo ztceB>4(fU>hbE}%$UF}F`4nYQ$ef}; z)9v@0QSJy41Fvth3& z?;tWAST&`yOD5613j3;w#AcEX;E7ZqQ(TWR$`J62F9|+x#CTcwxd-FqJ3^P+B0QuC z7rBJL65;hO;mEZppmz*7v!MkzXUzHR%)JE!l{|9TwfqLlj_i~|wk*U@StICt)C z&0!$(GkiQRoq~g<)1;OVm?LuYl^bd~PDLO#0^Pmlh|7|JI3hhTM~Yl@p@Ec0^q@IK zOvs0n(>LHRb8&^z3uPK!Q#(aWOs0tpU|nL)4s;b`;(_Fhq(t;L7%1kjKTS#$=X006 zPjBq#h4pqGnpN*9f4$c94Nc8gnfFkN9VRQn8>r`N+{>~;c4dRFBuR0 zO7ZkA?jWA|byH`4GoVP9(S&)nLI{c|&Ba$fP*v3}D-OFV^MUxlu*i5y(+ zk@ys}+Asvs>{%ky&V{u;mbQE$IzqyA9lsWk2YH2b;>0||xR+);hhnt=3YU>Uzri5Wl{vw75cP8Fq1lG zqk@}>ud<4h@$tW&qNukxIR=vk(`MhFPMKYWlju~=Y}A=Lv#pzZ^3=NV!Ba{fmx-kK z_f1={s~PJEr&GRIMrh9ARO^OkQ?0F|sT#xUh$mAieHo|m!Bmw={2$MyT6>SBS~t9+ z(~kw&hf=M*XHu=3IFd@~&y?mwsm17VZokz8{kE5y$Vx!ZjT9el7!>HP`n5NNL zR7xDD9rY-x^>Lg;wf^r8qFOgPhiYvfLq!eXoHjazsxoQEIE0EC$e4}JpsL)oDnEr! zIBH|rb&|x?OJe4j;#f=sIae_1= zH3EBK^Z-}4(pPu_c&}f~E^>Xqq7s=ah8_*muUux*NQ4a^Z%qvzT|#LP!fPyt@B-bn z&oB((g)ipe^HMuGdRNt8&EqP+XnBm7$+ZSoij!1a{R?>)GsG|ovqL^x@D8@g+k$to zLn&MEuC}9;1@B?MapA%ziP&THgp{)x_i4JV`lByNuTS006EiC+^<_8MruYh>j9XAG zbUpfN3=g`|D>nL@;PGyVd2I449^0)q^OBgyzlg`Grg(g5cvNd1pBNrBhQ}*Pfd^f9 ziTExw8kOQWy_M#xUa)Bj>6>0s6s>{jYLryb9W9hQD)}Sl4!7tx?DK>RX7 z@2Szn>|`n>okHVOAS(A_uCDcuB0U6i_A}_!PJF!;)-RRwSErk3k1q)}6{B%O(XhyC z8p^~m_$PJtf&%wa&8`#IR&oW@7y(Pw_y?6NNvuHupEM;v)jHvI=s5`f-AcC$)``cBi0WZ1;;&A# zpPo9GiJoXSQMDo3(tJthG12zsOEN_7H(ydZ6MfNqNrvd(&6kv+iT*G0z6Cz2;%fZv zypL|xgf~}9@vp#BlELx=%tzs)8DEZHsJ9i%UwYwp)|L_0*`3vryGjnF<%$f6; zIWx10hoOZMW7 zonrJavirM*?oP1H-xSY0z}E743^rJ7IZqxczRaU;Fe6WHHurbLBe(1rH7{Nw9tWAv zk|)w0y~O0d30v(p0BN4XHUNS18B81iohN$@K$>S8F1{SWlWhYKxPZc9XoeWlTK7T3HZ1D?l3y*z3X<2V%tZ;FJV1PQXaP$;Md(05e{DcHR8U{Ye_ky; zbCcvH1L9Fio=hwTGltAeUgJi6{c9|Tjru7L6RDr($zIgg7qV<3^+P<_M*WltTM2;@ zcJ{wqWPg1T%iPb_at=FHY&lOJ!uB|Ik^Ogiv48SHR(!ljd!AfsW&ex`tB0q~M3ZwG zH91SztMeDJtbN7PL_B$*(3K=hM$kp$-KQc15eh@eQo$fW;&2qB#CgDz$BDD~Vw!xd zPeTK-2~MvG4hZSJ#aI&|{UmXqg>>y1@!W7M&vaHJkI};;#(H;yeErw z3hDhZU1y?_&-wW;@=~7Rzigh%#Eej67>mLILv)Ldy>Gh^gVNEcm;w3)sodj|rS^1OYx0Jwmxo0wus z$TLuUF-=Gp`;ivX#eQUjbg>`G*Lk|wkARtegV7IQu9u1YxDJW0gbUfk#|6_udOw?T zUdn-|Py^&1cHOxNJV7ISEi)_ElE|)`U|TAMfW63@+vF@78jI!^oPgA`w2g2^`buD^ z)@5v|Y#Bo}i0+ZyOUe})rOt-U&7`qAW15!AWvtBffyj6WIoqGMNjMdj81yU3P8{@qN)HVesK&Wy$fe8w9zWaDTOC_!~xCu-wYsOmwQ_Yz|_n_S;P zE)s?{U%04e8Pe89@&C!Y>+`Zo93cRi1DhG(|g}BbNsd=4i2!9g-ECp5*~aBx?aP+1YJ1M!?dv%Y0s(yjhmy? zA#^NF*h1|odIhPrrwz6+wEI@DGuFP0IiI{wrMk(r!J+WkFpGz0z;F)c0OD*40nmb7~Z$(L7cJ&=h#zFv%uI? zHRC}7b*%V%1b>@45jKLbq-9Mov#8{ORGhQ#EMk2cu}Nnj( z-q-*bL2XvZxko!?sgT7)V1NcJb--*AGY9SP!@ zZ|v}vz&=J1x(t7lLrJAt8{4eNtfokic6%>VIaQF@f@-?o@EzE$q05Zlfw5^>#=_Uu zu+lg6GMaEFGA?s~RfOHF1>Di+o8$GY>}#~_&BVHdlkq!s5>!bF7dsRVt!0HD>cy@^ zgYY|u!V2TR3rOpw`a70!ijd=2yUDKNA-Ko>b4nlrp6~_x1;I*1SWla$0~=Yr`+FIi zJFMOcQYUI@osvVL)TMHv~X`& z04`;!*i0Tl`~<|_9l;_Sw~RkD61azE^qmZrx*rPR8$U`P1aIe@HxC0)}I&v+0uUrrdUv#}$ zHX{LzhcJv=lINR!4gJa?%P=WR#wkllC%l%yPdVL3^L*C_f$q1_1+ojsY%7_IJ&E~9 z4Shz9=tlUu93tAx-OE>)QoWxj)%|d48>w@TVoG2&G>p>XRhI3ibXTJp^cf3`I~gJH zbp+YDBxOPS4WLAMjg>WD+H|f&`3uXqk7X=DyMXsNHlFECg|_5uG<(x*cJ=3~YMpE$ z8?8}`JF%-}7Ji)-eoo<(>r^kM15glUOudW02(&5$@A0Xn2jSIoEE=2PSags?tznO_ zJt_vYq!OP{7vDrr+mwOSLCh*vnT1)0eD|_83(2uv^_w<5<-IQOh z!D#L{l|LAoYg^&$s(LPME4yoY04;u-5AG3$(&|W%cIxQ|wZY|DYcbNUn2T$L@LLGj zEx|URHn>JhRBG#RKaSsqiop1W!=n|b9R(+1E3EJ^f@dT_N@1a@?ez^uRnxUC?MJlF zeC67<_DXGF1A;5liqK9JRL5xQVXeMWJ7MAZXJCRX#7XBK)Yd=({u;TQJS{R*yZnfD zd;|`pYN%!o^kp<05Zy^40!l`pb0BFbn3LmCm3CpPR#rpe_cd}(HgFUtE@*`-skAtl zL?L*NrUd`*RNNF_gZ2WJ$km|2#u>9zovx*DgWrP3qyq30_q??gX~$t_<4v5nM?2a! z$TV5fr*SG?>0`Q89ecEN=Y+>fca9I~)kIH*M^3<_GWDR2-X+quL>&#CZ;$K9KM|e~ zz+$AtuWc;UdX?{-ply6q>lN8K0aZ_*p~1cJ2p-Z?=ipAxgT3kM>00Y#R5b@p#5^<+ zO5X;hHx+6HPxDEhoHKg{}mWLS&^{1W!Tw3o-j>8e@T4Jt-BGuZ4N_hS&q6Hv}x=;%pK|!ss9H|qvF#H@|j%$w`A&Rd; zJH8XwTMSBL6tR%1uq#%C!28lxMad==U*s6e8}mzgiC?w0DGCFxrTp6FMR+m-E&S(0 z^gnjWsz_RdJT6t`*9u;MAO4#GS^!XB7YyB43D91Tzz=@{puI2@%Tsu*(%-3R!_^4Y z9piZu-uH3Ui~aEtXbwdFOhu;`+zKbRv3!DDUF63B7Z22!|+WIr2*d}JBs*^yeuk#enLAN_l<9QmuXRyIoM3A|MSqfzSVAn_rZ zo5bh7jH*hpO$qguj9o&S{50YD=l@}m$TK9qiENuCOwjq zxz5VdXiQGwMc<(@V_|eTs(1&?VD(ILt?qaf{10Nj2T=pOHAoF2Wg0CzP%|E1)IT6p zxfoT2^m9-gmCPjHxCx~?u?WZ-=cc))m{%&IvR&G2+Lj>+LaoA~vf)_4ErOGIg!t?n zjl$3jJI!>0VK<(Y=3|M^K)oaBOM6UipJ}y4ipXn->mXpLnAjpkTH7rMu6V$;E+f>z|H1GVIh02(;(MMc+$7Z%#{*yRiOQFDb*6JunwaN>FTE?WIL{^ z0MF+a+pi{`0zH?QI*TK~mLpfp8nl6Ly9v zdA8Wyo5%?Oh{4#QR#9%!t@MBkO5paYGbjdK?8hsxHaS|Ge%KIau74rp|Io-sh#T2v zb}LzB9{{zq6Mf1Ln+B?_S*qZ?mpMvl0lWv+_R#g@xx(9gSCM#z^^?7xY4vG8>KH`) zT>lm^rxmoUEP5%&`w2wDKBX1cKN8!}BI_1TR55 z$EsniMqic~xA0c{wPY)TILi|DT6K-slTS&V-}Jp;kfZ>*^>I5K)bcY%%hWj2bGz>m zl-IMh^u10P^f%fk6B+|)h+AdyIEe^xiB_dEV)27UwCcER z-!cc#5AuaNhN1Jt9zI0OGIc^Hsh!T+zy%KM`m{1jZY+~n$qTYmeSvd-UR5I5FTOtp zb`5<^ZW^5HoR9GfO;Z-iBi;wgTZ72#z&=L*iw-!kzsqEkq`gpK1gr?>a<`e~lts33 zMYB*FnK+jnur@8VNKyraR~MU9&n$AF`e4S$p$i@Oe0ZnGx*0hOyimDEfmc^=!<4+w zV0DJ>BKs^p8EI!Oba;Q1^yVD6x6nV>+>i=gY^h6oS$TmxZ+Zk*b{_bBjJV2TJG0=n zoqbqf{d#BCKVW11`DiecT}x!VJB;_n&Uyin8<#O+j6yFgI9c08E}?D4I3A`m9#a;Z zIRnfcR=e6G88E#n&CO7!{`%mWup=T}^-JY^@Ft}40v2@_SL51$(-EiZLg1pFV(w=; zlII2Gu=net?!n{D(mXOrrkTS@yBUU@v5us(W z&9fMN9k+S_(r)*S1q^>~FDzJ0{H2nD0oo6I3ynmuh!&H^&2!@$&M%EhUc3Go)0BFHyC(6wByk) zcfoV3foHFT=Q{?Ty>>h)H#|Qy@Vp`6`JRF24LcrXxeK0c2A+2%JU1D5-nHWiEth8z z#&DzW1#lydDCQ9=T=LU4IPkUyi&z#hqXgv^5Srp@v;(9TrsMRWhbT@4&cv1{25&D*A zDr#@o2){P%5i?W+-HU&HU@+WVGbFvutSMP1^Bb;d>_S6%U9wDc@X~b-^$o zJ~#@t{D{#w!M01SwDqF|g6haAIUji=64pV%%)rG4Gkvy7E{6S*6W=p>&@7ofsa108 zamF)dLAJ{a;dc={pybmoBOfDY8FemOWSjLdxw`S#$>bK-L>G(8UTCCbaZPlwxK`WB zjWsQs zC>BqqPrQ~_xgYlyZg5eTcB1_dyCHf{4cYDZxVQHtgJI7e+a;#=^h*ctsnOeelE4PO zzcTM>%@J}(8pfQmcu!Z@=MEIzEqPBXyW~AJW%r(%UA!l$vD|xV&QA4&bAMhjyeIeT z){fPCYRT?Bt&>gR9rW@X|6UX{X_n@B@Km9zZOVEv@iaPc>+Q7gmoVw$2~{@a(2@;y zLSBTlCkqc(XAE^IU#+!4fzZjm3*! z3mtH}R>G!dn>vAZf0I0YF2P5Cq7vJ z`%C-PR5DhWk}-9qo!K7(--|mbSJ|-bH(G`{inyMmxORxR(so=KXIwuLalJ=zeNV&{x-P4-P_DOnDn;B=(XW@=62)5NIigTO zN$u!3K-sX$Q~}Bs7i9)-apKl3kaSsSOZMj7U|mRxfj>rCG8NRbI-5H&QOSuhR(vbe zDYP#)+UI`sD_B!Ze#1&bc&W#jcgEHCOvq)v;oQWrq=l<`YK?xY)7}8wJI|%!j*hz_ zZI5Ee#rry(1f%jzJEA%S_kS@w7u*dgWd@doPDnD}l*t9p6swNx|NA!K*~~{(gZmbE-gNQ5eEgP<9opIeO;(CeVx=X~Bw&QYW7d__;C?9EGR#0bY zS23MKH#t~2x2fYPHE*)jbdOU_^+N>Lev0ec zBCf!HIkL*TY6HbrYCWpF#8Buzgr~D0tArMwd`6wza8tf*YwB+2!TKL@u%4ng9~1{G z^=-$de(cm#u+UbD>B0&arGgV+-2_e7L;knNsXF55OYnY+~K@5xmaJ_0Kb&b7tV z0Ilg(TTO+t-1mrL*dJ%hlIdIJ3X8T8$!e(S%MM^(C^C=j=(kz2-ettJn_1hi(?D&? zw3rnPU7(t4=fQ88&sJE!Z{H=$O18}R?e%$+0Q`S{5wAA+1N%N(78({YOXG)9?PRZQ z0|}QlX`|{?BK*)o!Uy=4oIt+7k39T@q!%#b1=Les?uP>q>(^bJRRY_c90ei7B9$#e z;C8#vis0UpCyJ|#Sqn4{RTf0F5n~Hxz*-wD=={86D+xbtgM}`(t9ZLtUw`b?R|lY_ zuRn3pjnV?1Qx3jHaEAkQ2V0xH!)pk=fcl-;TAsc$Tg&yIdaivqL0QWKKa-~k0=H&c z$WSTIwigy4?N`{HfW_Hoh&y3o{h24Ve(q#P`n7x2S;o1bY7)vujswBg#Gk*>?$3wr$ubKwP8ry)&knD7V*$cbdArEk7h5jU@AWG00DQ=lje%cz z2|Wj(%=gND+4w$rpNzv?$%5@FI9Z-+1*i;{=uH6#8$6H8t%`viP^X;}-JUVexOf zW%2JJuf@NIyy&Uy^pw&&J?NR)nKL~@|C1v<0}p%hjT2O&r}EqGplABG9`p=6;ziGt z6O`+YN3$(7rW|vK21GiW31Z7o1uy7H9by*@lQhiXt>@*r90 zB`=a?oS=+kp_e(-wv~{2S*GVkq)j)2p61$up7d9EZZm!qmv~+w0i-N^w8IP^y{AKt zAJt#AH&lpAlxe4ej-qw#wUH(>Cb@Wz$x9$IdC6kk&^C$!%B!DJK~rxmP%a zWS;s%~SFiH#dW?VC0mw=Q-pe-rsrRxCOJHA)56KBC+l?P~i-+`~2R#G-@U$G9pxko! z$jhSpC}(;qALmHV^v9ljb0DjLJJ22U41MB3&-5o=^wj_9MbGpLFTE4nXcg9n2YM*;eqQjn($O+0P z(UIKE?;|;qBJ_o4SDc`-e*Uss%O4rM_#B|} zYORo?>m<|FI(L$#REI_|k_9veC?i=)fbs(+FIy;__8=fx>JV)C_JckTCM;#6}x#79eI4E;i!t;fJ=di=Urd}?1t~Kx+ zl<*{t12+d94mS0YMgcG!P+pMVEOI_@6F_nc2u&f@_QnqBz)c9*84VtI7%T)It+<;c z4KbpRqK>hh$B7NKIupmqy#Qpplx^hLpM8!6{7x;>o*=yc8_fIU!-4sKBQt--?>NcC z0~w*??OCjGbiJ)vq)7af3@#uS>3JSx4xGSCIE3P-BrruNon*e!=XjJkaH5@Tq;NN! zW!C$My>yJmS5A`K%>o$Z=5oF}DLd&;cIi=1M;_{Z<+eG*<7cESi^-iOuOPVE#JsG# zpV)XKC`tWKU#B{f!uvbGe<;8Q$Q2mZ5q7d`?JQvbez+f_h|HlWcc_Z0{BV|ne}B;% z-aW@f@P|^iD!w*awkq7vT(&ZnSk7!! zDxRoqiiQ*MCaGYYWL+DNP#mST@wEg`eKfK%+C+Yq;#}*d=K(moi@E<`otNvk!jPzd0}1^TNee)weg1LL{m7{kZ9J|O=ML}oKZewQhE8* zi8D&3Rn$$MvZ5{;nKCgVR?!?;gR7ZTT0W_CVp(%jZCTyggeN=^TN~|C8=Ip|v2cBC zBTiaZuCFU6t!%0-#fVEi8cWJ;_$q7k?0&SNHXeyJtSnpI9B=T<+1%Ptn>9ljW~Q|< z?|e&wC`VxAc>rzD~qypgR9CsviMh^@??sVUsxO|Dqn6TG4| z5pB+4Y{Qu9_0hHAhO&55B-#{>tPM8;qfaiKnEMotHmr;_bd7hLS{i`wbC_FY(RI;= zL{C?;KHjt@+SC}2*Y|Wyz@#mSSbZ*|WUnY<6-U!2R!pgwIIScyb$WDidENAB73DL8 zG3~)h60MCgt2s^$EJ88n`dD+14`IA95yMhDU-m6qQ6H~elf4-E5w5L`w{(#kbE0Yw zj@SBdJ!bJ9tN<(W+5|4)$rJVQm1WKNpRDx8t%}y?J($sTv07k*ybIRF>Jzz8r#`l# zvAhujON?JcXkyA3{LvUab{w@$t&NFz_h2b&T;YZ&9$#4xgIgbNSXmlxq7+%tQm3z* zR5}@ki>gTj;Gi?}!^RY9V^etLT34$qJ0fN<5XkyiQ#9|v#^hTYORU9uCD&nhG!dJk z&?ssHP0nI<5jB>G)mrCZF6~Xk8nLPluk1omBHbe4?DNf5FdpwpQ`bh<+O%j+LjvvW z!az1OM;n@3nvH(04C4_>90L|CnG*RTX>MH+tB0?sUGj9VfNfsY6l++6S>LMIbLpf} zW8TGD5*y+UMRV=gnsvD1wFsslcg^d}!wbX6T5{pJV>hUGC9NbtD-%+D6j&X)#2v+4LRyq=kL9T6A7#+bJNtO3m08qb630|tC7*Pwl;4p*f(j8);rj~PKBGI#)44(W@zKerf{TdGd&h< zYKk}IyN;hT`ug~>?hrJ`n{rrEiYBneiMFf-kKg6wPrr`2CAH( z;kfuj>^+6oM9W>*3c5iTt%_~{JMXJd46%ktv}^ktoGSS+iWC2WP-o4HoN$LFm9DJGFqZBjK6Bv%vjesi;!UlNDF%YOvILCJ z`eN8ge#>w+Pg?$7H>n#@frDEY2Ol>F3ne$#*=u=&5agKFI|K`i zAj`)h%VXW6tTEi&jCm^FvT{{dj1;Wlnnqw;)!u8k(p$YLO zOb!T4utrSexrS4gXo{_ih3j3Gb?g>O0vw_IIgLtD`vRhS7{H2HL%6B6TUNQs8sl9v zzH{^q!wnIvv}AwEJ&*tk9q+9%!%WR3kRXwR9pGs$g0jW5axlu=2WFLQRJnJwF<$SD zvbnXnHk>6-EM8XEtSGa>Es40{x+bELvmhLa?(^btQhbUMZj8Y%75|Dvu)=AkU)YtQ zzv3;4#+C&AfPMaEU?Tbr0xL)iMw$?dU<)KxhkXXAc#v8nG!f6hhUPF~xL_<|7Hxox zuwX7G(BDEp5u|9ig;9pC5zj92y8xrc8W?`|QWRk0U?f@_ZVh4vUx%A!HVQIXk~YR0 zqOpd$I4w(5NJ9DuHr3Tmo;-O5O(Y9#Qs1FIlP(Y=1iz8-8=`(-i4BsD!)1Xf$cJB1 za0~fI)B3e72?OKt7^CnT;sxMmZ~pTHMOhcFZ!v$H$tO~BHPhN49S=*~P%7{hGz1cb z^9CSN65?^-s}FCxL8jwiObF;CMQI3|zp(C0tfIeRQp3-aaVIx4(q9cgzk2f{oWOOg zqxoZm;C)GQBxa`K0X0Su|E{Z#^O|aFTd*8x721CiX_J5v&y5Dk3mC9A+|mN2GS4udlj})=}%!U4>TsH5rhK?gJ3LMK&ZgiDP&|Ll$Yr0NICtKyL2k9 zu0CqE5q~AZ&1)#e=-S2v>B?!i-wA96Qrxgs4L=9tR)k}TmDtQ^G?DW*4xwa$-=_m} zflx9<1IaNIQVFJEfC(Zl;A1#2I_5+=g9>qlm?ET`0ZdbDk&wVSZV1*M=LzSQp0?my#nLF;4YI^h+PDI~M{`v&24pd| z6xnZxJ%Nw0!d$}u2qS@?#WXqC(m-i6hNm=#>!MOp^okZkE#MT)gsb9_X8P3}Z)vKH zN*}?MQ4=9_0ndRZLne?ji}nJ9it5IKjYbR!qOD$LF$nxat(rgcoWT7Xzj#1c_HWpLK!Mx24nz?Nn)$^1 z9sTBAm;owHoHiq@2`U?p>0-e%#gCcd$1L%q5|`%wota_?EBM0JbOf_~ElwfR=xkt2 zy15SDI#IcGF(OE-L{(pnORm7CV>8)DpWnuF@B5}cNI{mSu7&P)=iP~(c^VuT3&5F&< zWcZu|#uaWORxzB2IFW3O!|!vrSpMw(To+YFU!)ZyTRs>EpmYAu2A%1LK*y!d3Vvl&Xae^c~1B&2*Gq{t^tp&Kv zZ0i^jzD8%J5dmll_YKin?B9~lg^F@TOVnWZg=CI2QuT(vgw0z>S%k-x+gBITQH~fU z4;J>uIxrRXwdUwd1Ul9eL&$V8agwomO2sr^PNkySvby3RvoC^C0~5jg5*A>nND`M9 zso)b92}!w&r6kHU#;OdJ_6|0LMK=*5z$!1!vWAutg0QIMWaG9Nb9dbMxkOSHmvB!Q zcgF~5puE7e?WNelfwfoqo5p;JN|Mc@GPW4;b#U(JawZksd|{HSc(&FENlU?$Z!+c6 z2ze?jGu(1PbeUjT4H9L-=_Y%FA44=1T~8T61SgZD7jU&k&uc-d4|Be; zXccUT2Z=icGMy0Xa!?5HV>xhD%t#D^UD!yyt`IbYY&*hN7!#MEqBrzOVFo|e5;1daXjKIJX!QoSM{x^`?JxMM z!$W}w6;FB6@|8qLm_Mz)agY`aHnyzbt}_0>9XEaFRTjr>l_+*%&SGY@JhRt;=3yI4 zkW!BoF}7&URhCl-?=`Ihn@LE+mTMe~aluFra>2A#6c-JGxQN@uMO+jYjYJO6Sc)K6 zNOiGVHhmkZ@c;`?FjpPm>thKRouILkLlZgvD-3ZYSP4yz@~D}ZEuwBpK+C~JX{KMI zNtS>$8#Z@aq?x}?`dV+9t{dbz(JFs#H0*C_@@^z6LGh+oqBSTAcX1AHvQO8|a*H=h zR@-KqRo6z0C+tf$5&<*}vNxHgRJ$lfJH$y=07?Yb+TkPVGZ-BFo((3KhZBZru^j9V zB3rKX8H0kki_7kHa&y;9&0TMmajkYYrd3+$DKw{UklN%|`2=Bm0qp{vV^L$-Y$aKv zqoU_(A6p=TPwYQN;$*`2HYLsmDsk2~88uwvBMOyNaIH@y5I~nqumxC`D9a&egk-Qvzf4w6b{zM8d^34!)qhcrU2vyAh5AK?gYYEV0AqxbdMsh z1E#>hW~m9%w~5zmrmZeZBKyPwA>No^XpB!@L`)P(K+|H4X2NY6Z@uy(98G_QzMfn(HXea$$=e7jG3Kpoh75AqL2 zH=`o76U|5dU!foxi-KCm_6GDJ3aV2Nq6z2@46nL4gw)}OFgS!3lOy@?cZb$m4A2ad?m|U?6dtO@pC7ePhOb+2@hYTkj+*r+t9kvO`i%PD2K-qGu|ncg%=k6qsgIlZSxVehF(%ImluAX*6Eik-HHEs zj$9T9=b9uSlwA^YKNA0GLN*DkbM*t>`@wl?1l8tGnQiJni^kH&q1+L;nb9e&h zakLL(wENM1xRxBF{ho~WkV4Sj&~Z0I`x!>N0$qkjF^2qq#@W87B5nRMR08>@r0}OU zKZ>43LHw--wDQA{a>3Oj(N9S6@@=HR1=~?9F|AaGS1F<3qz1^gpcwL~+N7v_u9;O%mQKQRr;-NG!wr6!6rXA|c;0pttQHzP zg*13RX|P|LQZBbwS-{(Sr;pBW{}w#p&zKWj)equ-e+45x<`DclPTP2dJiK8t+}Ajc zZKThOk-x7oi68B7n8YtAHJTdH+Lpn^AV|Fs<5y?c=km@D%UmuZBwJ2q^4J=3*?uSf zw*oijUW{sWy|zBe81h0vu+WKZHfmud#z)6Olr2)T{CDD3jXbP%0D;j4goPZcqJ#~8 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 M@5pj@AZiqDD+A!_cwlP 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⪼|M6!O7cz9T_dCzxrH<7`GxORp?3aG8?NB+! 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 |CF^6enf~nYR`zm3R&E$^BTS`WH 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�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 z%0D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

        ( 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≪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 z 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

        4NS57~Ju%cgW9ruDE! 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

        winBok;8d2U>t@m?}dSiv{-_=6uY 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

        y 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 z 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

        hJ$0HL8(&+hm?q*`k6Fe|5y5dQ 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�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�d5XDkdm`r+{8%78@D>8gP%3s!xS}7K@q8OJ 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%0Adl@x<$F^AW^t3LvNA4Zaz$ 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

        q>%=JXLpZ|?1d&6QMME#KtV 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∋6!8{w5davBi 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�(GR@wUunp+_<|y0@}A*lQ@R(%|#N>%>~lB5(_Uh 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

        A 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 z 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

        )KDa^4|UdH=Bll?h}mcDqzG7 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

        nznNrA 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

        ^Ajrf1CRd6}F7c+T{MJ7rP| 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�g)u-WRsyn9DZo4A1c^{C_ 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
        vqYjYia90L~3{Oa(sSA(io$)IS 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 TQDPDh<3HFSq0ajpL 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%0Dsfv>V5 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

        fu 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�l#C!cdc2?$-9zlsoj-_El3Oh-G(aEG1z3F8p2C`Bq+Tsbk% zv&g5oxC{~xFu||d=lLUYMau*GRK#kAn?^OjFV$&ZqX03Ah}=D3GCgpuFy}TW2UPSh zo2B23c36<}6Ug7b{*3Qtp~S zG1DMM<8#w1{g~nf6yQk_px73Ant0DC088PDraQ4)O8JZ^08<&26lbbJE}?v+QjNumo*Lq^k-Rb36Lu5vFa>40sBBTONq)cS z=qK}H+3tWci_>JgrR+DEyR{>a;jc3_`g`A;?xe&((BQh9^r!x~1eHbQ!>cQ&^Giir zoL9-76;)lPM%GQ+L;LjqA?9{5J0E6}H!gD(&?T@4LR9JeIsB> z!l?+dq)f9@rD(bD~4T&cN13%sGW)2Vk1&0LTc$ABm_1jHGNNPR!O`mOS5;gA78VRsU? z6{)HzJQuwE3hpprfqp>9M%WSo{uFM(v2Jl(@OMZtU zF`vBirvSXN zx~54RDW_=OywU?G7SkC@iZOI`k?H=DX=2=Y4Mh9;|7}k+TGjm43)AA{D5a;sRI*5J z3cRKlza@W-{$nzEW^QDQk;kG4M4|ZYoIw4l1wqH77Y=b{VRa`lG zs6Pf`1$37QxjK~rMf-wIa5A*~URYJfF88(){ME7@TO6$O?qeguw1%x=g};bVK}egc$h za5lW-JI-^%ruO4tbKgdfOd5O8yvtB`wf>Z=`W+t7>|(ii_K%wjpb&I|HamFv@G*Tc zfg=asq3zv5C|Bb?)qI4v?;hbIG@H1YQ(;Dn&>lh%1WLxn$Uyhg3X7(4a+B9e+S!!n zu~qyL^=w6zy6631$V=(E{@dYnI8>(i^dxa<}jp(!+OuSjeBc7vCW z4*#05;LZ`DQg08$v=0S7HNjZGVrNf_LSm2NxPTnYlR(TZqJyXQP^LelntX%T_|J&S%n5*D%u`HM1q6H1gt!Q@}%f zOR-dmJurTBoc2S7NhGkzC&%PU4sm)D0MKZ$sq3>`ibi_FkvRiI2g6<3V+9h>2ib5r zsK~=!TxA*RX8W4WqWx6z-0zLgt39UU<+FiV0yw)Ihc{ zFR`NM%2!E2>fwxuq%BFBpQF=cHnO-nQom)|YQ}N~(6+z+IG^N7X!i*74z%8~3d z0&-z+*+TCpzvaJKn)Y_7Gmn2w-PYFpwjIVMyfi#C^qWEqAMAOe zYlQ0j7Lcui!zUC{vQ%ELO&2wzss8}LPxxe_R8%C@HCd0XWs@bys)vN3L3tU?fe=k^ zqm&Z9)Dv?QA-^L%)Jq>VX|$b_y(0BNRfw6dih71NaY9;Au#n$G--!2b8XY$qI2F0$ z%n9!?EOVII^L%(|AATn|yK9z~y9&IDXnxPZ1aAlUp&8^@(@X~aqjbE!$LGKXByRNyYB%+A}lRT4pXJrScNm5y;Nj5bkLWo z!FQxNtU8{D?6-W6>NEg>mFYWYw(VrbCA%RjD_&!?Q{C+^L1MsrvAw=q8y}qS@nG|G zJ6p&Llf_GQ|Gn3=1JRRGzEItr)^fHMet0U>{W#%$>3kx1E91B(AUoX0J5=N?`c?V@ zwGmvd$jQwcK*HLdd^zGBF$s-|YHeZYsQb@yho$Yoqc0BLqY&Z^`c1Ok=%VJs`qPte z#%%PZe5@Sc25(pG;lJF*Sva6^fKL=e6GsHbJLqZeKW;2N7A$qEf^CMXUeMhIHlkhB z&+_GYBlU%eo>)~f-oh5k>afQ~h|(HsWK=@`I}6O5>)1ijPi9$$_66O*a7ati#}kVW{vMOhKf{mZ4R!JC$~^fY*hHuFf#3#%mtIQ~?BRhA$J^uymf z%as+Vz&ETK%TZ_Nd2zu~h=MRf)YjngOcpdS!~{3!7%Bn~a@Z)4W;rpR=Tab((dddn z@Ht2|*VFGrcZ1N$~2OV{~{@|aPt9*B~>w}9j*7B=s)i3cYaWf7OD2mS_t%-*gd zsYe%6Q*ruC0tFe}Nc_mRlPzSi`&t*va+;eeOG4qV^P+gLh&Ee%{K-bxe~p(G8YC-2 z*q$_e5j)Er0~j$F%!{hT%!LnaFre$2$ESpcw(f|TWdO0T69Yn8&jRE{^OU#RoL0u? zWgw20Zhm>0j!-;R*J+Z9AzfvN)d-H!$B+S7g0d%}zWeAmPNmBPgyF%+G%L9}>6&16hy$3x z6$x070jv*CWkg}=&;Z(7PIr-Z$F>J#Mo0AQrIutHelV~I9aR4A)fnlGRnbP&Ux8em zt%Cj{;coaJvxI7;yJ-<#{+atkQ%Vq&ZZt$Kh2VvGAEgVzQTfdy`Pc^@>VuJ>p-auE z>$;@G48gIvcXN=jtTvLs(-8B{kWa`WFpf{^;9Gd^9Z*LJ)6lM=h+{JG=ldNt1G>7` z0Fm4Xj+OL2{#@sn6>B}SWKHHXYrq=k2xcZ}K8U_cXZAzK9(f;>oXK zY0c#iZLY~~7Q*H`jKM&TozlNV@DR~y54)dYOnG03WcP+1H~9k$%gN~c)CY!&y{`xN zP5M;7FH>3R#_a)!ZEf(llh2mdY-4-3VQ($CS%$u6qY=lB*3HHHxb3WjLMXQQ>39CY z-VUSgs-Has=lGZAjfmBr+}o7j)zHgx>2z6#dcGiW?*iy@KZtmLg7uQO6L{7HU43k8 zVgE_|zmTUJBqIQn1_;tAN_>^moi+)rdPH>>LL5AB7+DQ>dHHai(c?2?_6wHMhqGD!l})&0SY3)c9ktNCqOo z-}@JFEm~Xw@>QMG;-7afWXnd9;>*O#0k0xJeo$PI8PzEZ+=i^;3#s>WJ;5SbUGeDX+0(mg8c-!;?GLl%WK;?`h`tVp(*8L6GcZH|vfDTeoh%ZlD zai|~dGFMcqSlji&vKUsnWrdjyQR($wqtUTg(N+@qH|g%sxxD*ND`Ts5u~T(*r6 zH_sQo16-77^QXfD62QrSdW2cq(z}fGdP)GMT>Z9LjDxBxTqxiTGOvuh1^jDikZE?r zT=)#sUMP>5MqPsLlHWc~n-}l6Yh2YKnSWE52vvzsMo4RY{fGcAP;P)TzZMg7ln z*y2*nHkF6_0?1G^%SZBj0K^kUMOgO5Yr7w|S`A1!gSn%3u-;?YwXT+CQ?*5^3l3`> zzE)8jql_p_r>;*;0Es;Ls}y3tI__AM#%7JHsqI;03wRMjwroIp+7XD!Eewk67GaL- zXz(Yg1gNie09x5Jc$4>-DaQPMS86m*p;4AwB^(eU0dfxR5tzAKnH@XTs@aKNl=zCq3s3(&_dg*op@=s zqUn4~w1j7FDo;d%)&MdAOxAN%(Lq@mEHYzInYc z!_$nZq1f0NkBfu(X)NgTTVutAdyZp24AqXMYt-{XAq|(Ied=j;aQvpHi=6Vo`@9!A zw601(v@?LTUc81?7YH9d6eD7{k(E>v5-|&q^B*o)DP8!(mb@A=EJvJH^CrowocMmv zcEiuFD5E=HvoZf6ECrDY7N@?jnfNI`m2U^+0e5fz1|YNOLWi2eKg9NA^I;}{83EjJ2j~t!b?OmW>y6Oy~-7aAjSo?28w^iVD&3|x(=Z0 zvJjnKya#`vO0pLRc0fb(Y6FDBq^1{Hg1q>ev2OuImRTubOibjG8g%E zMkjF_J`p9gR!+*jIwIv0Lr18wgIl4hk_3kf!`Z&T40->6Dtp#Xm1TO1KiF4Ll=%UH zCU1#_eB9XvMH2jopMMC|UJ+Nxa2tN$-3DCQPZ4%>HQLUwLbQ>XTUtoL#=umb{%hv z)E~oqLHg8}r8gBz`Dusr4f8z~!q3l6?NQBuvqDEh6hrGjVA(>S;Emj}cFmD`|6s3M z#Q$~_~3S*6&eoV2i(rEXzn(0!~8i_*CDpau`Wb~ zdrM{?BQa&dS%vfqALl&P>G{1io-ARR{c9u3k64E>EX5d?5jV8WwQil(gRxyD$@C9> znFqC#{rNTwhyKlcGebo)BEWP;TsPO-y4zS&`s5#&aHm#!bVQi0>hjMtISMl4nK;f1 zC7EPC_-^5Pvc=UMD8rMO*u0D`3^;xMvy@rg8 z>?8avGDbWk{FTDDr>V;UdqU+;0~ybsU1_^9YCg+8ZrEwax!pA_{3zKxx8ariSrgsG z8;dUhY{6LzNx7Ecuqh2mxBN9CIbNl|YpC{o+(gJBr{2*$|B#Zm!|;=!`k?AAfLi_T z@B}v9R!&cW|H?=d4-(KerT7Td*cz}aA$H=L;dH0lLLF@Kw%~s;kPy)&0Poh zw_W{iPMbeYNI+bmdR86K);_828}w1H{gzpPGWe(O8PL5wfRlyE$NBi3Lnu*g55$~AY0PweTcxrsFXvZ7(zBW&kH^-5BH_=|F z(505@9s@<`X|32GOi_9tk=fLvOyvvt>Cc(~ZC~d7jQ#pZCS@_~NQtp5NL$O@5a!sV z|Ju~u0_`t3ozk?=F!=rJst_>lVlb z3Cg8bo{C3 zzWSWZzLX4Y@wMcP?vKbMHV0B?%9oI4>UXiq+>bLl5as>`5U?AHI$hX3!+@o>ey04R}2_HVy=1)`z0h8_{&gWa3PTLm5ra+$O&=VjJ#$Y;CvKfVCu zldgH++I-o2UHQsp)q6LnW~y)0NvWnod%obgXQ zNL9TCaHaX+YIB%)Eemlh606@JF(#uA3hZgb^5~%7xYpK95#~j#+N>%w7PL4FHzc|&XY=AEpNt4{Nnrs4dU$6&|=7Lv&L`K3P{T zYm0-O^K*KmAvz6!t8ko0f+@X~`W0+DnSVPEn6S;%Z3f2`elyH$*#I^Q2T(O;FEF8` zVzA2U`@uNVTEIoGqup>^oG%?)dJxDC3keK`u@JwLjo7N(FEmKQd1XJ+^Ndu}F)zQi z*fDpW7e;lFc#Ew3U4NH1%9noch>m)j<8XHVW2-Kvr;sqh@jCfkJLNZGa1nll7r@I^ z2luMt!c5=wzQ=q{5FatH-MCCIPwsk5f79+exoFX5JN45r9U$P%4~5Vk-xtkMs=I1o zJDuZ9cT?Ziqa@`5d@{=S$E`NTFEqHzIBbDvjw(dRtj^>A!qi<8^Q*>O;xR+?hNi2z zs-OX`CFT6R8FJbKP%j@jd8lA-}He>)gVri zYs-x{uCCBWd7`F94zi8gwNKOIa)EK956lR5D^urJFBkSE8Z!;AADYhRX}B9L8E5)E ztq`3hrt?5D0S2_{h^+N~n3r)5xo6g+^8kqZ+JOfPBEI!x zpEJ6X#OS1AC9I7|LXetlifh-79Ggkg);Aj+Sq+C{r?}ec45Q<_z4;t%<_9oFlsBWn z&RxrGBai@nu-+>Z{@__gQPW52n8z|jAx_#i=szq%`BT(=d&A0s=Q~mdn3GSj6^Ibt zT<8%>qRDMD+vxQ1@`M4HfQ*mljCaK{H7>YLT?Odl(RPg_Oc++_W=re&oI6KfkL{|& z*H8ik+;RKYXyIm$Xe%#gzcuGQl@>IG-Vd)~R0=Q&wa?Wr(e#T;P~-C*_;4 zV4*s9E$W{B1HGQ$uS-%_e|MM%9{M9U%LV@(aZ0M2lbMOWDi{mYoy-2ALStbQ(Gz^j z*I?PpevQ80 zC{WH!7%(rcQibr2hL<(ZPE2c-sn^qVho^4uVyC@=T?Ir~^4Mu%nGSeFy8*69Cui&f zSVj6sbTHD?4WI;S1p)-HSSQm zon0~;VN`|Bk8tBCD%>~oYdBSA*7Z0;Fo#kB@7J~P3W6GSEmM;D2rj4r!4T=LJbxw9 zJvRK-Mu*JZ;cDsa2MHn_FIV$I`c2SE&!p7jPgXI~@WI*}XSq*8pDFRrQwSpLf+!J> zNcBHIte%$#YpPr5)j$L(CnXqg%rgb3W;yt|~ z3|h0gW7>4~(@)k>O9gG#4)!>}z}h48zr8|IF&n$AbvFvqS&!pw&0Su>hPj2DcL4FFEN>5js+gNx}n^-B25fWS!ifV|yiJqA_qrMFgIN6Z$NE%GZ#bzoYKa zzTU*OD)dpfL>!rK(9;!zbCEXEP`^126nCNl&t7zise@U5zf#g?y-jK2ED_Id512)6 z9Um#ni->y;aY(;@jusoEGSD_OZmuk-<>GOHF80`0C%++!b}6dG-!1pa-A%X z$BnURhlvd@=z4dv=2j<^12j<@9X7%j7h$A?Ys&Ug6-Nk#19J1(3K zf=o_hKIZ$yDMvc3X(+h`d4H2+V2APYipSO>_+p;y*?LFZ-1)j&L;8}c>50-1ript= zab<0834vDOM$h(oRBo&CNWUwn^fS_K%cIs4+HSW~)Nna#&||3r*F2F&Plu|fLSx#{ z%E_Wj5LHmo65C~(h{VNDDt0ZTU!=6ddg~I=*{Z|`b|nLQ2{TnlLU{pxFR>NeDb0nu z#uZA!KB_AI`*h7iWOSG$K1w zL2XbTxqZQUKOi3U{KiM$1aKbdmK!_A(}yCv@~WP^+|^m}y&2h_Fhl@^6ftD&p?^i` zHw-bGv@P6#kkW?$Aj2Pd!EHekfWiRCv<{{C2T->v0C=CcU$wN5*Gj)lDGQrH(kTbm zjR(V1h}P^~$xHL{*QYp%Q(2i<`pUG|6SnYOdD+ak$L8NrI4?k{mJAByleTa3w6Nf~ zs6_fo)b2SzCMltS0Pa>4&db-}%K3SMvi~Q^O_u+^Bu~_HfTn#{(w{LO5S?c?-oPaV zzL>QA9Q%G)vQCQcm)`-#14!k38|Q^aP4W*d+th1}Q%aajedPmFBL7g2< zhXSYY%X-w7wq=6vi}R*L-`9p;PrXCbB{uNV*VR?FtsKIo6!|T zjRYv@NCog?rhLt2{C+Nq0e_amQFb>wi88^y6iy=0r?iz_`s0oG8YAF&{3LKO1rNm? z#c96xu2d8qUCn@B*aoZ*rUH3+-C`Ij!8C#Wk-0EsR=|81sL$Hs`x!Mb-w=W+evq(M{_jv+iTLE6Gtg~&=8OfjEO$7P{5|9mt#}Pm)W?Aw zm5%Te0(`9G&Aa%_A?4yZoWe$NE=XpE25>zeP^ypkOJ=R;80!iw-aHI%EpC5c&jBZ8zmD6+=L1 z#-5VY>M(X;-L3)QY{Q_=?{#XOZ;N)99HtsO4{1&G4LtU9^$O>hJ~o($uH2n-ntF?s zW6;LLz*#(M)=B$48_4EZ+e&O-EZnUV(Y@(3ZV{7#eBzZXHqJB3-`R%4Xa6Ylj!-@K z=Zf+cjYvp+FBC^T^PJKnnXZA{1ib8JcbMzFGykQMoGz7sJ@E*%Ds?hJkD0mDBNOT^ zC75L_T|rYq3DwCWb;t&og*<0><_l`oYbL|oe-CzKcLiRfU%m9*$U)ukog>Ev{*634 z;N7sJlH^6c?qwCLNm`CP<7|Jk49y@N_mP$vJQZQ4(P%<=z5Dc&a7c0Ne@pQNiwER; z!`8QVX#b@;RZS2p#>tS0R;9@@yRFpT+s@aG+$_lIN%&$UnYuaDRKlGY9y5Cqin3O$ z(ZNG(C|BW;<=!xMb>ZcLZ_s@A?5V|6gEjaX)18YzE;kSzohLgW9^PRk@pP6k%rrfc zvznJcCy4O_ACEH``WFjix35YevUN?zuyW&lnIQo;=c{}|FzClCIpUF6D#}W+n$mN{ zSw4M>(URcbWIbL?$Ed!kv?QKA^m`}aCK(5o4M$AaPUEM7T!f{1`O2d>+ChGYM{+R1 zTeD(QhCah+JpVCYlXiMxdAZ^VjEQGc;bz$WZ!2NId4k7L-ZbbUv&ndNMHKP6E2~3V z9%kqR`&QEQ40C!kpBHjdc7XGbg3wA>mO))4n0|i!)93KkZ%Ixt*{Y~yh$clHOX(1f z*igNbxdsK?6~dVFWYGFTi{=(Tgl)QbuHqIh1Mej-vMC(qUm=6^2>C=dk!KsUuC^)t zTXVKz4?D*y7=EbXn2+y7Wl{*}$9^*9Lpj5YDfd-WXqDwy!iS|i!5&rq9*J0Fb(XZz zf#ktI!9AN*_)8=fcdUC~A11sp`Nq4?si&2>5g-%yb93aXL7FbkoftrdfUj~Og@wNo zL&ly(h7*{#*oaG@wpgJJE1V(re=g`+Iss{Nb%YPO3;@|NrcYmGpea3)pY9dSS0<&L zK$SY6DGV=N8ciJ4#g&c9P(9TSi@Q*Bn>q>KN@44D=~rxQ%9pkFWMX?&=5&F*+IZn! zK63deMzgBp6J#Im0sfcMB~Xac6@3&<&aTX;EVO|n!q3s6+xO_<^uFMY5-FX0)#%PB z*#zcyEmB;kKnqESCgjg@Rf~qqBXLhdGS5C2z`xie^n9jt$|HMG_-`%#G1rgewP-%9wJ-zW4re5CVepZ1r|8U-p6X>s*x(v9#mi1 zReg4#xv@v5?voMI9TYIfsC2vpd3!!7?qeY%<3JJ9`yHMH}0=>rq&ipg6jMX}(ADZ@~G`74HeEMYyq@b-@RpvDNo1OA5_ zlTK}2nKx0*{X8n?yYe8nv8UU*(Ygmf{dv*aQqi5d>nL)ie5QUbQRqi`B_f`ojE4mL zLUrfMXKbOi6scuyj-TQdT;NkpdpB8D;bvWfv#)5gHsRd+$xm^fJ4DgJneDLBd zzhg`|df}<=g4wu&Bp#c(-NS_@n>y3MtCdyuOCCAn{mLGXs8D=9CnBTOp1RUgk`>q^ zO_a5c*j^rKp|z%o?!wR``v0o_16IkKvN5QE`ppqv1|}niVrEkhXZLz3U(AD`?6O

        4T~)NB#pi$-n`MPd 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 u`bS;A;A*> diff --git a/tools/evil-spammer/evil-spammer.log b/tools/evil-spammer/evil-spammer.log deleted file mode 100644 index e7eb8052b..000000000 --- a/tools/evil-spammer/evil-spammer.log +++ /dev/null @@ -1,124 +0,0 @@ -2023-08-22T12:57:28+02:00 INFO main script basic -2023-08-22T12:57:57+02:00 INFO main script basic -2023-08-22T12:57:57+02:00 INFO main Start spamming with rate: 50, time unit: 1s, and spamming type: blk. -2023-08-22T12:57:57+02:00 INFO Spammer Start spamming transactions with 50 rate -2023-08-22T12:57:59+02:00 DEBUG Spammer Last sent block, ID: 0x038fde33b595eb37148ad31d1c59a7b3c8e5c1f98692a023480f6ff3676c1cba0b00000000000000; blkCount: 100 -2023-08-22T12:58:01+02:00 DEBUG Spammer Last sent block, ID: 0x581f270df155a2389f5176d7102c249546fcefa3218ca6c98790b3d0dd5276500b00000000000000; blkCount: 200 -2023-08-22T12:58:03+02:00 DEBUG Spammer Last sent block, ID: 0x4d6ba47ae5264c7cb6af06e5489cae87c5259923866e928c546ac68b881ee3690c00000000000000; blkCount: 300 -2023-08-22T12:58:05+02:00 DEBUG Spammer Last sent block, ID: 0x9f613651bc5e1726aa0de90ede8843cb913e7f689f3f42df99e0e4f5f206ed0c0c00000000000000; blkCount: 400 -2023-08-22T12:58:07+02:00 DEBUG Spammer Last sent block, ID: 0x4a4f77c0bb64f7ea321f46a6746b8a47408a9f455eed9d691819fc385530e1ae0c00000000000000; blkCount: 500 -2023-08-22T12:58:09+02:00 DEBUG Spammer Last sent block, ID: 0xd7b12163b5fc6866805911cd09743cd8fcf824c25a3d692b34a6e59f25a553260c00000000000000; blkCount: 600 -2023-08-22T12:58:11+02:00 DEBUG Spammer Last sent block, ID: 0x6bc1fcdf3b49ace2f22ba5532d55fb0ba57026b5bef2ec70d758844b31ee14160c00000000000000; blkCount: 700 -2023-08-22T12:58:13+02:00 DEBUG Spammer Last sent block, ID: 0xd1e53bbf829c70bdf70b7649ae6de7b6cfb26992487b44813c34696a54887dba0d00000000000000; blkCount: 800 -2023-08-22T12:58:15+02:00 DEBUG Spammer Last sent block, ID: 0x095ad5be3c60f933f576a7012f32cc808095315b606e78b0e1e01bb4a3be49660d00000000000000; blkCount: 900 -2023-08-22T12:58:17+02:00 DEBUG Spammer Last sent block, ID: 0x7b7a7b29c50eb430c7195916dfcafdf1c50ee9b74fb5c869f3bbadf5b66c09960d00000000000000; blkCount: 1000 -2023-08-22T12:58:19+02:00 DEBUG Spammer Last sent block, ID: 0x391735e660e4ac09df9932688d0492535c62a4045ead9ac525d9ae5f86ac655a0d00000000000000; blkCount: 1100 -2023-08-22T12:58:21+02:00 DEBUG Spammer Last sent block, ID: 0x3d446e6519983bb3ff6967c86bfb14bf695da43ad189e868deb3dc12195878600d00000000000000; blkCount: 1200 -2023-08-22T12:58:23+02:00 DEBUG Spammer Last sent block, ID: 0xbd3a87f40ef5d987d9f30c19c6728242f56999249adf645850d4d10d074890350e00000000000000; blkCount: 1300 -2023-08-22T12:58:25+02:00 DEBUG Spammer Last sent block, ID: 0x374512f1dfe4f5ff31bcf72a4e9036e0246ffd3b44dc534eb1bf87acca3d67de0e00000000000000; blkCount: 1400 -2023-08-22T12:58:27+02:00 INFO Spammer Blocks issued so far: 1497, errors encountered: 0 -2023-08-22T12:58:27+02:00 DEBUG Spammer Last sent block, ID: 0x3473bf9eb8b04f565879a6c7fb091a3d73e09e110af7c2d68478501300ad229c0e00000000000000; blkCount: 1500 -2023-08-22T12:58:29+02:00 DEBUG Spammer Last sent block, ID: 0x627c14f01657c67601b140a8f157b26ed40f30ec055f237e2258a31c0359bc9c0e00000000000000; blkCount: 1600 -2023-08-22T12:58:31+02:00 DEBUG Spammer Last sent block, ID: 0x4dba3ab6f8025e9629b212e3d9edd4967d6f761bdc264abb15048baefa577d6b0e00000000000000; blkCount: 1700 -2023-08-22T12:58:33+02:00 DEBUG Spammer Last sent block, ID: 0x60e31ed2737ff545bd09a9593111b3be17613613178b066a00872e8539c1e9fd0f00000000000000; blkCount: 1800 -2023-08-22T12:58:35+02:00 DEBUG Spammer Last sent block, ID: 0xdb6da90c1eac3ce53f085734b8b0e3a863d24f66258d9128ddb883911fb8f77c0f00000000000000; blkCount: 1900 -2023-08-22T12:58:37+02:00 DEBUG Spammer Last sent block, ID: 0xb2ea9c50467a897a08bb07d5758afa2033c6ec028da04194ae1507a431c8ea320f00000000000000; blkCount: 2000 -2023-08-22T12:58:39+02:00 DEBUG Spammer Last sent block, ID: 0xe452fb56386b2c2ecec9d95c07f9717ce64c68b45ec084801421f7fea3282fc40f00000000000000; blkCount: 2100 -2023-08-22T12:58:41+02:00 DEBUG Spammer Last sent block, ID: 0x5a542c7c6cc5eb3ebcb2e1e6c8e5bded4c986310d7942e0ee9ba180befc872010f00000000000000; blkCount: 2200 -2023-08-22T12:58:43+02:00 DEBUG Spammer Last sent block, ID: 0x03ea628b29ec60057b0ca10419fa2463d9246b73bfe0381cdb63e88e97e62bc01000000000000000; blkCount: 2300 -2023-08-22T12:58:45+02:00 DEBUG Spammer Last sent block, ID: 0x84da431409a82198a809c94c9b26bd5ccf411ce60c6b8d4fe687cab1c4650aeb1000000000000000; blkCount: 2400 -2023-08-22T12:58:47+02:00 DEBUG Spammer Last sent block, ID: 0x04fd13cad6cd54be7ffc8e8699d8f4ca20b71beed218a4ce795137797839b7f11000000000000000; blkCount: 2500 -2023-08-22T12:58:49+02:00 DEBUG Spammer Last sent block, ID: 0xa5e79321d2f7ad779d65219ddd99d73804262db4f63ed4f4b28d48a442fc99321000000000000000; blkCount: 2600 -2023-08-22T12:58:51+02:00 DEBUG Spammer Last sent block, ID: 0x28cf7e42c0e3b6a9e9183f08670f80769a94b2c47e816bd3ba002d3ae6a720991000000000000000; blkCount: 2700 -2023-08-22T12:58:53+02:00 DEBUG Spammer Last sent block, ID: 0x9484f3879e5206d1b94849e6d56581f043c333ec96f549015b51cbce675eaf041100000000000000; blkCount: 2800 -2023-08-22T12:58:55+02:00 DEBUG Spammer Last sent block, ID: 0x87adf4ee8179dbaff787a8c259d81f2710a47afa40b38908acaccad10e4827e21100000000000000; blkCount: 2900 -2023-08-22T12:58:57+02:00 INFO Spammer Blocks issued so far: 2998, errors encountered: 0 -2023-08-22T12:58:57+02:00 DEBUG Spammer Last sent block, ID: 0xb2a3793334fd8fc7aaf3e9ed378d3313f0311ac89dc43303f6e643b64580e54f1100000000000000; blkCount: 3000 -2023-08-22T12:58:59+02:00 DEBUG Spammer Last sent block, ID: 0x4a21e097631832b64021a237e30371a720ad2ba99b9c466a2b532b3939c462261100000000000000; blkCount: 3100 -2023-08-22T12:59:01+02:00 DEBUG Spammer Last sent block, ID: 0x15bcf02b9296108f46bc5843bf89a39ad667c32c30bc4e1b557606a2bd9a86761100000000000000; blkCount: 3200 -2023-08-22T12:59:03+02:00 DEBUG Spammer Last sent block, ID: 0x9ba8092361455c0e648f7ac1853b2fc3b326a955736239088d9a7bb55fcfadc21200000000000000; blkCount: 3300 -2023-08-22T12:59:05+02:00 DEBUG Spammer Last sent block, ID: 0x0214efbf409bc75696e9e2f7580e6e85d9d93a599a49e1a1269b725a07007de01200000000000000; blkCount: 3400 -2023-08-22T12:59:07+02:00 DEBUG Spammer Last sent block, ID: 0x54c0eb18720eb7b20a1c8b95059a4f697de46d233d88fb000ca623707d8b369f1200000000000000; blkCount: 3500 -2023-08-22T12:59:09+02:00 DEBUG Spammer Last sent block, ID: 0xdc06e60ad327994ce73e586d7d0c766611c8b708bd98fa384af9f00b3d48103b1200000000000000; blkCount: 3600 -2023-08-22T12:59:11+02:00 DEBUG Spammer Last sent block, ID: 0x61c47ac220cd5a7af6f2181edd503f15555e3e9127ab2baa9a2aa8eae6d061261200000000000000; blkCount: 3700 -2023-08-22T12:59:13+02:00 DEBUG Spammer Last sent block, ID: 0xdd0ca64c3b35febaa2960613f4ce6a4c5be2736c62a0611f132982d5c1ec8dbe1300000000000000; blkCount: 3800 -2023-08-22T12:59:15+02:00 DEBUG Spammer Last sent block, ID: 0x7c6136a0352b6d0088197405145b9b437e07aa192199bb6a6a0b63b9e3f6b9901300000000000000; blkCount: 3900 -2023-08-22T12:59:17+02:00 DEBUG Spammer Last sent block, ID: 0x68e32a9226c10667d698879fd5c53b37f2d5eb6b0fd85cc139ef236f5f09b1c01300000000000000; blkCount: 4000 -2023-08-22T12:59:19+02:00 DEBUG Spammer Last sent block, ID: 0x8d6fb677ee6818b677fbb7c6b5dfb45563fce721037163b70159f165047dbd1d1300000000000000; blkCount: 4100 -2023-08-22T12:59:21+02:00 DEBUG Spammer Last sent block, ID: 0xfc6f55fe482e227d69e060bc1f192e6a78b139c03b50ade2268e559ca648a92d1300000000000000; blkCount: 4200 -2023-08-22T12:59:23+02:00 DEBUG Spammer Last sent block, ID: 0x09c8a4142a8897aa7245a54799ae6b8ed597b8ee83fb78b9d24ed4067967850d1400000000000000; blkCount: 4300 -2023-08-22T12:59:25+02:00 DEBUG Spammer Last sent block, ID: 0x990c9c01715fba5bf101d0e0a54affc1e312dae8e6be0e104e5555a2948673761400000000000000; blkCount: 4400 -2023-08-22T12:59:27+02:00 INFO Spammer Blocks issued so far: 4498, errors encountered: 0 -2023-08-22T12:59:27+02:00 DEBUG Spammer Last sent block, ID: 0xf1fc9c635c417063d77a8bc8ba77209cd7e4e21fdd6d421d0a45871d0b8767621400000000000000; blkCount: 4500 -2023-08-22T12:59:29+02:00 DEBUG Spammer Last sent block, ID: 0x395947f8ac9b5cf1797e18ad56b0f18211db8fa670f22b7c52a2c83454d902bb1400000000000000; blkCount: 4600 -2023-08-22T12:59:31+02:00 DEBUG Spammer Last sent block, ID: 0x2d005f35ac3bb8059867e06957ed2e3efd8d5ea1060b3872a19f15b4b392aaad1400000000000000; blkCount: 4700 -2023-08-22T12:59:33+02:00 DEBUG Spammer Last sent block, ID: 0xb831ef0af7bd491a2cb3be968542f757881cd798de7930fb9426b9ca25e23fcb1500000000000000; blkCount: 4800 -2023-08-22T12:59:35+02:00 DEBUG Spammer Last sent block, ID: 0x74979a3e9d11df89e674b60331433e3bdd1f746bd4cf7c0f57e8a3b94037d42f1500000000000000; blkCount: 4900 -2023-08-22T22:55:33+02:00 INFO main script basic -2023-08-22T22:55:33+02:00 INFO main Start spamming with rate: 50, time unit: 1s, and spamming type: blk. -2023-08-22T22:55:33+02:00 INFO Spammer Start spamming transactions with 50 rate -2023-08-22T22:55:35+02:00 DEBUG Spammer Last sent block, ID: 0x5a7baf9bd75205b8b2873ca1141eb3afa8b10d8466557d484e19365f18a1ec5c0a00000000000000; blkCount: 100 -2023-08-22T22:55:37+02:00 DEBUG Spammer Last sent block, ID: 0x43bcf83d0264242523c32dd7df259d963c68cc60ec298c53cdae7d579b21f9cb0a00000000000000; blkCount: 200 -2023-08-22T22:55:39+02:00 DEBUG Spammer Last sent block, ID: 0x31ddef7ba54ab8220fb2fce6cc32adf5728b53e03313be77e812f3004ebe4eb20a00000000000000; blkCount: 300 -2023-08-22T22:55:41+02:00 DEBUG Spammer Last sent block, ID: 0x656d18570480de55ea274ac987f078cc178d1e3149c327278811f7489fd523f40a00000000000000; blkCount: 400 -2023-08-22T22:55:43+02:00 DEBUG Spammer Last sent block, ID: 0x02db8075d14915d4761e45b0facb23abf875d0235bd43a0e96ca708c62e901fa0b00000000000000; blkCount: 500 -2023-08-22T22:55:45+02:00 DEBUG Spammer Last sent block, ID: 0x9b2750b6d93353bf934d85c602915167effc05d44888276c797fc0def6ab95420b00000000000000; blkCount: 600 -2023-08-22T22:55:47+02:00 DEBUG Spammer Last sent block, ID: 0x9c014b3adabbbaf3880cd7b3d2c69c65676a61826cf02ec92c3d468e6ccc59740b00000000000000; blkCount: 700 -2023-08-22T22:55:49+02:00 DEBUG Spammer Last sent block, ID: 0xf207d56fed1a5c15b21d90885f8d976487678487190fad6c0ad68c8ef1094de10b00000000000000; blkCount: 800 -2023-08-22T22:55:51+02:00 DEBUG Spammer Last sent block, ID: 0xa1cfe5bce31cd1c45ead4fa92dc18f539be0488a0d9906cc8f2c0b725e4249f10b00000000000000; blkCount: 900 -2023-08-22T22:55:53+02:00 DEBUG Spammer Last sent block, ID: 0x03ba56c5a16dbd60ccc26dd11a0f1ca845df0e75f72bf81407675d5af331b9920c00000000000000; blkCount: 1000 -2023-08-22T22:55:55+02:00 DEBUG Spammer Last sent block, ID: 0xd2d8dd0d98544d5830467036499fae3a9df1bc83d3fb562ba157fdb0ab46245e0c00000000000000; blkCount: 1100 -2023-08-22T22:55:57+02:00 DEBUG Spammer Last sent block, ID: 0x01fa45d339eb69e8f9e90f57ae36dd3a284985089dbe80b5b2646ff2e0d2fd5f0c00000000000000; blkCount: 1200 -2023-08-22T22:55:59+02:00 DEBUG Spammer Last sent block, ID: 0x587746afab9aa4bcc49b282ff50a27211c550172c108a2f908fdf9a60da073d90c00000000000000; blkCount: 1300 -2023-08-22T22:56:01+02:00 DEBUG Spammer Last sent block, ID: 0xc22baff7a9df2feb63e0ce035b00f7e45186cfea996288bbfce6e8dce0fd0dcf0c00000000000000; blkCount: 1400 -2023-08-22T22:56:03+02:00 INFO Spammer Blocks issued so far: 1499, errors encountered: 0 -2023-08-22T22:56:03+02:00 DEBUG Spammer Last sent block, ID: 0x1005fd0a8d8febd82749f3b5094b871d72b8502e1e69dfb7c5bc47b7a482ca4e0d00000000000000; blkCount: 1500 -2023-08-22T22:56:05+02:00 DEBUG Spammer Last sent block, ID: 0x050a1ab385a20b17b58ff4539db37f75ea896edc8c4eacbc63ac9434c042d8e30d00000000000000; blkCount: 1600 -2023-08-22T22:56:07+02:00 DEBUG Spammer Last sent block, ID: 0x43b998d9db511493a5853ede42dc8b348d43494c664bf473bc3a5f11cf4e39030d00000000000000; blkCount: 1700 -2023-08-22T22:56:09+02:00 DEBUG Spammer Last sent block, ID: 0x6034baab001073612506794a2be8b001962a5b21b8ef893257fe52697c69b9470d00000000000000; blkCount: 1800 -2023-08-22T22:56:11+02:00 DEBUG Spammer Last sent block, ID: 0xb218e94b0323f43f5f80772f8491d1142fa51e5fae50145a2fb1e40cd441ad7d0d00000000000000; blkCount: 1900 -2023-08-22T22:56:13+02:00 DEBUG Spammer Last sent block, ID: 0x50466d10d8c2a866d0b1fef5dddf7912b6853cc64b29149d79550a7832cbe3fe0e00000000000000; blkCount: 2000 -2023-08-22T22:56:15+02:00 DEBUG Spammer Last sent block, ID: 0xc41230d51a43c2d13c72037a1812e16da9ae4dcaeb9ccf902f74e946b1019b920e00000000000000; blkCount: 2100 -2023-08-22T22:56:17+02:00 DEBUG Spammer Last sent block, ID: 0xec37e5c09ef4d577cc851b6d45266fb5dd94780bef9052925cb584ab8d0b0a860e00000000000000; blkCount: 2200 -2023-08-22T22:56:19+02:00 DEBUG Spammer Last sent block, ID: 0xd6b78110cd87a1004a145d5dce943436188aca3e8899738cd4778c950827d2fd0e00000000000000; blkCount: 2300 -2023-08-22T22:56:21+02:00 DEBUG Spammer Last sent block, ID: 0x9d0e565ced4644d70d7ddd6bad38adcea1237808f66fd71b417f0e41784decf30e00000000000000; blkCount: 2400 -2023-08-22T22:56:23+02:00 DEBUG Spammer Last sent block, ID: 0xf94bb3279f53755a768733e10115f009136e60f11bee11ceb56a5d8bfcda1a550f00000000000000; blkCount: 2500 -2023-08-22T22:56:25+02:00 DEBUG Spammer Last sent block, ID: 0xf6f8923f17cb68f87f284d15c9ec3bac565f3482e82dda3a0b8cf4c472eb07060f00000000000000; blkCount: 2600 -2023-08-22T22:56:27+02:00 DEBUG Spammer Last sent block, ID: 0x5991df150383d4304430329f3d264d479c263afad0495f1bf296b14ceb21fd6b0f00000000000000; blkCount: 2700 -2023-08-22T22:56:29+02:00 DEBUG Spammer Last sent block, ID: 0x5cbaedd89f30d955e25d54f48df977ed31c7e2264d1f5b99fc14c10c947f71ac0f00000000000000; blkCount: 2800 -2023-08-22T22:56:31+02:00 DEBUG Spammer Last sent block, ID: 0x4a751575603aeba93f5a04360c943e779ef11b78692ba842e0574257bb8687000f00000000000000; blkCount: 2900 -2023-08-22T22:56:33+02:00 INFO Spammer Blocks issued so far: 2999, errors encountered: 0 -2023-08-22T22:56:33+02:00 DEBUG Spammer Last sent block, ID: 0xa10ee45295acab9c6e928348a6e6afe2c3f867b6714b37270c848f49f74fedc31000000000000000; blkCount: 3000 -2023-08-22T22:56:35+02:00 DEBUG Spammer Last sent block, ID: 0x4c4741afff8bd104ad526ead89664e58fba60042576cdd594f1c9126219a9b1e1000000000000000; blkCount: 3100 -2023-08-22T22:56:37+02:00 DEBUG Spammer Last sent block, ID: 0x1e60b338c64db6482f9b595e676afe5cd69933ed4862ce7418790e7a47d608931000000000000000; blkCount: 3200 -2023-08-22T22:56:39+02:00 DEBUG Spammer Last sent block, ID: 0x829a5ebec21bedbd31934c097f97477453439b734e71ed77a4f5d18a2a037d1a1000000000000000; blkCount: 3300 -2023-08-22T22:56:41+02:00 DEBUG Spammer Last sent block, ID: 0x8411be55c6438d87780a21596ab0cfc8278ff90852e8be760bfe0875c5083e1c1000000000000000; blkCount: 3400 -2023-08-22T22:56:43+02:00 DEBUG Spammer Last sent block, ID: 0x10e0b7f5c12969e8a35af1d71aeae72e3577093c3ada1012b7c83884e4b427781100000000000000; blkCount: 3500 -2023-08-22T22:56:45+02:00 DEBUG Spammer Last sent block, ID: 0xa020e41f09cd80e00973d01aa1271ab1de98a480c11d5a517b99a3fa9c7279d71100000000000000; blkCount: 3600 -2023-08-22T22:56:47+02:00 DEBUG Spammer Last sent block, ID: 0xee22265c46efe359c9a0506347e49e04698436d8e1854243c1878c29577d8fce1100000000000000; blkCount: 3700 -2023-08-22T22:56:49+02:00 DEBUG Spammer Last sent block, ID: 0x0ed13ffd5d651ec68a136465b2c5bfb2e7a685a9563515e9a0dac38279c2c4001100000000000000; blkCount: 3800 -2023-08-22T22:56:51+02:00 DEBUG Spammer Last sent block, ID: 0xf388b930e7effd3294c86aafdac9aca7a2700b43fbdf3cf89a37b8d049cfa00d1100000000000000; blkCount: 3900 -2023-08-22T22:56:53+02:00 DEBUG Spammer Last sent block, ID: 0xe06627df683ec16a3010f9218c21538f67161312a828c9feb7d18be9cb8579cc1200000000000000; blkCount: 4000 -2023-08-22T22:56:55+02:00 DEBUG Spammer Last sent block, ID: 0x976ff7f1f1595e644c29a2f9501e233af0199dd94531970daf815e844fe929c91200000000000000; blkCount: 4100 -2023-08-22T22:56:57+02:00 DEBUG Spammer Last sent block, ID: 0x2a4a8803a2c6dfe53f7ccd79e978ca882b92ebff4657b10bc2d057c7b1308e201200000000000000; blkCount: 4200 -2023-08-22T22:56:59+02:00 DEBUG Spammer Last sent block, ID: 0xfe1c47b1d2616078fce1b519e710fdee994a850f396707595c7706cd39bba7fd1200000000000000; blkCount: 4300 -2023-08-22T22:57:01+02:00 DEBUG Spammer Last sent block, ID: 0x8b82935b9414ea0f69186d998e99bb2114cf7a4f9601fb09c416065b3e8773c61200000000000000; blkCount: 4400 -2023-08-22T22:57:03+02:00 INFO Spammer Blocks issued so far: 4499, errors encountered: 0 -2023-08-22T22:57:03+02:00 DEBUG Spammer Last sent block, ID: 0x8820d341a4c792348f10d740828a210a25e39f98318c189fa901132550bb04551300000000000000; blkCount: 4500 -2023-08-22T22:57:05+02:00 DEBUG Spammer Last sent block, ID: 0xb7fe431dc0ae00ffa188d8ac2a9daab7cd1111587d1d6cdb92dae32c0ca0d3521300000000000000; blkCount: 4600 -2023-08-22T22:57:07+02:00 DEBUG Spammer Last sent block, ID: 0x5c3e36356f0830ec3b15545d4b7f7517a241913c185c4ac8bbca3c22917f4a3c1300000000000000; blkCount: 4700 -2023-08-22T22:57:09+02:00 DEBUG Spammer Last sent block, ID: 0xf122b547fa15ba118045465c004051257e3deed8343e692a6f4b409511c9b64f1300000000000000; blkCount: 4800 -2023-08-22T22:57:11+02:00 DEBUG Spammer Last sent block, ID: 0x205d6a3fddeba1bcc7a8bfd24d4964a1b1f35fe3ede093db2ef2584e9e692fbd1300000000000000; blkCount: 4900 -2023-08-22T22:57:13+02:00 DEBUG Spammer Last sent block, ID: 0xeda2ce5ce9013e651521632c68c0700ecfc4db3410d05035071886b950c065b01400000000000000; blkCount: 5000 -2023-08-22T22:57:15+02:00 DEBUG Spammer Last sent block, ID: 0xac0d991bcabefd6685c4a558d910e54bcb46002b57863f21a9844293867c9f111400000000000000; blkCount: 5100 -2023-08-22T22:57:17+02:00 DEBUG Spammer Last sent block, ID: 0xaff2f1476b447e2f80a28e94587b716ccdb3916017670c396f417ea70236d03a1400000000000000; blkCount: 5200 -2023-08-22T22:57:19+02:00 DEBUG Spammer Last sent block, ID: 0x31681b506adf32a228195f06fe93b70fb02026aee2375da26f8c7db56d9ad23a1400000000000000; blkCount: 5300 -2023-08-22T22:57:21+02:00 DEBUG Spammer Last sent block, ID: 0xff098db0afbdf705da9efd37fc8cd70555561084d7d3be8f3a615d71cf2934af1400000000000000; blkCount: 5400 -2023-08-22T22:57:23+02:00 DEBUG Spammer Last sent block, ID: 0xd8783a468e367e6996a39dfe6fd9113b576a55c1c63df3221d5da3ddb71e1b9d1500000000000000; blkCount: 5500 -2023-08-22T22:57:25+02:00 DEBUG Spammer Last sent block, ID: 0xe78c9ee3b38aaf26ddde90b0370542bedc7d8b5ff2ed8ae54844fa894c57aaf11500000000000000; blkCount: 5600 -2023-08-22T22:57:27+02:00 DEBUG Spammer Last sent block, ID: 0x482a46771f665468033d30c15634e96a253d4e5919637ea0421eecfd3c4c61c71500000000000000; blkCount: 5700 -2023-08-22T22:57:29+02:00 DEBUG Spammer Last sent block, ID: 0xe00fcc9c6df8b5a0cabd4ce3e56f8615718c248849769ecd5135ef2f6e953f5a1500000000000000; blkCount: 5800 -2023-08-22T22:57:31+02:00 DEBUG Spammer Last sent block, ID: 0x54a2883de572693288823005f5e2263be547c384dbd6b697ed0e32eca5f0e42f1500000000000000; blkCount: 5900 -2023-08-22T22:57:33+02:00 INFO Spammer Blocks issued so far: 5999, errors encountered: 0 -2023-08-22T22:57:33+02:00 DEBUG Spammer Last sent block, ID: 0x1f40ce55a3fb8f03e74ad46a7909527e789cf1a0e1d83fb7c2655bc2910025b01600000000000000; blkCount: 6000 -2023-08-22T22:57:35+02:00 DEBUG Spammer Last sent block, ID: 0x946a2c5dabc16e2e715ff23f1a3703fb9f3e5ad02d649d906b8bfd245fa28bb11600000000000000; blkCount: 6100 From ac6a99359b8a1dbd092ca78e66ff4c86f705950a Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Mon, 4 Dec 2023 20:59:47 +0800 Subject: [PATCH 344/356] Fix deadlock --- pkg/protocol/protocol_warp_sync.go | 26 +++++++++++++++----------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index ac1326b84..e42f0c6e8 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -210,20 +210,24 @@ func (w *WarpSyncProtocol) ProcessResponse(commitmentID iotago.CommitmentID, blo } allBlocksNotarized.OnTrigger(func() { - // 3. Force commitment of the slot - producedCommitment, err := targetEngine.Notarization.ForceCommit(commitmentID.Slot()) - if err != nil { - w.protocol.LogError("failed to force commitment", "commitmentID", commitmentID, "err", err) + // This needs to happen in a separate worker since the trigger for block notarized while the lock in + // the notarization is still held. + w.workerPool.Submit(func() { + // 3. Force commitment of the slot + producedCommitment, err := targetEngine.Notarization.ForceCommit(commitmentID.Slot()) + if err != nil { + w.protocol.LogError("failed to force commitment", "commitmentID", commitmentID, "err", err) - return - } + return + } - // 4. Verify that the produced commitment is the same as the initially requested one - if producedCommitment.ID() != commitmentID { - w.protocol.LogError("commitment does not match", "expectedCommitmentID", commitmentID, "producedCommitmentID", producedCommitment.ID()) + // 4. Verify that the produced commitment is the same as the initially requested one + if producedCommitment.ID() != commitmentID { + w.protocol.LogError("commitment does not match", "expectedCommitmentID", commitmentID, "producedCommitmentID", producedCommitment.ID()) - return - } + return + } + }) }) } From a97b114373fd0d51d0115c416c96346435fc8c2d Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 20:09:36 +0100 Subject: [PATCH 345/356] Update pkg/protocol/chains.go Co-authored-by: Jonas Theis <4181434+jonastheis@users.noreply.github.com> --- pkg/protocol/chains.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index d41c4ebab..d1771b93e 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -22,7 +22,7 @@ type Chains struct { // Main contains the main chain. Main reactive.Variable[*Chain] - // HeaviestClaimedCandidate contains the candidate chain with the heaviest claimed weight. + // HeaviestClaimedCandidate contains the candidate chain with the heaviest claimed weight according to its latest commitment. The weight has neither been checked via attestations nor verified by downloading all data. HeaviestClaimedCandidate reactive.Variable[*Chain] // HeaviestAttestedCandidate contains the candidate chain with the heaviest attested weight. From 9c9d51e35ce8fbb8bdedd1f8363214c3bbf33ed8 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 20:10:14 +0100 Subject: [PATCH 346/356] Update pkg/protocol/chains.go Co-authored-by: Jonas Theis <4181434+jonastheis@users.noreply.github.com> --- pkg/protocol/chains.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index d1771b93e..3fe323fb9 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -25,7 +25,7 @@ type Chains struct { // HeaviestClaimedCandidate contains the candidate chain with the heaviest claimed weight according to its latest commitment. The weight has neither been checked via attestations nor verified by downloading all data. HeaviestClaimedCandidate reactive.Variable[*Chain] - // HeaviestAttestedCandidate contains the candidate chain with the heaviest attested weight. + // HeaviestAttestedCandidate contains the candidate chain with the heaviest weight as checked by attestations. The chain has not been instantiated into an engine yet. HeaviestAttestedCandidate reactive.Variable[*Chain] // HeaviestVerifiedCandidate contains the candidate chain with the heaviest verified weight. From cc008bc19da8f176e0bf7e4c765bb3df9e8504e9 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 20:13:06 +0100 Subject: [PATCH 347/356] Update pkg/protocol/chains.go Co-authored-by: Jonas Theis <4181434+jonastheis@users.noreply.github.com> --- pkg/protocol/chains.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 3fe323fb9..26fd1635d 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -28,7 +28,7 @@ type Chains struct { // HeaviestAttestedCandidate contains the candidate chain with the heaviest weight as checked by attestations. The chain has not been instantiated into an engine yet. HeaviestAttestedCandidate reactive.Variable[*Chain] - // HeaviestVerifiedCandidate contains the candidate chain with the heaviest verified weight. + // HeaviestVerifiedCandidate contains the candidate chain with the heaviest verified weight, meaning the chain has been instantiated into an engine and the commitments have been produced by the engine itself. HeaviestVerifiedCandidate reactive.Variable[*Chain] // LatestSeenSlot contains the slot of the latest commitment of any received block. From 5131ad46f77aa7113a8d802e2314e2ca32eccead Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Mon, 4 Dec 2023 20:13:36 +0100 Subject: [PATCH 348/356] Feat: addresse some remarks --- pkg/tests/loss_of_acceptance_test.go | 3 --- pkg/testsuite/storage_settings.go | 4 ---- 2 files changed, 7 deletions(-) diff --git a/pkg/tests/loss_of_acceptance_test.go b/pkg/tests/loss_of_acceptance_test.go index eae12a80c..2baef78b1 100644 --- a/pkg/tests/loss_of_acceptance_test.go +++ b/pkg/tests/loss_of_acceptance_test.go @@ -7,7 +7,6 @@ import ( "github.com/stretchr/testify/require" - "github.com/iotaledger/hive.go/log" "github.com/iotaledger/iota-core/pkg/protocol" "github.com/iotaledger/iota-core/pkg/testsuite" "github.com/iotaledger/iota-core/pkg/testsuite/mock" @@ -127,7 +126,6 @@ func TestLossOfAcceptanceFromSnapshot(t *testing.T) { node2 := ts.AddNode("node2") ts.Run(true, nil) - node2.Protocol.SetLogLevel(log.LevelTrace) // Issue up to slot 10, committing slot 8. { @@ -222,7 +220,6 @@ func TestLossOfAcceptanceWithRestartFromDisk(t *testing.T) { node2 := ts.AddNode("node2") ts.Run(true, nil) - node2.Protocol.SetLogLevel(log.LevelTrace) // Issue up to slot 10, committing slot 8. { diff --git a/pkg/testsuite/storage_settings.go b/pkg/testsuite/storage_settings.go index 956797be7..7345b1f52 100644 --- a/pkg/testsuite/storage_settings.go +++ b/pkg/testsuite/storage_settings.go @@ -1,8 +1,6 @@ package testsuite import ( - "fmt" - "github.com/iotaledger/hive.go/ierrors" "github.com/iotaledger/iota-core/pkg/testsuite/mock" iotago "github.com/iotaledger/iota.go/v4" @@ -129,8 +127,6 @@ func (t *TestSuite) AssertChainID(expectedChainID iotago.CommitmentID, nodes ... actualChainID := node.Protocol.Chains.Main.Get().ForkingPoint.Get().ID() if expectedChainID != actualChainID { - fmt.Println(expectedChainID, actualChainID) - return ierrors.Errorf("AssertChainID: %s: expected %s (index: %d), got %s (index: %d)", node.Name, expectedChainID, expectedChainID.Slot(), actualChainID, actualChainID.Slot()) } From 20574a5d7ebee4860b5fe97282de7a05162ad289 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 5 Dec 2023 01:06:15 +0100 Subject: [PATCH 349/356] Refactor: removed EarliestRootCommitment --- pkg/protocol/engine/engine.go | 44 ++++++++--------------------------- 1 file changed, 10 insertions(+), 34 deletions(-) diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index e7b8b6a30..0a72c1e25 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -1,7 +1,6 @@ package engine import ( - "fmt" "io" "os" "path/filepath" @@ -68,8 +67,13 @@ type Engine struct { Retainer retainer.Retainer SyncManager syncmanager.SyncManager UpgradeOrchestrator upgrade.Orchestrator - RootCommitment reactive.Variable[*model.Commitment] - LatestCommitment reactive.Variable[*model.Commitment] + + // RootCommitment contains the earliest commitment that that blocks we are solidifying will refer to, and is mainly + // used to determine the cut-off point for the actively managed commitments in the protocol. + RootCommitment reactive.Variable[*model.Commitment] + + // LatestCommitment contains the latest commitment that we have produced. + LatestCommitment reactive.Variable[*model.Commitment] Workers *workerpool.Group errorHandler func(error) @@ -498,34 +502,6 @@ func (e *Engine) setupPruning() { }, event.WithWorkerPool(e.Workers.CreatePool("PruneEngine", workerpool.WithWorkerCount(1)))) } -// EarliestRootCommitment is used to make sure that the chainManager knows the earliest possible -// commitment that blocks we are solidifying will refer to. Failing to do so will prevent those blocks -// from being processed as their chain will be deemed unsolid. -// lastFinalizedSlot is needed to make sure that the root commitment is not younger than the last finalized slot. -// If setting the root commitment based on the last evicted slot this basically means we won't be able to solidify another -// chain beyond a window based on eviction, which in turn is based on acceptance. In case of a partition, this behavior is -// clearly not desired. -func (e *Engine) EarliestRootCommitment(lastFinalizedSlot iotago.SlotIndex) (earliestCommitment *model.Commitment) { - api := e.APIForSlot(lastFinalizedSlot) - - genesisSlot := api.ProtocolParameters().GenesisSlot() - maxCommittableAge := api.ProtocolParameters().MaxCommittableAge() - - var earliestRootCommitmentSlot iotago.SlotIndex - if lastFinalizedSlot <= genesisSlot+maxCommittableAge { - earliestRootCommitmentSlot = genesisSlot - } else { - earliestRootCommitmentSlot = lastFinalizedSlot - maxCommittableAge - } - - rootCommitment, err := e.Storage.Commitments().Load(earliestRootCommitmentSlot) - if err != nil { - panic(fmt.Sprintf("could not load earliest commitment %d after engine initialization: %s", earliestRootCommitmentSlot, err)) - } - - return rootCommitment -} - func (e *Engine) ErrorHandler(componentName string) func(error) { return func(err error) { e.errorHandler(ierrors.Wrap(err, componentName)) @@ -580,8 +556,8 @@ func (e *Engine) initLatestCommitment() { }) } -func (e *Engine) initReactiveModule(logger log.Logger) (reactiveModule *module.ReactiveModule) { - logger, stopLogging := logger.NewEntityLogger("Engine") +func (e *Engine) initReactiveModule(parentLogger log.Logger) (reactiveModule *module.ReactiveModule) { + logger, unsubscribeFromParentLogger := parentLogger.NewEntityLogger("Engine") reactiveModule = module.NewReactiveModule(logger) e.RootCommitment.LogUpdates(reactiveModule, log.LevelTrace, "RootCommitment") @@ -590,7 +566,7 @@ func (e *Engine) initReactiveModule(logger log.Logger) (reactiveModule *module.R reactiveModule.Shutdown.OnTrigger(func() { reactiveModule.LogDebug("shutting down") - stopLogging() + unsubscribeFromParentLogger() // Shutdown should be performed in the reverse dataflow order. e.BlockRequester.Shutdown() From 3b422af4ef15a339e5b3e2ca5dae89ddae72923f Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 5 Dec 2023 03:29:24 +0100 Subject: [PATCH 350/356] Feat: addressed more remarks --- pkg/protocol/commitment.go | 7 +-- pkg/protocol/engine/engine.go | 11 ++-- pkg/protocol/engines.go | 95 +++++++++++++++++++++-------------- 3 files changed, 68 insertions(+), 45 deletions(-) diff --git a/pkg/protocol/commitment.go b/pkg/protocol/commitment.go index 6c2bb4584..a2df4e77e 100644 --- a/pkg/protocol/commitment.go +++ b/pkg/protocol/commitment.go @@ -164,9 +164,10 @@ func (c *Commitment) initDerivedProperties() (shutdown func()) { c.IsSynced.InheritFrom(c.IsVerified), c.Parent.WithNonEmptyValue(func(parent *Commitment) func() { - // the weight can be fixed as a one time operation (as it only relies on static information from the parent - // commitment) - c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) + // the weight can be fixed as a one time operation (it only relies on static information) + if parent.CumulativeWeight() < c.CumulativeWeight() { + c.Weight.Set(c.CumulativeWeight() - parent.CumulativeWeight()) + } return lo.Batch( parent.deriveChildren(c), diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index 0a72c1e25..1c5b31d1a 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -523,7 +523,12 @@ func (e *Engine) initRootCommitment() { return rootCommitment } - return lo.Return1(e.Storage.Commitments().Load(targetSlot)) + commitment, err := e.Storage.Commitments().Load(targetSlot) + if err != nil { + e.LogError("failed to load root commitment", "slot", targetSlot, "err", err) + } + + return commitment }) } @@ -540,8 +545,8 @@ func (e *Engine) initRootCommitment() { func (e *Engine) initLatestCommitment() { updateLatestCommitment := func(latestCommitment *model.Commitment) { - e.LatestCommitment.Compute(func(currentLatestComponent *model.Commitment) *model.Commitment { - return lo.Cond(currentLatestComponent == nil || currentLatestComponent.Slot() < latestCommitment.Slot(), latestCommitment, currentLatestComponent) + e.LatestCommitment.Compute(func(currentLatestCommitment *model.Commitment) *model.Commitment { + return lo.Cond(currentLatestCommitment == nil || currentLatestCommitment.Slot() < latestCommitment.Slot(), latestCommitment, currentLatestCommitment) }) } diff --git a/pkg/protocol/engines.go b/pkg/protocol/engines.go index 781dc0d32..847713cd2 100644 --- a/pkg/protocol/engines.go +++ b/pkg/protocol/engines.go @@ -11,6 +11,7 @@ import ( "github.com/iotaledger/hive.go/lo" "github.com/iotaledger/hive.go/runtime/ioutils" "github.com/iotaledger/hive.go/runtime/module" + "github.com/iotaledger/hive.go/runtime/options" "github.com/iotaledger/hive.go/runtime/workerpool" "github.com/iotaledger/iota-core/pkg/protocol/engine" "github.com/iotaledger/iota-core/pkg/protocol/engine/accounts/accountsledger" @@ -70,37 +71,6 @@ func newEngines(protocol *Protocol) *Engines { return e } -// LoadMainEngine loads the main engine from disk or creates a new one if no engine exists. -func (e *Engines) LoadMainEngine(snapshotPath string) (*engine.Engine, error) { - info := &engineInfo{} - if err := ioutils.ReadJSONFromFile(e.infoFilePath(), info); err != nil && !ierrors.Is(err, os.ErrNotExist) { - return nil, ierrors.Errorf("unable to read engine info file: %w", err) - } - - // load previous engine as main engine if it exists. - if len(info.Name) > 0 { - if exists, isDirectory, err := ioutils.PathExists(e.directory.Path(info.Name)); err == nil && exists && isDirectory { - e.Main.Set(e.loadEngineInstanceFromSnapshot(info.Name, snapshotPath)) - } - } - - // load new engine if no previous engine exists. - e.Main.Compute(func(mainEngine *engine.Engine) *engine.Engine { - if mainEngine != nil { - return mainEngine - } - - return e.loadEngineInstanceFromSnapshot(lo.PanicOnErr(uuid.NewUUID()).String(), snapshotPath) - }) - - // cleanup candidates - if err := e.CleanupCandidates(); err != nil { - return nil, err - } - - return e.Main.Get(), nil -} - // ForkAtSlot creates a new engine instance that forks from the main engine at the given slot. func (e *Engines) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error) { newEngineAlias := lo.PanicOnErr(uuid.NewUUID()).String() @@ -161,8 +131,35 @@ func (e *Engines) ForkAtSlot(slot iotago.SlotIndex) (*engine.Engine, error) { return candidateEngine, nil } -// CleanupCandidates removes all engine instances that are not the main engine. -func (e *Engines) CleanupCandidates() error { +// loadMainEngine loads the main engine from disk or creates a new one if no engine exists. +func (e *Engines) loadMainEngine(snapshotPath string) (*engine.Engine, error) { + info := &engineInfo{} + if err := ioutils.ReadJSONFromFile(e.infoFilePath(), info); err != nil && !ierrors.Is(err, os.ErrNotExist) { + return nil, ierrors.Errorf("unable to read engine info file: %w", err) + } + + e.Main.Compute(func(mainEngine *engine.Engine) *engine.Engine { + // load previous engine as main engine if it exists. + if len(info.Name) > 0 { + if exists, isDirectory, err := ioutils.PathExists(e.directory.Path(info.Name)); err == nil && exists && isDirectory { + return e.loadEngineInstanceFromSnapshot(info.Name, snapshotPath) + } + } + + // load new engine if no previous engine exists. + return e.loadEngineInstanceFromSnapshot(lo.PanicOnErr(uuid.NewUUID()).String(), snapshotPath) + }) + + // cleanup candidates + if err := e.cleanupCandidates(); err != nil { + return nil, err + } + + return e.Main.Get(), nil +} + +// cleanupCandidates removes all engine instances that are not the main engine. +func (e *Engines) cleanupCandidates() error { activeDir := filepath.Base(e.Main.Get().Storage.Directory()) dirs, err := e.directory.SubDirs() @@ -192,14 +189,34 @@ func (e *Engines) loadEngineInstanceFromSnapshot(engineAlias string, snapshotPat e.protocol.LogError("engine error", "err", err, "name", engineAlias[0:8]) } - e.protocol.Options.EngineOptions = append(e.protocol.Options.EngineOptions, engine.WithSnapshotPath(snapshotPath)) - - return e.loadEngineInstanceWithStorage(engineAlias, storage.Create(e.directory.Path(engineAlias), DatabaseVersion, errorHandler, e.protocol.Options.StorageOptions...)) + return e.loadEngineInstanceWithStorage(engineAlias, storage.Create(e.directory.Path(engineAlias), DatabaseVersion, errorHandler, e.protocol.Options.StorageOptions...), engine.WithSnapshotPath(snapshotPath)) } // loadEngineInstanceWithStorage loads an engine instance with the given storage. -func (e *Engines) loadEngineInstanceWithStorage(engineAlias string, storage *storage.Storage) *engine.Engine { - return engine.New(e.protocol.Logger, e.protocol.Workers.CreateGroup(engineAlias), storage, e.protocol.Options.PreSolidFilterProvider, e.protocol.Options.PostSolidFilterProvider, e.protocol.Options.BlockDAGProvider, e.protocol.Options.BookerProvider, e.protocol.Options.ClockProvider, e.protocol.Options.BlockGadgetProvider, e.protocol.Options.SlotGadgetProvider, e.protocol.Options.SybilProtectionProvider, e.protocol.Options.NotarizationProvider, e.protocol.Options.AttestationProvider, e.protocol.Options.LedgerProvider, e.protocol.Options.SchedulerProvider, e.protocol.Options.TipManagerProvider, e.protocol.Options.TipSelectionProvider, e.protocol.Options.RetainerProvider, e.protocol.Options.UpgradeOrchestratorProvider, e.protocol.Options.SyncManagerProvider, e.protocol.Options.EngineOptions...) +func (e *Engines) loadEngineInstanceWithStorage(engineAlias string, storage *storage.Storage, engineOptions ...options.Option[engine.Engine]) *engine.Engine { + return engine.New( + e.protocol.Logger, + e.protocol.Workers.CreateGroup(engineAlias), + storage, + e.protocol.Options.PreSolidFilterProvider, + e.protocol.Options.PostSolidFilterProvider, + e.protocol.Options.BlockDAGProvider, + e.protocol.Options.BookerProvider, + e.protocol.Options.ClockProvider, + e.protocol.Options.BlockGadgetProvider, + e.protocol.Options.SlotGadgetProvider, + e.protocol.Options.SybilProtectionProvider, + e.protocol.Options.NotarizationProvider, + e.protocol.Options.AttestationProvider, + e.protocol.Options.LedgerProvider, + e.protocol.Options.SchedulerProvider, + e.protocol.Options.TipManagerProvider, + e.protocol.Options.TipSelectionProvider, + e.protocol.Options.RetainerProvider, + e.protocol.Options.UpgradeOrchestratorProvider, + e.protocol.Options.SyncManagerProvider, + append(e.protocol.Options.EngineOptions, engineOptions...)..., + ) } // syncMainEngineFromMainChain syncs the main engine from the main chain. @@ -235,7 +252,7 @@ func (e *Engines) injectEngineInstances() (shutdown func()) { if newEngine, err := func() (*engine.Engine, error) { if e.Main.Get() == nil { - return e.LoadMainEngine(e.protocol.Options.SnapshotPath) + return e.loadMainEngine(e.protocol.Options.SnapshotPath) } return e.ForkAtSlot(chain.ForkingPoint.Get().Slot() - 1) From fe3a9d5949f68a8d2df8c803d76feb24c43f3ad9 Mon Sep 17 00:00:00 2001 From: Hans Moog <3293976+hmoog@users.noreply.github.com> Date: Tue, 5 Dec 2023 03:56:54 +0100 Subject: [PATCH 351/356] Feat: added chain switching condition to engine spawning --- pkg/protocol/chains.go | 22 +++++++++++++--------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/pkg/protocol/chains.go b/pkg/protocol/chains.go index 26fd1635d..9704fca55 100644 --- a/pkg/protocol/chains.go +++ b/pkg/protocol/chains.go @@ -98,26 +98,30 @@ func (c *Chains) initChainSwitching(chainSwitchingThreshold iotago.SlotIndex) (s c.Main.Set(mainChain) + // only switch to the heavier chain if the latest commitment is enough slots away from the forking point. + forkingPointBelowChainSwitchingThreshold := func(chain *Chain) func(_ *Commitment, latestCommitment *Commitment) bool { + return func(_ *Commitment, latestCommitment *Commitment) bool { + forkingPoint := chain.ForkingPoint.Get() + + return forkingPoint != nil && latestCommitment != nil && (latestCommitment.ID().Slot()-forkingPoint.ID().Slot()) > chainSwitchingThreshold + } + } + return lo.Batch( c.HeaviestClaimedCandidate.WithNonEmptyValue(func(heaviestClaimedCandidate *Chain) (shutdown func()) { return heaviestClaimedCandidate.RequestAttestations.ToggleValue(true) }), c.HeaviestAttestedCandidate.WithNonEmptyValue(func(heaviestAttestedCandidate *Chain) (shutdown func()) { - return heaviestAttestedCandidate.StartEngine.ToggleValue(true) + return heaviestAttestedCandidate.LatestAttestedCommitment.OnUpdateOnce(func(_ *Commitment, _ *Commitment) { + heaviestAttestedCandidate.StartEngine.Set(true) + }, forkingPointBelowChainSwitchingThreshold(heaviestAttestedCandidate)) }), c.HeaviestVerifiedCandidate.WithNonEmptyValue(func(heaviestVerifiedCandidate *Chain) (shutdown func()) { - // only switch to the heaviest chain if the latest produced commitment is enough slots away from the forking point. - chainSwitchingCondition := func(_ *Commitment, latestProducedCommitment *Commitment) bool { - forkingPoint := heaviestVerifiedCandidate.ForkingPoint.Get() - - return forkingPoint != nil && latestProducedCommitment != nil && (latestProducedCommitment.ID().Slot()-forkingPoint.ID().Slot()) > chainSwitchingThreshold - } - return heaviestVerifiedCandidate.LatestProducedCommitment.OnUpdateOnce(func(_ *Commitment, latestProducedCommitment *Commitment) { c.Main.Set(heaviestVerifiedCandidate) - }, chainSwitchingCondition) + }, forkingPointBelowChainSwitchingThreshold(heaviestVerifiedCandidate)) }), c.WithElements(func(candidateChain *Chain) (shutdown func()) { From f3d8ad0b677ca7c21048877cb6112a34a4d902f1 Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Tue, 5 Dec 2023 16:37:52 +0800 Subject: [PATCH 352/356] Add options for attestation and warp sync requester --- pkg/protocol/options.go | 22 +++++++++++++++++++++- pkg/protocol/protocol_attestations.go | 2 +- pkg/protocol/protocol_warp_sync.go | 2 +- 3 files changed, 23 insertions(+), 3 deletions(-) diff --git a/pkg/protocol/options.go b/pkg/protocol/options.go index 85e656af5..ac9605bf8 100644 --- a/pkg/protocol/options.go +++ b/pkg/protocol/options.go @@ -61,7 +61,9 @@ type Options struct { // StorageOptions contains the options for the Storage. StorageOptions []options.Option[storage.Storage] - CommitmentRequesterOptions []options.Option[eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID]] + CommitmentRequesterOptions []options.Option[eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID]] + AttestationRequesterOptions []options.Option[eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID]] + WarpSyncRequesterOptions []options.Option[eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID]] // PreSolidFilterProvider contains the provider for the PreSolidFilter engine modules. PreSolidFilterProvider module.Provider[*engine.Engine, presolidfilter.PreSolidFilter] @@ -287,3 +289,21 @@ func WithStorageOptions(opts ...options.Option[storage.Storage]) options.Option[ p.Options.StorageOptions = append(p.Options.StorageOptions, opts...) } } + +func WithCommitmentRequesterOptions(opts ...options.Option[eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID]]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.CommitmentRequesterOptions = append(p.Options.CommitmentRequesterOptions, opts...) + } +} + +func WithAttestationRequesterOptions(opts ...options.Option[eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID]]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.AttestationRequesterOptions = append(p.Options.AttestationRequesterOptions, opts...) + } +} + +func WithWarpSyncRequesterOptions(opts ...options.Option[eventticker.EventTicker[iotago.SlotIndex, iotago.CommitmentID]]) options.Option[Protocol] { + return func(p *Protocol) { + p.Options.WarpSyncRequesterOptions = append(p.Options.WarpSyncRequesterOptions, opts...) + } +} diff --git a/pkg/protocol/protocol_attestations.go b/pkg/protocol/protocol_attestations.go index f2c4c3153..16a7f509c 100644 --- a/pkg/protocol/protocol_attestations.go +++ b/pkg/protocol/protocol_attestations.go @@ -40,7 +40,7 @@ func newAttestationsProtocol(protocol *Protocol) *AttestationsProtocol { Logger: lo.Return1(protocol.Logger.NewChildLogger("Attestations")), protocol: protocol, workerPool: protocol.Workers.CreatePool("Attestations"), - ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](protocol.Options.AttestationRequesterOptions...), commitmentVerifiers: shrinkingmap.New[iotago.CommitmentID, *CommitmentVerifier](), } diff --git a/pkg/protocol/protocol_warp_sync.go b/pkg/protocol/protocol_warp_sync.go index e42f0c6e8..b74bdcf33 100644 --- a/pkg/protocol/protocol_warp_sync.go +++ b/pkg/protocol/protocol_warp_sync.go @@ -40,7 +40,7 @@ func newWarpSyncProtocol(protocol *Protocol) *WarpSyncProtocol { Logger: lo.Return1(protocol.Logger.NewChildLogger("WarpSync")), protocol: protocol, workerPool: protocol.Workers.CreatePool("WarpSync", workerpool.WithWorkerCount(1)), - ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](), + ticker: eventticker.New[iotago.SlotIndex, iotago.CommitmentID](protocol.Options.WarpSyncRequesterOptions...), } c.ticker.Events.Tick.Hook(c.SendRequest) From 48b1db2eb87d5717fe5cec53a0527046c7babee9 Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Tue, 5 Dec 2023 19:07:53 +0800 Subject: [PATCH 353/356] Remove log and potentially fix race condition for nil block #556 --- pkg/protocol/engine/engine.go | 6 +++++- pkg/protocol/protocol_blocks.go | 24 +----------------------- 2 files changed, 6 insertions(+), 24 deletions(-) diff --git a/pkg/protocol/engine/engine.go b/pkg/protocol/engine/engine.go index 1c5b31d1a..880816d87 100644 --- a/pkg/protocol/engine/engine.go +++ b/pkg/protocol/engine/engine.go @@ -277,7 +277,11 @@ func (e *Engine) BlockFromCache(id iotago.BlockID) (*blocks.Block, bool) { func (e *Engine) Block(id iotago.BlockID) (*model.Block, bool) { cachedBlock, exists := e.BlockCache.Block(id) if exists && !cachedBlock.IsRootBlock() { - return cachedBlock.ModelBlock(), !cachedBlock.IsMissing() + if cachedBlock.IsMissing() { + return nil, false + } + + return cachedBlock.ModelBlock(), true } s, err := e.Storage.Blocks(id.Slot()) diff --git a/pkg/protocol/protocol_blocks.go b/pkg/protocol/protocol_blocks.go index 3afd74807..83bdc8fc6 100644 --- a/pkg/protocol/protocol_blocks.go +++ b/pkg/protocol/protocol_blocks.go @@ -113,29 +113,7 @@ func (b *BlocksProtocol) ProcessResponse(block *model.Block, from peer.ID) { func (b *BlocksProtocol) ProcessRequest(blockID iotago.BlockID, from peer.ID) { b.workerPool.Submit(func() { block, exists := b.protocol.Engines.Main.Get().Block(blockID) - - // TODO: CHECK why blocks can be nil here: - //panic: runtime error: invalid memory address or nil pointer dereference - //[signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x10c2ac3] - // - // goroutine 302684 [running]: - // github.com/iotaledger/iota-core/pkg/model.(*Block).Data(...) - // /actions-runner/_work/iota-core/iota-core/pkg/model/block.go:85 - // github.com/iotaledger/iota-core/pkg/network/protocols/core.(*Protocol).SendBlock(0xc0045f0420, 0x0, {0xc0045a7c70, 0x1, 0x1}) - // /actions-runner/_work/iota-core/iota-core/pkg/network/protocols/core/protocol.go:57 +0x43 - // github.com/iotaledger/iota-core/pkg/protocol.(*BlocksProtocol).ProcessRequest-fm.(*BlocksProtocol).ProcessRequest.func1() - // /actions-runner/_work/iota-core/iota-core/pkg/protocol/protocol_blocks.go:128 +0x1ae - // github.com/iotaledger/hive.go/runtime/workerpool.(*Task).run(0xc0035f4060) - // /home/runner/go/pkg/mod/github.com/iotaledger/hive.go/runtime@v0.0.0-20231109195003-91f206338890/workerpool/task.go:48 +0xb6 - // github.com/iotaledger/hive.go/runtime/workerpool.(*WorkerPool).workerReadLoop(0xc0021408c0) - // /home/runner/go/pkg/mod/github.com/iotaledger/hive.go/runtime@v0.0.0-20231109195003-91f206338890/workerpool/workerpool.go:190 +0x3b - // github.com/iotaledger/hive.go/runtime/workerpool.(*WorkerPool).worker(0xc0021408c0) - // /home/runner/go/pkg/mod/github.com/iotaledger/hive.go/runtime@v0.0.0-20231109195003-91f206338890/workerpool/workerpool.go:170 +0x69 - // created by github.com/iotaledger/hive.go/runtime/workerpool.(*WorkerPool).startWorkers in goroutine 282432 - // /home/runner/go/pkg/mod/github.com/iotaledger/hive.go/runtime@v0.0.0-20231109195003-91f206338890/workerpool/workerpool.go:162 +0x32 - // FAIL github.com/iotaledger/iota-core/pkg/tests 151.748s - // FAIL - if !exists || block == nil { + if !exists { b.LogTrace("requested block not found", "blockID", blockID) return From 5baf82df850dc754a4e7d640cf1f36de27cfc74f Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Tue, 5 Dec 2023 19:15:03 +0800 Subject: [PATCH 354/356] Add comment to commitment_verifier --- pkg/protocol/commitment_verifier.go | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/pkg/protocol/commitment_verifier.go b/pkg/protocol/commitment_verifier.go index 3ee2b4cc8..4a830215b 100644 --- a/pkg/protocol/commitment_verifier.go +++ b/pkg/protocol/commitment_verifier.go @@ -105,6 +105,28 @@ func (c *CommitmentVerifier) verifyCommitment(commitment *Commitment, attestatio return nil, 0, ierrors.Wrapf(err, "error validating attestations for commitment %s", commitment.ID()) } + // 4. Verify that calculated weight from attestations is lower or equal to weight of commitment. + // This is necessary due to public key changes of validators in the window of forking point and the current state of + // the other chain (as validators could have added/removed public keys that we don't know about yet). + // + // a) The weight should be equal if all public keys are known and unchanged. + // + // b) A public key is added to an account. + // We do not count a seat for the issuer for this slot and the computed CW will be lower than the CW in + // the commitment. This is fine, since this is a rare occasion and a heavier chain will become heavier anyway, eventually. + // It will simply take a bit longer to accumulate enough CW so that the chain-switch rule kicks in. + // Note: In an extreme scenario where all validators add and use a new public key, the chain will never become heavier. + // This can only be prevented by adding such key changes provably to the commitments so that these changes + // can be reconstructed and verified by nodes that do not have the latest ledger state. + // + // c) A public key is removed from an account. + // We count the seat for the issuer for this slot even though we shouldn't have. According to the protocol, a valid + // chain with such a block can never exist because the block itself (here provided as an attestation) would be invalid. + // However, we do not know about this yet since we do not have the latest ledger state. + // In a rare and elaborate scenario, an attacker might have acquired such removed (private) keys and could + // fabricate attestations and thus a theoretically heavier chain (solely when looking on the chain backed by attestations) + // than it actually is. Nodes might consider to switch to this chain, even though it is invalid which will be discovered + // before the candidate chain/engine is activated (it will never get heavier than the current chain). if seatCount > commitment.Weight.Get() { return nil, 0, ierrors.Errorf("invalid cumulative weight for commitment %s: expected %d, got %d", commitment.ID(), commitment.CumulativeWeight(), seatCount) } From 8b9d1f8c1ebe91648bb8802a376743c0f7ef7579 Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Tue, 5 Dec 2023 19:35:20 +0800 Subject: [PATCH 355/356] Add version check for received commitments --- pkg/protocol/protocol_commitments.go | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/pkg/protocol/protocol_commitments.go b/pkg/protocol/protocol_commitments.go index 4d735c022..56516d18f 100644 --- a/pkg/protocol/protocol_commitments.go +++ b/pkg/protocol/protocol_commitments.go @@ -73,6 +73,14 @@ func (c *CommitmentsProtocol) SendResponse(commitment *Commitment, to peer.ID) { // ProcessResponse processes the given commitment response. func (c *CommitmentsProtocol) ProcessResponse(commitmentModel *model.Commitment, from peer.ID) { c.workerPool.Submit(func() { + // Verify the commitment's version corresponds to the protocol version for the slot. + apiForSlot := c.protocol.APIForSlot(commitmentModel.Slot()) + if apiForSlot.Version() != commitmentModel.Commitment().ProtocolVersion { + c.LogDebug("received commitment with invalid protocol version", "commitment", commitmentModel.ID(), "version", commitmentModel.Commitment().ProtocolVersion, "expectedVersion", apiForSlot.Version(), "fromPeer", from) + + return + } + if commitment, published, err := c.protocol.Commitments.publishCommitmentModel(commitmentModel); err != nil { c.LogError("failed to process commitment", "fromPeer", from, "err", err) } else if published { From 8829feac4f55b9e9fd08a6e012495e63be7bde86 Mon Sep 17 00:00:00 2001 From: jonastheis <4181434+jonastheis@users.noreply.github.com> Date: Tue, 5 Dec 2023 19:48:45 +0800 Subject: [PATCH 356/356] Add shutdown to storage tests --- pkg/storage/storage_test.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/pkg/storage/storage_test.go b/pkg/storage/storage_test.go index 3c79adae7..9178f7de3 100644 --- a/pkg/storage/storage_test.go +++ b/pkg/storage/storage_test.go @@ -168,6 +168,7 @@ func TestStorage_PruneBySize(t *testing.T) { func TestStorage_RestoreFromDisk(t *testing.T) { tf := NewTestFramework(t, t.TempDir(), storage.WithPruningDelay(1)) + defer tf.Shutdown() totalEpochs := 9 tf.GeneratePermanentData(5 * MB) @@ -213,6 +214,7 @@ func TestStorage_RestoreFromDisk(t *testing.T) { func TestStorage_CopyFromForkedStorageEmpty(t *testing.T) { tf1 := NewTestFramework(t, t.TempDir()) + defer tf1.Shutdown() totalEpochs := 14 // Generate data in the old storage (source). It contains data since the genesis and one epoch after the fork.

        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�jmX+gS zE9+=Dm!abItRbtT5^J-VW?$!PC-m0B-k1F%&iN?JatKC|h)~(&)WpQ#U}FHhcF&=F zPhV_p6hPd-gsusbc$t*PnfOh};z)^1zhVsT*Hz|U3|TB! z9CaV+`0mPS(te}4{&GcqW9Gp2Dc48vK2`V!L3uvQtyu!;jj>Bx-#Cmh2MLiWRH)ef za^ma1jqGgiqoUoa-^!!PXZlxTPYc1_Yk#DYEevT|&!^e`PD$YT@!4JgmmDwGc-?2n zw`_gxhwP?R1||&f&oAmt`Ri~WEk;-{HK(3al-;s0AMD@G8dfj;!~NLD@HS(~dz9!0 zM~UT{p`jiq;#>>WGy|GQVDE0pZ;RY^4e)%ci9{4rPTatDiia|R1}3np{kBp)e#qLG49c=n;O`P~o`PkR1He?kSqAebet3vc7`x=r9uPePn+5G-yb z-3Wu1n1b~GnI{M!UGc2{!dGO&li-bFFN3nUIAcr*Cr6veRJ1~;my|bY9qwpgLm+wT zm6gY_unR!E@3+TaC_(LDmWixr-cgdIwX@vDXDXsE0j9CQhpooVu*9T!U@LRE71>uh zopLVWuiL*6@rSe)pHE-DWnN9#4r-^$;$iz(iGB{Sq3$gvE;cUJ2M2`QdwF-yR@aE1IpCE ziQ>QI3Q8crPMaAWZxa3l*dG3?yf4TTDl+HV4bHhuZThEI^97i@UH3z|EivX~As;xq zkTyCog*5Qbko=~xncBbWo+IVFd;|rHodf1vkb3G&+s+V(s769TYbV3q|BEWcE^GP? z0L+xV5M``(L7crqvLK5RNe6(_13ineM^RnP0=G{t!3M}uT2&sMCu+plEux6W6Wls++Uy ziVTk5PZB*OB=7AqquH>9dOXYNK_AJMbosMucjthwU*;6N?pEAsW_K|W0e%|c%Vc+U zrZvGMMq~$wBm^{GZ82^bCtKKsQO~4L3+l4oUPEDRNaPe#q@(zc_h7WKg-@l&)3D@~ zeKQr>BG1g91To^z!50voSVJXeAr1C^R9AM)0lIyw+905Ckr*O`2bF#XdviU5*o$3T zRFbR{ttrk1Y#3$2cPJ_*)^mjl0IBQxgGNB9>hK4{%kFgSXN#FJs!iN^V`$R0@XyNYrk2M#z)F;|6$S9|DyH6Y5pRI3|*VKawmlyFte1gR1nROv$)XxfboWyKLOEJ|5 zzxTo?nyjR9P0p-y4c)8fD|yXlRQI`vX87h?LS>T?&Xb%X|M>zq_UODNc50f4A8o(I zYx_ffm6L40UsgVn`j5gBVC7VI)YLR{Ym_L+AK{Myh`_i!UDlCHKq}UMz;_<(7)3kN zaTlL?*H|wVxa*CwQFH|65W5kLeN;Q*{P;v5MbOZM3J?;SJVOOc>ngnh3e(ybXG<}V zo#t7ia4GZ4n8E0@{!Wwu*thn?gN68mK=-UAO{cQPZqqcoy?=Q!qY z4z1ket>|fOA+tj2P?bffb~aos?7x(xtyN+vFkxcc4Mw`B67V-%{VH2X>_#ir=xSzf z+i`*v|3q!7>b{n$Q|ZdJ)d{9bfe7b|^msx-CW~=>6id}jeS1n`+=LVmlUl<6@X)D> zpW|d3g8YK<4=bGO3q;o)#R2FQNZYSyWcT}w5|mnw*w@=)`JpV60W8Q7<4ZX*T(XQL zM3i?11hzj_DPeS0=WJT*83R0o&!XcliqqhQX+4d8gD*dmwNYZv7#kYKNMf{HYRz3x zUI2a+!IQWPiCD(5D;>A%?Q=gb(7-A;bsdyF$g5;2c$Cjt(?9F1jrZN!wlBs{?maJW20fKYj!IY^M*{u(kGPVITd0Y<+lNf zH631Q(UCqbgcC+0k*tY~o`!|2t3r=kpZM&;##m0!>gEf5d7gZ$gZL7SM(RM!K_P9P*rLQ{$n3zIi_1Y{+ddMWiaz=Z+3iOa)93333EAF8 zFD&qU%cTMh1w;!_`!U-qaNBdz=PQ}s>8U}&nm@8^yob9HC*w{-tTRTlYDY5}JIQH4 z@9gAQ9V6h)2{$TxR?~R=;So$4Qt^?&;@3KdcdjoT!UNAqLTr~B7!^)^?(gkxVZu<0 z#n0j_=fTgCH#K=FAW5sN@&>C6u49sj7j~@vU2QM31r?5%{mCrTj<5+bncX?6wqv{H< zZW6s?R08_7n<--tl*tq1Td@zmtW2kq@E0PU8Pb14;LK5YFrfaV^|#QyNh5Y&JBMa5 z7F%*(`5XRYln>x$Zbk2}Oh9G&K6MH!&p?0TSX1?;X!9=AR%2j1F-&1j#NGeDuUm8k zkyyH${JeZ*0+y!*^oZsH0CcdeqR9c&OZLERC2z_Kq?|a;MDY)vW`XY>sFrIr>*d75 zoK%L~MFF1=?~zerW8hTiapJFvV_q$pBA*-$nlfZ^HmEK^Alq2Vu26=~;|5&EG^OWfp2e{^`3xG}%LL&U`ZROmJw_xI{>hI9o< zN*+WG!-eQ1EShGISqY*2cmHU4uyq_vfYy@`!ek& zzX8-1Co&Sq6snuOK0!C~Gs9p*v`5hz52~XNJr-+~D>82av?lO%`_n%?`%Rh+B@w-&t6Y!eia739y1r5Wl6Z^ z>~eo=s^`|C+obcycTme}=3$OqXXoiC^Up|>{|*Iz)GD!hFz;?XE+Y8@%kt*}2xVzr zZY3pEno;n$J&Sb!1mjy!Imd~tcbLI@KS_a1F1W%`fmyNZ7T7^> z7N#4vus+-!dEzMc^`0k9a;*+gSwx~mugJub9ck9N&j{!D_3Q6d)Vp;>JO%zK0#S{bQdIxvivzTW9)%9J-cH(UM*S#!GC@L2I zqdF9(WT5?Bpzbuzlr;2qvfJ>@D_2j2ODVUn0h#w+2cAobE_rAMzRH-Kr!hQl#5j86 zT&8TRRG>+nF|~Tuo@CWYl+VoWM?Qfq1n8QBuvSh!Y%%M6q4^axy`w7oqVF6`X-Sky z^IWe0($w*W>|urZ?)gQnN%wu*PmLp+pZvpaT7`g<+O(VATnV?`H(##GO7saLz-P*e z$X|mf=rTeBs4RwkLhkgsY2j=Wzk3eGAOTmAUSHy``;liZfRqnb; zwHY5aGJd62o8xx{v`m=yY##PM1ai8+uAnv1qVSXPxR)rwNp`l(q}mkvUA{7(Xu&$R zQ+?0V+r#yU-><}Y|GyXOal|`oAUMOH4>R*+$`Fqs&LKZ$ec6dNqyl|ykRqggrshw7 zlil!XiMXo!{S3%cb3qGsjA?o|1F9``H^ggVOxn?c?Hs0M?X+ZUFOBosd30P|hlbR= z%ER29p{Jt^!q_4i;f=b;^RvXH^d--=x+k_=ZvGX9PA;VJ|4{YjVM(lS-1s@CQ@Nbd zG9yzVv!b%3vRqQ3)YP)1vNCfav+|TFnx!HLm6DnnmYJ0bCrv%2NoH=zQfTf;mb(U` zDDG?`JG`9l@At?1a$Pgm49v_mGu+Sp-1q1He4fXsec3JCa{ZSEMcHWQ-nw_P$vX;$ zP0H|8HBOla`|}20=TItu)3Uq!tM@A=cQ7^pHPt1{!9CkuI>3(rktl2=&m7rD-r9rpjPH&n0f@Q{&8O65tw z%d!Qd4KnoEs=<@p!<&hh9>ChyV>s-q9%WZsD|~dS#MR9!wV+4|O{EAkEI(y2I)A0W zSQSx=-Kf`nF~Zmbu-9HjuIVobj;R>A4C;Smp7&5Rm0WmD{hO=b)ucP4dC3K)uR*?H zM^MiQD|nwGUQX-p-wIl_M^W>(IpRLR)9xGk>k`&jyC zThQ){%ibcF>PMlMZaiAylTXgy^DcYYs)JWfh~2lx$MHv*VT(#S&ukw(gDm!ww0C=sc?x}x2=mU4ppId^G>no$4UTfl) zF1P2{urim0{PuU$mFFM*)_mxF7<1_^asN&{py8C4gDw4~MYx$?Uc{e0fx-X37|^e| z+^iIc`^SB7{K#g2ydrS<_-}1YQR&v9c4*tS(G_b}>(?EAt&{Et+cgFZQLb(q8YFSsyG;>&kD=?b-AqRl)r8d1qx^-7y{I zB&T9e>#gN6@hyLS0J);8@u1C}U#K18UtEtTf-OFJl;_QiI8LF>+!h?jxs9FrKW1He z-1^+8)zcrXU`-{-znY)#c1tlJ7X70WiU)p=z2)cM-jMfVd9w+zLf6l45cl^5Lj@gs0IPZ%H zF`a92Bhu0C^0$BMg(LV5(%<9u{&iQ+jItjPp?MpNhI5IoGZv56drxnX55ta@7h^vB z56lAB>A);h+q}nx3+q2h$97KKK#b%@emb%^_s*-)#N^(3v;FUS7lMX2uPA($QdFIKp=V;4u9@@TC7i>EAh< z_*>;yvEI|WVtTtsyOD>s{dHc{>3jXp%F)-JhYq^DS+m~?d_aR+>1|x~+kcBYb^qlq4-=1wFup=QB+g!X8 zo(d=)C{@%wK`5t)QJTUBw=3(fB|r&7!$;~U@AKXxFKHvcZ*c)_8bKsvMW+ZT+pdY0 zy2V9!umQx_*O+CEIV1b<{*>&Iz=T6))Sn@2#oOpPc$c%c&d~K4sd$1Rd;JgQDOCTT zsK8mdJ>#ArfrDohQx!*9CW>GCLyH6%9#Dzn$$?|zZ}S{zO|@!yNY!a4p!PSRrvd2i zb30qce|FXPXaV*%Ipe}yQ*wjgpR2_;T{MS;t4)_8&g}#@Gk+P&<|UY;oSh8vW{l<$ zv`%G6+@YljuC`3ca~QKJoki0O0=_f1hJpV^sXvpDZAaU#T`BP~uP&tq#JgbqUHRK6 zhbV;tFV2mPNU^@u7`WZ#g5$BeNbwznp0ZZY@sOjNYGY*JF@zQ~id`ioT+-m5Qts}WGOQ;~pY?l7DOfv!ntj$H?b}NL z<>dxji}(FJcqpUqnyBF=ik2O)(p9tVrB}Ei)6`xMq$Adb5GhB;PMF#o(ARVsYi2sx z_m3WC@f5`J@V@E!6s4ZgTA=ORKer1@1$x!v0lKGM-dnMnv3%&yxt?wBu+B`Uhza&? zmKTGR0yA{Tvl;acJtZp?7;>bHZLur!-5u%C5gZzW!w}>9_48_XM5g-V`bY=xEiWV! zPMrN5G{b2>J=fUQ<~94%)@MdYCr)$~NaN<1+LydFrQ_i2G7;}=5&#gl&UT`lB$!TJ ziCo>Le$hgnXE&=A>kfoo`NQas=$jgIe6 zrhM&TTBe{42G(7iy5tucPvu#yQ47~FV%!$<;I9x|Y}1be~CMN2gbv@AxxBE_mR{c+iVq=o`+|@RpnTq@Q8bq!-+KVm*m}h8QNn^^xqaY zY(~BflhWCz=z(1q9a2f({*v+N$nRos3e%7(HKG@@W}h%7@U8{Y0_1vG>ay)CD;g@1-_T%3fuH85T!hyJsz)tDdR!;s)uRJ|IKvT%aIVXXi#nAvC zr4H4l_!-yupY*HB70ycYp{hE0RDT)NP|qRaR6vsE=fvJ9vT+C`|2$E%k|t%j()#&8 z5*Br6V06)B95c}*)ZtX2VL76G?~*Awy%4a0|FaNekyA%jhk$veUTVNzhXv>R@sn&h ziJpYmI|5_QV@6TRa?Wi=cnZh>cYs%RAVs})7!jd%l}kG>$)#llB>g;Z5aq*rdi0%W ze@+PF6hohZP9Yf30bOBp7pRtMdr3p!_zaNarSlr%YwF-bb?MO#Orot^wXl)%j^Ty( z!;=i0VAbC#0e*G$JlyAmQ`8KGO=fW0IC`FSL>xtElCQ*_3a#-(g}_!luR2o!HqwkR zP}iUGzU66RpS4T4Ul1n;bU(8WP73*PeNF`C!99(eX5Elgwh5y1UVZxqoIg|~h$y%3 z^L@2Vn)|Q-*{vMWMu36n+z)XMp7}S8Hd9dB1Utv%uY-a=YQp`|ywJAsc)t{oA?R2+ z^Fw0PaCNdV?$fgNjMxbd?&I|W?%8(ctUTm?{H+odX+lf{uCv!8bv)HpVOSmelR?gW zhbr$;WHCDuJmM#_i~~}66)foy(fT#yG69J3jjGrMlqKoXcMi&}OKhZ1TC3T1LpP(Q zT3!BxPQ}JQ5$xi~n?dtKx?ZlLUV(#f_Og`5?1=uq+niia0Wn1r;ien zS(gld!i!91mw{j%6K`{BFK5NSA%?-PU@4pOqb6$Idk$B?H?(JRf74}kE55AU~Af@Dtwv1IC7#Py_uTiS=+nS%gJuuJz^YYZ8v zyNCmUFPSwiLW;OwNEd1DIqea1Z~588K(xN_w^;+UVXg7PCJSo|8%pEDTqiRvLy{7H zk-iQ}JkQ>G!lms2L)axZ*PK?k#!V7UMP)V2G&sHD@}52>k)ke;jtZ&L{qAZ}>?Q4I zp7VE|B|OY9dZ^(!FlqJIN5>&m)mV6bIsmyGgyw8>Q$-HM^8<@8bEmv$XXv@+{RWiP@ z?5Y2GhgS5t`2>WlI68`#)QCIHEHyv?usc+T2Oh@eMz1c_W)XrGcb{9>B!(KT0Y(Zs zn?(Ntl#h?#JGO}A8uoR? zy%Qb_LPBliZ8avgJLa~{S&bY@pbJiLvPBt50kWFt`vU(^JNdV+vINdoe21RaYUJdA zR{~WK$5At`G5k}Idc&RO(N6{YIja~eI2{Z-o?${pG+w@}qThb>k()A{%?z61C(=n? zmPz0VZLOsA9U{+O@`gzjpY!UcU|J_BQUP8 zY9SFb`Rfsb@*)+8E7Q|jq>_eC zXWBX09l>7Cx~^s0qKv4HF*Ml=>aP6P3hWk(v2tk-DCsCG-$!FB!42l?MrJLm*2u{D zzbF{>>X^P|GyQ+h^ba=?Oz5bWg1^QtpV9Q2K5KC-VS&1O_u`1IsL&CcP z>rfvm)1I-!u*CBY@*5mCx3a$u+#P69y^i_bBZG{=`6v<%bZ0!bm^zqU0(nUutB&em_ z-3YDlYBR6k72yYP-5s05S4)<~j2HA6mFe|MCbQd%@(Z&tkw#bBwO^Qz3{-3hYtoCb zMwrL?+GJ_5o8p=9POyz*b3uz+Yr83_Wgo*RWp^<=xJelQnwAQFrp*$o53|}fg2z*& z&tn!JM5Dto*8F|d;}^zrOLgUp}Ed~>cP z-m*`&JZP>59Q$e!mk9N3jpy5QTs@hg`yPe=ynq}WXQDm+ye9+LpHu(6e`v))0& zJ1*o_toQ9klP1e?ANilPAC_MCX;)ZbZ$WfL#$&sTl$XN8;N`g(J~csgjQunBZU2W5 zO73Irv&S%c749ywWjSAMpX`?}`3q&1Y3*E*2E)WJ{fJ8xjjlS7@Sv7W-6araQy+jf zz)FLAkl`=+JA}bVgSJ>neHNy+>DsT)@xJqkXJk37@t`5xUu#$2Ub61NWequbawXlQp6YUZ#Ca#aXMU1 z^5j}x;Ra`KN5-{HZw~UTdsG_|Y%UADj&%jAF347C+!GOzuDCZ5KI$sa8tBd~U1JA0 z8;P)7?z>|4yX^DK=ajk3!z{~0U(8yGP^BKFUvAfK?M6Uw8LD^*B_nz{$J1B-Rrv=f zsng3%RF0gNl*(pj<+coppu9=6(nCgsB?`ZYB#7e@R%e+u`9Poc%g_ud$#GB1jQoI` zs>RHosn^E;b!Pr0`x;0z2szIxNmtEF@+nK)y^nf_vuo+rkY;55^FBmV*em3gkXLvf zeYYIul`y+aG~0`4Evum$!2g7b6XH3|7yMhD2R+yXysJ*o%SrX6of=!+Wg4=Da>m;N zDnA0daqdEeKQSjmGi89(N{)}3tZZnAPK#!W7GVN(PpcQshp4H=BLWIJJW@8zo0)48 z2hcQ*!$7ho0CLk7SkJT7bPoPA-E({r+GRN-walbG#tfRj5Idnt;+9m)&j4?F=^2(- z5O5cBRL%Z>(2IwTLjA`)1s!0LId3MuQ>qLvB7wD|sSGlnXXeamU}2|%<>p5YSyBUw8sa>0qtBW{u0LOeL&io#%AKnq3|Ae_Z z2^#aNX*erBt)VmN}GHNev z?m*s!kJ!cpHf8<;b0=TnzuUxQ+c9`}m>#kx0gUTTX2f^aBUf=U&oTeOdNKtWim<&B z@ud$A<<`3lzy=MippUhJi=0MA+avmRwL8vYTfR)I_WJ=dnU^vi^V}f2$Nt%j4I9N$E2SnI|j^Y<0uS(w+QhKWHN}Q_PnhqMDYKgX(K+P}8 zSm+0$K%|n1<1JzgIp^H?=-xg4qp`#ZizBM_!iV|pZ7VyaJsD&->~Y(~Y|qmC=c*fd zn@D_D-s?iav*U7D2e>O@&8tkQNS5y-7_P)7$llc{$TzZD)R#zxa^Sbg0(P!}%2a|m zn>-is9T#nz*4NS+_-zw!O_v$f0yXHX4GHnBd-I;|5AzBE`Fxa22bt5S1j@vTczxZx zjrr1SlOIN%5o6cGL#e14c$U|}S@AIAila>QQ5+@Oy4ztMN>+O__V^ct1d z=Mly4sjCg1yLxD$K3b^5DA#b2-?5|tFQAQIylL-;#V7tdU6@Eqd0!=f`aBf80I5^B z({AkA_(F=xY+|;Nny_d$3sH1Fr;NR*t~SC_hx((>B@O2~fm;JxTiuNqiC-xeR$E}Z z69HqgbQsoOR$hfY4NW8lY$Z{8h%Ta|zlLA$lh?4w8{ktBMR z)j0E;_U7TNRO&L+tbrMMiuWCj&0sal&L&9xPXiN^6Wf$qH#0lH{&kLmdj9Qy1ShSQ zRxFr%u$|jwIDv*P>Z;mlL|>+wYs)?Zk(X^$?-$wna>WH)WnF!=xzB!8v(NQF7^go% z-5GR&EwR%nIKKmsHl2o*xI!-sdz!DB&|+OZA)c`E-0gg0S02r0tjYyDZki(jD0w>X zRX5bUOqH0KIwIS|tjL|!C)Ij1LW0h=heNseju+B}B%_TL`l311J$d}gtrs*YpZy0k zo!Cj`_rO*t>M$AlB$ci@qQY&4p@XLrYWV7nx|dvO^a^xU%^?bc{U(ADg9)^sk8|sb z&V+a+k92gR7rP=}I44ueiShf=ESh&T#Lnf8B(KRP(QR50$C$Zm#+dI*qAfY67-18N7Hs@ zS1qXl#0n&C9q~oAy4&$e-;!5jtYn^WpEv6adI0H*hhB#5a3#IFktLRFV-#4RO#VxzG|Szt`l<%g5n$hh=h4_f`FiO>X%?mNYlDIFN5SU7H86l?N^a*(d47DBtx9k=`M?_r}lm~UtQzTh#YVf0Q$tM8O8Vx!|vRF z$P>ip%PrOMHOMUbGom<{!J?#Z-H5F~j3P^TQ{jUCrMWkP+#~FF(r;+sECnfpnQ6n{ zQyZB`Gns7Jtvz-5x}zJ<-6deZ&9ue)azVuk!am2o7m)h-2pbS|90N#BO%wv1uhXvO z&xg@$Mlz&n!v4Pt1CZEYMWmnZmEU?wHs7BTWh$KI0oqWi4-4lP@lRe>MW&^d4c~=SrNl1EysN3rlp?E*D zf6bWo0Z!q3HHqjm;Or@U3e^H0S83c@)^h9wu|93(T9Mzw?NZAMNz z1|`r;;K$Yfu9OG!OxKdp$pS1V`6~Mu_Ak*T<68bNsi%Cg1HYnFA95D!Gf- zW#76h_?=_UU{fVQBF>5Zviprpi#4*Q>7{*j8UC8b#Y%lNQ=R>611C@$th!Q`vyvZ` zZ1P_lAv}Q|Wy*bxSB^fab-RY+rpT_1^4(oq;{^rLaY&c-$LQ=gH+fHjAR5SKm@zS7s%8_P;bfL!Ltz={VD&A^AgcCAiHhAR$6gqX1#Tli z6J2x)v3AE(=)Uz&Qbkued0nV%(cgf?x====$?R;eO*6B=L^eXW$_%6j>cT6g5vGj9 z3P~XOK~<#^=LJ*n>X=jEsz(05*sE;%gDjQ%tU+p`!nG~%4BbbU&E+<1X&tA1q~eRZ z5s91H#^f5^J)fZEGWajr#W(h)gJS zZDCrV#fQ^HLM5hYG~(IcvQ^_g^OhLGoT5oxF|};UNY&&jpDShWoBGPWQn4DdsIq6> z@YA_^x#jF0EWv$Ox4_Upmk7{=Mn~wr4Uledz|?kCdo(hG{XS`DL%)l?QkgWKeln2` z!Q}B*2erK53n~$`%K}5BD}cm~A+$;{Ew1RH+jj{CZ7jgFf|SPOKj$CeaQ_QCYNakW z`Q%*KpPKsXybZ~<;2IM97np)@>>X#Hc}uv^I6A4bhbrPKhbg(vyr8d!S3$$l?~~|G z0w=&L@R+76hsy8$R=mX5W!(lXPO7u=2%roC1_GvN!R%xPR-{Q zkR|mu7bI*2Npep%6OQKx6i%>#G73+e!ZQS)*X;xhD^`M%M(0p4N@N*7gK@{HJq2vS{X545t#IH{jl zg1CP~QCzJXZOAfd$He?KMbdLK-CN1q582(4O&~EGlTA#N+3XYRp}R3mPWZ+@aIUWW z$nVaGMlVu-|0dM9t7f#d4mcq&2O3~Rk8i>}lfMs>4!8sjD^4f8w#P1XqkU%7&$G}z zCI8tYc!g%UF2}*0N+@eY=ASu8GwaXp)oV)<=E!I~uW*;2W#ZV<-xI9 zl|!PfsBFI;=zn->M`IW3*t`eqphq43dxO?e{;UQ1{U_Y?oIWPlKcAxrR1FK-feq6+9i3bml);HhW3m>7n+k-Gp`*>1JBlXKb&tpN1*oyxa0IZV$nTAit{a z3{!Q^+=ahf{F)MAr8(02)we|s18;!>aOj~-*4?_`JeYpc9;Jw4Ob_L&{cuZSFTHe| zQOx1|sYoK_z&#hmGA(S;{Ub>c=8)NDvk^6rB!F}pI;AG?gd-OY1BWT=S6EMXXe87C zXTj~H==-y`cn%V$^NyQO0eLp6?QP)0^jF%j{Jx#K{B1v`&vbIHaMuwl>7fKs8srP8 zy*YM3ezMGkz*Jg6m*E~3HbOMkf&kv+ferO6nGuF%IQ~Lvcjoy^qjji0=3hyM>SNF+ zL6_7nC?H9tk3qH>O-@H}isHQx&Cnk|;~Atv-ayQE0JHU}Hktk1TA`%s#rMw zDY#W_PS*?n`G-4kNHdu~orB9K!gg_iJG)Tvx{!ne9G_h~QAGFxjN&(lhEU#BKW>Ii zO!OH|R6e@A>O(N$gE~23JP6idi;T18(oB#qQ7KGsq+(SHzVu2_yb z%OvX(B8Rd}(jeujHr||Y#83M`iOd+1z1Y1BR>sSDMznXE_ z(jN+c7h;_4L^!_cx+*;G%{!Wt@J)E}I9n89sl{Wm{3WvCYI`j9Vx+3@f2Ty%>P{KK zHS{+_9{gW-zH&LLw+8I|+EW9p7K-m{-Xvb$eq+|7O*{?ze>|CUr`ajW>| z1F@zm?4Bw^l8;`E^rI1fsHA2dIl;BL$9{b@QdM@@c$~=c-S_#|*vQINTC{MomtVEJqa&cN4Th(rN|azc z!~kK6-EyN)89!;N1Fs>NU>Wg!eLJb_>=ntNxB3`xi%P*-OS9SH`%Jl8>V>nlfKWWW zS#iV2kR;!pgEwCYZgTpGSk3*zbIO{f8}9VPh@vsZL@uIdP=>No<8Qsm`fY z8NeLQfU~B$yA;bwXxqoJHNwU;5ps91R%RQ^hDcW(IO{yQIAo0y2vWfzJreCFYe5_H z!0A?n65q)DWhrx*agyf+z$#5*2>YeGC|z0~sPruE*?D3Pfl`Z?oh92^TvS;aT|Z4z zT}z*+0*yJRkw}^SR$V!9Nj$mu7g-vr67!AiFM@k$VZJS-T~hBzc7&{I23>$UK1(2m z#Rnf{zpzUQH*7H=1AN!`nqW7nd}ZZg>TAr{hX-!WmG78`I9UgKkx{)!Y^Z%D&2Ic{ z50gu3_+pM2BbD$Ov5ei4Ul#`Cv_?{ibjXjL3f;zU{lc(50o@IOEfWdZRD|qKbW}LK zAjwJ4t$S5?+~T~hBejDI0GoU_i$kZf3c8ZX%TZG{!q~6yOaE^5lzVx z^+W={7DOs~J@YIs6A;47M6@+B(-I;@syzh2`X|ik*W0Rd!Y7dH9^ zqd{j3`AL}IK=e&^&j67hVMCX>XY$3RpTWM@-XB(_rTcBtSl|xzrT(pcYE?V4bUXIy#@#cn z78dJ5j~5ajI>ep;()@!#r1^kD(qgZl(X5a@RS{JeVz0A6^YipoBy_S<_!%35vUCGj z<}jX%d6wm}s+GFw6g2LS2!Mb~;vj~h(nZ&`P__r1 znRhJ-coPH%%3bCXf?Hb~&glw76&`XHTF6QU)3XQp>~L09OA8^-#ZMMXa1gb&qy*z# z)|`@?_lILX_R14tAh@pPYvakWXNEmcEZHFzguzaU-O^54My-kdJv3whE_!7AgsJr4 ztB+|mwaLHBIMU->#A`Mps`;zZll9?AE#-YfuC@@F)Z7x9u9&}}J;}QH79xKWTN13B z{LOwmKW;5t{ZIhVB{@!O#e4lo7lyT!?ecAvE=X)pH$_)3X6Auf(H9(#IJ%y~IxKEx zL>^~dBhXV5+%vJ1FReCu1XJS6?QC-gmZOj>{o!)Sa=d6+&3u6=2mR20 z@XAZ)C9@fH2(=@=-P!GCo%9uTka{(_S&4_}A=df!IwqZy-4|GMn2f<4>CgRJ;ne68p{wgXHKFMuPNXh|DSa8!Yj+AL{U=MixW9_z#xihQC_CTS zk(&)shYTo%t;>>w3)BX2D^&*ercX*Ib;L#n;Vct%h7^f+eu?_3;YM=&8DIB9)&nXw z>xz#7j!iFMA9GcaxZEYw{3}bTp?Q9sWWRc{O{(C8RFkm(uv|?h!T{EE@!QG#nAsb} z6R+C?k7E|90zVu>jrcXylVZ1_wzQ$q5rve;V+Ff(6cs2BY%OX5x2HOMyXgE5%~j8D z;sWc&Wfdip;)o<%UTB-F-}BiXxfZoqIOzjZ6~2VWqlc-%wL); z29r?O`ol<8d<@rNwQVqY*s#h?^p|cVb9!fd35iE?sq29zlzrjjWywzf*HKoe^R9B` zRD7-(%v3}Zt1mcL(puedNsk3jc1}EYP=qFvbo>X+y#oJn@wrg2*m9{otiTO2_;t!u zx({2>>7e5*6vZooWI54Sgia76)75sGgG7uffoPuwMcQ&!Fpl&<3f3xl-a=1(xUuhA zUy~=`_bWje2Le!%wf4pA-3q{6nrs&Lct zJeLqI;frl7MetBGrrAVT%8t*Y^t9+AdB9gN(?sgJ>#eZnW0Cg0k&%`-`0`nMy0EJ8 z4-$40|KzzeoIWbC#IUV}KR8>}n2cd*ufJtt85|;RA+%R0kEl3Ay7xXjPed=G+;{yi zWS7T%XL3^>t`ymFa`zLWLqk_`bYt>e4Ib*t2h=+}jU6sx#Jw!_d8z)aN!MULrlJ#C zah;z8lz32zEc~TBC{o>^XS8oN+n<(XnnnF@D^QOZq4sgSK4aZ>s6~c%O<`uRl@^vE%dScGdq@* zNI!JO*UE?(;$KTCGq zNpLwkXL5Q1`B>N2eUd%?heSW=*qm=oEPt<&+1WXIaA3anMq)NE4gEXxlD6Egyhy5;s8Xe{OEf}nj`j*2cqON@JfED1tf^PJ%(nB;ctsMeU z0?lE{kWo8`pmZC5>X9xw7)Ro2z8LQ6?$fG2(*v0NH8=Tl)4tj-Fn9hmhI5`{%>a6m zVlMvtannUETNV{5*rh`RuJzwaHgp;{#QM^U3KlzLO$rlueM6Q?HTBN6{3MX_xC9C~ z*9tk)#-nO(yiaXpV$WbHF-Fz7^xtTiypi(>&&5!VxS{AcEF^SpMPT0T^6HsXoOO)- zfDahl$JTY?1rz?xh|&L+p9Hd5(5@KFcO&zSF3s0)nkvzF1VFfSf@?=>4O2ePs#`jd zm!oTlG5kG3@`1TEbGu4dppSAWeJ645Ee54C=KYJm3X~i{elcowQ z2lfZ#$}I9j$D-#H%HtMFXo#5BntY#?i3U%R zt?^SoizLX?7l6D2eM-z`lG1f(BbQpz-eHcCDGT`_thKA?hgIkUNPh;-80MEm=r@fT z8w77LQl6r6t-_6x$0_Q|;?Lm-QQnuybj*Smb!b#Vbd62_9B$bHd8yh_FIwDAlD=qX z+M3DAGq~i7q@I&jY!=;}cu4f}13eUW@|te&U+L3UF#TePchG?tSqF-3ZVdr9(MQ^O znxKW4$aS>fFga%B4b+HphNXckSZ?nkmlxl|EP*iO4{nRzPFAya?8wDM$rBR!G*mQK zcU4^*X9x$nEZOw%jD2p&WQSjistS%NGt?$A-RfQ4oN)YH#?Bo7{i1UE26g~9ksZkG z&0uP5b4b%cL%?Q3S4$1)?phiULk#-o#3A>=jGg1Aa zF!O*nQ?|0dwz-K8H*o5n*~`L?-aUXHSAJm<4n>50dZO~8Is!J{PZr+-^q!i~i z4eX?&M;-ZngX;G_hZySa6Tp$>c+02Y_eJl^qR(<_7^vctW()F&H}sv6$YRm#FIWhQ z&b%bgp&7w}6KiqMWAfZK_KlX`Z^o}BUKItPCz4*@oXn!LPcaBoOvxC+T1TbUF%TaH z5||XyH1o>jZh4^D^PC*Fv7|gNmIJN;xJ!$flxmg6 zZK>2Wp*QQIikN0Hy>l*nF=AM6r6I|bwiyGLl|}D<2jjiO=+)}yUB}u3Y^{R=>K^}( zM+x9;80(fm>FYFyf+&4C^##fmQy|4%+4TDBIB+cGLb^xX9oyXSWA zdadA>VHbxbDDFqAH*iTfhF*6_ji3(zwaK3GHZjxDjUTr2t^P zI@*o~Vg%<4@41Yb@O6xAm}KVX+a8>e`qHVo=R&)UTk@k+IW&N6iN>1H(az|_Qz@!F zZ;cYI=9-BZI1sD()ftbA=j?vMpTM~TF{&#L|DFzMbU6$Z#^lEfBR+%hD))t?zr-C{ zFG<3&R#%5WNA+^;epmj`>!-C80LccLi0%NnkD$cu+|2cST@#x>3v%^>+@p=VSn(1T zSIbt#OBD@C*KoZ)M1T00qGHWG)AB z2c}c945P%g=xJ1vGl$~_(fkfwT07@kaHax)Ga}ub$39QogFWaZdJyppORlWF$p4D? zO>3~=o^Z6)_4j;2I+FMZ8z2_DaE2N7S7{5@T;h7sr=W?>(hIY2%!puPhnFwe8<&7l zCDkJ%O+w4HiO)4+?y%6a0eg)56S+ijhYexH+`UnCfLW|vlnaz{cSR(fP1;VtLW9ol zQAf30J0227_#v?Zd%$Psc@Jh+K&5Xlk-2E44@v=&En#Z|A6gLLz(wc^A(%l6i^V1n^?|!? zmtMCB*}8=--GYSq$eW>`RfA{G>)g_xTCXv0&jY*PrTP1L2V6W{|S0fv8pRwgxI5K&P<`=A^PU{vY8-UNi^|)Wc|UIZ)o-o zp&D5tr4{UfsE&KnqjJuJ=90M}Y}-J<&Yaq)*C5gw>~+PrY%gL-U`nmN`P-+`hvE=6 zk@~;fJ3cO0z&-mZDnV3Z!iRE}F^-zHM~pbN<}nBM3V3V}Z&hJDD0VMdSjw9!lRr9M z`Cnc6fDVc}PxoJ3FLSy`utt^um>C#V-RxH8Ol(#QYSL6E!Rb3AZ&)suk%sDw`7X~a zEo37~uaUi)dqw!BFG1Tp;06BbR%`L|aP}FLz>&NZc|oVj$p-Uph@mtcT68PMDouoY2 zenI#Y%C9Vn^lKonbGFi0PTLJ_M`;2XEQ;${r68fAlGH@d&+0;KjZwCkZxpy)Bp<^4=ex z$yi7v2kJ}L0(Yy9%cue{XJ&{=wjMcOmlK^O@D8<^pUqvjWW2N{%F1H%2%;6GIuv?1 zp~k6{ZKXORdl#Kl08soV@BzD=l7-A3AA~8ft%%Rq)k&X{5KVa_cSFuN9uPs_u@6Wu zJlw~7*plKujfp9WE}YR`nr$BvkCTFE^Il~3C5cKaH+~-?el;YG(#|OtuBg5nX|&Qc z?ME@7CFT+6SMbTm*hJ@ilJlE4%$I@vCAH4dEu# zx+*k0)n_WjT(1p`epZP~=3AB9S0A4iAF5cp352Si)E*A0mg9EOf2d&cOV@B$@B`*M zzp;Ow-!)G><`0nuU9S#AM54y@m z&>O9pI2E(AG(g8G(L_R$fpi_vIZlcclS3}+m|C-cfV2g@f8AuYAhOU8Yyo3rP&TQ7 zwut^fIouu!ya>?g^`2Y9(C*WTnHH>N(uzZ&VQVaJznA=nYdw_;^_ z)Cyrd7kW#iY2jW$>Wk7$rXsVHTU!y)cf_u(taAskZF$iT1v^WjFNU>A+Mh6P_*Ig* z(tKV8TcV#&`oLbXO6i{X2um%P&fP!{^&G9Lc#KF>Mo$5j%$f@J+CFfb#5=Gau<@er zU_W5uVi+D^SZUp)X%(N!Y8I)~$nK3@oRh7of)l;GHUHo< zaa$APRVl!AHz5i;w}n|%kggrxkB;h%Uo+0<_mb3GXYG|o70Y4E$3D8CYCto;y3Whx zZre%xZR4VNAw}gWK=A5~or|cslK~uaH>qZS8*@f}9CyV^a+Ufh2_YMX`~YfLgq~FT zdCU%6gJ++)Mu(O_R7x$;j0aQ({*r6oeEPdChJI(*0+H5Af@UM8h2HLe~U+8#?8)nVKQ)&O@731S`pKDRF&lN93I6FD-PpDGdwIcVM zuAtopa}Wp#leF^-d$*BA%dV>EmsQBCIV!^1iER43r4>&nOXxQlBi{#gpGX(EIsw@c z;ZJd=bV)h%1E9Ydxxrj!ID_ijbn^!0d!pN-9tQEg>_|t$uBR=U7fJew&u>#SpY{o) z-(%-U`M7S-D9)D%g98&mV^#rxojJK?AZ`o@D1Rmhw+gwq#wzjD*zf7F2>-h3ELC71 zL>$I3xX@2kZ;@0<9^^D+M?*@1m7<#_Zm55EoYGALNp$)1Ay@@*LDd~?;wGxj*P~L| zo1naaKHO4wzJFSt(kNlpJu3#W^7A)>ax#5&=t8!@M|6 zc}&0EDX1<%Y_fR_7Du-=__wN?Vb0^`^8Ob|*N(G3dZ2nT)Vr|jPB{ASx6zg3`;WVb zeo$_VaT3g{#|Lnir zcseckcdEtG@~(jKc7MK+q^uf9#E^-5vBF26!$AoSJU$P&c@(+^Z_gtNKFaHUuU%3p_V5$gOB0Y>s9zy}mdGLDDGrkLbaR&siGgrK`-)cy2t+WGkWPYx+3vlHEduaR_3o zw%r4})b_c>H#0a*R_#6Zh{JviCItsuTS;{6E&A^jus&U&UkB{ZPhUi zT%cGZAYFEAw5ax#dc;Qf-q;l)XA8z({?rk-U7hw~uO1r>LwFE;Dc_2Kxa*@u(n89$ zp5Y8HjIE$DyTbZ1J2QAKZv9-(UeqdPPTxxUpL5@c)M^=Kw2ILD=wWbmRxAC`JgsN+ z0MT{2_;WbsxbYMCbF?epWDGXdmeE%Kf0%mrc&7jV|Ns4Zbx>47NU|kLrL6KQ#J195 zN?GMq5^Y7L6AP~}J5>ldj8qb~%Bv$aQVy|A$eHCO=h?6^W$eVxhwrn`Kfm7}&&y?( zi_2_#J|Bns<9@&0u6L-v9&;J@YLVU%>O_)|y=ST6FBBPt$#|C1^8LCFEH7{ZI}wL( zJBaz1*sb}d%nSIFI-f(>Bw*sPYGxZ1q~wQ<*M8G{0$gKWpL#q+4%{4DUKq**-{&xC ztv)}F664MnoDYkVL70|&3#T;7YJ!~{J6GdbOgA#7nK7=+y@ww2`a=SCGC}W*L`}W_ zlEpo%$x28JTS|+OJAHBrZSps|U}`UkEt6-t&CK}V4lP0a$9xy-Yf*{7so!yeOk&@a z5q{uGJt~J3d-XpaAM+iK%mfy5n;ghJcmCipe7)ch+2c$KEM~^1rdIxsD=^ugdyQYI zw47bnf%uhx3aM)4dZCmlHy?Bxh}*P>2TshK`Oqex32(CD4nFSk8iSs*`e{AcU74+D zVpP4ylDVr1J9rO?U2o6PErxT?Qcu@cub+3|A`utBfI@m)K{ltH?@Dbn&EigE_-I0A zHWMv|5=K_j*JCkse7Z`s0BqR8;PPLJ8P?)%NHldvjHxqO6mb+a_Ie#lT{whK6!y2c zbt>K`{YtYdId<{fHmH`(c6j)kbOP%sNWStp;_s*Tw&<67o@3 z;~(!tvUhz}olUC*z5)qys*%*jZ5>=)_wszGoiTVztMskX9ro786K^ ze^2q<#{#lvi(B`TZZnp8u2%2RwgtJ*w0BtXvtxfWL8~OY$BRTA#%18Yw?H6R+D{M3 zRi$&0;VUJPP7DXa7SSzJd-+M}zETchLnGtU`j`_u>M^~m^x+Fk%{k?>o12ea(N>ZkNSySeY%z8>7#;~Kc%AB8$KAG(c0w8z-xW8G9~@Na>ywiy1(B6Cz+3R7 zvhwF{Ut!&o+U&`?)1t9(W+F!j34(P@<*+~A%IVe;)mxa2;llVx;X^$0|a}Q%7%MN z17ArD`9)7@YyE9sUVr0VRG3AD<%hi}7b#;2%lZSKPkPSiAdM4SbJLk-`i911S*AAd z*trAzZQm&0ba(BNL?-ZNmw)vG!7c7DxKyhx!7kCqLkzqyM6jc#j+Pj1F}xo(8vX7D z_t#~>oP?qgf>vv$*R|Tr3gM&CdcLOYP8NYuhybj0*b}RRjGh?9px{>~KL>z#bCC&1 zAQZ-MLvNh><>J*<;)_|D*IZ)T!L#o4lKi4HZbFfK-xXl^uUG)>< z_LZ}n*azeO6<-{yu8*uYnX}6ij<`LS-<)M4l%K^$_KF>*D`z2IJ}tU!{0s;E|8RzN zow@WxegN!TT)EhJtg>T&80-W|{gx&^CihXKBY!v|AXlazXSB`^^;Mc?-)i$&S zRTQctn;RwHYCU?_$y#`>tow^;NBKC}e>|M5kLOC$95Qx}qrd#8^~{3q0$w;F^ElX|>m03VLQ2M|(5;r^q4F zk0W<$W8yPWcV({ee{{v>_HQz!2fUPiZ$1Nxv6@o|5k=B3)4FT;XoE`jmUj-X{X?SJ zNa^onIqEZjWZR`}kC4G&g{8UM$X8(kRMkQcYEdhm0#k^-etv)(h+NaZb;L0479vxa z<=)YcUbEMGPW4wMvz$#yF~Ys+xp#m9*>HS)G!N0YWdy>-h!6jtNLFDthVTt;>;0t& zO5{pFe}NVoCoic+%h%cKhj~eCq^i`Fa&kJB{+7$~(}{~~cb4IWuOGHo+rY00S11E- zS*{Q_74xI@724kAa-W9?=6UN8gqH>+F|BH5^gq#p_7QQ=O8vF`)s5(F8zD?Tz;W^i z0X*GE^dpQGArASSNa5}htkY_269-sORfiyFIpq={knLOqla!Tdvvy-_6jdMLjZ|@{ zJ@N0xMFX{{M!OfW!6$u)M$*1GNy-n>35VBdHm^sL8Xe}$%qwF*i3b{`qhkS$`iF!K ziePxwCR0*k$xTat3>iI*dqMTYagmPzjjWXnXb_(+#_ZB18oI9g;Y_BDU_`;sw*2Ev|(3=NCNawkisaIu9Cn=vRPX%%6)~IS<=Pdi8s`)0MKNEZ<{u=Zj zwGdnt7)E|;utXBqQc*Y0f?D%%9|UC$Q}g|o#VgROa7OyENgc4!huAABb?Xa^aPP7- zhhldUW2Y=um{A;SkH=MuPhTj?^4g0w4qHMp56QJhe+#MCdrMC*ixSex)=@=$GzQ$q2DFz ztqtqO?+>7t@8DiQa_*@|UYU7-sMzTA@0liKmPf}2&sfLD7~Z+P}I443^u1c@YUsUTH{ATJG}LU7zRHZX}d<%4nei?H=!vY`B+SBTht!?LfoarBMW9^vU%zL-b z{ag!_$A)Bb|G@4FFq6CLefe)akHzH(NdL+|qW6jLw|h|e7`3R6qdA7#o!P?uuLX`g zvkFByL+Ny=Cz>(;)WQeh@lqjubcY9K3D+uWMcK?;Td^F!l!`M=5fIoNwm^gN1K?wN zPL73Y2c;5zkL6Bk7#&X4>Xn15=Vp!Wh&mmBGSjagC985{Ii!ZkJLGfsA{*nxv%U#P z1NVlQa{wlL6ul&JH;PfGJ$;8ohYVDgVO%ld1#tl>cA3$CMcyCKiCGajXJFVXl1k5$ zXIdV%9W=eqh&X5;e`B0K0Lexh;kLvd9mm_e76EHWqSt@yu#dNIM)KTB-`@-yJ7AAJ z4BMe0b~!6qole0%Rf(l(f#_HOCF2NRqIvi_iO(XQOW_X1)YlYt_haf#8W8(xqKvzq;@*@Ejx6=E_wG49)n5n{C)b^=wyoNB2 zKBP3YT;C8zsoYVu_abN*D`>5h6=0!tqnWAFC;dUT>@FK-^~|4Oy1k-d)Tl{$kZD~5 zZ)q!6WUho9W}B*#HpecS{~a6!hSf^N=u%=Rig8@|cIGlTu-HrJ*xTl84D2t%I*5vJ z+DC{MO4(^4GM78fI8BZnP(rm1NB!8fwObndfU%dAdfgFig&+48?|*xmlHn@hPsFZ} ziW?j#*MHygY#jPT@FedToN}N5hjhq+VSnNIL#g*y* zauKHq*RxSR?5a*4f-~cs$V+rvL-@V`z%q!8TZa$fq4D<8^6*Q22!;&tgz&xETN)p& zcSH_v^PaWAdMoq9o?~av!ZjwbZYrJJ0<<1~R{08m6IFW8raAe2$hAN>#Qn0satE?! zfqbRyFPR&GX)wSR=qqbkx#rve=W?1BjU}-TaL~^4n&3llie(cAB9a{~5-?82J(4j< zB@zM+ghjvpp=6*|`MHTi&NBTC64wcTyv5^ooX4CFY-0Vl=kSIKMOLG3@$?fX7AK6s z$kNPo=a1*kwwB{@hQ#LA0Kdecd0t_~Rr}xW4+0{TFG$Y*{MeQc2{DD`(@z387L%T? zBOMlG))#p>pml)bZAlA0uJGGF-E!!%U0vobXc?oUXWwGQ(GuFZhlwpu|ZxQ%*>XQcWpolyoJO|b)$_Dl=Lzv1keLy`r* zFK#9^FaA14YYO;P=W2S7)s$(t>l$5}iADxn?Ny4!i%R{`6liALU-`^G4Alpd0%g$P z(*vif0KZuno&1^AXUJp5>A19L0BmH41Gel+!EX@JT3f}F5I1)3C@6LQ!iW>oE#~rX zZ6&%nQ?|fDh4>k}D8VUDc4wNq6)VV-nQMxd`jP&cwN#3xJoL75#+g13={s|4KkXt# zeir)A8cD)sA}{wV{z9-zNSDlaNg1ZZ$uU#8dQ90UzqNZ_By%e^JT=3zD{GMl^r`i( zNnuWpn+d1+i}tegDOtn=w20}6)=J&A=^4q-*txx<>sK%@aO-IK(8lb5GU!F-I#b*d zmD?G3s@u2Bq{5kf_9}W{zgSd9wWe>zW~CNiqJM?Rqh$1rE^A4q;}ol%+|-FAXA@J) zD1*8FAe&rX)rE03sZP$VeW!^Nc+Lm(``}uqo-JI*-9cPN>v$m_ zMSf=tGBIe8@h}4K7P+td6z%>>UHcbSRmlWb{14lsl& z6}3EweBW>5Ni_K1UX#v=AI!K>swZ(1>2wB|-{0o+AuoD^Ci_uhab9G3@l9%@o))96 z`+ZgNl5rtW1E2l%4vTTg&J|P2Ekb|T2t-+EYIp;k-NwM&=Fh^u? zzxOto{yK#;ywGclf8`kbXAJ1;BJ@G<%xA@}v7q`(>7bQRUVMFby+u-){!4kiUOG2i z`BZ*%$4ubxkN!SP!CPto^~=wO4YUaL&DL`5MM9PG)O5o)+F7s*qc<6Sqba+&QZ1hD z^qN;vU|OOprYqv~S=JM6eakx1GfEDGxy})@R$w-lg)U~>cy}FRH&kceECrf9vh(lT zfk-`J9bQgMvzXV6`og4|r3$MRZn75rpnOP9KmJ-u_StF(ZFNE}luX%nypaBy*S7@4 z{3|{aX7EudZ?U$hnh!NuEAmm+HW-LwTNoH4n;|)WQrJat&w7T@4-((w`$*F5MQH8_ z-t;@-c_kJ|q@Xl(lCScuc)C%YWt}1FT=YsCpWBR6ejQ~21Eoi#9Lz?%4i8ZcbXr-D zL;5ykvxpjSwqhLMDG7lK;40nf;o+u()2W_}FCuGf_zm__1p>2$9poO|0=<&E8u~~4 zQmKTn#Sz(1Q4dYhh&_x2$d6<4ztVv-l2l88r z%PFOmS#c%X3RSngw72@wTO>-OgG~}uDt^w9w=9afQGy_EY)i{1PcY}2Vr4f_RXaH9 zoAIO3hEjpvKUfU=zizXwl-BV^Z(!hSbV+)c+|65t|(i8?epEORF&vcWqcg z2*paj)sckiZHeoU}Y@l(n#QgYA{r^bB7 zuGlO5AGnR}uqWD1f!(bmG4AnWuALs59hllT@PPYsMiQyDKDW|9dQY!BFcd2CT-T+V zhrgu{m@&?yi{#5Kn$$&SE|8uje*;H&^iYzI63}k*pXWU~e>6K&-9s_D3&HVHFU>~9 zdvjAEFkhRDRlP%QW91)moIY;)M@G2M^14hV1iyeThk5ngk#*F{lpXn|%XX3}J7xc? z>5t6R3K#8zVNue{8O=Y(OPhwJ@9{{=Jn0bp80@N4`8@dyfK=Na^B*d8;yKfS42`$Z?)zSB z2jS~KdeSAER6<0ksFRmNV)n)R9W4?0Uq=0yhR(%s5R+}k^`Q7J!b^TE#JE+|#K^}A z-osnMD7|M_#PpoO4n{url12{V2V0!r+8OWh&m1%2CPxU`m2N70Kd`hk-^JkoE#2S| z^QZLmc>%~}Zr1rZw6PmIF96vH^-AceAj7W2sa7}h+0|Fc0x%MHL-!Vi{IXG1zUPl2 z9zMl9lzv|zvE%G}g5+BmjzBl{%W_*$)=Hx()gABIF!8L@Z8B*EmRChiR+^9Fnmj}_ ziF%!>?n?&qXZR#U|D|z%oaA^5dc%5C=8&s{wEx3#BE$i#Q$4@sLXO@nqADjRQ+1tQ z`&a0V8;eHCYKHjw7%g?aftDniJM+Ag8AlVFjr}-!)x-HG{x{XM5q{P4IUQn&o27e8 z*E1co-UBC9$A+^^hxk;G{o2j7-T+i;+n8tl;3Fg!bRhuXuKM{gE~!mPHp8UcrQIft z>gZm0wZ0aqbunxa_0(`%i{T2n%aBmi3z|ED9s5vk@7D4i* zxBOVm5*6bGbJQ~tlu$);O$=D#(afVBW(kCORyDL6Q&O3wf%~Yeu1An_E~pHcdJ(V&JJ8;E=cHA?4WeJ`lY8s=3a>oHrXmt zxhrijY@^%MHo)N189&`iI;^88Ut8L+yoL4t8K8b=c(K$ofBwH>R%HC_d!s2+D7L_r zVx4)vgOtzh?+LJ{##63|m-&9u*8B<9NbvOs6Vp7kha@(bfix5Exg!JQ!GK2oCDCR( zRtt}i)t?vbr6CE6`PNN_P?s>~nJUP`WSyfEJE)56&t)&T!~8;tX0BC4WP_({?e+5- z;HJ?m6D&7B!PT&fyw}gi9A_}sP!Pdh zZ7Vf>=EmKZqQCXTRiDO6lwNUCAU~Os%H?qvhX2B%J8UVH zJ#{uC6@O|J4={`7&>&yh@=TDMEj+z?%vEAOYxr}1~o^bP+ zZ>m)FVGxG`nZq_VX69`nYoZ6-MnY4~U~=p6R}2JtaD4{pQ=G$c$|#;X%Bze?E#1^; znyvf(AXV3{bi^zqu2i1NHe}+u25Gx`t^o`I)sXt#d1 zj+?P3EsI>suDs1PxOhuBgPOsV9>>`P`~v>ideQ%|S6kqFy_|?o8*fF?8sDbQhry4m z{h#{0CrgOC%&{xNlJ2@1=+euvO~_eI9RgEF%#zJ9eq$5hMldzo&wH-g*+Z*^+##bb zKgc2&PyZ1E627B&jc<}%AB7cPDpUn(KYxOMtUr}lY+Pv-;lO9tK|`kOZ+Pv|??I{9 zBv5g3v*?9D897!dkjR*e7`=ih_z@v-ClVC(9XHDQYsh??K~eXbTMgb0Ie@8G+30Na z3Cip^sfrT~h6sZC%6tAYwVt1aKl0LczMF_9UVyo52<`>E2I{NM_Pkw?f4QYRoHPzu zMwBc2B6`mYf!Z})jkyX44^Z{Q`p(2*pKY+om83heybP_%SFh@nzf$7`VKl$Z=aTu-> zgQ>WfrSntLZ`!}s-WaY6V@3ccAXM1BERD5T6Bu|!cSCGC>2;rwq#aVq%mv}1{Ro3P zZx9p7>Nx8y6&H$Xkwcy+mTJYgXd=T&iGpMC!${JUb+TwaznR)!;PiF2OTC;~BLe{( z5BVK3B^75k#Y83!WPkD0-SOfej%GFs6a)Ljm}#NdByBM)(t$6UBznwgl)I3T98)Q% zFIvhtP6P5?eu#wYo-^A3yTVkz#CZd!stov{+B@-G9$7Q)rxM|2*LYYo_`~AC>U8b2LX+{P{I%{xdei;6IN*_cp$Tt4h>P z6=8S9O+K0y!wp$b*Dv6FSf`M7*1x6;5JUNA4UE)@Koy^7Pnr+#7P`Y7A2TU{u5!MN zSI;mai#mH&GoK?yd4eWbyxrJ6;2suX;AdO*klt=MOLP&-;=A;T(I(TC8EF7E*};&U z@%kI{Q#oK4DA#{JO=)hX-mUdf9?ObdWw`gjj}T>hg!)Qgx7;Nx^&WZ^SDg_R;qIQz z6151v>NRHokMTXq9Tql8^jD0P_Rm!KMeQhU5A*~qs%u9a12_-4$~H|C$}%hGCUcb9 zF16{_DRH#zPyD4mq|nUnD8AjL-oBpTMOxk}V64-Aq?j=_;{69U;RAfU`WfpC{pwxnFD2P7tu%{pX77u8P`YWYV1Rj*N{?MjlAD-oNDn162Y7E)qy8mY zT^k; zl(Gv7-)*FQP=qP--_jg_91~ey$34TUw0IDXMi)QTb){C*dNhsSjlsPAyXU z$2d*H5bw9gj!CXN((H+~(QP3!<4SfF-MtH6g*>Ix*9_Xcl_^iEq1y{jwN zrPA#PiF89QF|c8s?m*3MH*OKNKysXYM1zAmtr(B8k9?Hj-E~-bZW#alwK3!`S-ms& zaoWh(?t~u+vYz%#?Y;23cXr3URv%*0))%*d38x>oo1j%awjN%67}gZ&X?gXx;g_Qfa>f zb>6&YF)wwVMR|QM|5ihesCSsxL*uRvuKO7vVvKgI*awsIixQicv^IZw2x$1yoH7fm zy3mFCSGB?add(#?E*fPvE1D+Xe^l?LF?O>CIrYy0Ees&Qv*c{R2fGI8IWb zD&T%rL++_ZCU~R+Yqw~M85}hoD4CIVA5WpDij3z&&)H`t5Uf;;lxC7|3vNHx2WH-N zwIr8~@odv@-ZBcBQvpI|j|_a9%=CV*y_EP?Zz3LKp8kbg%KbGwQ!7;-gwo{D%wCOj z*65j+P{NM&<}hZKJz$dYXG85&0LX(yzqcDH`PdbA7pYaPEJx!1OB0!aanCxN<8K4Q zUg_U7GzO##9snuopNj0b#SClZ^6f}*KOl0j{;QZD4*1vl5@h5s(mnFIWdxAS8osFS zR$p|Vq&;yr`s%0JeJ?eqq+VsPBByP}gP3N%<>K55YVDcV7iB7bC#Z@prP^gWa^pGa6Ox6&RcVSaXkzoId} z0)d89{n50J{GD^X>b{Ja)m;5hl?hMFrLBNrpGp+NZBr007}=&Stn5Fo8eyKvVcg&XYOFZN_rCDh&%97E4*-rx@)Fxwly|aJ5k{F zV&2A#Kh}H*Wzpr|xM2*F0dm<0i9L{2d7IMXHwjj+lX?S68N}nZ{j}TXa%0T7$*8Rx zX=4NHXyue1k`RJhGQ+6LX%@wi`j~G{!gRBeXb0c<69tNH=jYars7GEGfm}ye%YsZh z=IgBJZ@VXJW_p{uVub;@PEvYI9Db;kxUyzi00e)7-FKK2ifh+uT7kiB)dQw-<(QeD zW)0a?D(N}k!i|K0KHu~nbwv(_eFS~PglWG>PB|^Y?v5zbr3+|_!61Eycrj26FeU5n zz(FEj&Xd0O7!`YIqa;$1_J>sd`D zC_nsuB(gsNiQI0}NCdEBy-+GG9v}udt|wQ1giLzY6Cc;k8n#a_)WZuJVy&$@yqZk! zXke*5`$Z{+7ED*%GiU)f+PjY+<^200tfdGn?(wSo)W93|V&x;$6SogwYmFGwjc6P< zw!N9QKqEW_+{odm8SDzrlR##!kxvLuHDl17nrsm#u+|SLPVS;;PGBc6Gqg?LWtNE! zzeRi8Ax#VV7HU1%5TuQe2(FD4B3!ognqGKaNBoir+-`P25-IkY7Z~5wE*@0;D^=M= zI@wRL=38QL(*5pv>TUrG8);(RZ!;{^miuBiQVFU#qtD>#>@R%6L!g33WHzyN3rb#DKMw0Oh zrzUEpH$2`(NywKB>NI~8Z`X4#p$^Xy>dG>_i^=m%{_-#DsI}|ljO*j*0W|A!mrY6j zzf_XsousOEqB&_y_I$rwtd$hLryEDJN$54kp$r{8IL3}5M72?}J0|1G^ z+lT0?=l=j~M{E6djK_R3M&UUXa3*<%;M`K^Tt+PD3HOMhHhuBdpJC|-Z-!Boi#aszDjA-j`Qt-52p?{ zNA!Bn{M^Xi>wY`NSYc(A*ldhgiZFq!@>{uk$xk;;m}Z)G*04Esp5$4kZ!{WE5b*jVH-6 zuZaBei(u`)fz9eC@uAcvOvR?8!E^N@po!6Q{6Od_vUB1bPhOAftd;-Ll#Rd8Xu-HJ zyKP~&Ds&6%S8k14_jTjdgzGoKOTLa2F3lQUxx^g5BqHhA%ZD*pqqEC*AHQoE>+9k3 zY;WX}g`2r&xzRf5hidnH9LsD<^IoKle(#kx&5;Vj+QWksx#=gc8bOg&`gZ~Mqw z{Yz=4U4kFUN;3ByUX<)?5k+Zzi13u}NEd3vSKS1a@sp~xFx_7nWB=sMBj=|dnHlyG zXz`i)OdUIXTe#sXO-COMB}aKWNq`*0?Q?tDz`@|4mS(>RRU{y-a8~YkLE4KxP_PGk zqR*ORRZATzI;di!)2L?Z9}b0Aw7)_#)B!_xpj+C|!K7dr(5j^J5*1k;)}G#Gmyfxfp+RYA$8!3s|TmYfG zFf=8~foKO3>pv4aXD}ldsh?~yJlhD9tX0}a!Pr}-m{Q+GV9g4}F2?4@uJl5lzdi9d zbOTj+eX^`NN!TC`km8-$<$FO!T5xK+S5OMoHFBcg1oMk8KPdUTr2*C*C_Slwlw9%g z`rDB#DqXM5Q7>givi#G*dx#nAd}a7$!?+^QB82pctD|dhnE+f`7WsHQ0JT|J0#WXZ zW1O1(gGV2SAEB%pC*|deD-C`rL~WeCWQnOU*z5tTFzz8Oi7irt<-L3QAzOpbxp&O{ z&mj@9RJ3C5k2xbOv6e7As5$&OS7#Wi-$r~Xr)^*Zn$j=BVR9C>@CUs74TX@zwEl2D z{w4PdY4^+vz0H$BMt)-Ktw`KeE@+>|uk!|2aSZI><&5#d&|!KZaZFa1;HSc-YAlJHt+UMb#*I zWorX>32A|Lzk67;ULtjm#S!~1w{fQ2~5KBWJv3&{`tiZP}ipdM9q8_*X87iTBdV|bGveV3<7oqaiSb;P|T z3Nz3SEQnOOLi$!wSz*|RtV+LmaO`KjNn(d}2X#O}HD_FtHRI|@w@&DuzDNG8KX#`! zSZ_DOmw}L_@m}lr`T(gFI6^X237m&uq4JX4B=`YI&pR?HAYC?=$199qu|0Tmx%N>> zAvv&Sz5acZjOZf?;y{$_1qs|gA}6Aq6r$$;d zWP@M|b60)>g-|J9Mx%(w2Rw6-H8H!^t`P%JUh!aT>4zeWBV;%6-*h+WY$;cwJT4U# zZq^pvOdi#|f(esT$c%k6Rj%bweC14dvp&bI!eNUD+iSu^NG)s5k@4yR#S2YNmMInQ zxFIKZJOJ*jRQ7y?%y|WMO1pW7v~9VINVlNPE_=Ot9{U{?SG(QCJ1I?`lXb;E$JS%{ z)HN=Rde<%Eq;ul-_%338OnCQya;mHhlZD~ij}-y$NNre8UZMa$$eq48o$CXN9ONtP zXLWCGqxG*wL#fTP_rdP!8?&CH`0fB7b~_MV2}|4te&(S~StZEw`4s-kUy&C!8mx3H z;CGB}FnlD%7A7#kMb`DzlOp8@0IBcvA=~}5FsK7ZggElHJYabp^JwISDlS7e>aB3+ zRw2{y4Ch?`PJRxib=c;c=BrcJTG9b2mj) zid5(KeG5Lwhw+Ct%nPOe-=pX^h0$GYTfw+h@njo^?PqMcDjSeh?X`*6-g^96fL;; zlPOd;;tT%FsJ`X;M$A^XQz(MeySxQfsC>FySZgLJOPIN?5$~wiB(ZU_0^ls^RABKp zcj72@M~bdE%WHlL8(|5f4ssx#Z)>LrCqe4d!WY9!llScS>Xi8~E`GKs1T?|O>N|=R z)?_abB|NS$6tLU_du}FlNXB`M8jtaE^hMGq-yH3gwHs9W32a^t=q&=zzOS3$#@d4x^Q%{h+x;!^U4#xeJG4nh>wxpA1>T|ygy))M)>fg# z1SUW=b-jgopmvM?gwpxuhdT0)`9tjHb|MfU{tcCzgSG$w%P%9ot9$!(0INHvRe;(m zeGhly^w-b+=PF;-<)AGDN^uq0u#*!i9rD~c5ceml{z5&_d`461`_T`6U9)gDdB36E zod*Ry8RT|8c1vpu?3k-$nV^53ClIHl+2~*ERgJfDShn;-Pmn?QIh(FfbRLenQo33J zV~vt$WXoiA(Rni&llGHe@1$a12Lim5%Cj4}g89DlC)cHC15`o8-yv)*2x~amJ_z(KCfj-0^okFkV5p%lO z(tF%3Vr8Zo2P0#-)ep|0s<=tGB1vo=`I4tS_5~zU==+O&%JVH@APn;JJg!J>4k^8t z6&>*q@(0YT>vOX)@>a-QGI)`CQ`X%2xi`dkA1DruJ1`g8l(BBm~Yc^3yPx`cN|N#WVmQ^#rwzj z_hq7OTbF8DA{fa=qMmFCD1J^ z(tIB)V#3(l+nB-B*P}U#5z$1GDA|3@cyQ|V`M7RHVq@_G!z1N{Rc9Eqlac^#PtAs& zo}amb%?6B@U&$uS;-JDOqX^w<$KL8_Z?Rt6Op7x{W!DzLuRcGWEYW{W`+FL9GPF43Y?bd zlN;)<7d#nl2rZ}!t&IbGep44DHN_@ZovW2dBT-->oK0w zP@TuUWTJ_;SE*ODuLVEMd20Q10zKqNjb}Lr0}8Hw`@RnkYoiR_ApKdTuf#5jv}39N z7b6)&TH3SBDg=FjKr=2Y9(~OToG3?2al=J%|5KiTu7}Ofd7bDcEc&c6hAHw(kuSJn z?j_jEwL-)R;&MK(dC&1F&A#!Rns-{Ci2K|uq>K;!1<6-JLY8S&y0W zsDGN})u)7qR64DQF6acaeLZUigLYd#U|#t5JsfG=Yy!6=TH|S-434N{$k)5VyrlDA zgE~^1X!nuCEwj;+s3YS^I!2}sh-k$xml5_gQhS64m9`k*XbhAQ-auK75|c)Qi%TOM z#Jm@N1Ac_vvacIxGf|T=Hh$U=zRVCb+@N#3R4f=huRkJ*z4m|%ZtwJ#o;@U~5s!$- z(JjmJW<>9~k4mVy6-3S!e~{<`31^yInM1m=k@?rN(HwYkEo6heX5XxDnl`}M*HT)= zO2H;X|4(&k1a3?)6JW<-6w6G2{B9+QV*8VsaLsk;9W%t3YH5+W!LuWdWc8q5+;kM% z(cf5IV(-XF!o|P-9OXc;mg-=~_z}~M3*qyqC;jAdq85<)1gn(2g*T+@^_Kwg{n~jC zj~t|DRP$hRU)SY{e$PM{kJEg3Hgz#*Zl(#RVEm3~H zWDJY!=O<0-O|hYVrMU zz>0$~2vo0K{&^t_*s4_i)X<*@t*=7_bWr7UHo&EgcNQVNltp`G{=*uE zwHa0f^=1E6bT&o90HFW7lDHv!v={Ea^1JYP^>oTPzbmG*!cC9^cLjF5o zK~@7U8ItP|_eX#wnuW7@oak&KDfVeCF4t8xo_Jgb~WmCOT`hY}XF>Gf|bmdXi58T!LLt`qA1NM_G)D9c)-6HFxB zXQPV#=(!t8&yNthtrto6sk}(}*nooXugxmSgSG>2b7R44d;e}BS*r_~EU(`G5ik*(g7m6TY zF@34t^$mhKD;|VAtDMK9Tcwqolm)h{oj%F9et!`OnnMJGXn9_26`EWtGBPGGn-~sT zSTgw?U(X$1Ul-=Dj+kv+2xfw{54O~wTR_A%-$m-rN*8`4eap=IWj!98hwP>aW^*@# zK>}OtweHX|beg=q<$8tP%%kS28>c~vD|T1nN-Zq#>Yo=Hnt^mdq496!UVO_QiILOp zR`TrYL?mjgXIXBs7iy2>;H6?5Y}R1`@v5RpwpOrec0&{Goui}Q0#93Pbc*L!7glX^9IzY{oHdJt zmrv+k#ABgPAN6mg60BxIP@&vT;_aB-&a^-n*E#-eu;$Wz^z{cw{Y9Z!Bb_Zgz{^!^ zQVMghrj*yV+um?}+iF`?YvCky*?LE$v*7gHuWUGYUZ$xW9hqrdNR^!4iJ~8d@jeH_ z6t`ZfKL--455pv9h1O)VdzxpVFIBp?d~*=+5R(yJTV&iXz?rWM@r*fE zTa{&zfgY|I1u!FXQX+@%)sDLaZH7BNAk$qoFaxnJ$yog|r!~wk$l;ln+$YpLqk07s zc)cGaD*OFc+}0PGM?rFDCB9j=+&c1w#Ccq!vsacs2Vdacr}iB6mM+1BXbKkGFziKz zX;-%(4>Np)e@^8{SZufd5XJfulY#yg^4x=!xbPpKS?p~8!5IgnCw5B<)uZrdPkuNY zXbIE-t>^g7j->DjeFvqCD_6nX>Fyp*P$T+Pf+$Tu%#3M5))-bn_mj+iqjDLpk6v=?-TCQlu6^>S*24oJ zLD-CUYZxSJG++7EQ9Zk=3&7L)Los0+aTSI{!`9t+@kTYa3f z?Ryd3tf7J_>Q~4K@mmb|mDa+l;Z!QEqs3!RF?BUQdOY{^N6lc!s`7*QP%d_~)7+)hxXlB8<2ThUv#6W8OB#hfelQhe_|etDVN z=>B($S-~6sfQ~eMIE@3|CPM)S>R0mh&6)FC7pm8`ky+Jgqehy`M_oPz-0|~PsC%!y zceYNEe+?}YST`fy9)$BY^EpGV&y0Ea|1qX%4*LXd2Xd zGnuHa7M=^o0GRW$s-_XAZf(TfG0o{WTjl(hB6P`-iC**H-&;{f-RJI?xaOnko2s-^ zHGLV~YkQE+EAi^SaF4mCH2?M{o&J)C@J#hVz?H!qZu;7OGeqm|F%GLOc!&qriA&>s z)Zw%BpP0k<#|I;BxI^C3Hc*!+w$-98Te2T`@aMQM*-a|zq;gNrzKOER>mSv#ukhm& zlm9k^E?70)$8X?T!A>8*|3!=@7m3gYR?43!QIi9IbJwX@|Z=vq}EG9 z`;oeE2%90KKg5yCf%a-;yg0@Bw)vr>2`2^N+oqy!ho=|0=3~@>E|b{${&1*@~z)5^nO@ zt=S&rz&krX|F}s8$>QnQcdd)BsKusPQXK!|R7*D*ux8nd8VY z##7!~2IM-W_uR(}asu~G)WD7npI<(eT)_+ew>*3Kqyx953|M!edKYyn zXRFwA;+6|kTacMT_cbNAve11IH!R@CBmjm#u5rgN zvbKElb+l^GD8gvIZQlSy5CBY`uG_-Zw)aLrW4AR`N$AY zGr-G>ll$fmikSxhlkHb8_x~e{zL0=~uNyCE3^t}Vm``Eto-_Ua<^UOQfA@hDb?)P= z2u^|g*VUxzLV|4`Pt<}c97z>O3@02Z9X^Pgci2-05Rz*g`73=9YOLWPc)FtBv6nUF zM6@5Vn<8~uJm(Er3IXqwv@d8&|81hf)@VfR@SS}MfJV@+FNTx}wvXe$%yvo;p*)Jl z6Q#|#_RUBlnxQj_^=_4%!P~(U_apL9g7F7`@mXhA)FX@sM0V4>fSOm2wWG3bpj~Y8 zk&U43?z{4l!N_q1&)8cwdK!R}yJj%l{);r+xr-oUNWDJb4}Rpj^{XM`o;;s*PgNPA zXzQlis!?lf6RDZ>94Ma`^1m|l=YOHfG`($DX;CT}@?*kda!_wEamIcrgf#OzNe(&z zQX@+NLvA3mzRbT(kRwn)>XcIqiv^6+unP|!KTzJzyyHGzdd!$&tELE!Mt`dDYibJt zt@4)nG}{A`1{d*DBZjy3u$UEsSs@6|Q-|y(BCBJc$tU!O$x{kF4>jxAipiJanx!ns z4z@0h2&zAOk8F+|Lgo6e^41;|mc`pB0O(fnZivSj>})EC*-Cu*3T>K{|B^MCp+rtR z*5hwh%&~r*6~APy6#qoBtnr<_SU!f;b1wyD5QVBgqp^nbo`xoKce(sb(6-vjMl6nM)(&#E7Zz;5wsP_X>GJ>F00bixaZ#hF7xqsPjx}B0-*~pB z4;{?+3{(DV!~%+&fH*s~gD> zI$J5u{lqlpo(M6#M~czRU12-Z z!F_m}rZ!GY?-$2RnoVpsKm>I3W+=_!3TT?FnR-JrrlCV#N)b@}zSRng_uWClj+r)W zhKrXJMe>KG#;m7Jcom9cCjMdElU>(S3?)vUr`qttW8YgkO*}T=SJ@eFrZE2x;k)4a zUHEBABXf{DO<^HcGkigU_~kgKCQT+Jm^^{cv8(E8|sP4m3zzgj%MJij> z(L%nS(;qW<1TI;H4OIu%n$bQTZ-!LxighE@WrR)fSH1)VwY&bSCT2=NPF+Zm?l*u- zyztMXMK-rVvSOgDpV+$}_68Gjf#xt!l!7{uN{BSCrsW|2#V;Zm2ZJ-wof7PQ5qK23 zj3ueZHtZ5`uvQ|198`VGOS-PJj3lD9RvHrU5!wx0MQt;v82>?D#;2U6El!k~i0Tj% z+uay6NRNMpIevaiYgbHD+IUn6sf4{Bs3utZkk<1WJ<-Lo1a0^Iwx*4pDZY^7?bced z%hbCZY`*4(87S3Vyuvx0n!r%3sc)CjT}u~k{7xV<26NOrq6Gf}=}C z;SOeavD+ggDs=jP(2h)cl!Y6oKv#_y^uX#CKfAicK93c|J3~*a_I^q$E_DfKr1O*8+_y# zwjLdFs*(b%=Mk^u6a$}SNF%0WgMS0mTB*+D7X5zHW!0cff{LYq`?A;#NI%+;41owvrt)KSm2B&42x(y$KU?h=riUxM$f9{C5PxtKBC*2P8?R>tA0a(hO%XT?PfFj?@mBKy9gdV-07qC3o=! z#?)K3A9}s;lZ`(x09`$pr}1Tsf-@+;O+w;y_1qBu|Ih}yyp1}qOS8Ky;-)~Nu)T;G zS>Ir?JgOS;g+h1D!ryM)W$Mi5U77zX52_<=kf!pIIkW0JqYqU1eKVEe@%^JoBQse9 z@g^&g!6ibNY8mK*CPRlM#WObu7@veX8A>$B)N<642RYj7XdPCK43m|&^?7P=AB735 zT3RDQN7C(*vYx&WSkucBrF|6mY3<+i8?WKMiju7ijYXMA=o9h+q9&X`@@u<(sbK3x z+6eQePyspCTXg9?$jujFrCsaW@VENMp5M_@Cr@aWw*23-!RZC(3f9zwg-P{f*PjkN z{(&(aHP6O>=~#Z(x5-rAZN2{=KS?^NEf?S9Cw}o^w=48$S#)RN#Ep&2Rd*|}e0v9b zTiSb~73~SHRTHAK2_6;{g{t!ei*-c4_XsFmOHut4Vp;_ozlHhH-aLSOuy7sPYK>(g zxr=JsffnofaiM5X8h3>M{Stfa=@rs{55T3Rd7_tv>gU1o@?@Ff#+i2OH_2Figk~dk zi~8rh+c;EZpjxU{dM{9`sT!>EJZx71VEbfBbY7 z0fgR#un-4VE50|kHNlG5>wtyck#RT}MAK~=4-Lb69RQQHg$q0xUs5&WGoy!}M+OAY zMsqt@-SVl*h%T<_Ag&~23Tdxhp&UKmGP*;-ZIP(%nD?xssVTRFq3pm#v`=T7dBjlh zP@ePby+>Lh7CB|uwhYqFmAHvxLe1khj1_#`B5&1m3a;{hy-HN$2qfK)V>;!t`5kQ( zW-wgwmnOJ$N_#+FZ!5>S^vUnv0Dx87p(qh;mHGX+3F2 zeD4gvN=TT+I(wj)=VIcRk;Q=GD#l`ZFCy+h7)s!S`sp00ZK3kE z01w9VdJ)4wxj0(ar&~&kla*g0V7mrV(20V@irkS@q-!f98lE8z`cJSM`%7H`?27_# z5{QN|BAHJ9GrlHIEDis`D*|BwkFTIxuboaJ6RHYO^5qhf=(zxvne@w^M7UNn>!Ow zHVjQodw_^Kg?}(c`e{RDZFRv~I~wEBPmQybi`9mGiMjSUaz;uL7uO8`kFdHmznZom znvD8(!b5!PJnb@I&zU11pK{*^OsUF#-+bTXi=DdFj-$ulw#-}D`7LZcbefk+z2-1h8z8D^~KXTltn+X&@?szy5P^`pl-v^_I+L%6$<}>z$!Uo9#qz^C5U~Y0F13ZPiw`i%@?`I=qAs+T3=D54 ztf$>tztwrYUBOr?v#Eo&M4L}kBe-&z__C!#X0L1$JeKSLT%f8(H22q@L12fVoDlXUR=*P|fULzBLd@WH#jkxr8%vd6=Q`?lJ*a;V z1S}NMYm)LeQNuwYB=%0&+8N{fx+X5cy0|J)yxIqSrvBOVz|fnONwSLKDtcQIdKt^S z*MTN6(emg^lNKi}2GZRy#&b~jlYlXv3tL3bNCv8x%?(H5o(lJ{eZ+1hMsn)M8WKD_ zOr@tkSgjq>00izCbfCbg8(8w#=^_6-2qn&g-$ClS$CCtKV=4l;l~!17@Rt`Tcqbpi z{B?{zlg!XZ8NJzxoiVIgxndP~W5c<)GT|z=C4IZ!t^ubPtizjWw>m#gum<)i`f87e z8Jpx&T`*R&0f1R6)Cml2grgNPW5xi6G>}EDyQXpz+e9|mP|O<{C4AOVK;GGxbe?p8 zp!+q$(=0;|>?P^37Lb7NO1vFny1#pc* z52|O=%3ee6Ssz-ImCD6R;T8Nr#=*7-5!Q$m#Cu%!xx)vDxj{)I7D}H#(I=)bl)37l znsM1|&JHl~zBem5R*fyFrPU{a45>b3%M$8>R@k8hb#-Y|X_@|;vb!>2F+D!78!#vZT4*gP*ENI=rla=SH5h z$W=!abB;3qXD2w@BY^6s3^l^)CjO~WmGl}nIpTfdjz%)Q!0Nu(>>HKt;^J;E_msTN=M8Y*bdoQ{8gI1w!ed9?f+*hbsla-$e z>317f)z)q9>s_4WHdLF&h2*TpxGhmD2}>b}<>NMo=t~2D3t%UN1-Ks71q(IIoRAl? zfA(qE5>-o*&(4mv%D+@=l>oalQXyMNHNqieJC~b+t+;p{qg!0(EWPQ#(|1TwtzTsl zO`EZ!H~x&UaGb2KTO{F8Y z8`s_voIzbXyFp6@W&|}Fk6wLWY^!sOps_1U9?W>x?=)`e%-TYew*ULjf*r(7b28$p zilLC3?(V8YoD=qu#uynyIu9cCr$B6g^w0wxM@0b;05vJ71EnYo3C+cY%8qaOSxU(K zp`fn5zCv5@;KXUmiOAv=QV`#$ z6&elYz<_u)v_YL<2@Db2dMT+(f6zSQs+0{&W&jbKL~u9xy&i)6&WNy_C@I$US?7eo zuhDpxO4c{X`$0igsV3z>uYRG}1@e_D1m6hLlxp#trxH6`)=JH1xfR0*tN*tAU2krU^=4LARQ>gI z*0*y))wC-M#>tns33jC;fqW!qR?Ep8~y0n!;N-7I=VI zc<7mX@5^p7H}uH;@4i@LM1OYB|L=&J3F(BINSn666oDJp`b47u)eKZh4nZ* z$s7K;@N&jgkR>}_^s1`(L$bxPIvxi!S?+Z6+5bSM*=CgW?x)(lAE!iK20Xx{>EiCJ zS^gEA(C3_A?Qaqm7u}^JKKmjr2X(SMYO5n}UM5Vn^`!~Ev~_sSekYlkK;6rY>Q}_~ z125bqxDEow8D^55^=Bq)q;-I0u338Z!`|_%RjcM4*4Y7Fwh?nn!%=yTaQir!uQeq> zwLwa%3@Wu1>+wS*7h8G6VkX_<=H9qt@>0MGaF7oFH1y6U@I>wV$gS*8e_}E9G3MY6 z>pHv&_YvxNA;xTKKlv7$mHe8HNrF9tMxJ8_(y__Fab^Ofj0M+LyxlN@RyHViIAV-W zn{eirusaGlQdf3HvrG1Ln~UIvC>B1KRvBO~adQcX3l;`>E~rk>RKWQCTii{ZSAuST zzS{N{5U%wid(WU2Ic&L9$>N=Iu12&4$xI1LrKpWW`Ewgp6Hm?T(5|&QTRdq|SAPX!G_> zVSsw$q%ZV9W!wDvjb=4BJx3*9?wwLCEH9y?DiyrX0IF&*0zGNj^(zp@t zB^Nw`KNT2Y`vl*=VI$>iAYcI{v ziQ(r64YgbONVlFe`-VQ6eE1N=8(wk%tZi+58Us0TD(+R}#q$VcNB9Fszx6odwe0Pq zNGmqISyj<{R@ec(O`*zv2o%}{%Cl8@{-qnZU>Q15b`T5TOI*q54l6PsVE6{z0k~x- z(jd<*^Sx$1$Sa8d&5dckzG?_05-17CV!^mnQ+a_kft$Ujr~5F4uR7k`cKzL3_6rYb zQJ-evbzYld5zbEa3;jRh)!YOf4%U{PzE15q1Q;z++9hh{`sfbxUgEYqA6W0sC&B2# z5r8c&O?KxO4nbYbU;p;xK?mX}bZ|Ngq+HkAQC#r%dGmDX;yi{TU3O-riQbV0-+A~s zbMz~ymhrxTFvEW_xXxGeU<;ScNi<4)8natLe3wtva3_S8;G z53%4K>wFM>E)f=T;Vm4ncGx4naE$fZH~0(!SkwV504_0aIv=%&Ye+#I2-FiD{$&8& z=63KTL~gOnc_(%gu`3;*dv2)ZO-9Fzi1zb%dbJ*Bk)lq#K_?zQlNO|>IC5~whz4WT5wTdDr&oS8~9OLUvW zcSONNql-pTA&rA(wD+f*Q9%q>&={mU{s<0+Sd8VK#q?R1k-W)WO@B2mQ56;5K(%T< z3A8k$EtA$5Tt&$GmQSC@U4_Jd)-Rk5`j|gFGqJ17 zp0cRkUBzm?@tyQVMwG}7z#?|3eJ*R_K-`(ve+!<@aU64~Yirs?vb=jWL@Tm-Lu>W@ zq^^(eHF~rQ_+DRPISj2C{5cHWdtrHCYQjBZr$mb-`Wz!Lw87*)uz?AZPCG0ZqHg)(3ASjNi|N z`Qqnhtf@9w5~hP2!&phYGlE<@TB8TSJ(T0pfmeT|Ix% zcf+t1{Kf5(ct6Jd9WyP0zt=`Q>?nu)Z82vd42Zq57v`bw3y|$NM1&?0})pm}i?d+1fO5 zVybb_!_2PpG!JZO{TX=d;Ol=dv45r?>=et^`1HvZL%^JzsF*S<&c;0RtY4`*f6WRv zLzX=!JL*=daA(N1K+g#U37Y%d8VihyO?m{MwX}%E0K-+49?{pEY9~WUJzV zdS(hxhOv43iT}*Mm3QG+l|WB{tvd3YMa` z@YG$-C0l3j7#5r)Zx&iu1JL@DH-6AeYch0^hWfYLPUJJ)W z0mmHVQ=r-cVB~mL97$M+o--#F*Xiz3H_MW)sEYw*5_P;GosbdZfNd_+jglTpEEN}1 zt$#n(Qv1alJs0+|j#93DLHQ2~GP{+t2rQ+cXU9YoO8Jsrlg!g&EmohTc`E;wSMUBw z-h{m``2mK>+`sxZ(H( z$dI@Coks)##Vhb6<@ZN-qm}wU2faiS!af1e5N9xC<5>5;u-rDQPR1E+j1@!kh08A3P?v*dC`hgK_k!p$heJTFG*9GQcq2GUu49(&hcOGYBlNq+Sz8&Xw zrj`tl4xNn*VH7|u#9nGf?PpY^um+P5VA+S!m##tImFduB`)JjmcYdH<$S0=8a~-Q=Vjvw<6-j;7UB1 z;|ZFIbyO!6))lJGI`(bJm7Od*-zrK%mA$VWMXT>u&uYDJE-9!}BR*1X{P?%CJg zRDwIyM|~vN5AlMZo7-vwPIT!EN~*VQ(i11fQ0$oEXm(F55u-ARDr`MP4CmnnGMIEl z(qV5&y|VJBlqInkl+`%Weu_Rf&X>S~r&69b(QYX!1kv{Ud$B*l$ww3wL|X43k)T8{ zc5Hv|L?$qjm#w}6PLucHfFDc_AZCjQM7X9rNap*e)+;wZ2Z>jwfc3c|N8Xd)catx1sR1F6s(Mvk`=^0~KMedF?k(c%?)(i5FwfYZnz zLcjd0%0|bDrt^}ygjQ;9?Lu2p<+8RyaMa(k-#hmAD57FR&~C`m0@TiLZ7*R{3q$^) zDA+)bz%9>*;yFInUcQnUwiQkbUs>v-DzM_%ttp^dOlE(-rxri-#%-Q4R)z8dM?mAms8)>$G&|^? zh>o+*PRAP3rdvuC_#+%_>C2g#gnqPY${mN{sJrVdNGImH)|1yO!Tg;ghvBb{aH_rR zczRH>Jii)>-C9kYig8VORq`Cdb5i!r9Bx>|`;k4Mi(qpKXRp>(UIFoZ=Q%_DeJ`V$ zCSe>5UDGXhDz<4ja)44ZlSKBC9_cSH<#AuHKQ=TAwR{aF(zpyyhMRjISiId-b~pIO zKUP>#ss;RbT;|(GP3|>lEKVJ&t9j4TH8k=uWlA5BLxncr+b|O6V^Fzb_^?X)R;sbO z##&5sr)@_YF+3an#M5~xC29Dpm#pIL$E|WRn7P{Z!~%)F)|wxX+7d=}uTR%P{B3n3k zg1ThFsvNaVE4p&SO_+lM(oT){D}|v0+~54$>*t1?-K=jh#p=M z9zp$=_TAG;hVvGH5d8Z|m)P;Mc$&E(^n<*)$ccrJmC!cf2luy1w>v8gd<+=r12t_HvvouIn>~8XDY9gV8&K`a zQZd<`F^HKrn=9Xl)fD5-kVX$j-bQsic$M@mcEhRQ-)WPb*2n&;m*^FWt7vlAZ{VUf z+`#8l8}BJ3OZQ3(~kH{vlz$gt;D%PWP_MZIHZ1?Jg?yjc7$Ka4yiPpLTU-aoH)i zbQw zn6857W*hO|rr1@Yv7+9(Q~O)r&VD=wv?}T#`eCsdO?|nU=bqX`+&|fP1kSQhEs^TA zUn+^IyMII>*Xuv`FQ?|??rb0RE@Ai=!6K3k89|?GCyx1AiRvoD9+2JnMLpt1raa42 zR46=KP=)(wP(|zMAp!-u)3JfwAld-pCwy~W3eiGkg?*CU$#o;wa`T5f5OxK+*k+k1 ziFpNMr8=q}RTH<5w+=abO>9SU3X;Ifb(_V#e&i<&7~)wb9{4}{>c2XQ=Ze{$oI%7! z;INghd`BJq3Yw1&}yZFm-6jJ!nc7++~@&Ct%9R9395_-Vf4;_GCP`lQai=5b-n-zAabSDWSNo(bI z&F3>UZv*lwg$Vjpw;>Ar8sjg?%inxyF5*(nBduIN8f7e-;MC%s^t~)iv|InJpeW)Cl-Ih|M;YV%UJ=T#ZYxoYxH)x!)m~VmH0bKy0;v zXg#Fxw*il9T-ub>+QP%h82f3YHqVOQn4~fUy_05jUZ)BQ_Nq-%!&Ap+bJ_%(J*2mY zH2ayGhk^;|9%ar47@}V`h%Tc)bx$?o(&||#o8zAhUP98HO;}i@jonTBuhB`tZz1n= z-}z1Ert5__C}Dak?K*>uIqY_lfg&$zHAa_DQ?Z0oj-d#UBB3flDLL^<&DwJwVw7*E>guc&~Kdb?P#b0%oY*ZfoaEe-|mQ z5WmHU(U1HQBftvkIVHq`riz3Ph~__>_!jrdK{3E(wFHdB{qp7&Vh!NZGvn6@?w;y& ziVAkO{KKDyU8_nE5ci(H3Aylr1n8Ar;|bH2zYD@8z!xhY@|On-NgY`!p3Iu~Y?>9z zj|&P4dOnsvxXjHyK9)LIs7S)Qn9{E-U-W5JM2)UX_oNj_1vm=?^)zCY#mKlqB>$M|h89`(^Iriv!w zN#bMKt9qYGqd@&7eX=bIr{9>yOvq&UIzToB-HT2lxOJL?ShH61pqb_Il#LJ|aY!JM zC$@tPsIf-81P$xg%HPx+9@a+W6wd%Qs-PER)zDUudaD&{Y5W($d?O^22_FKi%t^<` zn?}gR*gF~n;?1Fd>MG+g4!R|7{_HSJoNRKMH(_}{hg2sdT4|@qn78Vl*Q4)as7WIS znC??Nw}W7s&Yun{k@p2+4gb|%L$S5=@}he@wP1(h129!N?o}ova`0^zRZ$Ysz@DR-`d?NWz2X+M z`vtuxIlw?*#Qdz;{;7?3lYNDKv{?iHp(FH%dDJv0cRG+9HFHL6(P>sH5>c`Rf8)iM zcyIg{$(=7WKXsL#vpxFS?}`T|j;yj!@oG#fvinUGu8!c`a#E1%x9g*I9_hB6w2TYe zh<|oa(RiKknFXf(qh8<9(yVUyP-5r`H~`s46gK3Jpl=7=AX&+><*)}no~lj#R2CbF zgyZKo@Vkb1Dgsyj7{0;AQIF=sZ)KC38!Nzh9F~bp)1_4A-51e+1!zU{i#|oVK3bct*L3a zm7t>A^%N*af1C!PoYjr0J<Nu2 zic{OV??XB`#9zoHo%{ULEkYVFU8x{$ztrT5Z0fjv${9!c?B z$0aYK?P&1TO(@8J=0F&Nw-%X3d4qSgY2p-XhTyjcGX$td$o&$|zgu;W5*XVPuxoIp zGhpeSFZ#2dR7eN1!*w977vZT~2e{i5!k9ig=L$x^bWC^rQFzUhhL%14!Lz9!)(%%? zvJDFH{8s^M|BQ!2Xvt;&kOBT)7Y3_blMN8&=o2Jxxuk+pkTkSF$Mfw0p#-Pu@Qp3= z#1Li+GgAY#r9~eK)zmuQjY_4h5I~1XHI#2xP+_d3#y4BIIDJl^Em`$ZKKC1=o`aZv z{9AnPm;*N#GIzN}uXN$4I`JlW?bW#0^N18iV}x!e9tsSLlw~ci(eDit@;)|v7!&&v zmy3|!1&%w{m2}X)&!JooD964ZLE;JL5ry;c`TG5UfUExqTyY3)=6IQyI9Yo8*GsZ*NPLRkq7b&kUimMo=kOP1pY}!yV3FiJ@kQXk5ak}~R61%cPzqAhoIWFW4wG8Kbe|ior>uMcY3Ek|cG6yk zNH^AKV&2*0F4pq`&ur5Mw^lq3yKEVLnz-=711>8!CL?Ja)@MaXC*W?wXjdh$zQz54 zD{eLW2=)=TC=m@*`S2GpOt4C_hL_e(eRng6BWp?xxry?(ZML6_zY08fpjkZQypxim zTGJ~4X7Lb9sVdE+sR`yccG!i+U*9U&VM|kghjyWUrb!D{XXk4Nj@;U&ZjJ9`snQhb zG*!8JLPy*Fe9V!iW^HBJj~|p!F;N$!)RH|UxNIL4Ub7Jpqz%lO^U6J zfHVTZbef2Sa|x=(!*bRWu7CX*Vja?oO8EZsZisfVNQCiZd}&xW;q$Wh6i}>(d#F!# zsJhgdC`;}0K8>)w4MdI$A(M}ML{kzN?is}RYbDl~Q^y6L!$?1a0pRqsl@dChLpF`p z855VwLyh%F&xM|Bz-uG9Mo(ovz2AKSeM);FKD+U5G^7Vl&78?t9{vaQx2KL-0D>I# z=I5l>=w|!i@e?fpz;-b}v{VJNIkLl)b!yVbRB5=z5H2wi+_@STd7O9(Fv00@Xl0Df zKJ3$iftlSHk0<1-g_ZK9v4W%5gPU2mRbNF;8^B{*t%!TM&Fj&IQ3CGb=E_wn(R+Em zK|%Vw=?g(+5Lk6kTzSkthLjv6`l8W4{xQl0GkgdlepGo-Vd0}@9+TgQXk*d`*XoAHh^ROg*DC83n`D( z!{3z5`E|OAit8ge43h4Orog@T&Q!-&+*h#LeMn{keOH#{HYf8yks9BoOgAg{G6zPK zx#UHpmkUWnhBe*y{Da;A$zlnbwOaJl#8=#Ty<-DtEMR+_O<3;MX9wsKuTCV88&|+p zxarSvp|tGa<%9qm(xd*DXW{WEKHJ}rW%^EM54~jr(jn#pic`)YQjwv=&s5uVz*#*i zuzFWV%lKilUszoWh+XMC71OBdhzjfUtmEvxaJp-UE}^>nSU+Ljh?{*606r0P9w_QuYJdg^TL-AGd_SsQ=-t7WqH>I>FMF&*#^FNA17=m9anO%a?NSBG`! zgUl!oT(yqMtYI89>dnysnW$SC%^2?M>D1jH#sM0d)otBHBcUGf$azGCU}qkpzNaf! zeE=N4vzI->vY1fah7byj5o^t@X!)#qQh~1`e2E0#8fNJ-kb~Xxxw7eu(3Q&ZNrbGL z;Q-r8Zj-M#m3IxwnpuR7+y=f@X@;Ng1Wb!TqtsHo{+CMqzQxg~<=Q7)U+jm(i6~+- zYbEaYu^ZoYQ6H*J`toxJeK6VW z7bfyalR& ze+Z8NWXX5wJqe0M*f57<3OjZqy^2mwMlBI_=TDcjdMf`*0lLn=ML&d!(E%VY4hJ~0 zG8p&T1Q9ElTh}?L&&a)=HQe8sz1utj3MBSYgb7Le%e&kTa)d|N$@GjQkO6g7lMVjt z&}Q`!d0FJpCk#(Hc8b|vYg!i;-RK<`N<;ow=9htbniVL352dWo^CBRBuP-viB`zX~V8%W($ zT^}+O(L(eHHW?qOgBH8L9Ks00MDFW#CV7C>O*L)axYsst;~827ZBVuCW%;1>LQpWY zVYKP{!i_*u2xs#P)`|hL>@3Y|=1N!>nHz;%j16@(3(kvUGz>EMjit*fm(0YUgs7d` z?Qgyj(z`{AbZ=wDiV{^2jM7oLyAG7jRk&mg7!M>b+z5KOGu!P-og0Yqh6h^>2@BiAv-)Y}pIp*OCZy+a z?RT6pW)K^=boyvgJ>W*-JJ#}YHTp^<7TVH-HQ?c=PiTyH$g*VKdr?%)KbvHoV||0?S$v4MWB zoINT0RRmc@44X*t3dTuV=z>@3x9#C*;?TLLV=>(maZfmM8(hG_)f0wSPJ@*O3?E52 zk0nK*K~a7_25X$i}uP3D=}&wZ8n`iRi| zL2Ee&Q0zAe*L4V5=kBfemUjU zjyF@5Ex+nUN!B_5ZMyT-hMPI4wZq$q9}?9Az+P96;S=a>kh_A+T6^{VRO_rc&U3*g z5>bNQFvr_sMNDtaVAFcAE9zaeRWA*loe(kN^AP)y-C{j?)=UcQGO%!_Gf+;kTg9{a z&I|22v64d*=Dsb6i@7WwMdn6#P~#s81$3X}N<&sv!|3-S%M5&rk737PT}FcavnYkju(foFCSf3@xkF_++-`Dw5eVpP{U2$2b<+nxv*L0@%A#&9uRRms| zIGs6K`ZqDPc<$9&EcLetB!3O)-7v)!Gv*uF)%-MK5QHD$*(Uf<`_}~q_&{WVj2pkp zE&zpJao)e`AK=xbHnVgOVXQ+p3yCME!vb|R z9^1v7+5D4mk!I$p_NygP@ov|Iseqke{RSH1(Cd3V+GPegaW+IhoT4xwgPs*|ZyCxF ziF4ao>qNkOI4l03xSOibe9TUoWF6TcMZm0H{l{o55q6HzbmUbrO7 zN#L)iyJ+LQh5d2VCkeCTOVqncz%rZ}$op__*q#SF+gC8SxW>xEH^k1BJvZWDI6UYv znZ4cK1yvt16Qh8|GMU2nV$(zxAO-~l>X+UXd*s5uGPtyxkBHwcdeyLEh)*upa7?KR+w!%8R znea!)S!0cuQuh^-VkfJ9U4W-1?(xY5`BA6_OS>O2vE2X-jag6tZCVk;+?^VoK}Th4vQxxbf7_;DxK{LrQMq`RHFKC>IUhQ?|NHR%a}RIREkYZUAS0kX)wp zApOOjWFXx32shfHFncej2wm;mFzvU27P2@`X52~Ip{0S!UjSl?`vmY??R70ngd1&v zw)M}Put&T=OW9ZO(wP))VF9DaSs=~oSt8y%GB*hT@=&I)O8RtO!&E2LTG$yT#sv7? zQpMlbIFrDT%x#mE^9Kz&z}`Tp58+Vw9B1-c=;vy_1}I4)Je?ho5mIKyWYAiF4iZzw zAs|cRSk_(`PSzR7j}UV?80sjz`)Np1901>WVY zO9^=2<&N43(lt_T8F0KXPC4WAi>~uqmMoggDV*<|31-sw_o8H|=+;ZUh1Q6&f9xbn z&m*AIR0qS!Q*rbA>xtR&h4JEjid_qrVem!scT|KqAlJp3EneR4Kg6xju)nq`SC2c4IzwXq za1sjsH&<3S_voz`^l-R;-4R)4Be@&zA2rWoWN$7=bz-1b@M+01oC0R<-iw#lQ{Vc?iN{syc)9}q ztvOuWx=+=#3R`&(R)1Awph%Sk@LFpAt;*>aPh<8@_?erN)Fj73)a7|&;A@f-W3bn) zP9UaO|FjqcbYUinfJ!q1Z0(lA%(O9}cJo*DwNH|;tR2QX;{u*EhhM@z#}My&T!dh5 z4P=(qu1o)y_9g}>8ZWNZT7bs7E)h#(9Zj*iC8Hw#S$4~RlZ8F}C(o)LTOTYr4Ens&d(&%8i%Rk1{OBF=ue&dglX-x*2yg-%+Ob%F#82&*dX&KM%hN;1dM;H*Pw6o;N4aQmYkd375}m~z2#APmm< z2&Ciu3$~Xe%UllVIp^JdXZ=|drw_51%M;gs

        xK7dMCYdjuQSBAdt-7l-QqX6KOv;|4yZR>h8x5{T z?}}*jZc|V(5}8FbZBp&kLq}AYs*37}-@TXKX^27Jm)?gvK(eBA-p6t9a#_#wFP2o5 z;*hh?8iyB{W1NK(kPH{N8kK<5fKgXfdevX5lY4)4;I6SqVW0NypkH***UZ$zh$nx`7TLrk4{ovmsfJ# zC9_%BCC{Wr){>j?sKZc|zgd&Z=+499zp8QL*3^Q}6RTv&}r$n9D>?~O6y85_N@TRZVgK1RHDAP<_CJX$@bbBCI z8&^h#(6*VGqSAq1+EO9I?ZMACJYD{>vYd2(8>}`IA;=8f1zvemd`8-RXy;FMX2GOq zv635B1$3rE1Q%auN=hfxPWNWt`&M&P#U9Z^m&SQeSmiJAX-!79Ki!oAD735Jm-wLd z|L8VKdOWb|OL__-F;61q_?PlPaB;;$m2knrkqiCMQaJAC(}q13-|(x*%gO18-Aw^! zKh{ANlP|^Olb93`6Y0$kWZ|`C`C8Sma$+r_Ac#XK?tnzSZ$1D>EJ#K6Mr0Ov3{P}3 z?s>)~r{h=i@-=k#`v=HX&NM$_a0B`01A3P%)ex0ivyMIZx4c{IBY`y!UfyGbXdpyK znQvJ~)z&|xt$$DuMCdk4jP+>y~ zFiIe8h~ORR1&B$8wrF4uAO^aap7_C8z|l8i58*z)tfo_mtM{S5;B{;$u+(RLyj@kj z=1INgkzUUq!b;)wH$Vi6-*Jc@-FaLFCg?C@8tRy)hjDk_>&JWeX!08^excpH`Enx` z$kE*pqZ_lBY`NtKy}AfZctKE&a?QlcNAS7IFZ2*)soX#PhTo4Y*1A-A#a|9v^nG{L zvV+pHgJju^Zw$*0%7^ven3hRQ^tYyE5_8{C-7*P_^2y$e>`V{u*}ilXyOGnNaUdNQ zbB74|IU>6uQZ~U;gq`~xUa#whuFjW2o6M)l2e*B%``|G7Ame*{fK8dj1>%32w%E4Uc~$=FEd^j?AQ-rzhjrLM(IvZN(R($ zk2_fuu=sL4)nY!E#e7c1tUQLZb!emj*N7@7E+Fj9LJ&7~+8)PS_kYE&{)j!n_%iX7 zZDfv5D@^@5nhadC~>$_n6<1EG29uk_!!lHVqLVuJ(em4l+A%EEV@TKjOrtK|wysncUhcwqKJBe)_M6n~H`44dXcB%H0+`3~ zyb$cDurFTJK5=<}(yu6B!PS%00>*?;0b@e20M7}%FCIhJtN!mqBz-ZHZ}wD@(m`YB z>n9z5#Fp_J^#bFF`~+ai!>~RsgwAUIgs&l-rM50Vqw4#KZc2^?-Sf{%QznNv5&&%W zGtA^4hQ#AP;|@Ai-rpt1ln|=CH=aZSdLf4iuZEBpl7QfdhQwRMfx=HR$7(4&`2SdV z$N$rX$NeEW-j%|SAt5XcST;N&y>ys=k?Fk<#{?kN{{_TMg+%r*dO_n^%pzIPx4&>f zx1Z7rDqxPqvY;)e^n!-1}0~+%7XKFsu#r?S5hm zvopfL)zOoJhlG$EQAmy}DLaiwF?JHGC)XimY($T12zCGA!QB$&$w+Kuh1dc(Y=#GC zU5;mP5=`X6gU4TvCtdO^Q+Y(DuFPICOLGU(vy);$ zh5Bx9z?tDnNptxqSufe^bJY)cy&3-cuEFk%dj2eDW+o8%S45u%g9@%6L6RcQ|D_X? zoHexQV$;Vtgd!@)X!mqyy2NZvZna;%Lcut_%z0*+B@GPS14E~iP~9`#$y7CIQ%S3(MGeO9 zbKL)UnW9i-L6n$K^7Lb;RSf z_o{kbh8aI#pfxm@F);WZhBTk=aFg{7ubG2o0a^^b%;R5`{d*SUT9;$HF8gH9)SMtD)sqq;Z33PsWX9-(xktVmva5;T2k#hQ7 z(03mVGOcwoQk?4rJ`TBj1A>tkV=o7_l5J{sX1Kemreh^g z=KMyp^lRYL9xf+N3`7p=v`^7_9cZ?I;SH+JVFxO;63ZF$4*zb4f32?6imT^!-H-xS z=Y|`shWyC*Qa7m1ukzkVu@9V27M*66vn8?U@5aSagJM|8B*lm_V8s0lce&x3RCJ4u zIjqBMn~q}{o?vnGLqI8e=3lGjeVl$)7OF%ZYf`SNsp;}}M~dT&KYeYyY0)u;b?ao) zu^z*BR#m;Jfj3+Ji{AA5VEpa|Lx@OZJ(enZJ_LG>vE%VyxB$vBSP@}MYWpwt4T{2f ztk5qug}2%9G6)`b<56SOW0iI&D&t@=i{bZFm1&Ha&zQwG zmT1(wNC+EmPBc#y@-IOMfB`)}27%V?6ziX2oF#nI$LhPPf5Us_ZwU=_+$x2pIf zJYWhChsbZVrf$2-pWpZK@L z6N{^$eBu5&hP7^E)4m?V4NocBQ-3}CzZL<#|4U?5S1YDq|2Kx=H&s)p+nd0c$^2XL z)yqE-Bi+6{*76UVecKp5Y6%tg?|bzAeK(W#mBi4i97XHo=Co9-^=Z>K>{RPA9DDk| z)QGI(0joCBrg|pBgH+XNJP7~&TDKtUIKc{@Pz=CMcr(Mh|5LuVs4jk$s@?IcRrT@= zSN>J?J&qsEuf6ZhWl0>XH%?I>mn8%2c%iSOx?Q*$>!_;}2-A*S*7Gx)9gFRFp)aqz zzw`1c*Rs5t^?ON{SO3K5Ucjnf|C@Du3}U#{ZzX9QS5@~S26tAjjZOJ_3^!Djr@{U6 zD{mhEsQ--*)Cd)PSs88LU~dP4mtScULv1f&Jb;u5s(J z430Uh-v^5RI5^H?c+r2!^VYpu*6f5$^KA_8wRj$fbhsnPcMQXCsusz$ zB4Z|>|Ie%yi;tKwuCTIy*v#C<@KHwnV4F~mkYddykJ{7G8}v1 zKiI&m3rN;*q|Jg%h6kw@&^S~2+<&BXS=W)Q=ZOo}UVAgcyZ?)kur4Pr@^bQ`Z8^zs z<%?=0aNN1)KNAUMRmob8Q>>s>r5!KyRprV5#;Q^ci?X<6bw9J2v)GOo`rL=eAE&)oFJ4suTKz|w67%Q z{v#2!&JV;hq~2ZpYpg#RzD>vfhZ>i48OjPK+YIQ;aCg-JnjYMJ{=d<(tgBI0^8>{U zT8%Qi=sy?->!OquJYh3n8^e1oalpwz#+Aq6N{7=-Z;C6U*v-qh8%B{zBluVElm{^E z(eZ!F=Oxm$@CcI2%6w!~b}_@tRb^=edHovu*Ld-QHM^^-sX2C{Wf;Dts-ijdofR45 z;NO2~F?sn2=;p++Qp0WLbY?hJHHXH8&-5{&CzJY?#IBOX$ohIB>+zvt3ih1~7+zBK z8a4py9FR2$zR{}bkBt96i_@`}554d&*M94(imYdbqA&J__cPq{#%t(V>%haBEV5}j zmf=@aO{w3$>tFY*@}?qdb6qu4TU_lNx8sGrcpHE5Ut7G{-E68I!)o=gsa?;G7y2S? z;00c!6<8K&GcWw(i?qv+nTf3FtBNH!42@uTRJD>+?2@Qj#E{9ld}PygF~iF(UdJJG z=apCOtLa^1#AL2<0Y%HTCoI2p;-*it$yt)zxA;SD{{o9=r)FTT3n99<((J*-I{OR zSgaw{X<5TM2GwNvjvCj_uNFn)Sdk2yqMaG;qbf>+<$x>q>)#u8+ITZF-GNNVTGSSr z^Lf&%X43PPp0EtV6?FXHa&XBNF5*Rb)+pJgac73Rs~S_^J>$RNY2&4NR&Sr8J{=Wf zc!R3GJSxVRclh^TUGrQv7RIQ=n%$6WwdqI3mr7Pcg8g{D-jAPVma`=>?kYsfx+lx} zCMovN0WyZWBwy=BVI6!}o!K^Z$1*&@;(qMYgD+i+7Gd2LVx`KZm`c;JGRB|2=03JA z+gQy`Hg)SUd}oU4W9;9XT^k=Ohs{`}rHaaQ*vyU>`iiK*rGI%vWOKN(nq%F5vFX0e zju-l}$bE^IMLCz$WzlPw{-tHnWk*@zlIq^&vW{6b8NSU`lFD9UeTx`mS)pW`!kroJ zt}0A}?2aq1?pNK<#u&@m?NGF*gJ}%Er)n<`rZHx*t3+e$)sKWR#Ij;Hq}qm9#+OP} z1A;?rkci?TmRZi0#I};h$~wZbx_uRM=(rlg?NhIDgRpLGur?!Y+Ga95$l`n)V4I4l zf8WE_mr7WtgNn{{h>hW`*V@C@^K7h5xiqV`KQjJ|#ltwfreC>-ujD{VdT}R; z6J29Sn_2v;_l{#2eo4pwE#LlKH4FFRd923~o1WVk-l^(Iz4-KN=T*I@6RBgkYcQ3@ zo~|y#ZBrGcse^0Cn5O*uFWjYZS-%@^La;v5Y?fp)JW92M`t0p`pB-S*(2|(+w&$_1aW+>jW!JDsgj~Rmt)US4>k~jXkuc{d+atx>Lleyr`&(UEKhN z18LXBpVrZXmDp-iaxufJEdIp)xXHiiPjjJAz>3sQHx7@!!<4 zhyjq*IAT+C8^b#-zQzG?+m%=2tK?H-{Buj4y1K2SMootAbt^j4U{QxL_1q;I|E`wT zjp2{gnPxL2li^XSAvFAnAbt2_($JDv^mpT89sO8?eToq{uzbkyC+=%f(XD&_4n~5sp zqeN_^5A!T&-daor8!Ea}5PTOv?X^h0&vpiVN}>SB<)z{Y0k6-Q<`Q$YPl55J;3yHD z1>;hApKDOI%O7Yr)a?)W#X`EKIw}M_6ZSz=EAch!Tl#|hMQz{E9Q%OO9+<)oD?F$8 z7eCn9u2N~}4}>EM{tiQFB5d-v@gnmgvs^O8y{kDY9E}%?fU8n8B!r_T{5^%4!WTY# zpU4M+%(of9E}>B(;xkChheY@&NJMC*L>vg)p*dy&_*E#4um3_^ohd1jy{ET(wkz8u za)M=4`;}IsJ4g?1>Ra2rr?Yh!Q+jc(am+*yiaJ7`Kv3~fay55I9f zh;9kG3=aY~xx*Is9yh{f4F=Y9%lpfPhS<8d`i#qx!q%oyAq&mxH{`U7{@c;8qa=Vmy4&lVQ~fb z#8QG#Lfj}Xaet(m`hkGjTBHm9;;pf3pm_PAhuZYDg>Z0gL=ZUFJ5ba^$94@z$F9HB zLyTovGjB9+wT~5HmwHbU#~5`=AvJK^+-H&)0og0v4hbPS%djGqs+pV(iSr$kv$!s{ zgx=sQ@e{e|+0~RQ@vmZm_qk+o{)FtzOs8*{$m4?A)lh?Q7X{%i48r$dy8PzFU3B?z z`J{}2qB$n3mch!7@fhsPfELhVk-M^ZACTn-x`v4s7_yME7@(ctTW@tK|MBXkZ(BNk z1ImE1ml+HGl963pL-^8Kk;rC*-mIHbi5fbqzv$R*eR6hEw2x4Z#k!xYL3d^ z$BWZMh=Eit6GmwfnE>7s5hWe?!Yxvt*KRRuUd4`0z7J%N-9c_Pvvu`8ma?WOPq?T}T( zaG6oHRlTQ6y{D7jr7A{=a`OIk@tXE+eP}shgTdGBIqTF~rrIzET&j>h=HDk^_^DfI zJ5WT}m+<#K8~sTQhr6I-@dSlefJ97)bka;MY{aOJVlfx;4*xEO94}~Lwex&piH(#8 zq{k|C1q%Ilm3)Q?5yM_Ocf0DXMbcY~$XlH%(hM-u)oy6A%Y`$BW!kJS%ZiDB4|}dn zPZ3;4=8dRhx^0=}coj(dE9xC*R9&u4bxo%28ugszBC+mcy-8#jZI^YWRV3FHU!*Q( z2xlK&Sj-$lOrBNDK3z=NsH<4zFu|jpxPyZpt2*&*O@sb;CHb&rl--A`$%ms5pXT*> zvjc9AOD^hGXm}y~cA$ja57nj~3vYRcY4Hk8glA*j3YCVg*BsLTjIN}+sZTx0{AfKh z(<xdHrX zbJfS>sxy^vv=bZ2({&x7c?B?GHVauCYg+fQ=4b?@e#mn#B;K^~JPr-5x#Llwj0cuV zX~$*rE!kA5NE^Y*7`86iu(G6cB(tP|m-_Nd`qUoFcQjDFxnDN%{p7Tdz}oNtSlf*& z)R&s$MF7L2u}L9eJQKc>gyzv#u_bl$`U5?EPLJQ2jFTG?!-|f(TUGdoRQL!f?1l0p z@srxFl%7Ko>1$9yyo1Q(i~z!K_iG{|Do5eR=&+)U4BGH`8Sxk*a3X%1K8v^nz;aLa zXb_tf@QL#Ca1mq&>6BZ?wveI5=JEgsh63<|_Su&5%$wozi1PI17aJIzAByuR`qV+k zwtjJ5!>=8rUJo;@2Bm=F#w`eOf!5d^s-QQ+C(NEH#+Ql}aD)06l$G_`42>5jR63v?}!k zz&QiT2s6s4J<})ykhK8WUzQQ3mT^~Ay^OHJWelpyWvt>d!Uj#~EvnrqeX#vb(-#-D zO78+mgrz6-7K3aII8XXayKZ3;GI%Pr7a!XgYQw+V9d7{TxGX6A2XJgexU?lF$Z`J< z@uJ#|F#qcTi4;sELgMynQQ|u95Ah}K2-`XXPQAUhhYo_8K`vMStmb+%SPy^8Q!6Ns zjbM2-qkdP#>V1Y_sQ(qP_P4AaMT;D$unt`2EU35kLAQTJ_o2u438hBS@|-}%}{+N2ckz~N<4tH$@T}l znfRfa40m!s^`OY%0`F<9dhcfP-p%N}i816onYFbuken`VSunea*cZcox&{5T@FrY2 z@h3cP!B2QZ*Muf4%0Lqi4E2k;@sQ;KL?t5XwjpVvQQG@uMeUm@7WioszqtLxBTd9K zz(nUElUp>#RzKtxoD&Qcjj``Kb_+QpY-m&m(YFQ9C0m$Izs)fZDD7{BinkmRi*Ai# z<{Mi|re|B4%(aO5oX+gLEsDeWMJvhlZ7Y+x4TW>rZDu$RLI5Mm%5b)I+;t*e9095$ z4ieF|qB!2&n4ulT`+-^<@8mcsIW?|OyeHJU+*7L(#+$~~Mk0=*J+}4L8B_nHz=k51 z3mVl%t!7O%ISw_&hPVOjj)XXirWj~P?I>AInqoD1q&7`mT4IG92kC#(J2>aaWi^kq z`BVS=Guzi!w7ab|qDNcZ7~B+G2h&6!ESYehbWd%ghs>jqHoQ*pKK_RcmK8IR zb)4PyUv<2FfB9;h`SmkB)B{&IEkSnQXs$JD#}+h z@96L1&H(Wzud@0*z1@7SET_*U=K*i?FQmC4GZ)mG*rwWU@ijw;bIOk?nfx8 zp;$n)a(5uqNGvC)6+w-~YJz+KRd%vsPxEj2Os9XKm_@qGxq}wN#n{%-gCF39b$Bjk zy>W?Z<3_ox-KgOlecv6@#*G#mHySp6N~y2wp&<>#R#GoAmTcTcK)YCJC(1-aW-~x`U5hCob8^as(oi<49`#u zht!w$ow3+=hV6qsM4Y8`NJIJj0_x9sLiiAYU#@(HKKTAMfZ??tY%TJkf?_Gp2RYgT z7}@C0v^1g-$6EGWrfU0o5JltlAdE)4MpE0?gH&x_4>GmQrS#2>4Q<~f#DvDI?IHp% zHfC)j%1LdPOKlrADXeWfkI^O)S+hyYRSow9kw5nYp+8eV0zT~BLmF0ZraukZBXz8t zX%hiUk9|R#A>Jv?3K#9n$^x6P=q_GQd_tR!9YrqZE44yZ;gVG05~=V?GpWKQQX%F} zT?I)MmGfA{p0^DZo(@J8R^C}y1uUG832=#z|4%J>d@z+fJ{Vi7tzs23uh^7;eg#ZORm)K_m99PKAjJJ8w#`SjM*FFo_kVjUj1|5*WJ3zsk)m#tWfna+5AUf_kGU6A~s%;A> zF$XbOZgGl=oY8`;I7>i&3*CzI#2?%e-5@o5Is`eIAto+@FwYRijhGyX8BLhiT3*Hq z4o)K5@YQNdMGT?fj1R%!>}Y9J#1LsqUIf{a8-lu3Z-w5gSPB&uZ&1NQT9GYt30Tld zw`BqGA3*+Y6-m#f#1RpP5s{d;3DX8KB9bug5N2?kZcEuh)lI&qfU+-K3NB1eaAl+t zHAk}&J3EI`Peh+(zx0t!a<884fq{r2R*F9x3QU7VLua=~3SJgm90yCdw9dv6Xed9Z zZNm;NQqe#oLg(4hjR{>~M>iq#NjthJq0idTI0(v8TNNhAa%&VO$da!sOps-lwi0~c z<%WhUL}6khgLqwGVq=47k1ou{lZtd$x|<2>Y=ogw(*N1ePJfXu^UELw*|5?pQ8uh} ziM=97f81=t%1|`1VVf0M+3qCl22sX>PIdeI0hnjUR2)O|?8my7gPFY5sN`f#N0om`%dX&zWXv~l`jW>Ja0ON>2AR2I?slgJ+7Knp9lMHTu@7B|prI+W)6U7TI; z)8S?b8QvlIk@E6dR5DMy4U!LSmA!#>mll=k;o^XO0lv%}jE`dPa++N&aR_Y5rlJfO9Ap*W~iWb$Kb_waye5V%n!MI zUVpPDLc5is{lgQg3RgPXCWL+o+p%$Xv1WSGx3AFc%%5QLFXS5y$ zi`GW)uOW=3+k;3AD^rSlu-orW%5b$F)(xw9Q=!cQp_x+MsDXxy=7v}^Vgt<%xLTuE zK*a(Op6SH5Tq&PxXcnuLirco!&{N!uh@K3KcAqnYp=_8a>l9Zbp%qdw)0@)Jb+^!# zhZN;WwzFXaG*)Q)in7xWG0f0ECT}IV{bYI9)Sg4ULffJ#xy_LF^f}!bdQ3?UFeQyg zrouBF8soKfpsY{-0KHjQN6&q-F?Di7f2!>^xhnX4Vt>ex!Q}5RZ2nI2yKobtA#|l@ zf+^}Rq=HjH3(jzs=4}-Q=!takN3c~ywkO>MmF@@4*guFGENI~vyO2+=56Z@aH9Ll$5!2NsMDVGB5sE}oZ82sWaa z1+5XPjXq>-T%*q+ab&4WQ^>kl`h1wYRZJCH-J^4Gp$Sc;E=j70hSrs@=i<|D5sT=a z@wmDnxIV(u;_>klP6j>VZbWR0$EP&+rL-0WfW@-zc4Pu1T1Sb95s*m5#283S#l%EN zeBD~l(jZD^X+v2e+i;e-Z8*#RHk_qKTYRiE9a2Z%m3IBcznHyk*zq0l2IW`&#m7N4 zprCU3@gj!{igQ!}s0T=kxCIi=LW1(nWN*!0W9F?Y6!$8l^%B`ZMv{lps@>awy%*0!JVWV?$?9q^nI|EXFSZiqN5rILiERWuct5UoE73wIpNi@K05~-| z!eK;bg4~mNfTA;4oeyPns&&$tCa;skSJ#kL&ONoZ?= zWbD0zT|N*v1TivzSR39Wi+gvbK!F$EC+Mw>Rzfng4!jhJE#kb*cz+EgiV-Uug3NUJ2 zx0~z>7YEDE5G$ml*oto4NEV&QMSk+BTJ#P}(L1Q{KuY%!{z8)G1PGR(D;gQ>4^_9=cMe zsOakx@bNJV&#d5V8a z(>PSx1ud%=o&AV_&1g9;y}nyT%_2db9pdYM9X6iVpRy%oaTLL zpL7*j=j|)iT}3L*>Wj@k4*65XdgA`PFIScI!Z6l>vls)gdTbX%hS zo+x>%aUyc$OOBjS|(Ot32tU9lRQbj-I*vuVqoPk|0i8ZK1)Y=?{mx_-r1N~d+b-z2WNSt5=Jfepat@rw z0{wf{%DyU;D*LKXtnB+CcO;Bu3AlL|7`9 zTt{|hrmA+XBc11@>UOSE?UY0W8X-VNSDwnE-{N2F(L=Gb-Iq#USWlVCrs>@~Wowyc zo3wVx&ZND(I}QnKh+`V-Qewfw1u5kcg>LN?Zr%r!~iT0OQi5M5R|DAu7E|fB%Pni_^T9XNb?4 zC30EiMHba-lIk^4^~LGB>NUxQrZimqNc;0RbKfsjAN0`GTY z7;*6=nxn~6-FhL-vCKc4cVXT7naeEqh3TIbRL>5%aUrr1QqfGiRpk-kcdltA604Nr zEbRemFu)RFu3*x*L^kT|SE_Mw(zrOZX4L@QI0A1PsMgUqR5@#)ZeQGAwQn33yXZ?( z_js~z^+4Uel}!6s<&pN~vVHMnU+D~sebl$~a^t4o0hzPqH>z=6sKs?bV_wQIBGm;gL(^-Y^)AqDAxXh*8(p&(Xp+-b;<~ zdEy!EmG5};L3J8sUFoQK#o%8ZSg&jpE~r8a^D(qAuQdop$&)t#CPlnJn1=?T#SO(Q zGC6k;4Jx>n?#}^o9xy}fq^0yOWTNhOd{r6isTy^^rF?q#TUG6T&-sjzYU@EM%=5J= zvF0q;XE|}uK2UudFqB)v`9DzPOq9C;Ut~w|AYP$>cW??!ra2l7;^hZ(X*y3M zg+~tJK|_q$z*Z)D4w+0drJyrIbhVl1L?J;Zh8pI_A7-Y*Cevi;yFeY`1^U za6?ebBP{5M$+S=k+VU6+(s^7*?1J(hFJi>+h!>A?W2}8lZIqkkp4VpD^LpnAqgigI z-Ji54)pjXy)1Hi?4Xw@EhR2O*?`BOlOq|p1qSki$Nos`RE2?{4pNcYC?e~OP@D#Pi zpGnFuPs!H!8L8pV`8&<=uQnR;-_&opkNej2Ux7vrEcdit$9f!<#0y7FrXOY1nDaCT zLgyKF)Lu1Ojxd*2-*H60GntM{L3>B&ODm?izOxI;8fjFGGT%$$lJ8BX?XqfwKf{7_ zp1R-LtH!KntW_gE;B|{Qt`7hEL9G^NWVJX$@woR{y({K7$z)%AhGXvU1it-)C=EwJ z9Nn;znoQ@xQbzHNXL1m-zB1}B#kKhEuECA8SvHC`%YGOo>&!*cvF&JlKM3i`>0&fJ zwp%~i@Y@15GXA*flMzAWx6`B9Z#vJ$V|Kp{dd?8EjRj={QWX;US#(9|AWOKo~K<%kc|9H@#@x#CNBq2NKfV zsW8p>i5>m3TB?Ui^HAnW7yqJWOi8` zMBQ{zLz=!Sh)kb8vAA7%>46xw{9}s;-jg19k36t_qV#~=W3MzRs%UxiEM63_oQtPa zd55LE!z6F*B;5N=L6Baz0WiEV*bv8>9}RMJ0r2LR!N}f_=>0Ofc?ybp=|KLxLREAVxBrk`CKG+1fqW zEp(;8IPStb7{qDrD^9DXjteGJ#|5LQ+7!L77)RUS=G&P~rcmvW&n1Qf5QZ-3&Z2Tp zn=zjrOzzk<#S%!D+waQgJ_;I->`v@Z`gEt zMc;z2g5A?ougE>MD&_-;DzbY^&KNH0V2-z6!2ni3slU4J3bY%V)kxfdLcc}K&<<`< zAEE1CMW~ZkLW5qF+@1AJxH!ZfU@Scj>VueOQ}K;O2tv7GAgHl)(=d=iN%vIj3|zi6 zR|-&@AnG*}1zdzWJT;29gEp}zcJeR!Ax4Dl0}qz_RibYD)g;w%{0bDuG(GzicHs2i zOrD2}c6;MSB9FOVKdZXEKfAp@YSv+z>GuBU#FwV&ZtsuoT|Z5_y}$V|roZX-0OmM7 zO>z4W6k2OKyL~u94^3yc6ZFY+o7-QYnO>vU6u--*$P2IG176+nPnwRW*j(-YK z|M!~ectZ7?5yczMo7fjS70(T1$Dd)xpD{@Ra{PEB`#5&tq_ZZ^Tut$Od#^9k8IZeX zxy;n?Yc0M8mP(b=T3fn@G?&Nab0@dQ7p@Xnox8;SiduJTktu%A zF4MR_Q#bNFns-A>;X_l@h$>XP7_h2m61F1Yd zh`Sdb!`(QWcen4u>h$7l-umu@;kwV=>!N=N_&m{ zB@gzzx={DmM)KGHE!54Gg^1|foAG4^%Cm#AI2Uo9-A~}QMc7xMnQw+lZRhbX>U>0+ zEEX4GGCdhi&<)6CTl<$)Z9bvVI|wJp zFT~#he#&->cPLxEW%&3JQJHS>E}{I(=wOamOVC_`#0Ml`KLVNJLjr0n$ISup2?4I< z)CZ*CyOi5$y|PeZva`eyf)6gI`#W$>HU3sv&rZlWRmHb?PW8mwJg3UP)iS4A_BLh3 zDO|*DGV9NB3U}iQp29u1f~Rort>7t~_CL#n2kK5ck;pOo_Bu6o=YqJto}=S9P5!4> z&2yyqx2ph7K?v*R^{b7Re2yG6Y_(o9&ygnMiWP@HB5Y)G&!( z6GFZ60amM8awWf!j1O6dx4P5@)By1*F+I9Y-Xek~X4RG^u8}5ATxYioU(=Ho)vu&l zwoA8c7peB~I^D8eWZAvzji$JZ=E|P+dQ;p*N_@IrZ;HF<^^^NQ)NPdlty=UIaa{U| z8&oZh>slPAOcOpdJb0W+IsCC+Nsf~<>U^TBd7RYD`ovK4IH@`N6J1Ryz`Idb^Ej!w za-*)MERh^Niw?OQ+sOL{qv&DxQ=dkO%5z!k8yxZ%YGJ_V6u(nhpL~k(TUMLmH=UmT z{*I_{+(?M4BLg!#gmxGbHdz<)!?JM@Z0{cGN`VQjs4B(Jtfo7s9Q>_BU1O!{P_?FQ zGVH8`Z-}1Sq?=g@i%r~Y_>JI6o3X((5;xI1Z3qk!chDPcTc{=Bn@tVTf4N&|NE3}w z=ywFTaJox(h}7GPa0Ag8ITN==>DI^Lg85wo?u=Uo@hIQ~Wk~folSLbZYi!fs59*aA z+M<*mfQeoPt|^}+YSQ?$4M&$msJf4_561E@df*Nb{w$DALIwoyb-W4C7RcgQ1c{2< zq09OoB-(B-*151q%Vnp=#;DGHh@ATnI(N)=!?_P(T#szmo%;}~*lma5T!KgLkj_m( z;J^-Yt`E~4^9|WYCENKhaqRTorZJe-pl-*7VnOx(eSIC zhI{36oa;VQ{5yu`1Fb*9Rb5?junWt1?laxNH&mDQ-%;IkuunQTuda0P(;9jBz0cUg zLA%()O?O%Q6*-xa3v?03jy+RTb?`hnvd`1d#gFYm7b8S3DD5)eI-5som)?yBJ=qe* z-Lu>9`#c)`C+(IGyI?v-&2KloIO5LCbft*-#PR!XTHS9TAGZ1&fWhJuVm|XZPM&Wk zzbqt7i#^nO5jD7>_>^#2doW8QhGy?6s#+Nn8ga8UH?+2D_7Q3J5i}~-Fwc=nVBxB5i0Su)} zXaj|cG}uAHOj2%;#&=OLT?^(NB3vyPcGzd6(`e3Y(qTU%olYIB9TGh`+Un zBIRR>Xm|wsKQQi@L)`@D5n3H_E9DfNNWmm!6L)@&V9)DO9MI%~pZwE;ZYB08iRlZ! zLE$1_c;-=b!t23olOJWfzF<-JLvS|$)Z_3GRs|pD;p1uixCS42_z{xbR5_0yaq!_j z1|R>1kMN&p9t@DmgxnPiR~w}sheribwJG{Zs?Cj`q}tT`8IvMviJ*>U)WV+y&zpMB2ci90e*yF2&Mm~C^4nmHcH%_h`eGdS znI&c^VI^UAk$Q3zgd&pgBfnzbHru6C(|Paizhd30Ps!X2EV zpKFgA^)xk@^fWaX^;G+$uBWLaT+@?AJ#pONle(Tb=CM#u+~)sk=64-eL zGt>}+C`ag72zJ*(jnCqZ2F}8^iiNQ$)B;1YN06FE2=YXmyP&7?J9VUTAZ0Bur$1z} z76xbhxdZ^=t)O_jh)kLF^tS8IU^N3k$Isr9sRj)j`*Kw!DSoMM%+-((%GD6spIGOd zj&g8w}%7Qb0Qq|Bd>(0w#u#0zNzMrvRR?I8jRuCVNhqbPORY4jywJ(GwTrlB` z%k5Rd@arTaVf-&*+_xGTTXDlqm9VJY zKx3uugXpEzzCBh%(6I1JH&LLJiIQY;L!*=r%82Aa93K1vWKie_QRvQ>d_q5nLJz&9 z@pzDDj142^_Svrm5fTROhmf<38QEYMYM*rNkD(7aN63Nks}50A98>oNn7Y?#B4sevfG1c@lPv1T5PTUS;S1nvjOb;8{3Fs#i@F&=?_c*n+CsUdL&+I* z@;Fgc8S|W`Qrv@hmn9D8Y?ZrE4NI=`@v^&66Ry9|L-7&iyXZcOn-F0*r+gQx@jZ<6 zJFHC6U*FVB<1W5LrN3}rFaOc`O@Zxy5E%V8DF?C~-P4r;l9JtD`Wt5?p2YQ2t z?@7n!%rl7RKRJ_RAZY4YuDZbBn@shns~~5=GD#TNnjyE&?}4x}IPb zxH$^kBUBf-ISSm`>Mt;jfcsc$3QWP@q^NPOrb=+QU9sH@A1}d2M1A-u z75IS=wFLy(KefseQd_{f5f_ajhy;i%TMCM;49`9}iXNX1Jc{8Ze`k>Avj zp2I3i6RkFS(Wu?My!B=;ZELv}q3L8VpBYT3dWwv0KOM{cI?_&NDf86VBK??k%qKo{ zL@-%+ta-`EYY^`)8AQ8F9*NQmZxGE##>N15eze0fNG@r@&V{RMv6rIc3!Y2w3$6#&}DjQR;`ZJ2N z)wW}Ya1|wJ27!dq|I)M|&p3aCG1VB;3+x|pzQ+VG&{|Kj2HB{VCb*xbe) c@iS) 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 z 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Μ;Br(ZM=nWjD-BN+VcFkik-eA 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 (SY%&y-ulC@n?Q|92KMN4bHmMLA8^&!r+n{ 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

        %(?K69=P)r?t9Q<6~u$EzFo7Z#76Af0uiP0 zC1o`63h3Lg0nPb5#J*o+9rz!m9h&3!dqHl8Fc(!PN@B{TWpoQ<31mKG;&(;lJzJ8o zZ}sYIzhFCf8{tnCZvV^5XfotU2y;i|xV*Fn3yxo84sp`#Fw>t?$J4wSL6Bt-=-cwqxT2?Q?O{TJDn}-2YW? zHn@K)+%KWWCdhA!zHM{dhLg%@N62oFD=y2f&s_En?tR}z8_u;~*4N#P^|OAG_0|FB z><8%$VLNbt>v4Z$8i4(x48^v52o}$rM^vq}2VvjmaNPbWO>Zk)VTZMNng5nMTGVno z3s6Y=oqtfU{c^oI;FkU@>y5bshi2oA@DJtx!mX=cxZsWiw={b$jllIyg**UZJD~ZC zl30a(-$Qn|0?$1|CeDOghkZqVtH`ypQFzW>xIFKdG~KM|+YZ0K^3aBKCAQ3kdl4n^ z1opiE5#<$ZIqs7<1f7LfcoO=PviIBZ7QZq6yBB`?`rJ34I;)-?z<@4u2@IrIa@Hk_=~Kk`|AOW#?rX2cKX}dnTqCOsm0XF~JGGRW zVawdo9Jd4Zb%%&@0JifHYyJNA#ENX3bisWOT)uu2zds6cEQGn@n~W%l)xQ%UxZ z_y0|Dg`XMJkhJ}m2ks@{vK^SK>%XY@ESjfqg?)R(uy3W$zGlO-sQ7nj2VviX3SeI< zIg17>Tw#Ypz}1Zp2DmqZtJ+s^b?s|{yIkS+2lGhCF%b3-yNM3=f3%$myj0`=$G_dB zY2SC-l%lLz3t?IiQjsP8mMLWG-kFr2qBKZFs7OUeh<^e-jI{l2OS_}(Z}f_S68)QWs7QJ`+~-OE(SS;_ zkfYga{k(~j8pylEYxt1kKlMxR;e51GkxYVX{?*?KSWcdm4!5m>@Pl{o{%yvgw0=_p z?&l6y{rd&_xBd-RE|NVrmh|t}aLel7M3#TURf?pK!&U#D*QLV0_HPpIbhxg6kN6<( zU;8%&_h*Ou3-)eCc{c{-L9Y=ZRE4+(NW+U4GiHxchM8V(`F@Umf7K#6 zao3`o(e)APqXcEUo;8YZu8T zhpYER$GWxUs(wMgzgLD-w)-LixBaHTUcE0q!lr+FU!>sw2edkyQRW@PqnyHQaw)@4!99;i`Yv>;(UY>lMiuxUPSHE{A_p zS^f>zFOnq=SN%J-R*iq{-z41nn@jq4K+PKe+P^8dXFFW=??(Kv8QJ~T)W0vv(r!i@ z6v@4C&A){=@t#4{8X32R&pn&Ci_x{HKXT`D#$?S4NTVWI>2SxB{yFp-GVY;1_iN(T zp~}N~1{Udj!yG2lblfr~tKJDWE|R8O0{>nIqvhh7(ujPiYxo~yA+6U}(=W+2UlwjsB#*&0{~kiV6VMe7*Xs3o#Jz#O zMW3T2W4AE#oH}1N(tmHT)xWY^k^JItYmaCoZBQp;lGbNXIP6 zEdNILpuaAMY^~S%YBGmBFCgRgAdXO?UvfDSrTI4jcZkE)^7|6Ze_Q{C!$qo5jq2VY@TRu?_^#p;txeO@1)TQ@_*^%zkqyKpjeLl^drjt{7Sblc1Ldh^!`QC-N}Ch=Z`}tqU`)<5qBMO^G913$q4e> zyiNx$lIm<^*UOvEDCt){U)nlF0`5YG`&<(d)m&5>SI?KmO~EZJ2<*Kl!u%9kfJ)=) z`O>)IgBWi+-1^}>Q5}X#$M;37HwKj22;PWTVFNw~`$?#?O?X}G&r4E(#ZxZy*Jq&HlvA4hVZPezX*xBS+p zew;6d&qB~PBy3Z+Ytd<56Rp<5crNw+nUu1M=G<@)t* zejmFZsIrk*ex$P8#SDoKak^gun z{~XTOZ%|RLaq|1Wlau$#Sbh_e^KQK#?ph?*k>Bdg4>&)Byu*|c_Dd)t!b}r@n+vb;}-HPOKxON?>E0or$Im;X1Q8seVXht;!%-#;SpU?FU-oM)3mDUdq!@V1>-X|I^hj%Y}+2Ky`PKAbzZX~~;gU2vu zgJyr1Cw)7FXdY?O%b5qe=G#kA!i*>Dg z_#MwhdGd>2&TL$iEGm)*;kNdYu$wFc)&bEJOg@<1qa zT-h66lRnk2NWOw=;iNlR*Frr}K9PDKXVw#GuKN(Dp&v*0UJKJ#4PVK1suI)(m+@|= z0caqy@9mi}N1=O>%hh`Qx`#qCgZMdU9Dlpz zHRAWDZC*XmpZ+x5aK;LLr?`J*c?m5*+1yu&TZ}Y(%&}UBZTAmN|H}8%fFilmvA4pg zd}&i%A+Sb35*yEEahyN>*E^xycuZetmdx1R9T6)Lh^SANux19S8 zY50?4uKr|*c@E_!;0|)QJFPriT_lgfweq{u$^+aL<@9fufufFqyb|X9YyJ%nERyQg z%IDwaIqnPdZxU{MxYj;BClMKTj^ zB$Ha?P1=Hw(Q>5R#uPwXFWo}ip5weWtqsSv#d(taBTp(h>##$=&69OBmFc0Z@4~fk zEa~q*wt}3(k<%G&EAM1pl(_y#f48RlKrb?#VExDS<2U)T?!E#^kk0I~e(i6Z`x|K} z_%>e#=D4rculDM#$n{0CM~$FgFaqB2V=KxyhpYW~Lg+r?9!DCU=D2Go_Gk5BJV3w8 z>VhSYdi8Ahh9Wr;uJw)FPcoKMKu8 z#y!gW%+OKenX5(@p>xrtZ!>RfeOpU-g5GEs})8ZAPBMQ3qt)@jmww;;u#G&`9LkEA2c#tAAf7 zee@32$sIo=NxukvgN*B!?a-OMvqXB5ZC>PY;+{hqUgTIBHx2h)xK{7HLi!KU za%A>$yX%}w=u6^$L~GH3ZEMTw_JO@&-w!q}OWeyoFvq`tk*D^3tO=rQ?w-UQjE+S| zpn3F{te$M`bG6>l>yf;V`Tp90z3IyuO50=dr4P#H{>ZrvNW%>Jxw*y>UsF#iH*$ZG zTm;v`3D|K4Iu~in(3pba`=Q`6;s&CjNUzso{Gj(*1Y5(Ci{u$Nm3+`}(zKdYS?=bj z_O*sH$U7H$p14<$hF=+n){AcY{DqB263HU@00rM-^-AfME!zHT zdzyNi^%jTwKhlptwb>xLMRJA1 z)wXl(^4ju|!@Vd&D!E?RjJVR~cOr1_akw-&a`Blp3pIEHA@A?ZGe4zqqj2BN z!QE7+>Q+B61kg|>ZUXLRhr1Fxe?Y%D_V)9+eIKEHLK>#)-$Q9LvaXx?H@dV)4r~zI z$4`+yg%%>aZu5Qar^J1aG#v9&C7B2}p2gjIAAiJtSGYaByt1Brh0~~Ok#VhEc#gPL zsPd!C^>UoYm~ib~-aPUqzdyK|=bUcEV~OQO(xhQv??L40hI%05j?_Q!?`6bYg*4p2 zQRnF^(YbZYnc16KLHz*NOD!^z^mn1Vk#YO^+|dVBl&QpPIP>d@vY{(KvyEJ?^)sWN z70G0{b{|)Ku!77a@6!(VG{0TQ0R4ZC97WyOp6f>c!sXg^OTb<1a3ifM%5yO1I$WAd z4WWHL%#+hNub~J1jMBI%xPRr~E^xT#m4hoQi)5chfgjA?w;XQoa&RMX&w*>#Z3(=U z=vRk(sn6YWI(zU@1igD=P3c5Mmzd)DH=Q+3ihf=sx4^abtp|B}p^K4~hbw*VC#i~Z zBk>w;=cx7XxdTgHH+%jwk}i_jaC?$APCsru>F1%P$hg;Oy7Zg!!JWZ&?}LgpnN&XYCDT2myc z9Cme>5!m%wDR!mFzk&RAeUB&K`RHn7b}jeqT29=06ncVnuparcn)+$X{oZw0?C&e= z!MHNh-~Xvdx;6=}@4nmAKE3#N+v+P|dOXb5#6t}D`Tt{yK9<}a-7(|*Q0&G;wn z3S2KW{WH=JN4Fs3KJIfbu31}NR370Cj&oqx^H9cB|K7*>=*A+s!{L5N`d`pmWZV~h zZtJJGFOi1M9J_SO&DC-yn~LO3xK{t4PWp?{rO3EE4yGaWe|4+L0OB=#9VvZ(dlc^9 zaIJp2mV6V?B!~OC&wYis_s|z;8QMgD%bvSSIOSLSvx&cpq|L5DIs1z(TUQ6#aPJ__ z!UOzW+B%0wu}p?*{(YGAU1l?0K*nw2bGtsvXQB_#+bG3=Y%$WZkn-2Tt$htwFP5U+ zf^xR|bIehoF37ka_}m+ay8}Ij9zvDov2O%FC^tOBd;VX`nT|tJHHzh7xMuI`r2hNuZ$!FZ7eQt*C|I?jgY5OfAaF2GlC&258 zdO6&VKKHn$g>p6V*P&C_mh9J$@yoCIAqBS>ZrHbD-c>c^Ci0DRxTpHu_c-?{((nbx z(#l!5L9sjp*X}p1lE=Wj)8YER4OpUIUxjp~){}6TI({(j-46G>9RB?$uK6JfcZk!k zzYpFWyfa~%!;SgeImEq=G%Vui)(={SHCX>8+^|?edj$8z$E5!ntwV}y-Io0dKKJ|A zYD(j|%oU=&klRlV`{hjU3$1sgQL%J@Yxjlup#%Ahd#%sa-RiQS52jl+GB^zWnP$hZe(uo7BJT>dacBj$a{=E(VP#5izNcr{4j>}_oF9} zagWK6B=i|^KcTUS7G8^pnvPWZb8` zbD=bGKOhYoIqJA6d*0X9Q&I<0Kf!J3<>i43)-h32WZbvBbD^tk#Se~+}~bd9c>}c!=Z!F+GVUSu%4{kzD>RT z1vima?~F)0`U7ySetLrR@1pOKaX<38N50D5Rx|{~(99`}3y`i;*BTPM7fHvv>0^rJ z4Y=lqyGZ{6dJP%3V}%Sj^gVGKQRCOx+kje9KehGis9KZ(wOjo#hMG4ODVB{6w<+mA zLifHNaBcqZ^f#%;(5Y|noDW)kZ-KnS{$b@cKgru?uUs8Rr_L;v16u@sSV{Wt(a*^2 z^?ejtPh6F^z5lDrarH&P^H|E(VB_=DS;cZTTaq{3km&Pu`cUk-nUx7v9$hN`u~dM zG>3Z(ep9tacKwX2-^YTUFO4hb7R!we_l8dOrT6eWxf^A3Cvol_-`?-0)-6##+V!;Y zNEGg~4tL6>RZHwEcKz@q=a%~1lY3Pw)!sDR?;Y+6^5y?kAbX>1du#Wh9rL-T|5Tw= zZsa`rM|%g?t>dghX}P9A_C?v;uADm?X_)(K?)|jZ|4hO?$>C0zUS0Y$tR!`Q-`2l% z+Z4)!oY(Lu$I`A_`21oS442}R2|w{YyRny|2eR_6<$?Vn760N~#doOJPoVzI>US)8 zNmFzG!FvoI-SJGgc|kR4b9=t*b#7sa@2~q!+P5#1@toJtgTLK&(#pZs`u76vtDR`4 zM2n?X%bjm$6z=hGb$&!cb^P^X!;11N%Jydy&V9M6rd&F3TYv7oyEpk1=~XNP;Ds|Z zk!SH&=O6RrWaO47_2(;`Tjcw5DaTyb-TH?qxKrWotm~fWT`bG~1AnIB)@oHYe-0?c zpQ#IrO0XXGO0V|JpQ;ftyF{sTLcaDRhq{f$j+YD){s;Q=VSJnhCF zu$Jghw9S4nr@xWuAN47g7W)K#Jq(`vyo%M+T24D~?i8fqbdII%=Sjmo3$B*ae%umg zlYS(+6{)?mIdPzZ;4UHV2UPuC)}qnsuUKnAx}KJ#U#shR>-u>6%u<&Z%NDp6HaBO@ zqhY?BxiK$upDMRKC$YEEd#~onZY_fKG^?B3qdzw&;VX*e%zcCVYESIgcvzvd=4kdt zy$=mVh&vf+c@K?)Cg#8aD~I?f!wi z3&{5+`rYAv?Q@TOkNpVfDpZ8xe+%m>o_|yR_{sd6>R&8h!?iG+^beyKkk;^8&Ng`` z3-($}{~O(i611-yW_xq>X_(1D++PO-{fddCc>>KtcAXBQd=o-7-)BAx^+xBQ4cG9F zXP&XsYb3=U)A|+Rp~cb*u3e`%>2E@JBjfh=xi>Ds&uAn14b9|v+%XNSNcb6^SM#~{ zy=4^bi(_xC4_N0xha%(7^||K~*B6aKHzM87a_?P~S@w^$_Ujq5H+pNadB&JRu? z{j=ybWd5AzaSKBq@~&uf9GY22=ZFgAllv-41X~}{iDg1$Y_YUHFt|QFNP9l&g|xla z>$A|~<$X>cril0w{eALZ<>c3Tqu9up9Lgf1Zee7^EUy$-raVgJjAPwC)cDaqY zG~~Xw)W&Iv3B__`>%d<mPjISBYDL2I^ees!W`uCoxWN@>lza@hsXE zS^mTLL;V#dZeOJ1GnIzOy~VP~$=_j4#f-nJT~~W+{)4^znR>e$=Pkea$UQb^?NUP$ zZsUWzcCj*L<6u7b9CRVF>u{|1y+VtKtN$@`Rp?w4X`at|WJO6oT_6$4>!oBkdpPfA z*X#C3v786jLJ{e2K*N!J-*Fx{e=TwKKcRi&yGCKg=Y%BjSg}0f=Z{jr58!+!bSkp) z-rvh#IE%Oi=u@OVuXZ=}M(fISb$Kt4ehCdv7R#@WJyu@7C6C!NfIoJ$-K*qtqi~Nt zIQX7_vLE^75jA9u!@bPo=GFPGP^y1Xb?bFevr^a3s-`WR!%=zk{Qbv*4^|No+_r$ea&U=EwLj^Hqg#-1-}SjOiJONsyv@;lzrWQLc6|~{8Q=Q$CL8elGU=P7*;|B+%OhqQ zLg#+LJ_I!EOXh7+tz`w$=;~mirZV}R8@8Qp$XEl2xKNidNa4mdHzEx;7vhuXW zaPl92RaL1wNi!V##k4*!vy%ZaT7}taZ4yu6ZRJnex8&xYar8`&g#1?`$OF7~^g& zAAc50XNUXkIeF56JdKh0A?4eN-gj-T*Yn;reYrC{&I1pLh*p zIcDm&lf7}VmWPqVTX~R8#qus(3))`pdnIEb`cZbjAI!-e?H|~+`WcD&d(GY4z+`&jgJC3E<8>tqPc{%KTb7fE-v_2`Ty-B!Re0$Z7BGd_6PC#a_ zy$4p$TezA(N~fhr@e-g}*dEW1rXuZRK8cNi^I)7gpHx0Lc4(@K_z4u2d zw_OHXHm+2U$&(IOpC>s5dyhUL@IxdAcYDv1gyF7sxaNoMj(yB&cXeJbfx(>3ODL-PoR?cKbV(0+%7)%Le3SVYdF`DTgl~i_veqSK1;%# z0JoNxS8gKDUFboFd#=yjKwQJ`8p(dBInsTTwm&3AJ*jn%%}b?f#^e*n-XlnV0_uXS z{2t(QuO@C3(r_Qg$_;)JlpGI?#aqYUTAnpgGVGGAn zx%Fal9$fQ7t=+0h=zE?sM8>t>dAf(+duvR*hT+q4uh$+`S>z1PC*a-#H_YEL>YZlf zI~*P5aJ9W4gw7!DGNhqD$3|Tl58-30*R`Er&N$>*D#Azu{0rBDwnNvFr~QRNy{^}- z%=Hf3U61wJAs(rbp)l`3lacx13hzThZxXi*Y5107w!Qn1f9pJ1qnPxBYr*W@>yMzG z)H<%L_NL+916QwGMLzFm?5Mtm_fI3U_j>O`LtB0-l(xioMV*k=>jSuH)W2!U?+Vh{ zbqhC%$+8^wUO%Vm)^_N|GT3YVk_6n{BSHDq{_pbRt4Ozz)wbF@+PBv`c>ikux3vA` zNw{ajweoA+a~(g7D+71yeGGS!V{a7R6)5I#@AkQETU3&3iPuoLPen;}2=-)ocd>IH z?-G-b9PU+T<;gJe-t2HE``kN;d(h{$x-c&@ezSTfo122$xP9PXt=F|)oZ)aE^10r@ z`?ouX()^o-dj?$Z+wr|fKMQ804tpEQ>!!p$xZ&pX^_%fPkr5P`c}hrqv99_BmT7kqA6%0mL~`3~3ot7AFy@5?#t zRsWWD-I8!0aky3<-gNBM&mxq#ZrdvlDY)Ok%`Ok`I@~vMaJN?;(r^!;(GGig<$ZXo z(02~^K%cw&4~^s)q@f$fi7DPQfb5>oqwd#ylJm)MOnSq$@^BXEuSGW_^RIqqLg;zo z-bAa=3e@)kk;H`_S9pj*xwc<3y=P1&I^17LzZvEK7;yXh+(yLhhcvX~sPDmPxvHeS z%ALdcXp5LE($0$?I+6Y~bS`4}nYrKm@kPNk#EnMxA)Wh8#1MUlD1Dvi-Z81tDVV2y zm^4qLImo{Ez20Yp-Xm@e((o6@w%C?!pT0lkdD`D-tC$=I*FyeJw0~$fWaE@6-pTy+ z#2xdqw}u(MpY<1%Y8#W`baAuQc0eTx5XS~n(owzNi`tM%(O5yuB^QZ|eU)^GohSS>rLiI^A8oh|@I=1xA zg)UmlS{IswW};v2rY&QgY$B}3{dIt@w|LK~M$VwWbbL_1tS0>yRC!&%^~+c2XyVRB zSECr3xsLg2zkH1G`}^7ty9YZ`XVIR+wR+$>;)asv24wc;Y8P}2>y9Jrx^8{W1n!rP zy+w^`$Vix@9PW$0AMPT~!tJEXwJ*!&hax>=viAvrAB>xHxUZFin}pjp2Y0%|T~rRP zoE?){aLvCXS~if`FrRa{wjX06=PW$L-?{u??QRrqh0Xz2`^qoFTY?nybgZ#mqb%fU^;z0=_?hW9c0)Zwo8xvPk?@H2mx<_9^4emPvrap9OkSxcVv z4%goZ9IEh#rDE-uzXx`p{;5&2y|HqZfV<0yfqxtEezw}=sfX;ou=gaHt$M6Cm%60= zwp_bzDY(5Hu2w0{V773$wY_?#ME|1-=}P0K;XdkccjtTU3-bVn+b9S3yGwHKD>Zw= z{}+>Wa4YGTBWQoA@z7e**5NkI!PUM)E_-d<9)a8Tq@bQW2Hr`itHagtA|cd=xIyS< zbUj*eO7Q%4(y!0%roGcGw$XEAG6-(lOjeO`q@RQ)BfD;g_}p2H1^jyqKim+I?*0_brEO&mokh{3hYnIeA;|hYnZQ0|=qAaOM1%T#$pi(&3(34sI0g ztQ_3c4%eQWD2u%*xD~o=>xbVQZm)9K8@?bWXF6O(=>4|I;oAFAGG6xo+1~vYfjimZ zena8PThG2qWaTXG+v{@w=47t>!tS>y-0vN(*<0P=4$Q&bp1ldUN1YP**V_5I4mXj5 zyS;Wk3HK(4YxXvFxFd3Kw`Xq(?ne&S?A^oRj?KZ{p1oBYFx;dXTXc}=ZAq{VH)cpvn&n($5v364~jLCHlw=sG2cPBq^xCdlNCFd{n zvvSot#tp-L!{O?>$|o?FJKS9BOWRvliNLLOYTyUsrX4Or5e+5$yFG3cZqFRtuN`hA zgDo330XOMz^%htI^CyR^eIP;!d;h6^F#jgu{*Z&a*5R_{pv>G9+=EUF{A>1Zbhz3V zBb3SBG~B@s*RGpv2--JY&&cL(@4CrFF?rSD>Uvm3n3WywIXSr7TMrAvt<@v&gWVT3 z9WK*W8cO(Kd-p{I?pZmw^&Rd-<={r)K9qyIi^ILF9NYxl-*Rx9I^5!NaFcM4Iz8~O z_ILJ%xsSuOc|8yB{rgY-9lI}5aECcuyKb!=?!a=`n}+*d4({O&cSt$7axwGWX9RvQ zd)qnO8_K~A!|j)Y+rizui*AG$i+JIldMz&$?)_jHFl zu^ika-03;E=Q!N^%E3*+{W}LY>Tn+{2R9A3^I6;aw~xb}Rt~Q8p&tcTdmCLUu|F2x zC^XgKhJ9|UKiOxDicuf*IAiS2Z}E%>`|cOBUvwIcp3Rpei(~Q@TnoCMdu+2BQk6}Y zc|^``E3!Yw9bL~2SM*6S=AC=y;I?4A<#U^sfxC4-KHMYWw)Q{fCcfXJ=m|vCma%sq z?_6jpabF+}KXPo|VcU6vr5AYf1nGE8E`=M;q~;kV(id)It{55jXzyI;l{c$P6XN$r zEzr4rg7^N-^yf8nf2;OCll^Ef;M)Adp``Dmd602C`rIYMYsv`XlW4pi+Xwch{r&W| zUX#3%ah7i{uMLssN&gA@0~z-spL^`@f; zMDg>P@9*u|TkE=tqWdST{Dud{WK0fwhcyW7y{a7cCg6SuSFhWhXb5)Pj_yQeZ-RJ2 z=mFwpA`Q=T%)GBLYago36GR5Zq|rIs`gh|mRkq$2H^AA^`_25Dgxec#SdAdOj2(;6 z2gvNb#XA*RPh8EvJ$qYltaM49?22qHK#%XTxm4%RWN=KTI`-~Q`VMFuvh|f29=BlX zX6`psZwv1%=DD=!*g~nr-fa22k|b~9I{jbpz4dvti%54VB1PuD{nq1To<|!%yt`hM zCjW9L{}9gKjK(6f;~n1)-S0nx__;{;+^_Y=WGU{=#PAr;><4zdOqzGmQe+%|-Mip3 zp2PT&_>IWrEQS*vLA&p8DoA6lSz~E}?EAbzIVa?wL|halSks)7Vl5J%L~mi-=Hws9 z`Qd03viuV=*(HBIac?4B6HWiknj!0siCei(&kNd_5F7YECe3nW*ZVLpe~EsxzEd*S z^FzfG8&Iudm~x)%IKIJ zasIaU-rOyC9#8M59lcM@-YDF$aB0Fbzeh9!J3d6qklCyC8zJ;7aTW8lrz%pHquN{V z46h#4dsO#HnSUc=*+-Vc-ub@<^~#-acGTXj^$Oe;7kKsHr{v!SI}SrfBD42FH4uAG zBkp{p;S!E&ukFiHdv#xytyiV)h{+XjEyPHF4Z03l`JdvQ%)6DiNyx1aB6l*sMt=39 zhAEt1fL=#tm+fEqlep^no?W|ftQTb+f^q+Bg`#!cQ8lhff^u=3xB{Pul6=VV#0kBpDW47l1(MF3q6?{0KI zGJDr}9~ydxxG&Hqv=-?;N~#fW-yC(C_5lwO`6v>q!gXe|4ogOG8n5l;x6 zN8FW2LxQ8$m2y^4PL-P^O6!-zJu!J3t_AbMNb;ET$a!ek(FyIa%{RlJ)8MnyizE9j| zsA9#&vYDgHjbw3C53w%*uHA1}wyrLX$+s&qZWo_>M}8IAi+BxF_}leE_WdSP*r$3? z;NShpcOvTPa8L8O75FWi!NiY39qRF0)6_4Ybn~9)lViO8i}thbA$=O|d2r2Mo%FUq$YNnRK`p``lyRI9d|s%rY~bkDvr*bHt!IrJc{nCZ;9Ai8?Z=DrWw*}t zw%%`40XuwOSUZ-4TleB%{k|5q?25w3%0qweLqlzeI{}@8PD8_R(1%g4{;lO-H|@{g zNBZa^F*y~k`j;Xu7n6P!qez~z_nn0m`^^d zceKB=qxFONAp!TZ9QM8p*X*@@X{Fhl%(6G~XiS>-+1B1e?y9xb-uug8ZxU`lxK@7c zzBqJH&8_x6<~gZEzj1r_MGEfIK3DI*Wqki1(MHD))*jbuTPSrZHI}{5Zb+}&CV#w? z!VlX2vFnzY9+R~>{4lnl?p8m{FNYt}aF4nq@WUb4aT@wRWY?{&?}uB7djP$Foj6GS4-H{qnoj-Wf3&2-h23@$OvGr_p!FxF`AC>XqqNqy14+TZ5{5O|G>?)A9{br zk;+ZNZFOldPjeK!Q_+PEcW21#Kh1dG=k~zgy+}V4 zjY7taDi!W5;^w1|&|7E@4GG<)Oh2kS_G&*)xo;E_H=FVPWhL+9u5)?rM5=8qzr9Jn zqxH_NY78O#4C8&cVgBw#1@g{&NL8)yhMI39{hr3v-=}`T=PuX|Hx0M9!+o9f=bxA_PwZ838+*Upx1ucZxfTD&{a$XHe~iA! zI=RE`^L-WR!`{csP_`ew-Xz>!4)xL>oJKq+?`d< zqHwQqxaBQp$t-(QaA!N*ops&9Z!kV^xaBQpi?hmE0&c4T!FAhN_NL+XhHLY}D-Nww z;=S-Y`saL3***m5?CqHKHbKCZG{LHxC70CKrwvg}R6eH(5g|9Tu!ucCZCJ5NRq_I}^N zwKu}KlaYoiE-ftedA#T%%J0CyzdNfuB;cOtaCcUDNW&fBaLZdBl3D(Zycd&&aCdfj zNW!f&DDZE2%frkpd&7%a|Ao7=%R>_G?T)=Wt30IOzUy#zR(S}&ACv0W1pX~=c}QjX zHvzW`+?`z>(s1u^>@9D3Se#{VbP3Pv!rj^BAq{ueYXkr8tnwfqu>R|CcUF0b!kz4J z%Ud4OS^iDIO~c*U!~-;?;4FJB3-6(`cV}hAntMWG#cnI!@h4P@gkVyC-`+}P`*OHSC+Y?e+6at_v&$O z4>a+DhEkK?<#PLbt+TF|EW@vG%}$+5eh21Klx?T)B3a2f*UpGzXB6HYj-7AA`*ix5qDe@>SOSboVSflW;$SYuDfGTwe-T?Oe_LscUQ0=hpu&Pa3KLpT^|CL~ws~ z`jv81y|GkA|733+&YeX%*ROG(Yy0LRaEHM)zuNV0Ox|q2{?qkOIDVDoF?kc7&HLN+ zZ%TH4|AS|K zwfpJ{c-eLuFV}rFGwb?C;HGleIiL)7rW`wy@Ip6kYv+(M+POH(&NSRp;kNa^+;Dg= zv1a>9*1E0Ev)#$L`;msJ9BZ8*+tmN9s^@3!|J3I(xeM;r{>zG*|2W>Q$e6u0(y+bp zZX_LJe?@Tp|LuJxU&Lh3VS!(F)_oO)TLd?|o_Y+wWtY=`s;AP<^$&l^{x8Q)tEXne z%Pyy-)lpi0pAYYC^l1+68savhP>se?0aaroknQ);&CzIp`&H zRY87<`l_`*UuX6vzmCZ&$KH?0vkGlS+1!RT8%s0P3jLY2P8;>PW^d%1m>fPlu-E(> zA#XOfH2;RP{G0eT#&AB;qto=Xlq?I;R_ytC?AT zP5c;>eQyrxS@r8I^36rrcKRPJuW-)oYo&aq_O;URu7qd(0UZmyMfwj=ww=c7PoFh= zU&UgdY2(fCPrUy=%T65+tSH6K?0!qyu`>a$;w^!lcHO@&#m-#U{g*5|Q*e90jrw2i zCwQY;hGaC#{{DY+u2OC9S{-*t9evbboBqIew-iWwSgD^`cY_=8xi!g`Yk!#bGj``( zE1%n%V@u~=wf^8Y4}0Ux#4q$S;qL7IOY~RD)u^4{e@Vmb54W@Lhr{`P_B+4X{_V)Q zuD&0xq`!T-b03%=68zrVf$HDiV)6o9>u=mafBMst*w2<@ePJ@^p7s0NvpBlvo55_NWEfnFaYtb;I_39-@c<=4! z&w@vYdm6of)Q7rnU4JvGFYm_e; zch_=oqj1}d+t$AiI$V3NuKrH<4*M7GSh(TL)nIG^?}#8Tz<=8Z$I)`dDy=ken`P>f7iD54sy5$?|{9jEPInx;xYlQ zjYD66_a6Gj;U3|08#H8|109AAL@iGV=4HC`o*2C^#=Pdw_g9O{cW|x$*_rg`qW;MI z5b?PW688jp0bMnry3}&GV|;Fy-(}L8KTa%s%|yb=G?mKAVy!zmq;(D=tS&*p@rM;ht9>Ztb{ChU@wv0ds=Gy?6)w zP-|$(@{p(#mp>ft>+qJNUmR{-}3G~8NudwytM$a*Y! zE<^p1*-JNEL+BaeUPBwv4`|#~^n3ZO`A;SnN(3%H(&Y%mlP3QyW_w-$7Qd3y!u6ducRt@TA@RcaX<071BtsCO-BzR;Ww6g@;r?` z=h>a|G=X&aBwoWYvN!E6T(eh;&f#GUmx|k73<~8Cb)@x;?fJQ-B%}(z8AU}8Fx3|4}*vsi8PGn*r{vqK6@<- z8npkc8}{p@ht`rNbX=Syf0#++#B8x>28PvX8GtiPXzyUV?S9~zS9irp*8ejLr-<9+VH zRRwY+@ftdE)c4?yOzi8a^$!GQs_y=yKX9Mm`pF5ZJ^E~Q<||AW1*AJSQVh#Vf56>zORUj%Oz`qANz^SOmh8%u4} z5{1zi#ym-+zx|W&%dhU|(Q+1U8<)NB5BgyTk-m5BO46C5`PbgJKI$2sc_m&$jN==W z-!8lh$?i2h>hCarsoW#t5`)`0lbYXQA^lYJBr@)EzP-zd`vK)Oqb=ho8v<_1FTayc z6>t5y9phEF5uaO=Jo}>d$haT*+yTTT(0%AGq~)Oz%FN?j@0GKy<>8pPbeJ4)pCtVU z=x1cyuYB%)douP#XQ6IrB=_4yl$c&1-TnTOavQ3R?c?$iTq|cqq`wv=ka6$!zDwu< z;+{hqwmeu4B!o)4Zjr3(mO3#mhddDY;b?fh&>)9f&*#2C-0SEEv$sh z1Ke5(uU~HEH+*Vb@*WKQp!O*MB_MYN% z&nND3q+!>ARiq{NT3i2qv+~=oyFb1@Judg;;9l);&nX8tbw*r%gxfM>g~-kD^mp1O zJ6v9qq9HVkxcNxKTO2#*uvhD|Og(v4T=sh?;4UHkbJZ)!YL4cI0Y3ML@dfgS&#kaG z?bhr=r+z&Xn5^4CS`M0Tb(6!%}fV=;cZMoAN?$mN{ zQ*e7SZ))R!^WUr~O==g&Oo#iZ&mGLU5lF-B9CP`>=B4G_xD;b=Hg}H0oly>M1nv_K zHwEuww8G)CWS}9mmbmM5^jD+7NQ=QGM@Z(qU;LRrmbeE{ zf})nbi@r3x^d)hLlHcrliu0eN^~mg+;@j19U*4&Ox}xJztqpuW%5eOCnA)ZHRr2z< zJPEh0msc(z{U9_38F!A)eVMp-(Kl!%+Q4@e=EL;+#{Kr(`uowoaajvD;&V5UzRrG( z-H~w@_}p`d>w|`(tM$At;Q8ESRzD$J%sks8+uA!;^N~&c_>Rvl&ECaX_NHTTxh4m9 zfy347NC=h2l^aTqdy@U)vH)&4la+N-c(IGvPq}|!@0;Ga&=JHPht5RTU(rD3P=8Nj zE~s;|P*Q$*8dA->ZsGoMX)rC|o=={^D1pom#+^poZ1gsI6)ATf+yvakS=`hB`lF8p z<@5v6e~x}YwyxaCv$r600QWI!kMy0Vef_n{*7zWKbzBM`59+_WM(0Tn(w&LSzPJ7F zz3^PG4bcCcO}bL+sey6nmV4GE6C8wwd6{NtMAz(gc8JA*e6|~ zRC|+fmpR-bGPamlMb1ok`*pOu4)$OnW9sp0RGJ@Ba1Wdjw1+ErS5cq2!F!C9OE*D7 zNZ(`h8`7{hbMCp;J#BwRWKdkLaJbcKSCn_?AUEV_*Uh-Q5I4&AMK#_%R2o;Vp`LNL zkFb|({Pa9|ieol+*TW0tWq#jL!&@9ni;#vG$9fm?JC<}BbpBO+JeK%6%$KWw)7Rr)xE6FCTleZzZQ=bshH{%C z=CLci$6l4)h|jhEN4Xm8ech28=qEnCt-V(}_U`R{XlNL5<95*A=#6o?39bdR_oOM_ zdt}w#R;aA@rr>@Bw-I^2M3b@S8T1M={~ky@A@tDG^p}bM9es!NcNXlup%KcN`q%nh z>0zwP&ED4DzMH)F7^=Mop&hl?-uD{0DK4Yos=ZnsDzs(}8nr-XuiuvlZI0y2F~s*k zCnDG0XqLUv;rJnkz3uj{lj$F+y-cZ=+1?b~qo48Gp~d9yg&jScSC{@A&E5#{gwTz| zjYk?D;Hd8h&n~|=aZbx`Y6SCxa4lGQ*r!ckZwF59sDG{ehDXL_JzVwSIaIWdV#iD9 z6=e3F=zVBtIdR`24Qn}08Akhw?0(btj-St3nlz|@|BzOPFLw)WX;yyqcR&oqepADu=cr}jqul;^b z`1ZI=gKOixZ%Dr${e{dAS{?|Y`Uf+oi!>bZM^*2=&0JKMYvoKv$NABWpk6X+C) z`sA3nO!e)(gzNYY>AyrjA>&@;bHj(Qj)yv<2-5p4%0*4Q&YB(9P0O#@8@YpZ&*w{) zU#%PLcX_n@>TqO7%dfphHVOA3xO(0GKo?-gRp@$T_Od*wA#_;71~QfSXV8;K_vcNa z4D0=t_U*Onmb#Pq?Hu;5Innz)3bl7ADyzNWadA0iu2+8d%%gvV9clCfGJDkqLa6?s z{9Xa-hB~5!!)UKj#$NjUbbUnE58mRK9M5_kTnk#Csek+T4BEF5oGh!oGJ*OGuC^E7 zFo5_!>==Y@LT2x1??XfH689zAg4Uzv%R~-EYVR-D`#0&VeG5-wKh_J|+FNy4;9qSI z%W7`|?jvw*{;KL>jimwF4Vk_3e0%pL?r?N8n#Jz{xc7y0@cKM9FP4J4$>C018j?=r zI~f@_<#V6l+}XrOQQq4n$3wMzuFZ?dz0~XT0(*^niNjsE1Ke;HHv;zoxK^M2@@pNr z3g%#k`-acmhj;rNhHCs)M|#{-(%#lS*Y1l1+~0F>Z*jObelLw1$>OHqcA6j9tNV8k zZ&^hqI^6etd%c7A@AmfZrs0l;+tSZ;FTCmK35RR*0t<+HA8GiMqwd>JA^p80tJ`(| zf%YHL_r>KSxYlldsre44jX_o(KF^RO)RVZr=o-}J=qeI%_DzjRcy^s?sLl{_b<{BYugjFUoC??4%^Gca<_a}K zX0O)QgwVmn9fP`{<53hJ*gRf$|GL?}o)p}t9c~ZO_d%B-^l6VbYM@pZ6 z2tN{+#xDo;WP9>;L#HF1&(U_MvVwR{U=wk>9L3rfN;3Dj;Z<)gcLi%|k(c7~+JeBo znWT9UEkZH2)Cpa2YJC|9>)a>2dmzf(kY1~;^}&L;)OjV~oj#4SNTp>L4RkKQ`Y<4XUmeeAC?uMgM4X3|$Xn)P&)N2Gr5>%5bBJ&F4mO@p@| z?V*O$qPX1aLn6Hki*3bN*0t5;DKG@$!dm zCT<3L3q5mVzC@yVGK_WaiOlQPy56f_biGlq>)@RVT|wMv^c0$o#<1|$a|>(9)YqL` zdHdV8uG9Y!m$zOI>XSvJUxrp9^QX@35kgDn)|Bsw*YG>XT=hvK?q#j7({T5BBdD)8 zlD@DL@8Lkky(&YZKSx{`X{f+&n&z6fvHCi)J}!gdT0drQ@*Rv0N5<9uCn0nUaVH`T z-6oZ6zpY-ies}`zdvL9u(ss5xc~5t^!!jfZc?a*`?X|N>xJ};-?A7(io-ogKxFdaT zS=J-d>Ib-H??v!psK3L#)#ncTpio954X?aX`uuBT1M5U^t(*;kHxk|IaJBzQ2+gZf zMaC1aq2=KGoY&3zwMn?m-U_(GJM#NVZ$9rQgC^_!6au)q7F1Nwe@CLet^i$DvWcAVSkj`IvWEbo8q#;=VLnc){Y08L zy*RUDF6rv;;5?=Mj&B<761Y|_e}h@+c-kjqezWzF6Nu}92B5y^qGkN9Aky``XjZ!y z*}}Zvy8$;r`U&U(WZbXxi%~9LCGLIn6Z!@XgE`LUCbGE|`pE>ikxW*Rjij%60_`C( z?r+|?P&48VKpGDIw64r#jGUyr=rytMel@TDi{|x{jc~1=YD2zr(X+_7fBD=eJM)<* z@~j~0gQ7gU+<75=lQ*cd?x>RCYx$uIC&@bfv5gzut)CqIK~PWSbz%IC+92be>0h@ehE^d1=3ni zTlHx3s?xNdbons2Zn}SDfASvWaIf&WW!XOxfjb3mIAev#QSeSfXF1%M&%K+tXOV_i zICi07FTkO$y;@)E?`Wm=>?iq41Mb_T{{?MA=7)sO?a-Cy?a(0951k%mj~!BO(rE|u zev9taPcDFKVHoMP-5Sf$>dDb?sVDPluC6OgGP^WC zA@mAyi;#w;9EWwF-fGWxW1dKD8%g}9T=&`>6MOgL_c{W*to~k3KC?^j>oV8ha7Vxm z^BEdGhgZKF?IkjMAMouRL)=vK21=pXTEB$zGq%S4a;n!y{g~djpL_wgWroT)h4iaY zmF@xe9iLlF+)$K66H#IvK7iYk`f#w{zkY$bSNrXW*8Qa8$3Z>&0_m5bmB{Q(``iu0 z)jZYnZxfFDT}a&ryF2ZT`d5Rs)9Hiy$$fCGAJmNW$DlKjac%$V1mYe-uc5hUW;AI3 zyZhse9<&R3-NJ|UlfN8$my`ZaRPnTcTTw3{<)JxotHWiRr_-6!MNUd8VUQ#t_vAJyl}aL)N`5Aa5YCx1T@a>R3Lz57 zZAuhE2o*6Bl)6VKWSS2(6XjVIzf0S~+Z4~V&d|HXDfE(5yM`+QVwJ_8X8F!WAo<-dG zNJFF2Lg_-8C24O#OAG#+WL~4!>*1~?()P2gANrAR2zm?|mq#u%g!=X1o-6tWeSwB! zZ*lYBx_gc12Q9Z~&l0)x^Xxcg^O}D<|4708x(x2Wo-dtKB7K%^Y3~7NXZ`SQ#tjnM zo_SaT?rM))Ve_SEiS$lq?X9r+()lIw8QkWG#@hVagLk2@1rN}E%!eEZj8q|4yF4tzQMJi^M`Xj&69R#XYY$eIJvF!2fNQ7 zxrlk#ilCodLjJYbdH2#fQgBYz-nPLX4b>yA3DR&V$Fl6T{hW!5OQaWE3ubTrlI-bZCaP;S0a0T zxuv~Vt**Cee%6Kb+iI`vQ;EX80j}En3A!IUo<%8S_S(LL$U4?!h+l_RBDHrRKSt-1 z`tYsZCpCK$mzGGn40~JgO<(PHbzQj|+FpCpa9e#9j6+>%e}7}g&i`W{1u}c1a0#LP zi8~r;XwNZBBbb`V&VSY3ysv}jmJ*kj$fIyASbebXud2Q0p>4I->Teout*--nbuF_C zc3gt4KxXeH!55*leQy4ddV8q_gLBA|+g}!nI)bHvT2MuSVBd zx7A*&4@tO-;D#OeW$btxeT>ZBD}r;OO6THtbTHZvZJ;kJd^Q-5liqy&ZPKSoOQiA2 zti8vP{_(3SOGl1YABK_+d-Lw#nx`xA{`yilULseMzX@rcKs`8Lj0Pd?wzYgTKcV1e z;_gP{^n6X`xa>brA5Ot0ZBuFHP13(a7JBxW|Az34xY=_ZX}8sXwq6y5d%&vfKK{qB zVJ2FE%ztVFA#_TV`3$-NU5!RCUz|-Rr!$#CCNg>)O8vZ-dLvhq$Vj-_PBly<{Y&Tz zWZdz=snAKicxMp077auTVSeej!yQ-Wp?aMg8C)V?!L@O59O>Uci;;1sI&Piw=wDGw z^eG?W>C1R9A{y8mp?<2pcAqYMO^LMpCgAcDq$7FGL!*#!wSOdp{wA*a`8?N%_D0QV zrxB!OwuW`3BpHkw8B!wm!nI)Kb|(3(+&Lzk0&E&2%=_czC_-kWDWkcQ(pPWhR- z%5|zg&$sImxv@mvf@?w75$e8EUD}e*{7{AR)%H}@Izp8EEx!%wQz?+s$kzv5gv>6@ zPYA6#qN?;KUc+FHx_={g9l`GZgol;L6L2k9`J6E+c<+L?(}KXRZQ8GD?J5Cx_chsd zsiD|065WN&Uc3K2nYd|4!)%UPPhXA(<)dY!!TSB=@DdpUH>`;X?~=ayM746d6$>bKzOg_5FIU7swEgw_or(%U<6n z|54v(^KUBG71{Zc_9xrg?yOwXa36=;!Wni8_KZVMAoKqbfnA|F#4SMIp|4OB-xni& zt|sNi8!Ol7Z6&hP57~9?pGjZ+0_FCOJCAy zdoF8yOp?Fl+MvD+BHdE*ZA5?Or{^T=z z+Q|%~z9fKZ9FD-cu=`uGn!ADn(}R>A@cj-A>$n=xH<& z)roR_MtxFy)3lp=_@}KOMeZ+==Igh#xAU-U|Do3z+ifr0o8W4Fpm=2(cD#>PAhS10 zJRua}_xwrxP8V?x5&73!N&KtxGP{0BJy0S`%dq#KUJuwjBm7{A9QspGA1=k7y|AMN zYKP3;z8P~RbP;hw&^_pOG>H2Zsp)w#Z9=}Ja_U3sp%S?ft_7!x*;!b__%JBdZU$1b;NNuw@l_h4=;NEu`(u{2R{k zZ{m>>Y4Pip_O2kG^=G$khrL#R({MlM{Nz>T_2Kg?}w{?IG^@?4t89H z63F~8Lk*<=y_>j+NW=4bq(58i`ZKk6Fd57bk;h78Z5j6Vej;nH?l0fo`kRE?VPm%3 zW@5)eltyOnI~fau{b_mqxW|Wdf0|!zYu$C;CVL+*k%!=FKdJM|hU7T}bwI}b+;ImG zHx!LVx1z}ZIPnW&+zek=MegFC)=#FMD3Nt=Em%9AL_TX5X-;mdAFN%3Czr@czXkRt zuy-=NS!fwDdsha3G*shK=EUeAv=7pLeL|G|f7sgvd&iJrQ@`_6iHwG8!R$><%RW!{ z%|Ea=3b*O}Y`HzNJI_{POGjk({^jhozpclqr1Q&7>zM{Cw*=gk&JUXY6nH(*c^=o^ zKRA%Mp=dO^73qA(-g7CfgL}UA97Fi&5;@}cz`x2(R4J7E$&*B8Z+ksKyLgmyFBNOe zVgACu%d*$}n}B-*Tg*1(Oooa94xI*C|>ff=N`bF+z{JEvQ*WR05XDB7vw%Tj$A`16DxN7g~ zXs2TKxS;)!*{gMj5ITyu_DDlljyfLa-XF1Yi%w%bpbUHe>2pKo-xS>A{|f9)V#nFo zaXE@3vscGWLMSySUxpH|;TDcMUf9~Gwh5j8n!U;CB{B-G1#QP#A71z)yS{uoC%4tV zX0OaBkq^E5|D&*D0-A)(-qFDy4OJOiTc#4Pp;H0RT(sKqI?L>h!d*|EWuZ-R z-RE&1bll(&{P#A}mDS!h^$&2r!w<%N9o|B;*yB!c+*x}S$Qt4`9CvuN%yVzK_YI9J zFO|q~e+S$&>3=3))sp&B6PX|EJqk^UYl%9cHc0zlE4L#09WA#_+?VNp;aaeA`zxNk z&U%%T+gol?xIexLZz&~?b{{UG?Gp(luY3C%-u&~W-4YZp=GJ9^*6$}Ri~ z_vz)ZASeGddsmRp#y%r5mKVY}8Z5^&q(9hNC~&D@&zV>IEL zq5C7_24+d9Gv~Uy_h-ylM>&_%Uej>z@VF;p=YqPGWhnFGT<(?Egrp1SH5|IfR^H3; z2G=KWBbn5!x6H04XOZ_Sj>dHk2o=6jP3j;GyK#(1v*USCI)DG&pY^#K{J_YY+#e|T z54dwmB(Lx=_DKgp>%ad!mW4#Cf2sck`hJI={FXT5OzwKquN$?N(3in$56|lTO|xpq zk#us6dsf->`yDUTsukB~!?i^-e(~?}`azjXd3ko8j~&J6Dnu8Wx&LN%-b~zRbU*TK zO}J|vwKWQFv1jK*(oRLMA}c4e^L^r$pftLMcenU&w(x7K{zcM|_`OkXJ(U5Qua|`1E8*MNS$iw2ox=Uw<7&J57<(V706-fVG!yTYkg$gIyzC&dP>~w=qdCls>g)82~u9f^#jI@ENA_q4DL+w8Q0DC%jHIM zxaluTq_4-Vb0zN`M4gdwFLw66Lfk@>cNOm;=eT%0&&qxr^siyJp0&x|Z%X7YxSPt2 zJbR-e#NA~Npt8Ipve*HTx}FX&s;teCa7Q3aBk&3EB;s4mmEP_pav^l$9H z*(qC2dYz*Cdyi=s?C(|oPKT@QUawPfzo!!Uy+qC=e>nKt?89WgGWrRbU3Fc({NIrJ z5<{cVEvOSWs$L!$w4+WFf_?eA&qjZ5>QCdfltn^>2{RxNcv|7T3Ks+6R4; z`B0Cy|DKn5PhT4D%W$oH-h#J$-@5XV$F=Wa>7QOsyoQw=%POBu>%xDP$S-AZ*Ld8+ zoFA08t=uTwgKB5}y8&L^p*)+6%nwI9?s3F*KwZ)5CwG!&IPWkPcXhu@#I;ZJZ{lzE z<9pn5$#WGNg^X+aXx=043-kwCiyBRWi`1`0*9UWK<4UEN%<;JOuH#u)bOJK2eP3$7 zs+DCh@%NzHQN5|O)p-H8iyQZh8_A2wUmo{q(!YZ$U!UdbJ{m%33~`gu2k0%-b2)v@ z+JM`nX|Vs&xXCIpIk--?AE}|Mr(B8~msTz|HJ$sLX*Aw04adkfvA=F?PWr|KkC!uIzC7JXE-+-b&j7-eF zHz(7MYs92r=fgIAZ|OeL&qF^Vv-fq!?J}IdiLOPZ=&*6TgM<38ihiqapMZP!E%|aF z14wwsm>dr`oH2>}2c(~dW+UTP)`<)DenH#@RO2SjA>Y5L9RDVYViJez#wMvp`omFI z%?nKX!yO!VBXKovrf#DasKyOEUla=FS28KE*T%ziotS*@**lW-vr!rum#I+3-ji-& zo`@1CjG|K6sLZ0XY;C^Swre0e?FKZe<}GR4zL6Hc13$2 zwW|^N_YTg5&LZw=q+u+_kr(Gl!_k{R2RCCP?@#6rM|X?KJ>KsfPx=>83K>_&3PNZD zaXa72nhDw$b^A)^?7_aiXd}E7#R{KN^HonSUFFU*&2 zEkZKV^@sZYSiKHNG>%DVmn`>M(s#JEo{ZyY+=Y(&25}!C4WDyd1w;3g29^f@)&6BN z=ac)!q$ymh|Eoy9QS;s&%-giw)?`RhuoH26qNYg4#?%P`GwRI+BTc9W9`9h%wnZI~ z*{Qe438ANm`vPgGJQ6#3w?LQIdCqcjFvh5*)}E3F#AE_oyz|H~q zi4dy4rm`GCyoN=41lO6?Z<`M`?WZ^}ChvIMW69SW_4T;=eojK@CF15I4J$c@`61D~ zN}2ICmzy{^ChOrwGO2k#CFvX7fxXD=?H-&9MTzT&Mxz_h;y397kuqgqFpt;oSmZPF z2_G7h^Xg^&@G$8=LCcYGZJ+I7ck*l}x&ZY=pAHu}{hELqc3kztSnNn29+SsCZjAKz zpofuh?{a>~8%4WDolqN8#D_D+P;a$8MBMy9pG(m9MTJ|&q)q*7ztWfVgV124*9FJ& z_gVSWkbf6(6VWrszeX&ke#y}>8R~JSk>*WQ^R9psfm6+K{wA*TXx0yra;9?aGJgf{ z#v4^#(yd~Ae=$4$e@&Vq-pO6_?x3GL1y0?7Q?L(l2cz~Kv)4UV&UZ7v(2!^ylSS~X z{hUDhJy|z6i=+BYc{gQJN@&Q!Jn2uoh6Km5=9gCA!);>ntH*6~dL7Ac4a?)|zDz=> z;VnDJXvfv}_~>=o|98JK0k?jGti2DCZ#Wxvp7gkOfA!?gc-M#H&gWR3y>enqj)iOO za|!8JqjkvqFvr<@Wu1Jfau0q-?>|sWYMjgb2dQrpIsJ43ZZD6!3wicJ`yu1bcij3% zRg42Ro1$SWPm^DOIA-94_YGxR0yDx~2$j#D}@Z)J0a z)dfB3dqu}`KGH5GlRf|5Li#(`Rh4@=n!U?2B>F$%W+Dx5a8&;u#ywV_YxN<~p81-` zeUJ3NqrZ`HYr6J1VGQr8Lo3h{r1zO;GbvDRDrcS&?HrS@cg@y^L+|C9ADxekYv1+V zkCm}Uh<_P9gZ%n1-;GyhZ|ano9N93-T}t{5sM6Rhx3#nPT;eWAx1a=4d*@Q9YH#8G z!TjC0$r&VV?FL2q~Gmm-ha!{ zxTTJ}p18{QGfzWB$mjNR^K9cLy2a#WkK2m$KcZidaj$pWPaj~u^&sB2vU! zPM43k_Lvi_I~X_BE5^4?v;Mu0^e>{h$hdPIx6wl|(Qzm`FStM0+>PCXa{Md3WAdlR zEg{b{=y_z^WsZAnlKoZaYSbT1W6kmp=EJK#$dkKH*xcUaB{A7!x2(NyPOU8cVwGeb z`HcIQ<1Xb~iubZ<$`kMX!4!z*r8UDkQr`~VfIHIBX+?T>EdB}>XR zKNP!h%edi7W6~3DQN{}Pfsm&kDn@3nT^GzE?o;$L`VMKiE!Ii+n|TsW2ldzHhvAZ# zT<6)_WIS^~bP6(VV`uL`;;uvYqC1f9hlm@$&0dMc_Nkd4k~w}zl*Z&OkGnT{PD5uR<92Y|vBW)%W}#H8oipuXG3|Ib&oWGQ>pf;~ zcwkIcdfb)dS@wPv*~rnjTykp&?KgpIGNhpm$I0}OFGtJnC!<%yWXIjJ_00Uxfqcfj zW*hu4KgSR0D`V2k;|@}rc)$By9`_E%ok85&XdxQ;d-cugncNV}ZOspn!7=INaaWRO zJt}x4YwrZdJ&?GTs53ed+4YyUhp4L$zu_ZYN0+N(a=FKyO_Ywmy~t;NXsYS(Z*U0y zdnqS+RVaErUx_+pJv#)@JRE!u{Ce z_JubHUGH&wJMLqDR+A+0PoNb4)_GJha|mT7a@t$u8rG-a76p0bW%6`rS0r;h?!}H< z`^YM?gm?}59rzZ^AB=1ETK|xO+jx&`{Y{gvq^u;G^S``;AYS3PbYc*UsHez1BL8N$2-uKD+R@{K{0Jnrp|`wnr-&@bqFv_Y?*=DYh8uDz*$r;$EA zG$u8}S^ru+t1&U_hf$6j9D@IL;o$ebx%SF+F*(%Z7QvfexP$EGac#cdn7Ecm!wDR9 z{$TUeTyFS!<~ts@1L?b?-pI;rVur-`5Y8=-LBwB&^t(q|e|0^$3H@)8*DX_W{F{K=XwR&F8)CU>Y)@wEp*YI)rbaVvTK;13;Anl4%obSP@U z11I&Iz0sWUO-9CKr@gZFTEEkwYt~*Jvk0N>>31SGkfbhZs3mK zzgsJ}6x?S#?&-gjk5k7)}*d{#`{^W^SGBe?ikKlc$j~ex6d~T_Y}D1Uwseu<)iZDR*!4f$Hvs- z*4~4if;-r=_YQcEpw~R^Kxgmw#N|EBK1#GBn$|1Z|BlQV=jA@uGd+9FzlW30{Cm}Q z_}AtoVYrJt?osegL??ONYaRC-;)>BgRHatU&BpmuPCuE3yVpKh|JpczqsP_vb`r`R z=hx=6x9I&bIT^0?XJg?#g%)_+yB&AmDU7M;9CQX!|8}`37>7pY^k=CDV{(OOule^5 z@|l0_{$a*y_n)oxXKA>zym4qWJbh2tc#r$Av-b(&UPT(-YF=eC|86mlO2%ZoXYUT= zQJ>85xX(JS@+@cz8N(W`UK1Hpk5(TdaNqQ}T}gi?ddK5VFN1r|R=82PYrJxs2X7hr z(c{i^+3y%j-n8p?Y#fS?i%IRq*?MN>b|(3(++Hig-mR5e0`8F> zw+Fn>Zr(}yc-%J}w}iL^8ip=*^HiJv@{mHt&*tCo_?TSdajo2L^SBGkuy?EF26w#2 zwQ{@D<1Q_OyVY`oI~T6Cx4Ypzil%#9TR&Sy+>fZ>S@r>N^vg{j>eG6*soWlp$q$~r zR&KkI*UD{08TM|q+~C&UH(MX9-1hXiE4QKCigL?sLQHyiTe*}McGUA(uDvff;{f-ct(998?kJCYEIjpZ2an4q+BAf^5_bvG zpzD3*UC*bUj>&Y7%g>Wnzp5*x9`{to%>dnh7O~f)-0RpW+z;^ldlkIf(Ze3s)>Gdn zZaMl5twrizyN+F(GmnZs6O+RIvh~6ITla;me|wf;@7DaAfO~+)Z2)f{w4cZ2mYRmp z;l#B;9npbI2L1b+k(_!Kel{ip;5Ko7JB>V#p%;<0;{lF)#f#jVLocD{P?zDX%W-|7 z` z;g&c54c{27E8BPxc_}9Q!?pRkm0RJoti4~AVei(;EeiKEk9+J*m81sDB9Hrx42o3hQZ0XN%Zz3*~R}9?w`aJO=mwI+74C;4hjZuRUn{~k>~Yj5E)?A@AwQ*fX0xHjK8-s3iM-16qB(H#FqQ!&}#ac!R3 z(c>OghP_*xrzYU;)@;jiJH_L+D1*Dza)a9ju9aI?c;}-59`_i>y`Q+J(F~MZZjsz_ zdo3pYJbSI&KJd7aGVI-Ixxu}|<1T`?Dpgt19=DC-t|9JslsBWk?EYHt+=5+S6z7)P zteAY_ac#a+mAqEZ+^vvMdGnn_4mSs{O}Kv2`t``W+{f{_&yc=v)4K8sNAvFp$9;#m&(Tk44bt}tB^ZyD zJ2J<=iT7es^}wtj{vf^H4+zc7a_@KC9f{i=?Smc~z4`vAWDYm{K7R1H)=xI`xDS-! z->tQ`2;9LQ_fkrw7&Z5}50=3lNSgBIeNnjM;TB~|nfpEP+Muo;_aVm}K-^8}0dyDg z``>6zJC4p{U!-TR`S)4!S-CyA4gQ^y<6oK2^~FKiax?$V@VHNv;fJmHHw?F($2I@H z;&GoYgS$2VM&K61HUG|n_aXYi<4$qh{8v~PM*E|^kni6_j(;N`#N>X@UTYT-@|k~M za@_LTMJmU?i4R#nD}#Ho$DO+k-1#}&)B^TvcwFlzdwASW9JjoFGM&SXEad)B^Q?a_ zgEtht;BnKAyZ@`)`$R*~K-7eLPA%MhrxA^U{rA>SCKku!IJmj}hxEFfd58!={mV4aq9rp*~@={#mqMgsKy4n0}ZH^yOOJXw3A`N?R)c)-M+vk}2jD0p9cR$h}i&`P$ zUhcSO5qBXfK@XMelHuOPrVAY}ik!Wh#-U|g7s9pmk|E?7U8#zU=4jko9d`zCZz2s# zIKKP^&o8_fd>>ZX8f^b~_=}i41h;vRSH2+qcW50l?zrGwD1R1v!;pr(Iku3b*r~}wPM!bgZ9D80se#%aH7W6rS z$(#>=8I!NzHp!%BKM?6JN2SQPF9hd8Lx{T-X}E{uVZFBG?l*$H`)co3G1=je?0)x$ zNdFv4A>+R4xZe@C5!HX4d+BKITK3DS-r&7?uH629B~SJwePUHi4ue}1s;Zgyc-g+<=8kLqgREv<8LpMv2=d&E9ze#`_ZtyH8;Pqmo3#nF z2fF`C-ebkRfAwwB_3O(%V*@+wKCvby@4?mf7UloXApIriYGmA>Ggzi7#C?Yf-(dZh z=-7iwmpt8*63NpHu=RXe3?xR0pT7leja%CA`5WLq-_nH4fdY;?N zyeIe+&X={1%j(0s?y58e_aL~|Pws&&hoU2q*_%iC5<(q`>wz>}z)}01|8M_JdL8!* z;aa&}M*8=6!@nGjYx|YoB5o1VP#ymy8GpdTTSe_>@=j_u>Z{)cEkNY#}E6?Fu=E&@|`^QHTcRIQh^+D=~ z@CA9Y_BGy@?COK{JIOz|4md39->XP}2bzeC`#)#zm&8??%QY6NjdcE7&pp52?9pJK zjd2ry^W2)_o=81Aiu4zufylV_y~HGOGtnpLLzDnA`8D2&&hrRzMZOf1!MIYnR93;Y zpw9DQvX_p)4l&pIL0 zlejC;eP|R~%nM_~O{w&6^8QP%H``;#*nGtZf@}TcEAZY$3z7NZC}-~q;(kH$KJx%x4zB%!t;xm1^=h_W5K>9qxZ2C#|ZKx!Hs0H z^8N|Z&x=%%Rve9czvG@m+(jskt{q%WCNY0Vap9@$Vx;r$ruj~@Qu)=h_bT$-j>aM5 zPI27O2drtJw&*yd90XIdE7%B_eJ8~K`YQww0J7d(YpRD;_8F;XLDdhPbigja4mfDUL`q- zXEwhlpZ^BS(qm-U>t`I$y1$Y1TKZ2lj~_m}4VXv_SKh-;4Q8A;8bY*Q-x zk>C8)^yNG`9JN5^ub`V|N^@;KYkNVVG#bLYV#@JX_{37_=y6-}clSN6lB__v+_s!M z4QV)sV|iR@S1Olz+`gp0jpyX_S-D(poO21sz4`y)KF{B*g(B@sWt7Lgk>9DhsSH1; zofhFn9G)DZ@2^X zsb#i4)TmV;@A6>LE*x|HyDM>%9QT?3$G_Ho(r^#)xL3VeTjGoIWDv^bzR37|Bj+{f zKA-aJO>``ko*uWt{M)HihQqaS`(AqA@GJ*vh05}$`*Xr)=F0VF0&Z)#|JJ?~ zoIaj?*VW{iU34QV&%WC@UtW2q;oe*U_Juo_$`sGOit=9s?ve_yF9GLw&%TQCUlMNk znC!Zfe!oMd-{;VlR zDE~#_&Vu`I+eZ@48qdCp@?Q#W{bT>VeY_xAj)!CATT%WC!|huE_C?{`;n`PF{!74} zSpoK?;4Js-t0@1a;Z{2?dmmwU`b*U}yc;sNeRLYI<@j-!+q4oswN#qJvGT1b|3%<- zuK@cJaIW&~t0?~^;U?iW$#{$PhjRMA#V2m*zf&g#8Pjm)diGV6|Kzk%S?}3bUjJ8~ zeGxdj9G@-Uit=9+?s0H!J?>oUp6YArUwPyDs(Xs$59V6A*Ms)nt0dg>J$oz4pDDPv z{0H_*SLP4@fxTh4i{bv;@g)l9@BhHQ1l;{1|K7e7oKA48|EZ|@nT8vK8*%OX$Q?vf zEs+L){%}{jE$ib_)|oU!PA`>vJ^L!EK1SibUIF%{;C$`bS7H8xTccHWUFP4m@2)+A z^?>jhT(82l@~$Xbc2z`feDx1#);ggYLt-j~$i+pGWY z*Uzb}Pv-WQ3D#CMq~W~n*;i5ilru}^=L)bd0;m27+48O^|3%?O;I_zkA^5h3ecwZ) zeE&5pqkaF(Jr)fqIDI|)D$0LpxT7k-zQ|dn@}g&7h4~Ne=Wr{0{Dxb(b+)`K%AYB? z`@=PR{r2)t+PBR&q#NUpXKzLMHw?EJZa7oRg1OPZnIE-2&D~Ffd$(tAMfo=Y_f@#t z(w-)@-?BgY&8qVR(VY8kNx1J-!0(o`OXWMyzKSZB zFx;XOv*le;{*1sq6mF4g-#@W;qnJHujZWC|`X|I%{7y(ieU9a=yC>mxha1kM-oAdL zto2gsH_~tu|A8O)aF#s&AJ`j#``&+GZxrtO|G?fP+}+w%d_7CS?Etr;>w}!b`1Bvx z8-{x?+I zxD{28q*tkofLqb^C<=G#Hu`gF8S~m=H!n-U`TRfl-D$YhPujNfF3-Nmd8KkNoQf{* zDBK=!o4EN%dF$k5-KVzugh@CzdiGURy-C4+-m|Z~b@KA;lk-dEGta&Xn}5PB?2z3@ zRG<0uzNiJ#ZB6I0pCtIwpX7HVt}luq{XW3R66TCwvhRUCY0`)B1&+0kYe{q4xiw@2 zN1ea-fpc_FMwyKbqlwq>S^Ju0-bc6nBN4a&_o`kc7$QRT%v z&&hF0f8P6wbl=<*w{K3Lmw21R;S1>};M(F_;|7P| zzb{wed!yxWlW;$UYvuMKywA~kk2}n9n=au!MCcrJ23pMb0opIhmyvu^c!b->uH~lt zwbK2Ve{{_DBXQCX<~_i}IhubTaonlI%|#lH;dvk3SG)KW_S7uRK0jmoa}t-8N@ut> zFZ_gj_2*ZWA3QGGh&6=%Ca(G?_!TuobE#tsQG$9l-_?iDCIt4TF6aI}T?|0#5Gip6}S&zWaumR!O@kEtN0fTDh&jj()wW%La~SZm3ByhdD3xP61@}9?BmZNhKYwhIyvotI_8i7n#H~ZsK4mW>DjFwp zeIifhQXkUz_fP(O$B}swp@T{fDwQZ)3%Y+>{cy;j;JfGQhi3de^TXEmZ{y}nh+M(` z9k|v%?1UW$q5F{8+s66fme2V11$q=Ek$?T%Y@cACsQg9*j*`kr^*8{0H19+-`7fK5#g^)~FpaKiGTF1`>A*dK`^M?Z4&S<5PJq z=jD7^>)NsTH+)N}4EDG$kbVLB2^p6y_8LM@F6Vtj=o|DI+Ax>c2N@^XxBRZF55`U3 zPCJHc{Z3>B-xj;LhMdmPxIZ}Vr*$gJWyEW^n&YbOlpFhr{pTfK=ey-kYl1sUB@H*C z|0WD0{iop3fsETw3lKjnCGJ~P^=rO6!BNM}pVa2N3*`FN!E+-v&L_vP56|O%`E+e*O}-Au zxJNtg5pPtJZp8OS=OTYyN!kW|yFLFEzL#=?+bv^~$R(t|0$q)a+s1M4CvGx&6}^ZG z-wNJ`to|)>+%-J3*P8Z~ysuQodE9qMe`Sq2vXY~5?Y&GjRx(bYqtU@Aif{AT^P+n> z!#UjWgFGhyccinoHR+2As>)d$jZ4$i5W0-GE0Km9I3ClFI!1l4J)(NNX}8LREGVZ()_n(oFlxhfAgQDcSG0 z{Y?4;R`H%BWZeFa`@%Qui$`r&Gv1?Q(~u;dt19wr6-nI{)Q3sf+g!O*N_iJ`)(_8- zehK;(8F!xJ&ia;kble)AMMQDt4n?!7NOBU#VZnQj8ewl+$}K#zR8EI$3`t)TV&kx z9rsJ(Hljn;^1L=GqAt{-e<(aEB*Wcv7+3PW`%a`!y;mwv!L|PEJksl)_W>M@d#B^x zP28jCMf8lG?=8|0w$|T>D>t1#XumG=c&@?YzE1j&(NfLFX&pE1y%oO`SA89I7}Z5S zw@VH;GQU*TdfXpHivA2n{H=4suen36zlJ$deZ_|8^ z``k8gi*vZLfPF$9_gQ#vqPIQnD~|g;aetwrADNpV-`+$HH@dJ?&h@wrN&g4$vv02X zoV{;3ZfD|pAPs%=yypjN%T{j5MWr$nuGQa5NIwmIr1>0of#aUJo@a^Cjp!;QJ@^(b z(tdr=g~7Z;>+i9oPcC79I$WFYyg>SQ(F$bTb&mTN6R&-KqMf6?>ebq8z7uinZPR?` z6ZVmK+z#aFh58}m{^huD-<>bRh#!S+L;gIfIENcqS}H3%KO{*%6}^UxTTTB#JN}cn z9e(Eh4=9WxwBv=eB=xn6l zX^3!rp=Fj_zWKZ_y{uIBf@`7a-v#mld1fO0`P$yv2PgAS;@s)zY-G>;D03urERrsj zW8oAz&^zQ$qr6|U_MH`+3!Oz=F}fR#L|t@zpl|GUZ-Ep(y!m?(Q!BWy<8fz^ehK;v z+3zlP+(%ET&9eYOef@=_|K1X{Q-h7ai7#2l_qczNzTpP^hKxJdaYqn02EB-$K>oNs z-<6YbBVTi!4Oi=Hm~mhM>3>7DHfFiEI<8x}gE+Vsw2U#&!Cc#2l{Ic&@O3dC({L ze-7zWtJwDf*MeSGtvbAle9py}4mVm(BRSf9cWc*GJ%hR;;csXMaIGJ|6+50sKO*yk z);~h1-*2q1p!?7$6v5VF<_tv>d44q=l$(B^`zI17)|ASRaKoCD@HOc}zcb%O#+@FV z3e6#I0a}T^Kw4jI9it}~K3Z-A`F5R-57F;SrRr(ferDf4Xb0#nWZe0VTklVq-M@jEvjTajz$CG@6BGpeWa8zVegA zrI4=WZD9X~mRF)uTyFLJIDSN)yhEDzk^Np?9jGDn^r88(n0O7Z@o&Gs*59gOlON%Z z^ZZzUcqLgz-sK+Gp69=M4bLHRUc+$yJ&lD!?FR#5@L&7A;k>v!R|a>r$GySXyFJ_} z+}WNVeuVcYlDw=R>^%V+T2+?HCj^67A?M5ULkjLk9(M=QH$m+@?u*Xe2c@=*Bz_Ev z9k#iDyX4fThT}h|E=6rbzC3~cl8L&N-KKKe zIWEU~+)3nHhQ6+zayqXPUDf$!riYC3n8XnhX%Ixw*Fb_9wYLB>d_PG6u8psfI z1G4(t(s7UNUPVR`ui-(ChjoYBqilOq;kcaZaVL=ec{Cjvw~gb@A?`z@VF^d|L+<`a zvp2dY?X?W<=N{LdyWbwJ>=l8=G;Q!H9Sq*^XCa>uk|}oxC=Z#EG6F$XuZdM$Z;>(seuecccPn7 zx85SXd2f&Qi%B=XH$SAC#wGvstRKdb{%Q0QGCzFixU2psk_E)4QLZ1RIIj62wLk3` zdkZtaPGsW~JWEf$A3W}-j_Z)IKbgBmX>WS}K-b&Gl0JHP zT#h(nOM6dDWbK_wy6v?$1-B<$t!Eq1aoEulU5w0LyN_}+ad)F9&^R=WwW~jvf2w~I z*n0>0hv2tN{XH@+SC?V$bn1ZOYVWhT6(=qF_M&eIdrhqiSa z$a82RdKWcXg1zp0@oU_DDzi6rd|Z}#+;yZsXmJfG*d@zd;kXTmYl<`+#c_5ou1}+z z&v)#7K+=l(;Q667=}$#xAgXi54^)2*`4acj5X_HpS0*TUiCnOIaw+HkaTIW_2tU4Lo!FQag)ot5QI`7ZmsbS_uze2eoM zI#;KUX+?jKGru-&5^giN=7-VP@+#x{>&WMV3Uz0UAIEtOk8>=~4~diG(#hk_q>;}> z@1R`nZtbf|!9lzbfRN^Vd0gonmwpwSxj^FnhN+YdTH&Y*iH&;l0 zs|F3^3N#WG?}*KX!M&7D6GM_ZEiU6d&Xc5>h2|mUOoLM=_#^pkccpEhQly+ZsVXvN z3GXbT%|&{~rWA zYEN19{I4BD<(5MV?go#0ZvU#%n|s0+A}wE^+qiWVd0{y>DG0A}EU$bcz2dTWw`{+4 zEx&2Nvqf?SO4%o%7`r;x(+`sQ2M?Jg~X49@P(HHNp9DsntE}U*oR! zxGX=2Vt6iFZagcwra@REFm3tcQAs+Wsco(7p9(S4J?tC-f>L&gr^fc1%j}AIF z_`Pz~=Itcjy~7yeH;UIe3t%knd$lANYc0NRYlrxRC|?spr+G)i@5(G z4Ht3L{xEmFBgC~xS~CuyKESp5+n@Bevq5GkN8=uvAxUT?arYw)6FHW}9n#YEvjgK& zuV>Z|&yjvsX;pcJqj6mw49y|#L!=?rt45iAutK@|nG@9d~=|O~Jj-a-Z_-?e-723Ao33+*@Fb zM*E!=eCJl%#W`hgHBEW;CgJw+xIaBtBrh>1>i^qLoBVK|am&Z-R zz18CmsVs6Ede-wp-!kmgH05#Ss<=#r8xHbH)8F%D$weWV=5g5uryk?)44{Jyg9?W$<+~C)74-wuG@70h69+%s98baR^_ZzCVcLS+}e0w8a{nh>~4Y%Nb z+4@_b^mj5hZp_i@*|iz0gpMcf6m$XVfpi_k?Cs*X+VAN7#q`y2ITWtdU)|@f?_wK3 zKI3YgBy2V>(KNoj*8f`lm22V>^|(Jrs!0OoEgpBI?(IsWxY)cN;$(rURyuZ_!%aLvC5lIOu4tIP2oSH}zGUdAC!r^h`9X(y0Qqa?C58|6juZDa`Rs?jXxi{6!_-?&0~lC(NsR?hwb zCvVtSJIXYVq0tHQ&+zhZ>|0e{CC%$z{=HrP`NS>D$sZmXmvvr#U4OOrE!f|8{>hv7 zMxOZh?K6L${B?R|?br9QuHtWe>;8Tx>~9+U{es;0v6@fyxTF3NLK5CF@T?y69a2et zg!MDh@=~77M`rQitlK!R;T77hT}SxbXREn-0QX|g&OhLV_MuNf`a6}oM}{PMyAZb* zva-_X=yh?q&9iHN&bLIzBD3p+Ab;pY;<_LWhXO6D9$9-z!F>ttq#&=HMZQbWa%5Z` zD+!_Z8^heUfgFtvMN_6!k;N}@{lq-9ctx;prrFqhsZ9lp-Wrz|&kOEj6;#1Lr2iB( zYLew%@3=1!_Zh0ZANM{v{=tiyC%uy|g&(nJkNVUXL(cp<_^w6j&bYKcKU?0t$kPv9 zfwbPMA8!n}`D?jIC-WORFg+Yt3f$#eppaexqd^r zYKXvj9FEObZXs?GjM3}0R0EE)woJ~8T{6ie3TGZ1*VoEyqMxB7`@3VkP353A5;p7K zFU2>Lp2Od+|FOC^e`LP2BXI)m&v28Plb~gJGoE_F`<+K*&PbW|DMv#R&aS<)emBlH z9|j&&e;rv4$J$p4P6UqmJ-IYrp2C)Akp3m*@OX@d(B54u%L|;>uz{P1W!2+N~U>8zk#@sNW;Ax|Da>at)B~y39f^qW4UkOag(Hf3O$d^-a|4Z z34M1&ZF!UUrDy>f*^&E&l#^Zuk97W3uC|lteQ{akan0W49+#vVLfd0+8g88nvVJgo zzxBA*50__eGRNNZ{c$-FZa8C-$e-}4G-F>8GCy<<&V}|M&O%H6?aynpu4&NvtMiZW zgK@bEZWEUwLi$eVEM(kX!MV^?#0^8E(d}sQiNQXQ;f%ZU-TheIzouMyi2HA4a3_(^ zxEE~$x9G-T-bVcpZX7+Z;;ii&tsdQm>eW)>c zjz-5Lv$wzFoZcF^v`P^WZZ`wcNTH)Aq@*TmRD{`xOc$~XHv6{L;4Fk*OV_g z8kZ)dA@sn$g|fzRk1Po8%S>yGO(gWKL^SVsEq&@afiwvJw{IoHUj2@0bYw28&12kl~t8;2(RktYYkN<9^q4i{&+ z2b2C76hX$VQz`RDL!F81jx?OdQMtM6kj70u9hd%a!Y2|FvT!1b{X2&VPxq=vRSEIFM_^a0AnwoJC z-gVezyz5Cn7R^F-U3P}!Z6L1bkOs0R8vYI6MMP>>w`Rc}d1Xdkh|3g@*O9aX(G+C7 z-j281p{(7ZPG}OWX^t29BFjrnk4qY!jnl(OdpCLjS^ax8;Dw$iE`{Dfzc9!2pOZ+r z_A+EdP*0*W7^mSD26^Q}@_de#BjbMJxW5p$!(l<)*6)OtcRiDMDK3Zg%eI%D$=4Ef zK*r@~Y6v|{+;p@GeT?REBEkNqqEFa!;9bv*C2{)IxGdv(CaF0I8%SSpIO`C|xc0ri zJ%~F5X;}AFZRzv?-_wf*Wu@h%L9aXNQy_`g;&LzVwQhk1ioVUh2G73B$#W&T8d@?Cx-=SW@ ztrz5#uSmZZtw+YCYt|5Icphs_#A~Q`S8W+oM!#h9kQCfqF3WNYTHr%e2N`!rh6I>jSa7c3%A*>{jp$iaG&N5a)9%B(YoW%z!CKtKJd>OFI4*H`3CH`6 zv^%$CeGwV&702sBTu*c{nnWGaF++H!UfKt3^GDW#qD$g(FFb8GOpjzBX>Ub$Ap6}P z1-#HW;+{krrgNMMGnL1lDwx`C9wT1cjn+$98kZDY3$Ky>WArUDJK46WA^)JGxo$%z zBfs6WIG|7xpT^}okMr)M1#%JT`XQ^|`vjc4gWjhd^AZHVey7M^>+)>5mXhyUbSJXk zw_lJy^b&C&qE+Z~0`#?c+w$lrvndKN{|VHy%Ceab5otnnK)5NW*N7Q_tGc-uhAZ-h?l>kKl3N zC4Ga>tINk6%@3~Kgf`AEk`<1-hGV_c%jWJ$y-dPwT$~+;*OUG)RO#3(*ZR8`>g^&s z5U*h_|JLX9a{YTJ4O`oJcscV1xK?g;$+suk$KwvpkR)^zac$7)=w#$`i(K2>RBmu* zdG?-5`is$J$oyda-HpWEfySY+$mfO~cO`v_)`#c{=A9*5`e6$BjO*6jL)+p9+kc;i z8}+y^!~5a<0-57+Z*hM3n7HNWTcq!g@a=8x>@{xmOZE|X+#kvFCz9i`_KtMiI>haP z4nj?k&y6^)?u+`0^l7*U##J~WJZTH>G}Oc6j&72cu3%hxQjjQ36 z>|=y$_4jYm?|eLU7#Ww_5*k9s5Z4LyLfug}t`qwr?Qf#aUah~n-kw;+AW@pN_fpbd zg>FX1oteQ(XcBQRq7>5oY!N0z_Py?6$5ngPZ_#gygYH#vwT;BBjy9>O1P_f7T&~fux(Js(Y=wP&gzMyb*VDDu1M61n1@UPk{ z-*deZ&z9S5q`x2ij?CUq9Cz*s4P-S6wdVdg$N9_&(nxuQ6M}0t@8`>^(UH%o<}k$Pd2#w zP?5)jIh^)qZ<9XtJNM1tnja$VxxPaGL&mMjctr?({wsT4iGL7{Mt=VgaqZalokjnM z%K(r24C!A*tC4YccHFin(I250>Wh5;{^9OJ88`A*TpojK{mv7le+{ie#%ft%N} zROSA1(tvC`j&x!_Cb|`wz4o57olfTdH|mVqqHfsQ*V#MVadrQlzE>&|>Muj!hShe$ zMAAQx-bKbe#M!%JXYNa)=BP26-9co+X*}D){g-~O{%So_KST@r%X4t8K3KV(NKtbXtG4e@MdJd0^HL zQ{laeW_jE;j{7EYA0Q2jIhMuM@i^1(RPQe*dfeVe*Ot%7lSbx;6CL+T&fS1C6dzUg z^C(Nt47gFa{mbBf>2cd`2iN9(DYz3nuK9PB$8Gly{2Q*(Ulw@WHSpBGzk1yEo_~KQ zUc=V>n}C}?C|hoMr?7^FijevDB*)#@pZf;HYtZLJ%PKeXZyN659@olkSC8A_ANV)2 zLx1Vxam~Mbc-)Tvz`sejzc8=1_O>^?1JS`Ax0B-@PFw_On6WN@v;J4d3Jsrf^Ep$0 zYxb9$;aWf0j(n$~Gm!cBWXJ7JTyLbI>Ho7I!p6-g+&h{7n!T5hZveUi8Mm|JUQOI^ zq~V$7JCtd!-8W0Z-RN;|C*N4~05a|=jysOH$wMyr@+`Gs#0X>JT9Y-B^0dZfWb!Y(Nx&PgkMDF!w?f&vI z+)2(}Ih8%V=n-VxiyZg=Xgd=)8>=^tKgMtw+gL-}t%RZ)e=S;FBGEQVC6Sv-+NW~w z9YtM2A{nK!q^=?=N()KkMjJ^~q>WpVvL&e`)&G0$d(OOPUaw&$b3UJ+!+Fp7dhYX{ z?LF^#-*?Bw+>gA3{tk6Q=kqR;?9tACkOKBhE4$Tt{UK@r@X(0-4A=CN<+?PK8t7JJ zxbrmkkW0CrjC!KWQ4Z_%?U3Rv|JF0_3r6J7yIt;b@~=UsU*>W@*W52i`v)C$c|$n} zZ7Ww!w(08@dBK^ltLF{4w3T?Hh~&aG=k2r8YRhoSJc^9HO&uQv!te7vaponJQD6S9 z+Hu!*%qi8rCXatpa0kLQVKTffTdK%Q#HvSB_YaS84ra_6QBCHMZtnf5QL>*0=d%E|`v??5||;W7lM5GdD` z`2$j+0r4T68}B-qI`3*fTM};V{%*TEg8Z$}8OU&ZrAh3c<{fDllCHvM?JE?yZ>P?^ z3f(wAYTOMsiAYPh=KNeixku4Bi+g*TB!PEHTY*&gf>^B=KX{sRejMt*|0X!5xbdbD z>FUE>OF3ij{p2H*h?_VjB7-e%l`FWXj~XDuO{B3BID)k1NCh?Sn)PjCtBMmGQ}(9d zz6dwS-&JTyxeHKdWVp{ehXUV|_A{#1jdnn+*2&C!$l|(xG4&ySTtuo4aNAY=f!T5} zqO3<>fPvmBCjC1wa4p!a(KUAl&|NO=u180(1p3_ce5T&Ag4Y2hk*y zUjuu&hdYyZkR|YKI42?#;OIU>W{_ttdJ7qU9_Rcgft94KM=ES5PCm&x2r|A@v0A@U z_9a?GWVyxNMgHp_&yD;`ZpZweFRF^r#hTGOT7MM@k2S|l0`XN|3Go2RYdNwxF^92p>`IR zz!%i@~$COusL zhBdb&?Jaa>M7F~tIF8t_e=zqYf@ejf=|FdX(@ErSgW4lg zA9`zUC(t)qn=J0lrQjw)5m{t$O+CxAxC{#_1WHoR!fjYru(-w#5sPc?->hEB9qtGK3_ioLdLfUIcg*S=! zc0Ydy$K&lH@)=xn{j`Yuiu*A#^><*JB!RW0ZA2=x8RdL8$2&ha^RaOIh*ZDN<^D>! za#yh*5gG1C%{_#)9HhdT#FHoPIWIBXfqfw(>cl%F5?84~J9e+JjAU;Rve zHQ)K0*l-gHM7zl7$sQ!6LVaTO-a9YXJP#l2#JVHgU^=(R5#&DswM2$H$vGBiMOp`> z!v7lADsn&6%pc7CgW!1)IdQOi-f}5-73zfy_i4?&p0p@Z;jQbkeC<`|?O=`v&yUC* zaE%`f_g;(pOqwKt{o$&0(lqyih`eNR2g7?9J!WwyYwiTno<}P5KCX_hz2<(0To{o} z7WY-ky^Y>Q#t&08cL`}0X8c!=u#m1}rxe>YA z;u=5fw763>w%IU*}8Zbq2#7}Y_>zt3rI1Jarz6&`xNzOR3c z9}*WwBx|VaU*m@s7WaA0J(;xjn!C69pw)4Ch#2 z5@|D$3U3gHu63@nlDr4ca8>`H=5z7OxW8!m!T9%Wi~C}lB!QCDv+(7#Hy`eM7Wbu6 za6?@qa`gRfeK7UxLyJ38b4yasf>%VOr^PjXSZ;A&*4&cRGwBwQaTeFqvy~S270oS4 zJxjs;#NrxzzqGiomcqZuD8Z+*~EVR`V88eTGtI-6_E$w232OlTjYPJZdLi1*l^7{!SH`8 z$xoWQjo5GfX%H9FiYq-MG8?Y$V`V4#EB4}k2Qpl9-5n(D1f;^r#9diG^*(n~XLP0< zsTP>R5m^IQ`C5gu$bUY{MTW~30~G>ykaizZVI=X*KI^iIdoPerlO)jK;%u2qx(bVki}P>17xz)%2GhBDuO#_DM;nphhMZ%8s@G7rPz!W4TGxx8 zd!4f$m9o|&$CE#P4fns`GK{7}JMv$Iu0n>}!8sHdHLHU3Cw&N-!r#^X4zo{71{8h& zTJT!#f5A2LopWIHs>L(N=Q!VMSL^Y{zYgB{GnXj6hRj;B>3dat3;EOYRJilunszY; zTb@SGB4aN`B(7s!1FmToo5}y;$5mw~vEg#L zszRV4&r#L7*5MvZoPg=&s&=93R=9UW8V)}(T~PgT6!}j;9g(Vr$`5KDN63tl_9&Wx z3i$oI^;~^9d!~aoMC25UquxjIp~~CHy}!}S;rPCfBux3+{zLf$<){9K@+r!%{SW1X zH%8>35w0JX@!P*d-yu$)?Z=G2NDEx&xxaH$L{6i;sgLvfm6yE9e1nnLoZoVe{{kP9 zwhE~*=4t=^Fy=mb67DS)wrHB#+IjaPMPm&Lu;D5iDQ z?>4W!w@2i1xTal{*1yuxnJX9i7w)tJU~jhO7W(%N*264&r_Rfe$9OLC6=H8aJLKdF z^7i!=I5VuR5*OFrt ztNOE}IDRbJ<2`L2Kgj(NX;$F+_dxj}4EGX?+YmbgKi8J;hCA=mw*8yKvD1+XZHbj1 zy3^+Dd7L?KGAttZdAR3N<|5?vgW-1Nn3o&(_#pxJWe@j2*c*BvBJ1Fqd1p^-`D9BC z+1*X%sJqS(Jl;}bBhrn%`&MopT`G4lv!G9O+e^opFgk#@m?(tvOkmgoDY0h1n zUi!HXxYtsZ&~I1_idZ{ zE2HUuOTfK&A6!#^<8V)Y#653U{6~8Suy nLHek8%x05m%VB~gW|^FPO`ZFwf=te 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

        ^T!ObV_6^ke;k)H@t}J#{{Wuio7nCT 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 *>AK~u* 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%0AD2_@ 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%0A08-s2zX{KN0^`6euqr&s3b9Zh+DYr-al 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 z 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ΠT!BY6o61y!IFzDL?48y&R@-A}Hd3+hL5L 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 z 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�A4&s1OcJDtNx;x~9#JvVy9*-$yS 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

      *`x^uh#45N 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

    4. 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%0Ajg~?O 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%0DE#Y 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 z%0Av#Wcyn6hkbmNJesH|;6gq=cHIC@|LU(v`}=J42VW=Ki;4m+FD_^Tm zZ;Sl-vGGQ=<2QcqCiecay0xW!{1No`FC;!y6xapw)R=)iIQ_p+{-giB(>T_3PfsK3*IB(Y~%n z#%rS5l}abpi2XSQ;#!u(1!~oAxZRMYZAQeU#76A3NNx`15%G2j9Js;xkng=na{B*ZRSn|4jKy z_1_b6{w3`b@}Fjvr2hooPp18W$-ozg|7){*u~G&c@IDf0cdy*=ZbV^?%sM`}}xKR1|O_ zKP)!-RZjm8o|XE$Bk*<7T~risA-}AcvWnxMMgN-5`#;8aeFO2SqJRrI)<3@^$FKg0 zw2%L7etd*|{M*R>R8hc%+_mYwG>)J5nd)Ef@ciKZ(kR()meJdVHeeyP7-wQud-=KK)$ac_#J`-9?vFAyL4dk!4s z`0sR<`s?R*8pqo4{lpd(1$sle-5o#R`19_PM|c(gs^ez;5&r|%(moWbDBwaae*5V` z9KYEDX&>)>a{g=OznMxz%1;6`^%WIG^-8?d?(<)IUhKbhCtfh#!~VCHSJV8iUBUgg zI9{Ajlt}sil2=!s3XCL-8){{sCN825A5}D{Ld8MzgXJ;50Cl!INH};rn@F83iO6t zytB@Dj{ox+seeHEk9KnzlYI`+_~lwxR?}bXXH+|Whj*&5{?l%jw7>5TnV*zuV75<} zu9P1wE2H^__cy8?|Gj~I*!kTh_-A9ue`%4Kzo1qzEl{z%7Wj35QSJBx=S-Nx&9CQm zqU%$&Li6htnbJpe1@b*Co5A3_oXtL-i7x6P(^{>kn{7N`XmQ3k!o5h2?^b@>xx}wa_Bqzo zsCN2a`n29APXD9IKHj^f|Nna%A0M=OlQg5^1QxmWzO8q2^OtdZ$$uKy&tH~ImHvfz z2Q2IYIsduiGdTULbW`@PwbwZG^av53L-F3}`sd+I6-RLV?s8kE7U+G%;2*T`{}J|c zaDAu#*xGA3e&6--^SjRPH27bWJ;M9f!oixR$CjtDJ>RItKhY1^1+rA{N$mBbhi+E= zH$m>-u=1OhET-ur%W8qA@{DT7ckkM~mWw|IKc$i;&!TC9FN$vbBzaP{i~Dyue^PH3 z(EsY$OP=NUAJ!vYOm$nne}x?2Bk@OfU&5|$j9Mo3^$joFKJHa{ny4tSJLGpWD}2N0 zFZg<@y?p|8q+KHE-=WtF?EWP!N$T$&QMmrTH}W)5QJ^>Epe;Rr;q({$Kq313ljOJ+ zN&nm)|FZiN4vF@qqK_;rY$CrO@7ttrQKCpB#jlWIk+Hc%6qe6e^4cYjb-E919f350Y*T^_v z`TQzT-rzS&GFxL2T@|D$*N8OF666C;+ApzUEtp; z{nM&H?4z|LzNo5L+xL;U5dpS+iSL?NN%OAw&N#9#zN@{xeJWPp%G$rg8fhQzXkLH# zk2`*vCMt?m|D<1PZ{+kh_-U0iJO2siyI!!@|MzQWt>Nr{x~|mUbz21eV@Q9hC|3PD z_W64cr@!F)Nq_V&tNnxe6Wd?fUjO**Q)Y4cUsn2SV+z;b-<0@NQLOr}f40X|PJhAo zP9poO`@ih;7i?cid;NEx`iotk+;v83dzH2h= z|6C&Tb36SFehGX112-=l&DsB;(%*Y~;r7>r?uF>zZ_H2P{@eok8~k*-w>^UW1zRsf z|4C!^-ooksqtf4%Sh)UrW8zaqvD&}%fedl|y@39L?-%+nkFiWRsS9xf7rz7FZkXJ>c0{67i?cKd;MQ+viNGw{)d$Q{z&>aB>kzP zSoPmtqsE_{{(|qytfV22wex?$4ruoJ-?iwg0H=Q^HNJbtMXi@#l+8$1S zgP%qIqxNao>Q8LF5dANuJ>Qhm|Aex?%U!ts?gr$aR8g$@w^}kInbTkJ{iMGhq5m5E z%lW_;n7<@1y80nb{{^3_Ly`*D-&=p0CMt?m|F<`v`C>y?^30|KZ5?gYl%-4#j5`UPptWu(_ipiQ^5U$0B;OBKax|07Kv|B};R@LhT2KN0j7?7(?@{qNrQ zQW9r>t%u70J%!ufbv4C*swh_d%l0nwFsHx4&nNxWI)-ihC$?UQ{!lv|rSQ~#w z{xA5hY2-f<@&~~VoVC|~_6aw8|Llt{wf@lV6XVoY|IF-1@o!@}&3hf$pDGI01t9-@ z>7A*ZeTF2f^{Wwb{o%x1^ZE&{zx$_E(?mr97jkyafVap#?eKTl=RMNj)jV{4=hfZn zeCi*OcR}KKa3Od8n7xzJ|7X}otv?HX`1%j7?|5H!X`-Tl3pwR-WI5)^Bv;yYHv_PpP7S3%O=im#aAa zpE@AzuW#e|u#c-8*`F#3xR5*km*0-#FL_Gp?^?0nIMiyNiz2?hUs?0rOZT@@MFAIb zX|=fZ9DlXa-ycDLUs>W)MFAHw?S*1ZIQ}-p*Iq1K|A5z}iHZU)mH%rO zb{dCT?Sua1TS@v;MFAIbXq#*{{uJ+~?7y;b{k5sY7F88+Ay<@pkiEW8|8I4`hlTr( zmuxR83b>G6U;X0`&OTM@OZ|N|e8dO;?JiAJ6mTJbEAM5;-)4%hz0BJOe0>!4U#ckJ zLe6Uz|0k#aLHK6`zIPbehbjuVko7m!WcR-xnkNXjd4^&aWg-j_vw=buE zZB6YLXu!wMpncvZ`%pyz7xGMHH*5bApQ-k>;X{AlTjc*#QNV?)d~Zwk`Dxcff1TGq z7(X8-`%pyz7qUsU2TyYL`FpUmk1qmW6S^0of6AjvYIFSgYJFaB$m^d#`AJ|ajgPA- zK2t@3-jI`)TzZ7#*ElHSziS8Ie?O%8pI7i*#HWe^F66c?nU^{KRu%sPHvGIa8o!9| zy@~vvDhjxeBj=Rc!|?;j(to@=dHws-{K>zC#@{aFpHxx6h3xa@b+2&z^(sHtKPsH> zznRO^Q-j)< zDhjxeGoI}7JE#9HWgl&K;e2-$>R(h*z=ce?tpc0B4O8*iZ(|?$r?)Tp4^I6yK<#fD8G?SMlug^Orz> z8-B2V^&$IEMFAJG`mkJfef!=PD*iX-^#@-Qx`*kH^FY=v@$t1Zf2oSs*qe2)^r{(DfIs!&c+( z&{UjH6r9g^K|i23{PEUJ3g*a>to(M zpBaZ*`LMt1WF1XZ6mTKadnHfd^!KXuD}Mz2U8K9HDBwblIz4|r$FK8>JVO6>r}2wb zf7mC|{aK^u|8*_L->vc!*IwzLTR%3>um7bL5wL}{)4%%B?ri+or}BUIs6ED^Wk#F% z;`vt^eZQFN54yjYDhliZIl$Mf8>hc7Mf#uLhJTT6x%PK0uX%|rDhjxeV_OgF&GF+V z%l_rvC+$=1D)atxte^P0T&IbO0xo2m&KqZP{OkrQe^Bjfq2t$Ep74X|T`cZwHp=*53r*e?P6isq0@(`QSpnQvJglIQ<_| z`sU~>=gj^O|8$RYYoemSE|4EDe44%f z_?Pm3Uj)8utXmTm1zgAr1JAMhqgDy~QgNS=`xvGEq4rI!O!JpM7{>KLm(o`2}8LiVAG0=q!I*nU2He|NXJ z%06Goj$pO_oOFsG>ndvcEpDUQ@i(vA#qR%{=#l)u<1#*2`RHE(w_6hx1$sk%H>^Et zpX_gxeFD7xxWC&qK2Z}D1zgDU-y~kc+5hbf$@kl|FZ9_mGc-|Az=eGJ+3f>4`}oF7zIXe6<4~)8kU!`jWoV+J zfD75+>jxg@_`9D``gf4?BP%~>e-GK8Dhjxe*L*yTT_3nf*~dLW?xW7`YR=Cql+!fd zP>P?2$$zM#fD4&=W?5@a|ACpx|Bp%gTlw4XBck~Jnte@;!57n>0h&W3FDA}jsD;VPEvfJiUKa=+!8(5>lf)tf7jQ%{_r1v znIuhA6mTK+lFx48^uMh9N58z&I5e}SxqadPuK6_nQbhq5GH&4BN*uprBjx`;%J#ML zVITh#YG0}-;6jda4`BVLwc-bqeQug#zJDsHf0<;>MHK~H$Vy*r+05yG^>U@ZvX31< zKx|R%$~6}jbmP_^0vE~uZ?<255a$ym(){|9t%Ml z?`(cuym*;boc)j1l>VV@miC$WDDVHim^e*T6zB~(IB-`Rj(=9g=fG2P|I&i)=JhLa zf1-Z_-QW6a52M=g7wxaVk>l$VrTzVT;Y)2;Ql2ar^=Q$|Jm=Nc|;0)V~_gMAyHOzJK=EO-8ljZ(ZzN%JK1h zW8eL9etk<1v;FaWW7kJxG*MCLv_^scEt6aJ(HKc7Z%S;xRVAdS-zn`Mb;UYvrHj{u|66_BPP`R8hc%?66_|Q=I+ZEurFP zG3lShXqhs6e-ZKr?P6;HdIeDe;a_Eqa|xL+T~i_arU6)A#0 zp*Q5oWo6&y^e?VS{ax?N@ypIWt_!U-QBlB!e6iY;J30ROUnD=^ljFM`-$!gwQNV>< z>$;cCAEwoo?dyBCaK3h)*rKWeF65DowO;1*e`c8EyLuMxKR)suQBlB!T($glc70%c zZ)qRxh|J$^s>A31?zRmyQBlB!Ji2P?)13abf0cY+zrDtxc6`^N`kJUH;6nDlI-?86 z-}bJGpAqyAknWgs55K2fTu*AUPfa`6kv?{oUU{+P6nUR=hvm6q`r z@h#A$izX@xxR8?`_7vy%SsNtZtN3HCHv13aPo(u{_pxg{9Dn^qsZl`jcQiNKzdV`8 zKO*w_{ML^DulSI;%i zzxFoLG*?Pw{m%@a$zC5E&`0{G{-TUOk{_C1pndhZ4K-0wpf}{$KCP;A`rq`p)Zc$d z=C^iy*K}PI6$M<#{YxuM=J+ia$s=4Pq<>oZ@Si|JLrqi^a3L#P{w{~(uTu7R_mlH4 ztNm}LB{$)lfj-2iiUKa=?eX{h$nm{z$|HPA{{yt2Cft8Y5MSF%lmWT2suO?bWhDboI0NogM|e-J&c$3^@A@kK=e7xL~3v zeW(ii{e$;6mHz4V%klkUJ+pm+`P=E5nx85PxRBMxWS!^qe^B|q?-lt$>dfc!H&>_T zny4t?LN@x~zV;ly%Dqy5|KGCzKEKf%f6%}D{hMo|qJRszsNYxY_*fyJ+V>xx-)$7N zFI^wk_cb@F9e+ai$JcWDFWe~kZskAz*LeGAA6%muRh(ZBpT8FZhU2o|z{3t8vnAolr?UFNI! ze?j_>l`ozjs2`{6FBus|wc{r|)Qz=I$-a{B9wy^wb|2AyL-~mK{$CM4z00oGL`8w# zkTnn8+>!IoMbAloK-ov~3yxpfK4Oci3b>GU7G&(^_??H$Pu=0cJ^S52E`Kh9S3z_}#C3gP!_hos6`(N3`H!$aiXDIS zonudM`roVk$9rbKap-Ri&DZbX|Gw>XeU@sl$Yq1zORaVPmqmVi+VcJ5apWzo@wEP+ z=8t~${lA72(b0LYON2GQ)$|Zr{B}oX+=GH&#WFt~Pwnd^zV@_S|IzBo{26w&sH_VH1Jh+f&dX=BZ+22ciQQRx# z_$&C~{p+iHWc%uwNt&oA;6l0vdS2uB3*VLgua%bmzn|7~!}Al2U;6axG*MB&h0J=i z_Z*J@vhsh|a%um6XgxQa{{XqX@J($4tr&=^%5;nTqtu|A#QsCS+JES6R>m-l;QL>v z^|zrv7)SW8k?o7wl{lX$R{znBcSAp>-f{Uw!FO5w^Y7xcJ~om3Q$3#n`y1ijc6`_c zvSism+4yi+*~jfG+&+5zwVJ3XR{IRSTzUj&AHfg2QAyJiqhBTSWc;E}q8j|G7r#A5i+&r}=QW ze`5UgCBclzxHA3kxZz`V{`henW&bPWFZl3D z_W3!xlzsGxSEm2!O6A!5zhav!`(Giy(Mx05{CxZKlCS+C*Pnf9=KLWTe{Pwqd8wix z?m*sJ?P~V^h&ufw->dp>$prKK4)MqJ(-ciq6mTJXemRD{z7VhYuHtl|n#ziA&3x$Z zO6gDQeBxrKEZ{=6Nc@`JzvLYx<8wgiZ{UL{GJn3c zvHAJHu)q5!x_&_w1zgBG8W)?#>0dox>hD_df7-4DzKP=dZvg>8q##ET#pR~8v|MtE z2Dz0>KtQ09(x!*BO-))(kwrjJlv@NujDjej94dzwL_kgz5LA%EaDxbP{8SW_|IEI5 z+wSg5CISA-XY)v!eD}L=-n@D9=Ga5}Pp$a1*x%7NbBXvW{zu66tMB-Ria!TOG5_8m zK4|XbT?lM!9Zo7WsUct*rgvhgJ;ivyRss|NO<^wJj`(xV8?Q;yQ?na?bwp zA3*$EwXWIzx&D=J z%CKh-w$e|;x5l6UYpLc_@h8U*e9qQqiT#m6;rsq;iSV}dS+~b@Izie0HD;gua0>nJ zIBeFxF@IxmOZKex;P~w;x|dP-J&ppt|IwZLb*%We-^KEu@3Z}Bm$uYT{Y&fx%N6Ci zK7W(X$MI!}@^wS|XvP160R%oQtvH@-sh^0i;(vs!jb6_^5Z3 zTb;A2Q|0@=+M;}g{dB5gwjcEW=tGe<;-ZXR{PmI|B}*C!G|bO*$`<7-_UG{@f*twZ z0DtEY^HrjisY=1qXYKY=b8>2Z3jh4OfRFo+IU4+;Q*_P){7wSDWXY*wCJo#H@<#c2 zZo?c3zw#u3FZNFkJOucGHvxY*@-MkdL7%{{fVe1kRGeOw!hdWD#Gj7dkU#Vd13&GX zZ^4g_jtYg}cFfgY6uwvBtG{jqz4V3aINt(%P4JJ3o*hy@&Hs7+R|>zx-GcuM(Ee)I zPwCfDeSkkzKQpmH_>zhoF5_>p(uz`3~Uk3e$d8H9tF=;oI_` z>t6(|@>#c-%g@ZoYuY4UjdKlk<>V!Fa=V8N(EpI0 znU|42I3dNIotWv)OU`norn@})e-qN(i9?$t^vZJQbxvhJ%1q02d18}d)xmCeR#YE> z)Slxt91s^Ar+$jt<4VjOlAf6Bap$>H+*ygPob=2bSE6@BPD*xiPBOb_? z2^4P#8*W6v#&TTSt=}SCU5&BoO{loAdgFEV#@;eLu)-Q*sP`7?!GdeHhekJM4}-JZ zDMP#ok8lz1@_5{yTW1exnOS-NA9}Fk-n>1u&vmC{bk0e24UbJKum>GC)tk`Mm7JP9 zILp<`l{X-qTBldPT*-MlvZ%+*&ITmKxjm^ak1I7hIX9twmMfdp=mFk5 zPi9Vfe2_YlkvY`G{ey>LW@ft*hq*n>%5s@wNa*Ns=jSFddng3j9q_v*=iV$XYmYji5pk4Uf&F`8=}e_b9QDPFA|fbF+J$F z&+n66ptmPE$D5pzm+8*w+%8^aRubAegl{i!Jj@*Q3Wx2HRbpI#^4E*k|DoEad&X4K ze~RsrHf{qzErIqa-1xiU+=nVt?dz0PFy$ZP54?`kE#fF4W%13oj@jh?$QzD{JG^I) z&U;EdbN_!f`?HVD|8tzFrJtxL)CnC$g19JuXqBT_*a>bT7}|&yDv!lJ{0&ng_QAM_2Ek;DgKS;Q~>^>y>+|_{QZKz zQ_N>lOZEtvpSsrm_n#^L8+)^{8Fm={AKP`2=fr%cjDPb%6G{KGcf6|O8~UFN{I!*l z>HpIHwGUJLH@B#*;~V_NJS)dA&_7BU|DMnN(v#BvyB#V5|HhCvbxaZV{}J%d75cAL zGB>3DN7bHkgyNqy+@gPR9n?EY8UOw2u@w~mlAoIO@1H8{|KrH?KQJa^3&p==8m)hI zIOrdxjQ@hU4WcOizVkIq_T!%h{QVK~-#F}$kK%uPa9z@Vlo7xmrIi2c#d!N-^PgG6 zE%C#2;IDlWnf@mz4{`ry^Z$;A==dQZ_#0Bv{?7g&aFpWza*n0_odNtEt0LpyXxz}f z6#w$ifPSp?*FO^Uk5Z=pBkQ{)Q2giZv9w<^fxogkGXC!@yS9kpUwtRkFDrlFDBzD$ z#(&DP?sroB@4h$2WdGW0!u})Vzbdy!MT-9iHDFGqmB02Z@JA`*-{tJTJU?!;|AD=P z{}g^%nfZ`fBEkAY>|GlU^IsW=!j)nglz~AwCWc=sE+~K77M~|ZU`^SR*QOfk+ zr_R+!DE&_^Yw@4+fWPuZWc+Q$ia-}gN5M=9gqnIEVw}t&j$p7HE+2r_rxrgca zS$Proqm=RQ{9~1I6#pR^7XI%D`}aqt|H~K4{6*>i-6}NyfZ%UPiT{7>rFL^D{-vf` z_%9Il|5arC(+|Ez>VL+gG=Kj@&_7C<{+IvNlpNp5@KrbYPya$;{~IFX|MUKDM^XBJ zzX_Yy$_{J%?0X6Lqm=RQ+p<_RrT^$v7X7~~>_0;OBY)iVI>mouS(W6ky$t+O%J`4` zV9dP~|HPvf|G7xm|HjDlf2LZEjTHY~v!Q&g`gcwO{wQVqs}--_kK%s^-(Za$M*I7o zu>Vbw@qe&-+0_*PrnTty%kc{EM=9g~bf^83DgJ?pmCXF#7xw>kWc(kwQihD5Hy)$& zpX#f?AEk_ci?qkMecIaJMQ)4zEEe`3A^+u-SJ$ERe|eOu>&I$8%4Fb=QpP`T)_5|0 zTie=Ff0qdR-yE6#=Ts?k8^wR)f3*Ds1b;(H{Qs*ve(Foj|1FX6?{Iqk zOp5=|nP8t*{rjhY{!z;GpYdM)K8pWYYyRN_VgFkro-nSw-4@v}wQ}rHp@-!Nq=|@Xu#MemhEmd89aR zz}fqNUhfcBHh&=P+rwq(DM^Mfz78~7Tokle^V>fR0{`H+_mKWm{|ZsRwgdlg=VyPo=JZaA|A-gO z{Eh2K#&=Y_5g{L#5jThL-)CLl{^W@$McrWEzYl*uq7MLA*C(J}P`>$?vXUy_N#~${ zsvU;)E&h*0{oMij2{!&!Fw+9A-?_?PxtzZy#%pkY$sEStxyjBSe;+P?$47m5e$Q5a ze-Zp0zW{$_m8idhf4JjEGmiGTM&Y+ue7}B!YGbe;$68_k-$Z6VD{i~M?Z?Ky-uI<- zeCMy5bg6wN?DJc|54V0j-Eq>h)cl#LjYRvhdY_K}d5n4fQZttR&{i`WKG_;h{ag0> z_3u63ZKwEaYeoAj#?_QBh5dX7{KM6MU|_BC4Bs~XlKBW&w$Xlx>jYXJ)tMSn(*7PQ z_HZeR|NDyp-zR?W5d8guzcIfb=T8UGPsWPIJt+P^4>J1)ypI1p;Ez(~--`bGGHIWO ze=+md1b=NO=s#Tke`K^BNb&#hUYOry=wIkbRRg*vP|Env*w^T7O8>c2Vf_Hc|9-*W zu?zTzJ3laPnd4uIfAYj)I!}YY7$&%p2CKb1|wf9{FQelFMW z&ZG7ZS~2K$#dq*FmVbZ)+bb1`3Vr!zeutmv5_zMXJZ{rW3jgt5#T4J6F!1sI#8nU% z<<$)eUtenTpS^m=D}lqo@zI_F#{wbw=V!ezg2JD&Dqc|oa(wkfX#A0t(|1t#f#UIs z^N1YZc``KqH$TpKi^AVrhOON`D#!Po3XNanvt{Qg{Es``uQ-nf$MEQT*#z%BSe=Mxq42ECh(Vcw% zdYgSts1U6<&jrW#uRo~CPdDH#7^M=t$9;n$l|P6>p- z$M{6Xf7tv#GAaDLmntcNqQ!&yA0Ng;`vXW_msqYS$G7hOF@^7Wx02#3CdXF~gvMX= z`sF25`#aeQ@elS-9l}nqy+^&v^mBaT0}6$|iuq4|Ab!9F{a&;iY}aM@->x}7g2Epf z3-J%)8~oRUKEmby=DwGfQSDci-lElR2J_z(A^m$T@q?s&@4c;QOR9V`Mlky+UR-Z; zxt`vx0@qXd8+JI}I;l%%i(|UP7qlCcAHMY6DhfaQ)gp?oOmO?bbp|Md;lDR+OmP`<(X*Qj@tJNDKk$9LkFTKY#dA+AL`b)1KOv5f!A*9P51@$Yyq z#D{2?Mmhduu}{hT%nvVAJVNQe#Y_VV7(ed={lp|))hQP%nHw@cmcHVSniPINfsb*TQ(VWfKQjH7 zTUmNIg}=0!+5c!gz+RM}Bg4PeV;Ub{wzcm{i97ZCx0bJZ4aygc{B^ ze6&{?exseQcBJ&vPlfz8@^<_W^rIb!%s!_qF30Cj+RFExN6hn+@j9yVwXQe3o{WE1 z+Ya+6{23L^{tf+u^McU7XfI{>Gj>Ol{r3iwDgjRsmuP>1ejEoQ)6brI5AyMSn|@wc zTa&b(KosZ)uP5Wb=Xmw+sPe6S33{f!*Fhh?p&Rt;DTjc6xcQTAmq&J@_-~k1%)}qB z<2+}+o{WE=7Vf_&{>g&BU+6y|_IL0L{^8c&q-L|Yf41rWfTevguCo^S z#wXYxa{OZ99~BdF{YB@B>v?=@)Bp67X8(rQQICNB@p>};tGoGkQ~F}P={?Ts+UIbjf;2*C2PwN&S z*N>Dv1ra2+FL)jG1Go-ePsaZzHGL?>zv_o({%VJBb$il|fc_2s#d?H{e=gm1`<- z&9|HF2l+co3i}t=lkvaSwBag>f6cFezmXpi@tfnQ#eO8~zvgs)`4WZybhS9phZtYO zaU|uK1z%#H+gE11N#VB@`bYkl@9|slCH42LXJsD>ztT&>KZv*!<6P}{WaYczyZ!+R z|3M2r=5ZY-EclZ6xoD%ZeEx|oJ{&CY5m)&F`bWx1zz?^5eC&=pd4AsJ-@f=3;uF?C z)p$YU{z3k6+w^jG+_6!Yvi?_{nn(HgjtxH`{HGOP(L_HlO#G|0j+6Tny(;>TR(y3{ zWc-&bK0)FqoPzpm#dm%e8UOifR<5V?b3O=v-V%U6Asf9~u6npYNpC zmwig(2i}Sdzx^ZQ$oVtR2GPIPKQjHFf4v@`e{QqSA^*bu64vrn-j0m_%s;B^qVNx@ zw0<15Bg5Zbc|BkMV&mW7DVYCn-|;-BEB z`6~+}<3IDanbj!#?jO+lSKo~c-&6OA;uLGJVtzPIM~1((_t$?@ z_Brb+^e>qG=(zqfTXl)|gL;$2KXbcXyq)5|HM7zIt%wPKv*Gl)xABetZ{ToLBoB@WY*7wD7gJN&WYoTtrbD z7gu~ZuSo1i>iEZk&-S+!`&SM~a_91m&AbWSbt&ESE{|JGb#d1Zt8a`kpT z|IOwg*7n!<{8d}~KL7P%I$z9h_{4qSxDnou%>UGTe=9kE zxacNx`68ZQ@DJDi4-dY7I;Ed^tb7Aa3hW>2fp*#??H-x$4bz?&xZfr(`Ng}`s*l8+do{~ zK7aoALB%>#`g!LXSTNI%#(#_DtJDMg(e4K+)6bwLZR%0@T1~)5|AzG!^XMqC9D?z` z-}xqK|0^Fe+mC^d&k5}np8t7;#lIB)&J}OhDWUz~c!hcd>ap?OVxM*JMuhDA&YKtb z`jp&z*Xf_&`jjna*!q+Qiz@-~d{fjv{vPN1f|o4-MZbgc=u;Q&q3q|sQeZ#WAHsG( zDP^%wN&Y{#;a`tZ_y<-1zM}=yE5!E;d}IAZ^oo$}d!N_ue~-d{`ANXXad*VmN(29J z@hd#KkM|#K^{d8YGrqqp_S-G^N`sL6%bckH8HGQwgV4X2H-`L`G8TM^ep+9=j~su0 zp)a$ahYI31j2HX@Kiv3d`=tBYQT#gz{RF0L(v2^$aE~svJAr?Om|s*R+7~kZ-`(l2 z_7wi>j6XjRANf1VTJTFcL*lO;dX>i~w(>335aMUV$MRL8E%=HW62I2TiIph)ssi75 zKC!SLzrZ*0GfIPy_*btV<@qri|LKQ-Kep@0Un>XvjpuW)=hKAhzkgHf`#UK7)?Rb} zLVX|lkB;(yAFlnhUAuzZ-y`>NfsgqU(SKC#0(>KX5;Z#{{}J!}(}m*yF6v+4qy6}; z_^kgMNrMKws(O=8j$4=23=TrC#hJb&-_66|**5`~^ z+86ZuD6jXMdyv9kBK!~HTXBu|7JO`PP%e5YyCK7`&_Fy7#{UpJU-`Vi*OkFuF2q3p z3u-l=7Y)aXnu_9YjBM@k$*YM!^6_h%{x7|0){pNjw7cj>vAkva-+pv)e+vJuCV-Fe z3F4we`~cdmxF5U|ly9$SG=SmT>hIH~Km%4BtpeD;kw1~-A3i;NW&(vj=TE3#&PEU~ zBX37Vz&GMgY~RiM^mkwnVMz6i=-iGyFXX}cDH+K*s@TE5dwyPSeja;3OO89$m7*u9 z;Nc~0dUS@IRj>TP-V{%!o&)302hsQcPjTnuxrXN@v;`TDaHaW z{U5C##CQH2p8h}Rc$I9w#y(^2pIY_f3lqOfskeCl$X34lc8BJ#hKc``_6m>BZTPX@ z)A(pVzA)?8#7=*Z_L&yMf1=;SdMqp7xG}}a`IAKs(*Dg@w-%;A&n&5ns)M{;xXuIRClg7yOO>on-u7dwdqTe&p>B zg?>c&Iz>NQyBqWqF8=(qcS-$UIjPfCF#bg8sA{nv$@to5{oA}m>1TFF(7!eu@@&{Y zRqg?NrxVs6@#m*PO96aP?TI^FYK62`vr1vTO>v^JlF~8SL)URrm@{PF=Qa?SvxO*~%|Anw0 zv>TtWBjr9z`4-DH;bXl*x$n<5zcPGV{feJru3x+A(DkbqD<-uU#Cp645Etd+>Ic^- ze2=C6HmFPEFK3wQL#0IN+VM9vc=Z^C|BvY3;SZ+SB6?5T1o zY^Z*4a*B97C4bhWcmy6k3QrB^y9REyE1N%-ZfL`VUYY4RuGB&uBkThSd^IkN?=oEa zd3j+!BrcB)hItd7$jN*r-^HHQruX7vgFi3tCULPGu->EmFL&bilzrEmRu6tM68x^C zBh(*%b&GvV{MWnBw&CM9w)p0g$*PWz?YAPXgX7dFF^&z!|GqsJ*HZjfyaD_J(co8< z&Z7R;jEw&?F;8Em_z(EX%pb3Vyiv;dw~LD+^UL+7-lyNP58I_jfxl8KGX7=8S0d+6 z@4CH~j*t2`uCo&I8JdtX{#UwfXRt_SICF`r>y*) z9|3=qGXCRR|H%E9jsN>OFcO4%QMv$st#)MkZ*jT-Y5x=NgA|LEzvE-zk5b0J>XfVN zDE={Zz&a94S^$5%o{ay*-s5=x(`G-Z zor;3}C+{ZvpWc4v{w4acug{J&jc;g8p80{X}6 z$@u?Jb;&G>f7@*ke;f5m#K(TYKiv9zdHV?7f3U?5gPw$54f;>KPNe%sd=l4<93S2L z7~msrK;&b!`y=x|Lq-g#Pw|gQfC$~j|LP{)Zt;3D{omanV>_k)<{t15>TJOCPuiv9 zI^u!9G5#Tm-(toLSVQqY@;>-y&f^he)}ZZezn^v=EsZpN9iWwpZbyU z-`w>a`Fzv!Uqk&u{@Bi|pFsPIQpSIGy_V$uBj32p{QZKzKSKTkwyb-a(*Iv|X#UD7 z;Ez(qKjyh-$@Q57e-%9hvCo3G;IM8#S_0@l-1h6IP1l~F_^+6ImyU<}$9!YJ0rrE} zlkx9b=ImdT{ckx7`p5ACe}&`v^&E-7KivGz!o<&BruZ-T0OCXBkJkyb5%w>xC*!}Q ze22{x|2p)Cf5i@F|Bu&E+Y9{*Dbs(4Gb3kG{EOCs@R7fKobyDN7j?WfKeSRaVEe!*X992x(awcC`X_@BM67|9>^Q9&u=KQ#XRS1A40 zdjsqf$7|HpFi+1f_=g+69f;}MoZ`QKvufgx*YR}__9Lz*<3DHC(`gj{Pyd1b3;H$3 zm;?Itv?iecaQ)|&^8?8F9~+LF$G7l0zK*~juP5XG(2l<}ivObHz#sLZF5RQ^cRT?6 z!`1(+-#YX8yEgx@+lnvtjZ>ONhTpIGA##6~io+nkf%dQUg8J(h_~FKHy`9OQQ1%mO z2RU7AzwkQh|DgV&lpUM z#!A8ty_}J^Z2WT4y+<}uDboyq5e&Oc)wA2r%X$@2p+ zZ;SGg8P7gN@xT3viaLLctCT*#-_acSha123@%~PZzy9(n#3yJ!cpc1pqQr6lGWPMm z0p&~ArueU_2l)ZVQ(K@M`T~EYMP&M)@w@*&3cu~`eE{%wF4_&YOz zzyB$r{|6)Ezv0j2q<`LBU6gOO&`&bp`y<4E?#*eVDgMvR=L64d?8*c9jufH)){*hw zUiRC6DE$7LA%4Stqdyby9S=o@Ke@*oK0asjpN=+A!?AwhbpoP)XGqEX$f$GoPN4R0 zU7!|I)Nvv9Z~a}g148P`WH0Dt22&SLuExY%l@GretLGisD9AEt% z@---f;eYbRIG#VW+0T7jAfQ7TQqumu`|>lq{k8dr%2fa#%h&N7*uP)s zKiv3a;)w^EQ1~OuLw+9d{bK-MYa5yU?D=~MIsg8^oe=+HT%s0-@dZaazz;V*y!73+ zC`$k9|1ih5cpcw=qF#yX$=b)L*iF3uYt#Q~F}{ZJlveFHm`HozA8vdeyZ8V(Kk}VQ zwRAl6KX@HyUx?4~dNTg0Bcm5m{9hOOVblxGkMRrs;p#tcn|hwo|C9Zpe33t1C(``z z&$XwHrT8Ct0Q?WeJ*Wq*1L)s~AEKIvT)#AY;rbMc|7lDA8n2^%0``N~LkWd%_s=Ju z@;^-RA9o4jPb}BK`G5}L=xDK@=oO~u3j$n>A~U;^1b)~^os@96!#ejVpVz*imvd}IBOWPQ$zlK0K0_!ns^^ds4bZk{%!U5o;}chS@D(b(7z5B|Ht2Qc>dqker-K(o?nRk9XS^LOXk1U{w1dh z#Xqi$5&xL<<4oMn)un{X|IgjIWd1zs2k@U({WxA1{f#j9XY8@2`7nzA*y@nqFyc3{ zPqH8L8?`s<_aVz~Y;XRFkHY`=Kd@kyKhbo3yt)zaUW9sv?Xe7h=)O|C|7f$H)9*w6 z2lF$2xIHddGUbg; zV)OI_a3{B0%q6@2eN{Jk%Ut9ed9#>f}FYFikr$G7n-B5qRjlaiFK605VKX)2E zzbdd1#up7K>3{xLf6W|<|D%;*Rj9##D)85GBjaCU-&3n8{(n`5{GAd1O#!?1Zvy@( zW${POJ})^xAhoE4|1{w5cqTIbZC>oc<4arpX?YpOpRD|SUju)XGX9BwR)34qf9?$N z{6^Hvbl|UeBI7^c&AEL3xQ+i8-OTf=u$;Bcz#pZI|Ja%(U#0jzSj(dS8N&V}xQeJQ`xi0{?CgaTl6za)ZhHb^z-&({mN7P%dMjIqih%VA*4({dun#On=0SWVxWE* z<@>s*zY+4UeY$O9ihpda8f5tfkT*(6`}Nk_OYWlh&p8SH+2B80)Zd|z>3`Rfs>LY& zv*tnm+G?Nv9iV@dGX3wn*pux4w>@X!KS$KBVUh8_@{INv#ozlD&ENM8@JA`*Kk?Z& z`ce9?=C5q_4|9e6508w0?@Nu@`K&P#)YKAfFF8aV*1M9vt7u zD@pLzyyx6b@jtz|l;T?v93P)6D&ybrv+Tbq{58?#6?Ii`e0<)btbN})W6^&UzB;YE z;#(aY-)Ju-@xzAsuaVF1P5rH;;`|~6K8|}x@c&KP)sf;q@V4?w;LG6n7!S$xv*OAU zp5L+ghsxbcfXRutN{tQZ?;Rtdei`{k$^7*y6FMbQ{-MvGP=B#~LB4?u$j{>SWc4fN zm32ia{$Dct=LhDO5l#*z7fjx~zv`p5mNP%6&>zOjE5TVD%3 zDgEm<|Mo}f@54#{4~X@(B7Va4$9{ot=!dO8z5}53SM-}G|1Q~{kDuA>|B+`c{i9`~ zeHjD%!_9A$*thI=%6=YPTv_LX_Ji$<|9fa(P|EB-eoAR_{liwwk2iw-ZcslC4fq@R zcgg-?x9wbCmD11aIZ(csAIJQ=G8XW|9sdX{-W*TqXJt*uKcarL3tM%4p&enq*2v$9 zGRAU6S*61`o*%T8uRBTDzgVA*`9|$|;2*Ak&=x1&L*YL$Q`o1#_lbSV9OEqblJTuJ zho0U{;kyxE;Nm`X%6Lop7F!W=|Fbu@-A&qO^~*+n*`#;nNyuMgImq!aRF|8~$Ay z*uNDY??)ARExcYZd}Zlga{tuk0w3+)hvP)TPb03(KfJO30J(mq_YB~V_*kD%8ux*5 zinsx+S15NZ*Y_W_>8EC{Sw9Az;E(T}M^B?_bcwhq51r}6_n))X-yh2YzFOpj{yWrz zHUaG4u%D>V`@0W3F_~OH-0B~wzle`~9WPk$CF_@7pE8xqKg=5r_>Qz6O#GD>0e@n( zFZIt=_WZO^?PLDlgvFG8CN~59pxyXReWl}R69M07A1&jH5Y-gyv*2oQ`8kGf+aKZ& zp?@8eyVp0M>bGYfZxXR2`!AL&$`iLulNOIjQ@-Gt*t=upY}Z9BY(vA z#liTfaUT-?cQ%~tqVP8d!B_5&4F99M-yKBZe=PKm{?p(q`~&WbEYr`>9)W);{2i+$ z{^wh$4>J5WE6vNK@ULwRjqeN-zw7ovk5c%P_J_vzg^54-Ou2~^{&L|Tg6ZGcHN5fN z1}n43^^MnefPV{yZXkKPBp~t$qpr6E6Q} zj&(?-@UIrsFO54+ANIc*ZRBqi{{tXp_SyN{!G4BsYadV50{cNf>7004$923E+W(_p zMme@v6z6ZlANrIT-%)vsj<39I!I$ixRCe3_%PIU(ABp%`#61`%_^tSo`5Cv5JHy8> zY~{N>+U!43PljA}OurwQ{^zRw;wb*lM4R;!_-wC^r%kfxr-%>wr+wnsvncXY^3+jk z2bGWN=jM4@sqVpiqt^Bwk1BR))ra-j=lOZ;L$^oOw{8_54og?#yd!c_68a`*=5_SA z^K;eFP$&hjSgt7BRr$wB>8Jcm;BT$J*v|Ohg?L(~pXKug^7-X9`x*5CL<*>H^!JWe zEc%HGy}wuOMhALO_`g`})A!phP{OMge2IN_PwGPM@0d6h><9H@y$@$=XeWIq#C1gx zpx#l=8QAAdihq7{(0@SmBLWLy9-UwC4|o6d;-CG>_wTUjf0n>U-p)%RKAddPk0m}t z-YAE~Jxk`7)QM2OSgwYhOa**n{#o?wko~)LKgI5(_$wcp@$o+V5#m3*aw^%r#A^_< zV*G~q>Uk(n|MMaalC)n>HCr~6@wfS(w$GUB7xv!+!rx&%GxQe3eyZ(j$n&>0{DEC9 z_9^lZ%Hv{wo_J1%3_mK)w~^AnbFA=hnBS-s&>8w?LHUN8KdHO*&F&QbFIU0;D-S>% z;;R99VeNImH~M#y{?~}T50ml9+&m~>Y~R)C(2vA&)~1})??dwMeM^#G3$F2BGJSO0U@dHDFU&Ht=H|5F0$6Ry|R=0;Y&kKDiOFol1rHrOZX zALBL08y5YPj1H;)5f9{&`N>P$03YoK?FOaxIkfjO`FEajl_6;as#B*jr-c6YY z{Dbx1(J!OiU7>6zrXQPs7+1@jUp4HX`Fnl@p5LcS8UK$P>>o(!e+l{r;m@=UVE=wA ze@XoI$s*+&3jc4kAB+z>fIrsWj7&domyGA*?>76~DfpuwF!sltZ?Vsq=qM;DU0t^P z#*yq#r%?Fm!vACW`UQXGt;qOKShwZ`!?%_1=NZ7tYM=hrFuoA1e52tujD0*?PVkgw z__qAdxYJ<&;_J$Vk#zoN)aykQ?SPdOWqJPQ$ z$A`b%vzNlZzntJN+C#+m3w)#flH})|JIX5*ez}vtU;Wd}Ut0kD!;OC)+;uy-{&Vg) zC||$OkAD>C-?7kwFWH~2-k8npDE>P{`-S*wY48imyOH599Wt{lg+ICl=pXS7{af)R z@!`t#ejZ=h>TjkfUrp#gfPQEZ@HgV;sCpse&&fG|wxsaq3;u|Y{2lLE@S{UNAL-X! zXI4`9Rh|d^Ag;D)Bh;by0pIZd68|~A*Megde!8e%2L3w0_eY3dV)@%ODg22-|A_Ca z0`Y^k*uvk^|FZg@6CV`g{V$vU2?+h8W62#u`=6F0*f&DtpS!go#4$#&UGaWXxubO ze>5uF-Z~*6fhC|~)iAz{<%$x^6{V}v6mooOU3n;9W8W{4|5R35%2zVK$o>2&KL5m4 zzAeUE;vd`xb+4o86GCzghV(KLqz3)ZT>l(J%Oi+doP>e5y9ZfB&GG zIwiCpypD5<=m(4I$@q_GmBz;xZ0+OUr(t~^;wtljzxEO6KV1G_cAsCL;-7cEGR=P~ z@W<=P_`e->s3^t%@o8ZH$X^ru9Un)=Kk50W22lL>eQ+1ef11$0xSovvbMx1d^S4uu z!~9s}ue>GVt4|{1Kk?{Ra{R0D8+B;@(}n)U^~rJWG@$tR`hi|Q>_~=uVz~GVmh?-c@GqPxuJgqB2iq}>Q&2BP z`>TK3KL26<OZ^i1R@OvTzLOtuW>Ngd<!Nev_L2y#JnRit}Rd`Om&*x9A#2Db#PvKh(Id{(1_(-mmQ0 z%pve`{yfTH_+KvQ(JHS5}^Ltr7HwKl%B*x_^=d8b{HHCk&n~2Xb zzbf`!P`&|tBmW>7A8fMBNBW1CPeFbR_f5ocPQSpPT6vw$x=xWEA^X4W`;GdU(tnA+ z!T)3Y>`#Qer&{fhj_Y)Y_mc6u=emBhfzr>Re}TVG=tq4K`W4!@k?H5*zefK=@lO-> zY48{QMre|~@sfA%1-AH;7koyI@NmdS+5pSLUV(GrGlYkx~E1pfXu zkk|0NDeQ9>*r$=diVFSw^N(sgoKE4-U1^@bf%BJ??=AMv=AYkzH_0UW9hC1rFtanm zxAor}3jS#SSe_`+@5}6G((S9s`7KM^n)3rVpE{VtTR`3@PfuKYj?&MU!aoPr!#JSQ z8^+!JLO;g%g5>#u?UuCOPvH;z70MU!odRFm1Nsja|K+yD=2H0mg#H8K`3=sVFuvy4 zYbjre|9@v;OLG3$6=DB4KLqiWA1wAM8NYZgZBrwP|ISwC_DlIn%%2hXM*F2sjS6L- z-~B$HoFB4Nb4 z$6gow`$_me$gue-4#Y*7dT@Rf3V)~Y4?YRL)|&BWCmx84vgO7KyD9wTsQ)J={2yl6 z{1gY`qI~^_TK7=+Mb8NROYk)ZJb8Bb z*A)JwHw1qPzSfrUXD1$ri?W}4sh7h475)DJ3IFyCo1fx9T$HbkivEkjZzA;Lli+I| z7=L!+fw(CD9sAlh6#lzHKk7gU|4s~>pW;AVl*5m2DNEts_Nman1YhgS__Gra#6?*m zWr~}^U->u0&uWr{|6>fBpW;AVlq=8l>_FiUMgK3s*SawN?8F0cQ66pb+K&|edG!BJ zN%(hT*!&a+;-YMIqF*e9f15+-UxKf7XZ+cT2jZf9Eb73A6uwimFX|u(|Hm0NKgEH# zC~rSkwl9U>742Vwuk~d7*@*|@qI}zZcq4^>kI;|ml<@D(u=yzt#6@|VHhda|KV0a? zC&AaAVEoyM2jZfPE4Ro+;in1xsL2xkeHk`C#eujeU;1DS8DBL<`;p*l{TP3C;(@p* zd(5ccpW;6i?Psure}9I}PjMhF%0|&w)=~Il(0(NN+5pC%op>NF%6E3|ZA#(4BK(7z zBH^FJu=yzt#6_9@$~TWu_>ZFgCHUG?j6XZ^KwOkXuT6N4!haw2pDN++WZ3)^2jZgq zNsY@C{z|l;3<>`% zhRsiLATG)Z8`qKT*M77g3BH!i__Gra#6|hT{EzRZ_?H|k;^#~We>cPCr#KK7WvP_Q z>nZ&0LO(tUzLv}Qvl9=*Mfq>t`L|Q}moff)TEgGMu=yzt#6|gO@;*O>uL}M6B>0+_ z@nLR7naRy5{9|Z8LnQq388$z~fw(9u4L$oJgNF%EYSg z{Y~Ky$M`2p!hbl!=BGFi7o~c3TLTKeIqF}6uZ>{**@*|@q8!wsPD={^8tOk=!haOQ z=BGFi7v&G{RXdzQq9?_FhsbaEB>39% zj6XZ^KwOk9$G)&qn|yq$mi2< z`nM8|ad9(+U%WBYF9ToLi$6mAx(9}n&tLZm z`$zjh`*+?Ac8}{6W%hYB#lh!C+3e@AW&W*U{{mla8lHU)eXCC`M~L>_ zvGND-4`Tg`_KStTWPgJb4?grbh5w$2ZxKI$`wImk!~bXSpM3qhP5)CAVLv$k?K_xX zp&S8xqy3f4uQ;^gx1JRKbc}xlzVF;AT~B^1zNCE*G&{V5;oIuh*y&KdtbS=680(i( zbEAHpaOW4*fBsAh3cqWCe<1Pkdb0YPzU4mNzS#Jm9b)j;`63?5aQS~WW12?k|CKhP z|A_k_p?w~O^6gg-_OFO38G8TTCgUoQ^-KLk%pb%3L(o2t0lqPRsaWX!KcBulkKCU@ zw!c&0s}s83Wcn}nXX*Zweq!ze{RFOW0sRa9%5mTyXae(BOBWd~W`gNov(0ZA^58g? z!e1l&r*jz0$5&%v9*|$)8}Wn0Kg?TF|6|I24hwvo|BUnMa2<@}LFgCA^wYXbw`2-G zTg=)GhVPpW>l9`9wXSq3LgC-G2>cJWkI3KPEy_cNf3Dk#0~G!o!QYB+@D3BdS^r~c z6#h$RfqyXlXdS|vpL}5dPva^4#ERe_g5f)3ehJI|I}NSI*FW0)&nJSvRX+yrF!j@? z^oj>4{DFeM72n_;CjReB&%8_FKXEX${+%hE3spLm7BFX}Y6FX}PyKZqZ0{8?+uSLFJO9qmHn<8@^9cYVz= zynko2&vOOsJJ`8}zwZjP^D_KpG0}fe_|>vP^AG$T9)8cbuU?|?AD7^(|AdDhy=}6W z;oIW3GegAu6Jdv_Z|wxMUq<^P>7O278GVw%Ka2CPFn+rVd>tnN--r(-`&VpvWYi%F zKPFYgCj#HOSHz#EEco?yg`D53_5Wr!h5wq!A8Oa2|Bm|c3;b~Pvn1}>4=DVqd(8aR z3NSxbJ8j`FiEmxsjCWA@ZKI0nc8|QZ(J+78e<3pboZUnC`XF2VQr19*#pd6J9EU(> z3|voEzq)=plkcBz!*^Klofced?`8NORoq1S=U+to1+`c))}JD-Rl-f#=O_R7$(A}4 z|FTKu{D5*%^z)tqKZ^J={`ocM@%Y)MpNk?sLI00zLHvAA)RmC& z^Sl3SUq<0;tIg|E91ny4Q7&8TU*dn-EX^eM7ivBe@NwN5^7jk;aQ7El+kSX1RldU} znA;bv#Zjowk3n9^C#1}N?)Fp~LFq?X3nhf*s%#ei=YJOcNc>OYI;|One|&_fS)0J_ zeeoM~{*FHY-x&w}$7qI+b&!7n?FQw;jqWD<*Kd7c&TpfB)UG1$hEkFr?mcME(-i-r z|G=6A)Q`Fa^rQS4nSN#sOs_@ZzgW@ipPi)u-yb3Vn&KCaQTQ!e1HO6++C?8ekK!-j zzfb62E!iVv`&jPbf8JvFHviK&AMnxtpq>ob8tgS7{E%MwMERbqpGM{%;?9Eq!TzZ8 zDy*+@Tmk+@``cqzkx=&I=yJIWrJoXU7X1r+K! z`~u(LFX_KOaDLab6#tGwKmPs}|NM_dKO%lBTD%8)&~xY1?)r182j{1?tTA{*p358G zFy5V;7oU@y?P|>*1wAM;HU4R@J4b)hIW=DYdgB@@|Ey&V{DwO_GtZTsn>V5cmMcoE zw?}MgNxl!4MZ^*57}S`Sa(8Li@{XL*v|x{>$&?evBX6 z1#tt2i}IPwlh-NxzrR;__{xNh0vQD2qO8^~j`xpj?QcpQuxeZ{>z^dzw`-suBR>{% zA*BCoa@VKtQ206D3Hul8a`AaSj{hRle}#@y`T9*8|H0?X^~+y!6DZ)i1z*zsR+yZ{ z_eZkfCnlTqgX@X?0^iV&WdFwL+g1*v@Yf6bG1e{jg?2?#ATMC_Uo7oov?y(qZ!U`A z`G4E`xc%>ee$Y4?dCluO;2+Fz$e}Y{VT{{?6<8IweXkhAM5+@ z#1@Kw?V`f|h2Qiif&P`-0N)tDX7(9_Mn>3A!kojUDEvw1g#93XS?EXjt@x7X$4&b; zr8$MaK=*ckf0I0aA+h7J;}m}U>*n|e<3R0p3xCP;xfb63DBu6h=6}Y03H-5q)eO-u z!hWx)*LYp50;qSCGhR>U`@`G(L*015cjTVbf2zF(?XRO0@ZTCA-uTxB_j~gw{PQV7 z|5(2k1HMuk@WZXYR~9_Hhr-|UquKul-U2)F3w)z|E$tWT1*OMTr3R({dUJt4=6}%s z4f!X;S+e@owfiRW`9#AGTgq3Ir(+QKIV@Kh{+G3y^XHe@%D4J$LjM8}<52Am(7(}t zj}EMA>;r}ooW8WeWd2fseR>UK^mEl?DFc+UMLZTVff$%|A?>VUABQ{`bejxQJ8S zm&|^al`YBlx3t;MDZxKr(T^h<_#5$wr2W#$T$)1RubpjIQV~P60{)NB9`|u0=aP>cX`1^eP(WakPI|aVz|2o#d{7kL9ML&}ED|1lGHWYqG z#$Ua^gz?-g^(h!Hb=+mqPlFX9+uw!n)&G{l?u zhZ6bY`(XUt6*fM=@NNDxV~8bw`vCloU-+MJ{qyg`#_Xr?f2{-f0f8G3?SNL%;-4k) z`IIh?-$~(Xf z5&HQ`uH!HB`9C)Oj}!a9VZT&Of%wEP@WYMI@6FF9^JCWisRBj!==`-93xCP{$v<3+ z=P>>@`+ro}Kl(SHdPc_&CP8_2{jbYi9!KH#Yhc)hjtQROZ1&(5DfKL&ph z2PyYP#{cY>FY)%*rvDcfL-`_pVD(X5KmG{uFTPRXI|~1*$PXaCZ=~qQSBs4Q+`-G& zQTW4u2mN6G1@RsCMTXyf_iZs0{)a+8KHM);@K@Bx$~QxO>>P!E--~AZbZim&7x;$% zl#IWu`?c>6B>pcV{ullk@wMs}{YdZ!e)dy23jdRlz#sL4_>LMD{Yc{TdmGeiO5xXB zXSPq@KB&J+O$&cX{jHE)iOfI$=n(o5HocNY3b`&UOp z|3a%38UL$4-shq4Q$_y{@f{t(ejK$U!|!mQ{~8M4YvCX01M!aVjjw7VFu`33$~(Z0yW$BP6e?4|IZwD^DL>%#xkjf{Wg0h4!8_^%27gZy!Ri=!Uk z8~kHJ&wsn(nc<}Hi@pf@{~#};A__TKlJ|L>8`xaIcaXOeRy_mRzj|uJzB=) ziB;=m7JADz64&3RxKmx84wBaj(Vy2XZ#( z5PqS5!#_yc_tUAb@cy+8f1|~}scyj6;v%!p+rBzik;0!b-0a`5AK-Z7sS3ulHxaGU|dQ0vfZ1$u5R9e?Jv@&ddpuk6ITt}31u=4%jxyyWg zgiZg4gnz*H3-OeAi+&{K`^S5CY@_f`oHy&=Q9S_mW5v(N6(fmo2Wa;wdsq5~9RIrg zHcR{<@U{9D`^nf9a{kPi4!>=p_^(0x5q<~tj>e~Ep@EV{my!oO?1(7(XN^3@t!_*=$jaozyR#2V#z{@gZyptp$M@YZwB z)AI)s-eB_wj-WOQ_B}`ZnGav)^~;7|au@JN{9Qrt%MA-XKjG;0B>sFKoBhWQ7V#UF zZzilqQ68}9N3#BU=`Z8?_@k}QHHET5emY;Dg1vd_`arqj}r0meK7oMZR>5M^j~uy#6Otd!1WxCW)}Uk`8hEN z&Lrvu<;+r7@2Bu9zbo)X{O>Qd4N#f`zR|ys#Lr2`f0<6Imy33>g zHzD1fIJ8Lud@(7iZ=Cq$6FFJ#lp$^1IjNcA*?KaFWO!-{AX$EXQ^0BLVJxYh5j3#U zH*P=@oAj5-p6!y*U6wtkA+<4Vk94|DM*x`t+E)%WHmXR{~5Bo0f?%5vo;v}d37 z)&HBsfL%k`qhS*C*Umi5OG{314bT-IT%T}-+#%_S`lWph+moE*O-|uA-ML*Xd&VJuJWVVD7dDN8r`yEBm&9WbL+D6c zqu`eYWBw#XWP?_1T#9?j^v-Dh6=Mp-4-1)f{ zb2FYos#nAyn7kqt_zH_n7cRV;M@#gM$Vtgg&PirIACb-8t>D3_x6Hc{j-nnsfmQAy zOzzF<-2|}dJIslOi(TNkf&ll*a)YOiH$5h-FDvt2+@<3a!2}QEbEC~QK4BGP$WU({ z`%Oak!A~pYtg1h z=eGLWUipK)DV|I{hA?H)TpnfM20z>eZ z9HeJ*&JbRBLEL6I%{4?^BXV8dgeP(`pUHQ1ZWph6nS#dDaB;?Co8yfzg?geh)^+>e zVnG)ct1zl`1b)I?4266JWyj1&(y~}9)+5=&!w)qsIKx(ILMr>F8aJR}izfOrs&n%^ z1$I0D9$RhpJzzmhZ)%>d$M$@&3N*s{-G>B(p2KJ$#vdov4S=GO0~`yl2D zQlR91!qW6G)6#9a5p`q4l7yUZ#*#&lEZm%K9$pp~nm9urEHbJ=y9@o|ZYuxZA2zC5Z$J`@dr?!F={c^{LY>2SRs0Bl&?YN0*;}XtsRnjfW=^Vm zSg*{HE>$PjN`+5)Cwtf!a8I6U!awjV+)zFDBpPJ>2YL(3gXaH-aGb8);na|zp*WZZ zuiZ?OM0x~5v2fEP;DZY?Z?Q>9X3pIq0n;@(cfd^}V@)wCA~Pn))T*P@_PobcFIHt` z%+fpR==g%jFVxo{v_@psmE~pZO6cig{jR}Tu0G7}xD3(55;;_JJz;q>@PZ7P^>NJ= zplK6Q^TurnMH%mPB;#G2Zgnhnrt2W~PugZ=W~H(&%8hhTuntDv!sfX0hOs8Z$P#$< z)Og_*R=*jzL*C)F8jxhIkw9Istb<*FsJb9UEnJLM6ENP>E0(q#%TqD{K=eeqMS646lGB34;P4$*duh)fI zD_t8#l0ZJ`hy@3HVp4Xp$D5Iy1><900{KaZH`rgG8WQ6Kg{mKKZ0%!+g<9Q0l`!f_ zTYbKf3X)hTveW|zZ)}nQt$)BGiUJ2=VHj3to&~I!TT4=eLO>goQwr-QOv5H3PGYRX z9We_|JDY7-!p9$aF^Ax?v5qy;XE&gcpwP^rU>!Fao&n6e=r$U<^)kK|Z~PK#-)OFD z8oFtC(Bf+pG}E;=gVoz1toi5H=!I{(^7fZh4rY;Xu!nUkvNOG|1oSyZ@={ocQ5p5B zNkr$|i+B?v%Goj2disWiFdcMnz;c9z;^Ux^G=u>mL+KlZ=7r44x)2Lnl>TI}G_i0g zL28Uu;nvolg^ySpSv|x!zhIOGbFE})@~_juSV3)s3kn|+ge1oyYNIJL+LotD+q$#a zc0znmu`p|)0qg-4#Ku7`hdK$G$~647QJ;b!1tBgHDMa6sRhbBh6o~9r|p_G<-(l}ZD{tDtliFau?ZQT!rv&=f}u}kaT5)l z!iVCrc>B&X|DAI(SV)$~KNCTIE0rbr3ocGV8x5Fl5Jpkzp2T<;QNb2uJ!sZEj46m* zlBr0?%f|Tm*O-P_BcH?L9gKyz8S4ru)bB zV3_f~HHJcCL;VK!H)Ac9WHlQ{?9WF_dy3pjFV=yi6nZp2WW5Y~9*wy|VhXsBP9kcya4sK9 z0C-(F-h6MOmj!s~$!wacn5E%m_I+bbBAfnXn#-5yWph)^1Gq)YnEFv&czR`c%Nh^F zv-U4NFQW$=RLvaD+m_b61#H+fp0$6h)85)!xc3!r>?6tkJiLo5r*-p&EgIEeWqHF5 zPO2-*l@7^eeTr|ecE^%8i5D$=fn=;PDaw+dh2Qb6ZAM;RE~|m&=_HJIq+KU-71dL6 zw)wB|?Ba(1w*OTGPcSVgKQEJ|P*~Bh1WQhO*L*eshtuT^4)Lb~8w6j49k(9PfxDp^ zgtbsNk3wyO_?!imh3WxTUlz?u{;m_$Uoa&c%iA3`L4Zx(u4kBep>n#(RJIZO1dmT{ zG|9^Bd*2f}lZF|YE3&$shM$Bdzk$ws~B)3T4rb5*t5pQhKJKE&2iItEX_jYA9 zKhIrgSKvkky8AphsUHr=l>O>xIagz(~_cW<8Nf=>cNSB5P&!fFo3Q zICz|FYA>-p{!#1b`D zof{=^LrOBu_2W7RPx${ZF@uBCb{2W z)YQyDCHj9Gfe@x>#N{}u$NQDWhvs12*15KPU}S1pfwIV)P0Id%YD2Nm$uYr3&7tdT zAt(A4g@)}KwXjaJ(5)pTc;kj)f;VnNf*ba61J)99_E2omJGmz*7WmOX-|b3ZQEQM zp_!mQGI%vD=)CJaj$y9M^o+a&w$3=;Rmex`PJj*5{y%h+&=bJCs3&kuC`1^A`WAZ5 z-KeLmqJr-$=$x3pAg!xmtHeS~zpO~rMhz@PuUGJn9 zE7T<2;QC&xe>aNvR*W98QZ-tkTu(BaLz&Rc{Y1_X*9cc?7xvUVPjZ&Gl`7V)l8aee zsgLBRv8AuvQ#Eg;cF0Oj_rls47NsVMWQ<;_(D%N9; zy>H@54GK?!r06r2+p;uxE4~{{+YCsV>&4hgO=YP)OAcL!H!IwD7sO_`b1UdbSz9gL z9T&{|jKykovn%g{^uldU;pW&|W@vKu2B2<@#=FRrW0{7B&Y?g#^^62OX60{YT>$BG z4C*&iWZ~~ivu%4F-`=69RckAO z2WlzRpHvhdd++1#o7Pfb*HlDTl<8k?uf+J5bXxGQZz`f_7wz~QPc2eP@yFCw{6lLh zP1rWv8hfu)VfgI5^>{L;{F{`1cAkn-{0l1>Uw3q*^~3LvA9#Pb?<~r8FKqLdAok~7 z{tm-mQ%u2KjJ2Y0=k>%Do$tYZ@c8^zB^{nKjMqW=#qedfG5iX-LO*^{zQfq#XSB7& z6yIfd4vo@@=8xA!JaKtLoLSzo0;QjeXIS}uT3`*%8^kZ!e86%Fzd=KWU!t7B!yg2{ z^IG^yF#an`d^o0T$&xnvU-Tr?_tpabYG+zMR(!k;mT%G1mD)1>$21rEUn}%~;ZA0s zCCe$Fw^2;?KbGARe_poZKyk(SxuVQv#jL$>o8o8h9qhf;{?m><{}5&W(OcO!OCx@P z{i$`BJ~ow5u8SjXm}2~&e`F|B{O6fP6M9klua;Lt@$W3qkK<8VKm7jqfqH>=1+U|h z=a;7N`!{CzdkgS=H;8{_`rDT&{BPf7`+omefUi6j9)GL;D=eP2jMD$!v+SGE|3}+( zz(-MZ@d*%mF9H@^Q6NMJT|kOU6$AtUkrud=ONgYITxb?nQ7oSdCp9v>{TU{)_<)6_$+5U=5TWi^;3im#^N4{9Yi&wP@K>I3};PB7BanOG2 z*I`Y1hugn;nY8!d!AeYDT8WwZf_t{CQiS~%2J|N>{ZG0E&hKtqhgDxxA*_8>h4!WN ztpdJJWo(sd@@Ma=On*y_;Qw9!K_5{3AN>y6?P+2Ml_fL-f012-seXuo;NF>9?iute<=@I30!CHqnLpQE%Kt(YS^ubaEH~2e zE$bbH@<+TsphYttnZ%p+v*b=0sU#SPTG#KymHz#qFp7MUzWu^}uAd10Lw^GQ4E)jl zo&1%@Wc-6TXrIUz>D#_{?k{QsjFjO|NhH*bOZh5jD#vg@lQuv{Bsj+pPiwf<_YW9 zWNch)__k4&Tl}Ndh&O+(3@;h~DL-_oL6!g0bg*+9f6ayem$k#okM)Z5s%FzKrRw)+ z-3lypkyXD-bLBuK!H_7}Y=^uW@u8qtzsMKqo*OErQv8+Y!QLBL_TOZ2xc#HwM2hx= ze372$`R7{{|IOC|zsBzT@qH0U-OB&+!)psD{!4y>e)eLEf9;v!XkdpWQGX;_(j~(SZ2|G%({I zAKZs-XkhvY^cR(y>)iiG^zRFRzuGFE{i?4MMNvo5<^SqTc=@s1NZ-*fIYsH`_r+j8 zZ7ly2bm4!zPB?$*Es#577roeXXsvSPs`!%s5+CCH#{AjvcZ2G%ZCd#J!^0=xXAqBT zQ>U|F%ju?mbhuaG-pT*v$L1ZU_)iD3)`0)-wZrwls15kNmC*WMna=dbr?Urmv$(G^ z^TE9`f4Wt0JT{|1V{3Y;{ zUY35eakT#T?veeboBdqd@x(Za|I=%ses8q+>n{A~F{yFn@6^x2RrmX;@%y_$u+OYI zEDnlo*FWkNfIr+j z{m;Y>&6a@vBmB>Tl_DlKJrDn=It@%DgFr;pdQCr@#l(J z($0~;TI+~F!uf5t`0es=7bb?0p?>iQPf4HL# zdwxy0f9Q1!$OZmDJKTb4*R`?i+e+Ezts}~_P^x90J|AtL zt04~H3EQo>vHj<}@2P_n|9l~1__Bm-D$en4~|BPi0`@bO9b8sGx-7edMSs>%$=?5G3rt~BH1MtVByOjU3 za^e18)&~9+W53+6ARG8c__uy@;5X3OJ_~E}~EzRS1t^Z669WC=#mg1!yn3dfPyeyx(rt7|)7bClB0I4FOp(9#b} zqwDv0Ir*MmtY0VprRt=|DgON{K>4Rz{CzI`e{3GEf7A=opHs#BYQ+55+@YY4J1zZe zJrHg`re8MR7mfF9g4}>vitYQxv%xMK_)E_}`pX{;{>EOj*dIP{J<-kB2RMP;>PEe` zYO48$s($7>B;n!Al!BBTeh49~=_mCmf|r5ijDR;z!h3@F$9H1AB0Y3q;{odZslz_4 zAxw?00PqyNf1{wjH>JbT{y8S@k)r*_O(@+4u3{cwPe%K(Zz3(>243P(FnA=%sNYiV zM~i$G3?CLi{fM1crP@|*?1c^ADhc|xZ5hLt4VG@dnAmvAw{P%sQNzk#+{;7VH!Qhs zvz-w6pkJA8;|(i+S?E7}CoI|z?8Ua#Ls^^=A>aGx(0};uqS$sv5qqg&Cok%UI3KiR z?Cr1mflYzPU)X=C9(-`K|1#RsXs{1|`mF5r6Mk5P>EFn`%w=%c1==V1Xo%R#ERRS? zjPPI{A8`}Cg7sg{`62I6@k!q!FhBf(6`!zdI{ukHO7g<^2m39gQ-0pqmg>KT$IH1x z=)W}1A=Kql!6ZL&ng@z+Ap`Oj{?Z9Nr# zKGOCwrXP(r_g|qN5=7~tKR#{r$ICZ~PeKO8awGLWxM~T-zfS!o%vY|WD}S}6)K@4; zu0QI{Bo6XLI%UE=sg!;iuaRrNe00i_(tL-Y=DJsB`M&z#JH|M}W&GY^=?DK%{QK;b z@ku#Dg5Y{x@W*loABF)qBwY8x_yo(1^!nk0%2WKiHjwojXUt!id<`7LL+ZxA!KA}U zl>TR)sR4ToD?)T7_2XQ>W2d)Bc{+Y5s2l$a|NW*l#ediC8n9>4oxf61)`xTaf_g!! zE`IA3ivO85Wi{rm*-&apl z{M$CG&h#k!m6yNpr2k5763O-P3zcg#-{n!t?@|BzK3+AHD*wzTRhS-yf2fW0Z^h~7 ziL3IPQv9D=1@@!3m!BE_tvLR_O&fEB;{WyeI!uqkKiI-s`?he-8YE z9)-WsagV3+e^~x|vi)v23v*Ogx|cungE#+wpnt>WRQbO@+K}l{_^U^}`M2?p3|~s| zzk3hZ|5fhg*DlsQ>8JPhhUEUkgTIt#dNlqAyp{jaFAH<1@(=!?Jo7bkFF#u%var#OE4ss3xEN zAM;zLCK_=k&fmJk=T|n~ltJ;oZI6u4&G_G#KQ#Ta5g+Qt=Wg+B-PA36DE@EnttQHe z{E<(r{10zl*MQ=GsJ1;chA0^;{RPmIj?WduNw6k{6+eOP&;q>Kl{&w zffWB2o5{VprheY|K=WlV+~;q-%q9}&)L8Sk z;z7QaaKOaBaa4^t|0bTIE!hj^q8u+}&M&#nPkL4lb!Ls2-xK-~{~425;ZMk$$0s>I zw*JmKqCVoK&1g4B$M4wpBxOItQea~wq~hjh)EvW(T;_kaKfNK5;{V%g-sXQ;Zgl?N zf6l5<{J*VV(^L6F#qi(KV8hQ8|3fFdm0!z?UjFBIzp#wzzouTO%#_9M{g;;LEq?B_ zU}SxY|0NabvS1Yc%$T<_`!$#TD|^LDhbaC%{(|`7zwYJN>ueMCJg|MRs zggf95)rZfYi#8M6ynGnj$P*2S^_Mc{&tFn)TN^2xH7fC-Gk@(f>ZhdZ7ts&@bn3q} z>n~vyf%S`i4e7-HHYEGUMRUyfP1vDwGJHG{tVNIC!G5Sy6EgTaW%2#KMvcG$ZCUB! zP{020ju1F+w0*HZid?MOSbMapBup}7A9;}z5k(uq&6IZW~2 zvWbo#Fy6uV7IEG9r*}B(f`4bYKX-V<_xsl|L@jvo+@>Lh?m-XRN{?qgRNu&55|4r5q#-C36WXAJyroLSG z-}7ha6vcn{#)_g`7(e4agyJaL4bqD~TGo!@-*s4c`znqvevf>Sj(V`L3B~`d-wTY*1wBh#GUVW0X7HCVNta2`moR>c15!xvvT zM3w)>{$~6j7-9T`6zvA@k%Ilm{axaJ$Nn*MH0Ei59mRjF$MOfyMKAw^ z11rh;{ia!X`O!b1-DA1Udl&!TyJhkgs{Hq6Oa5m6V#J-u&yBkH=j@aj)BC`CN5Crw z3X0MK%Iyk2|2SzVynVi#GDS(8)~RjRB>s!6j4XH)0G#v&?iy};PlvZ8DsWIYpOEho z89#sh%qP!M<)8C-xPGv_N_}JeYm7I{&t3G>|FKi#{O$K^!}~|nfAGD{!XIH=i*|$k zWckXXGa8s)c(XWzk$&f+a4qn1#zOhV7jX-J;&}a|^(*WBjOcfeHotMga!NnfwUF_l z8GkB2h;j#AD3%}jBCXwg8o9r2{*U4FGj4pHpCezSBkF7pQstkzMe;}cbn?M_pW%P- z9{D0o9yISD#lLEGbN)o?#jqC~r)pPi6rZyek_HFM`Do;e^rLHkNTB#1tLf-}i{qaq z;~_RNtp6&({H?Js*?#=E?G1m)0PycVff0uih$+ihpS^G#$w|B!n@eEp;!8D!Zs^Lf z$GUV9;I?!3_lExq5`@1EE!mWygvTV~Q#LNgyTURk8${0+C8-e`Z8ZaA`D?c{y3{t-C zh)M9GsJy9zvnKoDF++cDpl~o>O`3LX)Ap^h!CeL>4J+_xWKA16J>TC$l(-cb(;)x! z9)%Hq*(xV1cd$RVM_c&GG=9;gDL6X_wZh)-Qlj>2JLf*^40`VDL_4rIhVZ(TmFeN7 zHO4D2!vER?u-@Ad{)5wr#Y7(iLBfYMj$5#>35F5?GZW6zZu>7cYTZEtSNcY!9jS<26}mwgXXO z)9TCO@OZ<;I2xMRpCMjXlEvSy$2}-GWtgcHUr2X+3%thI-f7#ulE0PDextjtbxTS? zJ|8g*_up3JFANNIj$=Dp?=OWT-}5K(k;cRV`C~brWdIeR%#*S2?k@R|m^p`Ahd>tn38^Y7tBSxO>o z22BA6;!n!U_viA_<)Bf#Df74bn0_f~xOl4<%pl<#Qyd$3+0}&s z5fL|`Ma3|MWLc6~(+2l2_ie`c76iN-lQ(bP^kL>O%D}DU5ayT~XRu0y5sTmXaz;$<%dWl?1yMYJIicY|eB7g2naDMd-EArodt zVA2IDBv6o--KH>Yl0UsD+w51Zc7g3?NSVK$J%#MKi&-5oyH4XGa($qk*p4CB2mU1p z`x1oF>zOk@v5#BQ{n`FZ@hpm*19EVP-nvU=2=-o&FM-Jph@3DkUEjpRS-LKUM@}Sr z3C@YoA0jmx0$zez6quH0ED#Qn@nbg#;vCyDF=kY3zm_$E(V~D5-cS7J8tI6zu9adF zBs(iLzkPn2%)Hjdl@K7`4-IZ$Ukq=IQEFHm1<|76Phy;D7Y^1rRgJUlrqPzleA-y< zJYre}>cZqLlx5zP$YT-bS(*W7iQfb3@UO(Q2ZU-kco>>`t9V#LZ2BtMo866t;IQT7 zWE+HFJu*)sl_3O64V$%g_?N;cQHU{{Y!sY!PlnZ&79;A(wBZ=8?XD!IW%@u9<6n7( zGb}ncbY(Q`eth|*#Ixi$oDZ8_hS8XT5#3RFQkZ=!da~4#sVl)gBChqkG8-AoIu~c- zQWH(~7@wDQ_zV~_WGky#Y@1l3a{05(Mtzv^i_o0Wu#!gjQvw6S4yPQEm6@9YT~=>C z?=IC{?Cc|rVJvIgx1`7#9px`5gb=V-Zu)?f!bve=7+l5j9lXRD_&`6VBy?{LQ%?Lv z%`hJY9)DOtULY?mFIz|f^QyUd>3;cmnrwExh7IhKodxDUqA0a6tspC(Gin)LAF}s= zb-<$3Bv|Tb!&%F|TwE4E9J7@X$9+FNUP#cT@7@XG!o}P^N#VXdQ6QdHE{Cic+()(qJBQwBTynsNK$5;LaC6 znmE}%U9N1)d-x;AR&Cqwti9UhYg>?S8v7YoY1mM(woTue7U6+Ak$%FFfV zWi*XTv-@4q&SPsR#RqWE(9>k_BO3@6PTRtCSKs0`FNrJOrIjSYdLsgAA&G5fp;WV< z1{~2(L7k*PBLV9xJ}k5?nMJ8LBZll1fQKbusu&!+Stk+QUx{Y==(;gMTvuqIoo3}` zwsI*tu5T2;woy19zKv}Y?k#x*ll=u^<}KWW%`r|1Y}u$1Vu^!GVypPFnBF5Q9zggM zfGNVb4(;W0Ey;=5S%rb58=>pAzBPRuxDzGvZ@MXPz=rj?+(xF{$t5xWvIILq%`!#K z`q-yrN(&-+btw)+RI(B1m``CE_oA!r>(3WWM2?#xHy%fR0`7?~u$y~~4c`TwTEIU| zoEX5V`FA(=A1R_P47ViEz`hV^8RdXqxT71ZPvO?}FNIr%B(9CovlFI{=8}SN>*8ZK z=wtrHpbkLn6)zUuWaKUzy%DwXpbfm8zb|YaFggj?R^ZRchw8O|2MQrRMG)I}L&|#o zwIzUXTA0!TzB@1?Fqpa3HWe44{hQW6mZTYWq5*0(n~pr9*!y|u zPfF5QtU(YJMwVI@FTrXY)=P}j*3Ncsi4r-UgEzV$ikN0;A0=ch){9Y|rIqMdER<5p z5_R1$8CoR|z+_ZPuECT^z=|3xtGO;wErs$J3yfPF8Z&#Dl3O%2|IamMZ!cv4f%abSJPznUgYPF-mV6CWaku5;nzY#YiyD$QBb`w&_n}LuS}tpvK$> z_Aa#*HKxAi0{LqJmPzh#hm3%g9px1Q_?0|RwD{P_XB8o za-MNWksM&dk`6w>V_6u4N$KS1D=#~}PYOJNkgXWAw>U)O#~jEn%mIkF?JqaY6{YqG zOylR)*vBR!xOx1Hjl^Oj!gmq$i6*7}1ZFa4jf|Gar}8y`FG*Twi}6B`doyIb52O1WOTJ zKh-M(Ohn9IlD24DUv_~hQ9^oZF)WFvfVkkM}uBWpbTKb+Nx;ue2viXX-2;(rWVWx zQSn)3J{g&wbW@SP$ZwowYj&NHUqQbU`60p>;iLjj?&is*g(SJe5T&}L;sP*7{ z*JZaZg!iw)>O`BV&};bvNw@e@<$@lpK!-~c`>uoH_C-lcLm0#37!I@~RUc)FK}a($ z*{t{yc{785^yv~qX=XHlYu%og)JfxUuBwC5Oj)8t7vWu{b7+S8at#Ez35-jYZP5yk zhLrt8mKh8DD;ukg*+t$w9ZJI>t3>AD_Sl|0x`+B7&+S1vchGMes#LCgO@eX0-Rho| zP^jQ&rAW_}dXW(mfGsszA z=1CwwzgOX&XSam7NQBA#eB&-l59xFN1r?ZV7Rbs-JyTk;4DSz}H;l=khA$s`yXP1Qbi}c=ia}weF(ungdFZl@MUtWRDXcrQkwC`j+$Xa0xDc1{6 zjl}U!ww>Rl=F?kfOl1Ngs&SBe|~Y%$%3F~$1YUmgG%Cj%!ABO*rxJV!R+|S!zg#Z5@+BbXG!q+_FUsNHE zDWlx+QSV46?K+u7>A!7~luOH!?e7p&2c>`363(%NjQUsLnrF9!xJcjG+ovXl-)pqQ zS8k1tuL2g&9A9k@u@7AH?3PgPNIQIS-406sD##ytuL3Lo^IFO3I9>l-FFaxWpMyA5 zzs%kK5f|w$ZPRlUej1m5jfJmy#P4;B^oz1ok^dtu(lvSa4x#V^hk=g`pPld~|7tKj zeXo1`fw)K)Zrb(`g+IPZ9Mf$0nn(Plm&PXl<{L5|qww!t1iD*WfxUCasDI=AMbav* z_-mn|VyyoT5Qq3K^Dh4zd#*i9;m-wp)rPNm#9svsD;hqwJEW}6*B?{uZwBa}CuNy@ z&ncJF-u}0PoV>qPcEA__vWfdC$j-A%!g@#gd)M9;Nf8MwBul-2dpHu%Mp&#}& z_TK(pzvr1n6#inae;YnK$-Vc1wthboE>BY^CtqY?gsd=&DVE)ldgM_H)537^6T&y9?b~oAKz_ds0i*MyCuX$>R(^81u1`fDZi#{ z6|CIw^=Y*k&xo&2hkM9w32~9$``htT6n@165?{@UF28n1ZN@X=t25!fK#<)MeuK2& zrLp||_7UTc`ZWQ6Lj|_3T}ZO}mA3ySj`^pbpxr75y!)SXo0fH=@RPazH(L0bNBlwS z!44im=_0j&-ym(gGQ&sVYn!0|vEei0{m`;iTJfJ#{u4#uH#=eNM&jc)NLM|PN7~=W zBl2%UZRGn?K3pC?|5_D>xO|+c`~mZwkQ+{sabM^R%tt_WONfhf(wqLrDf_#6rEGud zb<+RztXLt;|6-h@{FTRe=Kh$+gAA@kb}0bjB27BFGKIqb>NjcszTNu;Cnx?4&VbK% zjn5Z(ac}SyN5Srr^JVsk|9jk`=PCTQ?PN{+21vUfxH{bb;`$5YYJ!aG9|~Oa?3U2( zkaqf~JURa`7phR(Qo&@S8Sf8q+8_P^`ycEV@pC6dy(7JC+-H3#`Oon74@ns)27w49iEq6ZDtD5 zSEKM38vbAZS;jwZ_`!F;?ja+-2G=~hCB((=-+XV?080Otjg^+BOqczSQ~zgRh=sc5 zG_67SJ@R)_#7A0b$bs7^`D<^H_*$6#S@o|p2hO(oPMlgY{8u_`dYHn0(Wrmru)Y2* z{030PcKOdb?wxYuJ<5&rhqnu6QTXj^N&5>mmj2JJ{;SYqo?Q~+BHi@d zZJj9m+@(hS|F}hPa@PNPhrA_~f5_0c4paEG+e>`C;~^5iT{77DHI>aeXm&mPtb=v$ zB7VgB%cQK#WC}lM=wJJnMdwr?29mKFxtaqfJzqslQC4XCEU=ynRz4&t{eh%oHW`Cy-@Z(au*K>v1sWS7}~ zjkri(TX0=Z3jfO!M*R=6_rKQu2b|~B_f%v&cl`iRZ2r)WX}?BXq&e)3TPghOw;283 z548X5vN+uToiOZy>w+gcru`amOdEb_e_&&o0S{|MdTMZKCiKPRjZZ zh1I{c{{rJL2ELzX^#3Yc^X!%|?nF8!^UqP#_-ExZ82@}zf$ePv18bhj?-0bWN`{o{ zg(r+Z(Jtkuk^ej8U%UTQV@m#AfX|b1LfW4S`#q@npJ1R8<9YWLFz({(KT}{07_wVJ zxsg74+xwF#`D?!b_lK)KVvG0+_hD!`yTrX_?AMEHw43o!+6@OGAcBN;C2olSocLc>y8li}{*HB}4^jS+ z@jvHp*FPWsGgxQRUu`b(_r0LF{{#77X)ZDWEk1JMSJ_xlm%^XFRq9`V^lR~VPqqpl z|IdO?x&Om-eg@b>>*C`t)DKcsRmu7P?)5g&oht9`qu-xU{ZZixcAMdf|6X0ytdmG&`H2%h>EO;Zs{YTOlla=S@BUT%+g4w@o5G)Tje&3YAE*2{ z|D~-~8PBHP-&JAX1Z0=wlt1UPmq`6jNS5tckN-w+a^jbj{(t#8^(spK1uLZd!HWMb ze!YE@$np0i-u@u@x*z&iLJ^1mzpeC1FFO8<|3C-L=S>`#ABWjv$( z`PQh6XSd|EztQ7HO`-5xpOOAonJNIALBpm)%uKQ9{=$9*AQIu?3SGPb@Nwl zrtlxSSK=#=+3~IZ&385Qzx%73{$^)W@JAb~GT)2!MRvnSzl-$wk3Z=``QOdZ{J9oKw}iMzKTNAl?*H(2E(i1I7Cx)#4gXcxe-dr~ z1>z#z+^GK%O8!e%f*fZpe9a?%#~?^P*nRyEagla9cF#8y{@q}Istupj@+SY=Ab%|T z-%hf*7byHS(Ec?WzUC2M1^Km4y!Ze56YuS&@CR>)`1_{{tae=^{;y5Te}=a^NN9f@ ze1LzayZzxeNNbL`|3|9*ot4-KN^ z{}J>b`ndx8XP_Z}9a{cx$4DTQfA{Lx>VIG8*XJqx9B%)=SooSp{AMxkfBf;qqVAOb z7eoE?qzskgpM<{QNBYzyf3BtQ|Ew+X zgMZ5L?+dW5$}IxxjnBX7A6oIAn13_o|9DL9760qi5lJ zm~RTro+fgeSK^rO0JOXNr^)P60F)bP@;jFfq~s5cmiF&kCHJ2-UJ{Ov{hzvh8a#(G zjlB+dO3$iHhijhQ66z1>+;O*)_NQD6?f>rztm~s8$*MkW|GZp0q5XH*1oaYS{Tt;* zdS~uH^7)hbv!(voJ5v5k*pFc!|2=#XKtcbkJPf=bWBd2PHP3Ddagjdr`?oVF{Wq^G z@%3sl{!-h9@4x2juj*`g_USzAcZd9?aqoj`p4}4Sn)KEA1EBqPz~AHeyX6z$e^|Vb znSZzBPO0a%#t*fw--#=I%`ri>HD3y<80)0Q&mxG4YkV_u-=Nu){52nt@+(JoieGYk zyZ#?&1s|WP!hE~(L~h&*?k|I9vEZI(x8%gX<@4A6pzt3UEA5}%A?N=e85izoZ$Sw)} zKGNHM%6Ni`KL&gT@o&X=_Ua%b{<)a;|GZp0q5mJRF{a&KLwrX4hqy>@owjBUg}?VT z(0^qMU-O8c-U#Amz7FA%oc8zi$ph6X{VU_8{RIvG=hQ#ipZ-47KV-B&WgXN9WVhtR zua*I$1>*VVszao|53ZH{pBuimHiPku_&Qwk?3SGP(`u_rDg55ujP_Sg_J3~piZ7k< zjQF7m;13|XB`5y8Uwe@Lzj_@hzxqBcKiZiObj@?Z89)U87ldn`-I5dk)aw7Vq2#Z0 zhm>D;!N+~x%2udv$mV`fxDG;gOHTYH%A%(!{OxZ^d~F>qKl-@cy0|Ickw|H}I4`06JajAz8x;hJZ+5$!$6Ms~__1P5utBBlh>v*)3tegY?aLQ_fKRkJGO`qii}amFZ@f(57l8b#4PWz!UtIr(xJbXOa9Jvazku754WBjjCO`V& zNXg|Vh>LVV!Hjhj{;nfn|5YvhYaa2hPlI}U%w7NZ4bq=F_B=~5Ep5=b|?O(@Mphn_`j(#{;deZJp1@-H|$Rgb+62n zS}^X1-2VockAeG8O`wq765=8~J1(_=!cS~0%&qE)A zKH!>Xw}iMz&$g;Vjz21&l^lGHrT=&0PXZZv`&VG9m**`FKwnx77OV#4f$WwL7pe08 z*7lVA=Kg0R{_h+JpMNm@&uEDIA*28C!8Olr32~7g{AIz{6n_6Bl7muxr?_z9Zv+3w z=RfqDVZH_OEwCOQIu9R?g3oz&N!ad?UjEoe?^Eq>57fU_Kc0OwVWZ^KoNoV1b9q6m z_(#u^KVQ@JJB7lZ2?nJ#u<*4Q@Iy7+@lo$ct33H>ZNTp!gn<8W{>6VD@Gr9F zUr^4r#t)T4vR;DCq+UY9KNR1@I{)(4o@0FdJp#XXU5LLLM!`4qVd5I)i535mFF)Q+ z+24AQpC@&-^namGD~0(VTz^&%sElXx`HO=p3qf{EsCT5(_w;&-!hg8{1V&`?ii^Jfr@#?V}jaZV7Rb zKGrOM1*QM-ji7!n2mAkzVfQ^h6fD(7QvWL2U!!4hyt_Yhv-B6S+W!lG#;KJ2fk&nM z!G_Y$zP~Hn{`h!9e;3xo?Q~kjkJ2#l@lra-`|n)D6OS`-vj&M z?Do%i7qbEO+I?CivN`^T`ygbu)X4Y(@warirvd1{A^sly569QK*I}WqpNg-d;RpRi z*8Br6Pr5rk;v${hcK{iGK$pv2cNs0vcDC*rTuG54+#03`d`}^K7IxK?SoL?kokFVp{uJg^&z;2?3Pe& zq^IJpKTFAfAIQ(HwDix~dXxX*q0kOnxyz5ZNN0X9^L7e9Z8hlMhOc?V=ld^W+5hp_ z^e&Ak{Fkl+{Htv8xAP`{F02cM)_9LUUkQA%jH>_2ml^Hv_)bxk&ibEzAB=NagP!k$ zx`upvMF#yYtVh8$&u$6zj_NT{C|7~idq*M6!{{ijT zhOc?V-+dM60rtVWC6pU!rkbf!_;+!)+dQ5%8Y1I7)`6D)+<4he(f`z_3;6sDOqYb; zApPN^{rvgQi1Sa+ykWHeZ8HAiIQISr=l@vCsc`<(REB=fS7i$0*)1V1(nbri7J~c{ z@aEDrwh#PRt*Mcgr_7X!sPyvs*&FBR#uz2RZ)x67aPa@oeiF z!~b`r_5bo#*-lXZ=fVGm*29E|OF~?v7rlM{DyshX{sZgpHhk8}8-DjUK}R9)_*1)& zA?2Tx3UVdb%aY!7m_Ia%Rh(ux8bwS-sBH}-jol$XiwwTqH}D&VVE+vN9%{~5^dTj_oM z`P|)a-9_QQ!0q3L&$@b(e;c&FP!xRhyGZ}{V+Hd3A2wI|-QZR^{#-REeEjnzm#D9p3w8gs@uA%yW-2WCFCHJ3f)57Z? z_rGaVr!$^${XvIop4}4SBCV)xC!fEZF2fF(SeE#|*A9RFW>Fh%=fLF^z=He$pZ>ZJ zoY3iS2E150b;3J;Df3#0pZA$(-zA@VWiJgL% z6CdM0{HN^lTlUS*f8gs6zUvc2=I0;q z^@mvZKRq?|3G)0arJuxS`wt6Ir2H2CEm?rq9M+#UCWt)k9QeZo>v=G*@_%&InP(~a zhZ*?lBXa%CssBS@NGL0(KKQ-;-VGo91JWKJy?QUz|6IBUaq2;HM|D)VUpX*kiT>qH+s{C7RwCw+-{E_D`XvsdtGxona zT=VRf5Ep6d+wPr1)qnbX(*AuN?e-sOf9y5THDuJk^43Jgvs*%3r1kw*ko)h>JTB{B z-y7ZjwP&EdAtQe9`H75Yw}iMz|GNJH^7)5V-FXKK_Wyfy`&Y+7dxMPltPrqyc1ehf z^pYn=RG{?#>VKvFl}^$1AJU-xK}LN2Kj04_yCuX$x@vUFixmDH=>Lkr54Hz=Lq`0d z3ipuR65=8)fA)`=6#hX&er;d$`VYMg@^?H#ZO$ZiR7k=`)z&6g&Q}!2w zKLhX~Bffqo=pV9MLR_TZR;onqzn^KezfdvwYyn_FMtt@(-1F>`5EtpDm*$e^|2&25 z|3ESFKL+wcMtpTXv*Q>6Hxz}UH&27tUr~h-uM{cC-Z#Llb6q+mjAIB-jtmmIh{rAjeI^>&& z$nkJU&1F2hC9HR(+wS?g8-<^?MB*!*W&KNhtNr8tbEQEp;~Dp#`|9K}p4}4SA|1B8 z;@cGd?{U)qsGGhLtlaR`Z8?l*jJrcya~RKV32~7g_`4N}zsiVzlrGWbS9btDWK;g_ zIm`#yEg>$_@*R7S&p$3(WsHBe9ulma^7Hz)&v$UU=l5C=+8<=Mgt$mkLo>dh^xrnq zsQ)%{{I&aYKL2a^-}GVO`1N@;!Mp>O$t(VtK`-4*;qRGm#Q(?ulK&aS=zp%0@^3uGrMLXgxxb)TP~W~*Jw^V{LvYXc zV_)4}t10PuUqv%|X#|38A3pO=d#lz#)1LrtqfAj^-i-67o? zznb*_+YI@Yo^t%>Ccgsm^NjKbL4Kay63UIV@B4!{Q2pQFJg9$=|J$35`Hzvb{OkP^ z3FW_eGW1z%P`b!cATH8JuDi8}!f$>B=)aGJ&u;dHAAqGdEebxC3~9Zp9bTvGZ{G!J ze@fq-LI^(#Uw=XW!^*XTiOF_m{Of~jp4}4a3Gsh#d-(?-f5iI756_f?bBtha{Si6; zKXqt0e)&2uH<4P6DOx)gRN9&IKS8+H;odEw-jUwcpcgs+Jm@Qke+I>~h1Y!`SZSkZ z{qu71gmUeJcB#IH(uuFa{zF`(S6%eiMymc-OalBN@oeRpko@~wX#9ClFFYZBC$O8) zI(K~h2I;;Ye@p@Vi1o)=AisJetUsRFDfpY~j~8}{d*}M&t_iXnD3|yV@gL$MjSGIT zh{B(n3g=I8e8vN7h{JcveW0O#Bz~i0?f@C9PkQX9Bbfwh6T> z|J43J;vzkNb9x+wp8)up4PT1^KlHIXK7NCA-oCttDF5?rQ1&bOI2nJ$0kOwFINz(C zYYXRJv}OIWLCO-uU#~U3l6?M4&64=)XVUH@zSaNU4SMGBmhyL7k#YPVf_t9b66zi4 zbA_qg|3&OSUh*#Je`Gwn;(giwuyJ(#^K$Wo?VtNaw!!=UhaLw57gPFgbwK+6pn=;H z_T$^*55CV;Z3ne@&E+EB1ZJqMg7^dOd3H-!POSgO_Alc5-y;0Kz@Kcbe@DaDzi-0q z_#wD=ONfiKcB7xk@y}$CmM8TqIsS6P51nZO=hRvFKDg%DEg>$_7kbY;OX+{KVSm0S zv1{b*)1V1(x*0OhA4d1sDE|5G%z=O)(x;ABfbvTJi8^tMf%Du z3&`^?M;iFb1Znqf_-YrBAF_!L*E(dk#03rtH7Bq5q&Sy8c7Z z)_6vIU(d@K&u+=7|5Y_7CR6$s`1y61V#L30_Q$bpyEnRdWBAz%OvG ze>*;Vrb!sS3ioaa9)ET4L4ObDYzAwz5jh0<=ly@I z^H0ei>=;DhpBX6YUk}5#;xCMIg7pC(ve=IY_zbQ^c2NMzjkM3Xq2&7KVx#@*hW)jJ zINKioVEm^y?#_6|_)odGJLB0cAuiG`zpW(K-yVEc#vj@)8GktO`FRJZYfd*q{435Q z>Cla-klhmEBJG-(>7(@D>b&IOds4Q)7aikolwauq@(=~w@4P0l~9 zhW4k9j%PE|LXuU6Y=?$df|UT7CKiT|e_rYZegXC&yCswx>4A!knp5(>Z|Gkcv{SHp z4W7rQ>fe_*i1Cc=UxRC&-4fy=eg2chr2Q>7^sjv`#~*D|IJ&j|AW;ZU6HFiBJcIAx{PPH zgmNQYSZ52l{-5@>w0~uY)W5{H+P~HUo^#k(gXuQ_9%OzVMd(vFe*~_1c1u`(q#r+= z|6k~TBgS8$8$kZC@vQoob%K>PiMBspE}qb@<2D*PbDp2?r1AfScuX)5D1o-Tf`}h-ak)HkIL{kbs ze-O-LO^j!k)sXsUx6<;TzcgI`e?qy{&)o6R?vVcYwW3h%f2N#vX2C)7g5%iRAL4{| zHDEk%X)66M`?>)W*`xkDA3l8vCI8`XVg4t@CjVq_@`nnbT|DHy{!@-zT$jQ>2l$!| zU-O9nS&aB=CtmXdh5sG!3EA*jwm12Q^?-VaLH;jKf8CG5{~7REs-=I;BmQWPf7tu_ z&sBrgBvAIZW1+NbeS(a?pI;N+|Ma>A>>T1gQ|6-2YzJtOmLNruQBxfp%KTCjWJMO6EHxDfo0ANK!rHvE4+-Tw2h5BL9EFTPDR+~6bjzn|aI{z}UJo;@J@ zRplue|DIYHE<D ziw5UkXt%|)pJq$@(+X(&!*XH#$C^NKHi9#7Nr;Q|rm9brqwN1eCiH(cd{*cUe?I&y zmiKS`z5md!6#l$7!2Sws@_WQ*7sGo97JH9B&ffp`pA`O}buj+3;j@4@`8mFFrFZ=D zM|bn}&xrW{_yE{{R~XN#{``@sNzDcScsaS(0qZ~aDzF>y%Wetl9qE$$JCp0bZ7Rb0 zXCR(k)h8rb718on7!e--XH18_!e3Cnn(PFH^hej`seH4 zr0|Du`EB@YiZ}UJJ{%n%{SMMui>Gg;{BQ6^>3@S+JB9w2?&tp3>i-KN{?c|?{ua6` z)Aw>8>{kDXi}cpU*Yf9YI^pl}`QLrtK|5;R*xdi1OpqP2T5q@bsk#2$c10W?`foM* zE38-K=cI^>wEg{;W>WG`YANHNP$Sv@asKxH|Kw{R|K`d}YuHs}s4k}E!TCQIbrso( zi}#3&^vu@wuTl8wFr)u#DCa-i@O{;~GM*7%s|w|T?3PeJNH5ldms9rlKsms_JD#1` z5fZGlX|(;J-m(4fgn3JSlz0D=a-r2Q3cuwb@P9UZHr*ROKmS0SL*}9YlpE=v?dtj{ z{JDp~kJ<1wkN8#U0q}QNyOD)JT%v6r5lj7-dwoSZh0msf{%!c|c5m`;+sE6bd;EblgS7FoX0xdF z_qEafwPv#YPkNBIerx=J`+fB;tzo^jHCqQNR}yM5rCV!}-Sn?Gz8Llzt5d6TZWMo^ww9FpI-UkJE)U+=^2dI#`w+xk-1qA5v|=nHF{3Cq zEup27P?VJ$xTa$(CDA{{pBqRTke4@kocJy=Gb=EuC^ac9FQ-jbULYmgpPuP25SOjf z@(TQI@+W7u$uGzYm`f(F)rqG`f$Vtgffx;MY$t~kDN`oNF-X<+CH`8CpG2kjt074a}P4cG~Wm`aH zA&-St=+7-IDr{4jofpVV0p$ivc@RfbL`qs(UJ+Ey2oQW=Zn}S3OQ~EXy%0VNjPp`Y zqQW8=B_mE!Qc}d1EtSNnDcO@j_*(=iB~DICeo|^t+GHqjVW1!@H#0dguOQuD;7{k@ z^vm|=faMrpwQ{kLNm*0;Ntt3dQvSy@kQ%D*CwbLgrCnqZq@Td3n2U4=K3%Ol~<9Mk9M_Xx={`1T4okYq1+CIQv zXyLPaX!$Ap(AD1Y2h|&}jly4b8rI$yS@>EE_-bqK_=|2yT2A2~ZdI2lPg?kFRt)kd zdB?x3e;(ie6fyo?TMqR9l!dRwfUmaoj=$!T%H;aTD~swgC*~g8mm<_*xA3Y6tK5yC?rRnZn<;s~Xd7`0TzIR&(Dkm*Zo z^2dPh>+Bsr^~-uADEu?=jhOPRh0kVtm!Dnh9l!NmYi3aRvuZYB%5xUJ76ZQ4%{%_A zUDu7J@C%PX`+MHPXZOb-e-H2Y_Z;_;_>Z5c!Ib}5_*xA3T2Jrz$s_WAq~u@mI<&u~ z7Cw6*2KiO*_%#o99zx-N_yXvEnT4;#fUouPj-OI-DS7_uNAE-Y@q&fV9*jZ$KHl-? ze7^rQCI9i73R7OR@UV zpXC<576ZP1y?6Xq2e2swvqxi) zf4F!2KVC}uhQhCP4DjEu@Utu81VH`-tl)o8Tg&Te|YpIOnKYFXLDnaf3$b}uZQ$`n8F|V7s$WL!q;NJ z*T;Crzw(#!?J4|Uwm|!P$HHgxVvv8Fcl=X5Zz0!zuYU>bZ?%Q5#elDm_m2P3C&}da z^V3rh|GaDAv&UkPe}Z@X`5jJor1Y=z{_i~tUyA`>pXeRG^#Wa^@E_s+Z;ge|9*;r( z6z}-6QlGz>!aw;I=zpz+uf>3`r+UXzD3d@Tli-R~X0^FfW2zx*rZnQvb_d$Rxga{g}tE&udU@@t%b#C=Kf z)5!mE-3RH7{k~sLt^X{qSX2CQsJ&eOnV%TG|L3*d@HOA(vTT6JjS67iF$8m#O9zM? zi7Y?Cc}JxA=RYFnALD;159gRxwB|pbpyj9LKSLYc*Z)v%r2Y5TBG3OEvr4Yv>ce3{ z4bmc*=e4hYRpZ+(K7jK_Kj|g%Ag+&cupSQgJi8^tMf%^=w}*oLMeKk2;!F+ZyQCu6 zyWHQ=WU-`e4aT_diJjgeKJmK$32~8reERTy3cuwyu(#d=zEV-vOG)wdi(cmYZzAOH zR3Dx#xU_irLoGiomHgK)>&y4QN8sOn7Un-LD;{6(aIjSP`r^mlpzvQh184bqz*k#u zEfs!?cjxi(PlWv2q5hR7#mld)`m$8`lU8@FOyRHR_3r^6-;Y>Q`&(UM%25hmYgU~p zmlrR;^70p@lK|KPEPOu4Ff`PCz( z>wl`>;m@J)ckF@o?*U)CST9xkPhI_KPYS=ruQ31Dta$mg1ErJy=)KqR`L_uBEBXN9 zUk~_f$)-}tzheAbJpPWr_k;Yt=Ech&oGhOYD5?F|uQ!^Xe-nZKKG%PX;_=mQOQ-*S z3um^W@Hd10m4xE)gQw-bw35pI-kjGnDE#C1H)gsAd|$IKN>%@BM|EmN;U9Vx?5}0< z^81dLPX5GIJN8oe|GDjIc&@s5e7#HQ+W)r3@mUo9e}97W=dSjEZ@ho7r1jr3w^C(l z{Jr&ic_fS4S&qM7>m9!TTIU0}i{bqrxi^aZ%zN@alyf8F*)8F?59#%K(MbybrSry- zFkPbHUjlv9AJ>a4@ZnxRcfH77@fY`9Ft{Ai{(}?bGu-jUjF0caVZl4zD|5~ zwxNFmKe)7X_;;RKa1Dij*3iEbUl|Gyon4~do4K}vY8XGCwOlg-iB9IdB)NV77l-wXaTV*PgX!xu4qY(;bbWauS1PKh%Z zA*JST)!)6(pSItzg?xT5@0S`ZIL^XXmwU$#o%4==q2V>;{JH+&mCQHZ!VkrOum0&B zzd>lxuay38eyJ|=O|bCQm%Yo+YPdf?i}j9FEkB=JKU)C)OPOflhho6jYI?`t|G(Dz zDEVvDfcR~Og|EKiU4HFKcYO5QNSFUpkx}u(dl%r@*u}-i57>W|G=8}K>OK=F{Mi-Y zToe!ZEU9$y^S0!Lvnl+nzaW16Z}IZ$b+!qQ5Fx+eKgAyRvU!5Td~^e!F5nMv;PU}x z1JNdJQc6}XZb0u3oA+BLOEknO`{z-_V=4CMQQ&EVaZ()e0R%%*m!87;0D|+G8M$je zIoW(3h1j?6!rG-13R77hu0Q!O0)JY<+PCl4|HSpFwUuiBm5#ysNzm5*S9ov#p#kpg zAN?NES#SKYp2FAW)@HtEE&Nan`05Sb@tdAVBhOD6H~{dUv+&iGF~~p2JN{>X<~&Nt zpK`no^F43jhho52hj_>DF=Ol<6#m{7Apid?eD#eOf15Me~Wkgsr%j}-=8}3VrYLaTlk?E@YONi@$=^`{DYGJRKuF^9%u_+T@{1; zW4+@K)H9A#_?2>D{`6G~KNJJLI^G>0<4&Z#2A+5c@FV6=yX~vT^pzEj*#me*`zYCi zw#AOrm^W6JZI++lJo0KeuYx~wQp80%ZI1d2h2LF+{nKx{>on8 zkp|04doblT&Y6yN{_yrbFJx2rgPD}y6+h82?kpkx{db>TMd8mW2A^GB41Pu;Jj7j; z7Eo?i`YU|QlpiSQrX-~l1@Zzp`4c-UIkyD@NqzEibLCU}gYyal15$F+;aPgy&$<{t z%g%z)jP3KT^6_WoP8b(bIBEGxVtxvLmb{Q-@MrahiQ8`c58)^S{_u1+1s>ziRkHGu zhWk_CLGx}(Rw_J4pRT}=Dpvw$<;qXoa3-b8-wp8>7Q%T0rT}T8z)GSJQr>h^a>9Pw zO_`dhBo(R*Cj|oeN&LU|=~*e+eNwWsZHj5vmJ1c|PZPT3 z)c$2VMLt;%I4%j>1=8kyuO#2E^;f?1Pwa_ZCMWy;KJ$Ew%^6JRxexe|y|5?f;|!6_ zKXP0kF48go>{v(H=QFLt{R8@^ps}8WRR8{vK+x70`>f8%{=xxk-Xbp2SG%r!ms;P+ zA0p)sJwwZHzF+OL48|a%K9tWve#mYKagi3?b@EqA{!JjyZbXkKb{Q1j>_;p2Xc>ejM2mN&@-Ttq|ovWRs z?2|2#5f-jLY9r*jk2+t*iTWHFC;L=mJrK_!jIn*5{&Dj$3V%YinnGoWuRJQ(H?jX_ zBR&`3V>xtOhmH~dk7K##DE!1Oa{UYACtnM>&Zabx>wl))-+w5|5o#u>89&hWTbMP& zuOxzl(yS`t5j5{=zLj#Ck^Rj2r(2{}(n9i^m)}Wkk7 zv)3xa8J9&Oi}Oogf&C0{&$C-XT%^^{e_M&_--a9bS`>VhySGSW zAwS$RxEI-_0MaWm^BmoQ)joI`?7MLnqkZA|g^w1&+0;fEII9(#>GoACJtUB@pBFb# z{zJKuj_LOLU6lMCP8jWbsk{C|ufrbKi>8XqhI%R9r18UH=zh&!C|2Ld`M z;v$_=d(#>UfAaOw@wNU^-qMag-<$D97YhH&@zL>pjT~`93FY71dQMXczf0v}@EDfxCxmik5cu%9fBn({e;jeEpJdiM+0RHE<`_QFBqkZ^tj$7#wg86O6B=;C`U zPjH}Y|FPnazwf#O6#lX2&G<~j2aCtDq*@PEBj_5`SZCqBxH z@hR#dR{2M?pS+*Ke{GSJALC=hH}!AGjrE|EQ2x!2eRm1fzYLl!`}g1(`F@ZWf9B`& zTl=FP$cPI&4_JZsXY#WtF^Nhe{zJP%diSz%4Jmxh!1tZ~ck%mNTdgjI|F(gz{PgeQ zm%DZI!xa8;17H7_@s&&V=TP{6z09Z{XVQP+s150b zE6cIq`WkG-0N7C&s=?O&4SFt=bN|*~TUUsS^z6!A8z}q+r;Yv3#-HYYPUC+9czRJa zwtY367d)jJ`wiY39|Y=_uwIdN+xrDPHXJ$s@wB7=M*pexJ|b8LjroUAgYbEQSp93y zw4*;!_(Ly~8bbe$`0Ce31-_oQK~PuxOnLrp8SLN6$xHWV!z?&Ip;T@P3fsVC0F}-0 zxW<9CseBI5d17s*0U@?T4aBK7d6aNTPDgb+sx%IPN_3d8dH61>DIANfnrWCZfUBn)VtCQHS*;R+|D-wuKDik zA~^jSBobzjB>uN%V1;xg5zfsRu#WiVInd$2bXZ4%INM*)N)cGbq-*%LaN}%hh5WK5 z{V@WWp}Syj!15!4?a<`MvQ>&MV)B$in4R+{4Ft>Un^hoJ$Xd!ZF93p$C1PbQaxtl! zk|z#m&W2;7hZY6$ivmOBq1fFNIN3WdHzTVc$Dc00=`Ys35>o=O**-0)H*D;LsX-bj z)1T`v%qkoS$14{GQgZV71mraxVLlRM>|0bI&O{!VJHihL>4jqDuZ#S$aG1ZKUw&TN zq<+)#^Kzjc|0-pdE3=lctjZqCiRt;j#HFS(o4GgvsUR>HbOJCawh-1)CQDB)rZ=DK7DJRV-S z#`ac=<|`##TA9@-ZuwdYE(CXk1(kN~Z3`-4p25*g#AXCx6S94rJ7Z0&!xFn5X3q~4 zpVCpB^KEOywwlY%O3iPd-zM|_yj=%;6vg+SKmwt61rb>gB#97ulXg@=5D*Yh1TG{2 z0wIY>sLIb(vHYyqMg8en5UgM?v_lY3Q4uVNf`_13k-rTT)c<$N+jeugO-P)4Uf%BA z?SA*YdGqE?*_r%y>PW7BpN(n**$&mk_H`8^k;Z#l8BjVvRgN&zn=kV&G!@r-)AH(N zLUNBDT6t9N5~&K;A(76h&Ym|A!zgp-WET#B%QT#B8LqMrT{5EZJAVXUXQc5J+NWh8 z=+7_6&f{Z@!^e;14qf;t>}ZyjmI8@bh4K-NfS1p&o2?=qU5tK?E1 zm7g)>Wf${}0j#|#irVu6>ojkjF(7Kl%^Ed*dQo<w(6h3PM#r)9Hdv%BjW+>}JY#3-|NowrNOvw^vYgY=t0+mP?V0_Nh*X_AEOVwQZS- z5q3#Y4KQc0?~3$O6DXfF{;qsLsW7=M!mh5%E?>-0pJWnV!h>Y#wM^1^!aKM2gd~ni zn#bJof|7Trq1QRn$Hsb>6JeLKJy!z(Q#iaa*h#_j7gaeDB1zg8MV2aUAgKym3_Zqs zEh!amB+axd48Cbhj5~2Pp4_XjmiDa77tSrlyqmU$&!36>7XMPE=S)pah4yH6jyG#g zT0GBt#O3Rav=yMv@9|zkS^Wx^QHJ8{f|9S?srIi`o`lortyiWwJT6qvLejl<3Q?(o-gIZ7rm*m`+H=TWid zV72RB#VF9@CER8qsw8*!>}d2awl$(ZOBJ1;rMW=vbLY-0%j1a~S!Y(0P8bw6uFDnu zkG$(re1fU+)RigD(cg~=8{GItJbd6z0XXk~tPZ2eya<#_&Dy^3aowUXjTTC;>4pUm{j46mJG+i7uG#Mc&Fu|cS6p2k{vAl zM-Lk)-i{eNcbc4s3}vT!%9Sj-F?(d=Hb6>jyt$=vc;;b)>{wGZ?ex8CGA0n4GwOdp z(WX^3PQo;R3hkhW1-dumEWw`QsxMA#W=W;?7p-_G%ZpbS6t_TOb>d&iFJr`eStH)} zfQkwPPbRo1si#8kE%@tk9&@x+Ec^ugLMH0SX?SaH*dW6_`s8>O#xZi^@a$!%M7*tp zxy1|eRk(>^#^P)~ea2e0%K=q}N~Ba!WELkENXKb|SP_$z32_{ten`r27*UB0Zf@-5 zQ;Fa%e5c+L2K10uj*#9X;7N@YiN4ybj2U*veU7K2)`p8IQd*}%uV3?W*5V<@ebAe!W@jf@YjSV@T0NW*%%A$ zWnflc#+;&oeB*6HgjU_UV0dqq)7WKI;wY4!I5KuU9KX{CO%cKp#jEUFvisQ0nq!rZ zV1BwTW;utDPQHUvb(*-xkSIW#B_?V}=UxH*>Z1KPPIX>r@~bSiL4ytsBd3bd?o!a? zR|R4TLzhY{xBPOC#M$}f=qm9vzb)5gRc%83Wp3&V+n}Kr>*kZtW|9$7T5e8Jar#KK zZ|n!LpfNYV?)bH?>1CjmZhtPDWX57%zN{;CjXKPd;p1y_i?O#npQ~0l555UbGkbxf z=IyFxAv-?mCf72M;oIOj1;q<77#s(yn;)$1(O5k+Sn!8%@O*g%J`19Phn1AyuyU$Q zm43<7D(HRi7&_!rKZ??M&$#sv(o}jG8ChAFH=3KxXW$kYs^Jv%D|*GeOE<@isB-p) zu2B-|7_`fmD9b3tvN)pw?}*;YP@%cdT*FJyp}3#Jd6X4R_zDalq9bad70k$>T7}lL zJb{fb+i;F$l_Iuw`*|ymg`C!zuLtn9RH7qZuUsd0e>>t8NUj;&smL!MzPC(rMa8@o zf#nHGEjs}giX$dV{R=*-a*fd$3v=@`vUrE&6p_8t=1xDSg7`7nnDAOuJYGDeL%wb{W`^VEQw!zqCARY$ zbtCl*Z82*&e|k&gm#(ga?aq_)vIgP^uT%0Mz0`BI^5*8|@~TSoo1?Cr?XvkY_&2m{J3&pZQ@o;)k3 z2uH~oRfoB)QHbY>g{{h328pREEOc~+Q1^?^A3%+c*<$dLyl>7qDz5@i^=hKuA$dMo zHoLF@BZ=t~#33KRwen2$xp;=N)a+IH+Ku-+J}8-r9u@IUj{D0PA44*o)3;tDh&k#d zG-tnmV70_b>arwjgdcUTq}G<6SiCJ$xKNCQr70pE6<$ns$-dMPrVQ^ z#~vo9!h^_mj&0CoiVhu3ve;-AnBDZMP%uZU$STG%!Y^OnFTw(y>HBVLs!Xu;BAtmn zh~sQ*LX9*NfJd5s$ILD3*VlYB{WPnnJr8J$(nVK3FvHs&|*|i~;bCh58&&wKzmtykJ5zOZc6cx+G9mUu``hi`Q zr^i6Zsh7z<9kXUcu)$x)5#D<<@HQ z6FcUXTeHa@nsD>wu1OJwTW_8yO(u{g%kPDd*khWL%MZ=dLemWZaTSLy8qJJKUU_q@~JRtO(MczQ=35m?30;85G71 zA<0TaP~w?D8e2WK!?Ie|s#H^Or)i6#y2<@lUT&6Cra77@Z}K#H+De%`rn5e9y~jal zsm7##V^g?XdOgL85KdMcU5=@t8ptMtR`K7iQ7b5FMd{WoQ&2+GT9`d2e_mO~NXor_ zbB$Y2q^0%BarEc(SB}*u9L2KasXDv_=rkF>={u>j97S@>`NWNQmw;o0(EI*l$nSk#^uo{a6PcIAby|_D49Zn#KF8@OJ=JOHQ2fL}BwabQ1mbu6 zqgQ5*u0zn_j(9X8JCDSRvdVwi5lf7T@v++YD(}iYUXC%+px{ojOTjAeo(#0?g<3l0 zXDZa7Dq+&$WHOa%0=fb+4&Zc;jGB zbmv#xy4=&L;eTq=WJ{T)9273wOe(9sbJRlRR4t?rR{Q>X0zb#_sjT(1!>97ASiM0M z3E_1}J^{78!&3=CRL_P-nO5UUn#@VHeOx`l!tVJnK}k-`LNA>+Q@&c;v{UsR^=>(O zCfXYF=3r82QGPDk`@{0EGGUSU=)yeSn~aY{JGnRqQ=<6ve*Adwg6zy8Sb__6we_Ap z^@>S#ss&?dU0ULO8hubnx4+-YeOT@`l*nE_x>j6iq{{t~_!`ta5x-k56U+?pDPxb| z+`Kl4b!aBJ`q*M}Rb%UvwK~}H?K+8x)n|J4PwD(H*4zEKKD)R-Uje-`qvx%TWzmg6 z)mZ54*34XYCfiYjdu^!7jJB;=1n0|7$NIcD58*tp{!AN49eMFTe6!_p9e!vt@OPJh zKM41KtEG)UxHSvm+``8>d%I;6KFLAr^H#fR=K$!xv3Gxq`Uj!Euj(_ia)L|##6kG{ zwCXI9itl#RWs@6VePEmi((1D?&Ivz^^B~USrT<&8rAZyl{x!3!C9rV2+ScX9*)spF z57fau;0gF6B-+O-^a1uV+gj86bL)5X`-l2n@}$oGmZm2#b8RAf<%qPukisXsBhK-8 zGQ@wzXkRgU4)w9c2$%Rv%l9Yg@UNK&`5pL1TfO~z@o&8dP)(|{F8qr(RN=7D?e*IU z|Ap@+w9(;*x%}%K^83Umxz}U+HzTEv16dvtF7aWtzgeck-vNBK-o`iD`IDdUJHsx6 z&En_(;Trw#)8Vgx{@Df_KjahtQRqMPX-yXJss9hx97)&VzsmF9fp4Vylb`I*ul)C~ z?H$(Pzs2PbJLLC?Px)ppP&}agKKUW_vBk*l zh)4ct@}myld=&C;Ol0{T*NJOGG4MzAm$x<)!sG!^+lAHGKwK8l*uVOj#a>=<<1C&3 z8^@PHuOj#0;6FAxNcpV`)xoAGE5rNQ{*US>;}6tNM^FcN63I<`<1No0(#hZcwn{AU zW+I#Ndsy5dr0~h_5${_?)@X*p=`j!WU-x7-5S*P|U43dZ!X>_V*6)0O=cx7Z_iVs5 zTNBx8s{cFc^M9$Q{(m127BQ+@^^lD$j|i7ITX)BWI{ZLK_`i1&*=LmhG4R)T^8ZR? z8L$8EL;mqN#G440c)um@UaZ4^@mtu@mx-)vrnEn!lV1KtJpMp3#DDxd71wR6$_n86 z0&mCn|5@P^nL7ObPeT3!iR|&t%Kl^EUpr6&6MiKG7G`!b+i^Dh@AT+>mPu~n51e|Q z*8dNG3i}QGoXG0dSMqn(%YUSW8~^WNz`d(3n+g2zVv2I)Z}@-0C0@Dqg@#W4)jbjz z`^Cl&`NSvO0P4T+?Sv8=e^>SWU3B=>8^Mr|C$eR`!s241i(dYP2jor>hJx6|dFNzn zKU4Lw#psEMw_SPU3mv`z{D1>LR7(6<{-1J$c>c1Vc>LL!9+37|Yy3XyKj2qF^vM&+ z*+cy>r1rB4cikjDAs%m^NRpfQ^_3r=sFVM_ACZ5RlGyq=VR8RZSH1opTV$Td$_TNp9fAb`HZ$m*WO+mT873J?y zfBvUY>+|l`;h+6tB^It?Q^kvxkAdIllip+U#us;WW$S3~d5y1VkIy?9n{1CV|QN9yDKC16m zI{b;h!T;7tViSjM7Pl~Z=;iM*QOam2pbx)6{=Zd~4dMPD+?xoO_`9!}zv}Q=Kj^Vh z5_@xs#1F;5U!Ld2-xdJkD^=M@d>jDxCc-7&>Xhwkb@+ShS7za+No?khu(*ZMQ!oF} zh`ao~lnva+YO$I(W1kvuZz5dcKmEN{oB!Lfzm?fMiPas#0};gZG4PLEC?g?5{E7*` z8+old8&-@u8T|y_M7YF<6d!p}C;!CL;eT5su|KCveB&Iw{CnoP@fkNcwEJTDU&1B6 zZvA(!>hL22VE?Ub{E$!lh1Wn=?P{>gs`#_NE}a|xuEVc%WhG{|w(*T#{^ZX?{U2Ua zofV$~j{R1>$@@w6h*fEIl9OxD{+6_V?yETo%vj%;H4P-92D1BqHg<37xt5d*(I@|hiihuj)?eEwl62VYFM{$|)YAvxJS#VhNK3RlI z{P&fAY}Mg67zjJ-Y2zDx{o#K*P}<|u@IUPP`2Od;TVEWj!~X;LtalQt^S$zaG4Ox- z6Td?;#DB)P{3iB=6Z`FMiT3~MXBPW<)u6|9?cd-2N?^ge9sPg(r2N)}>R|Y5y!~t2 zbp-7nb9WsU=rN6%ou+wz9u@!3Kk(s8I{B9xD1ZHv*uhVf{0d)6YnQ*xhurcX^Kdt==iH8r;hg+V0OtnIy~&HeanF^Nbof26?;g7_ zHa@$uBMY8t<415FI>p8}uIk9bIQJ$menIe;w{`ftKgTb}$Houb47{c`eu$qpvGF4~ z598dMDBp<}o%rc#UH;!Y6Y;uT8*$J7Im-V)efj76k~;gpsQ)*-qd5!R(A>hI1CpEgxa4QG{V#70 zhWw+G*tO&3{?#Fc?=An+5hwCwi2sZ=xD59BWG(jIQM7}=<0Yfkp#3`eSDam$MV#^v z(#xOlu3LVpAA^5&V4)8?#Di!1w_kmx4*$V1m6;K;^&cuFeu(4mi^eCt6F=+W%sx8% z+tUJiy)cPQNtXII2J7vwZ)3OqU*h9$9h2Dw-2Qy{zo}CT?$_aOycGF&aT3PY!a|3k z82GENcDFys{%9P=n*k&@@!r3jbySBRSOfnbOk&MyDfx%!<^St+xBOoq9^!I${}6ik zfHwx*iExRxZ#Y@o{(S39+&4RkE$y!CKL&omxo-S;@=I@FKU28*{)le;GZCfQENH;^ z{kewec^9;TTq()czO&UwyU%~)`S1ANMv_N#AL4TtwbttYi$_t?i<4NZfnjlB=v=-2 z6UVyqKd&j`W{kf*eiLKCP0{6_aEU+t&kLh;`CktXG~mEDhWf*w3w-m+8mtunIQJ&P zCBF2OooPD!ZL<-7I`Bh2@xMU4&gJhi7Cv!*9WT6bTAAoR)A6PuDi4Ok{tTQM z9P*#%PyUrHCH@y&ejoOi*5;8{bn^GzfcWe3Bv$LxjY5T?82CS)<*xs~n47>N%j>e< zU&4PrPFnWnf_>g#R^1PE_0MQr&(_)Xk1<@zZ(k{o-r46K|Eksi<$q-j7Jlj+7QU*d z_vcaecTUm;TK#|38qdE3@qZO1zry#{|C>*7%TM)ASJYqO^=RehITy|-r^!)RV8!0H zm8K7=Nway*d7dXVH$G~fr*>YclCNAQ$H#rW6EDh^yL@qGmb&mxYG$cleah)*;(vMI z#g$LYXVY$C;GKu)SVLb-#C2{QAk8oCP6kvS_+sdM>*^6=v&g#^)Ysa4bv$6`a zi!i-Ry?QwSn>C8p`K?c^6%FVo@&hdGt?n$(y$*o-ors51zxzhFKX{;v{6!VSAv}e? zN1%;lsBtGRkKD3Zey{c|H=aBo&PiS+hg+kVEf>8|ztAi#7+UIe`bjS0cYJc+lN_ zs>53O5NTZezg2WVeD5nuntO|m}p${(sepKtxqm-wKrTkGiX-+#3d3;Mth#?U{j0&Gs6M7YE|=LUb$;jcpehyCEk(7%}o`9a=9 zxWxZDZ6lxG7N!5n-=h3K6<_}>hW;a!<}*&-M7YGCUYNF7hu`!{lz$)ikr?_9CcyuK zyoqp$-*U#3pLO^*-jDL{2S0}XBmc}}oV#b3q5r^f$Pe-+ z!X;kt=;0h4e$s0w|32^oef0Vd{V|Vm@+QJ1Uex-BnL7OE{y_hX4}5CpdHug}Y#!s} zO@vE4V{auszapyq&*Sy~v+?zBysr2Eq2D1t$eRe4`11p1YyHn*UjO^R5A@UPpZx}G zPM$=##E&Fg*j^`pQUK-O2Yy7gx4rr|f0@TPc@yChZ+!f@`8xa{;*Y?p`1+5;&_DYb z*ql6xaEZ_P^QXo-{PTJF_kkadVgJD+^B5;@B3$BQQ#)(p|I?v=wmQE2p&0s)9ESe| zc@yChf8p`p=jh~L0R0F3;K$H^@JGlG@+QJ1zJGqfI350U=s)ZOpXL>N?JxX2{4dCx z2$y*3zDHZ@@H<2Q#&hxYAB>^@z<2P!Aa5dE;y(>B`24ac|FabOH~rwp(0}+F$Pe-+ z!X-Z7KvE+e{uR)F#0P#jp!Yw!0|AM@UaEUK^aO^KS{6}E_rVo5W^=EtaAN(Bt z7vxQZOZ>#{7mIZG8NB}YfgfC}xBti<$Pe-+!X-X`dT5Lee>dze@KSvJvl#JD;8XZt zkT(%7@w`gg59;ub06*jdKNLg%;ZNXyLEc2T#1~&zm-in>`M>92|Lo=X@`u*z^&j{c z@`JpIaEZ5_l(IsH|0(Q0=mVei(EI<;hw#53Zz5dcgO?>W)!`>kL;3fCABy4sja~4+ zAa5dE;&qzj9oFH$4gDLh#Mgf$hW`(J0Qo`QM7YGi`eFWEI{aUtf71tkxQkx@YzMG8 zc@p6gpV0KwH9C9)`j7a)kHoNl^F8=qkT(%7@ywgg=kr^m?Ee7tA9yvs{zDt|_Rro0 zHYZOaT;gY^+;M{rzt#gN|32^oG5Q~Z@4)|pyoqp$ANzE5h7NxLkN;nbFF%cIdi{Uo zE%;xMHxVxJNB+2_o({hU@;~SU--zM=gWDiK$eRe4_=x2Pd+6{_ApgTY@B=aIKfDG0 z7vxQZOMK^%kFU|;H@XVt|MmF#56196fj8lQLEc2T#D6uOX|BU>1N$@m;K%Sk;Z2Yq zLiMz-KY^Z@dBj3-TtyC4T3g^WV_n_X2)kO?>@_mmd-kUi&x0 z@IN4LB3$A%tIyKL|L>sxIpha_s~(?i05&I2B3$CxDc`@Zlixu9Gg}*9{@{W)1cF!o z;5w8)kT(%7@qQh8jnd&?(6BNK`oNDg-mArrtbzXlc@yCh|8~V)pX%@rwZZ#^KJWue z^!UNoAwS5Q2-o88bQ+<bn||=s zJP&XF8?T`JfxO9!Uw35FGj#H&!~aEm;F~eVKg^d<{y^U3#s7HB`1f@94`KW(u-=FM z)x00C{E-)6e;{x2;txBpsih8o9q>bb@YTEO5_gz^wd~?Vi0cOzrBO6*AdGU+(=T+6= zv*+b6ODlh{@fW4S|GV0TJ9YT)%q^Sz!8=N)|HgBh@7Ljf^Rb*8&fl)$Dc1Zi>VF{~ z{8P3EEdA$c7eAkwk(X68Gh=r4z~TjlXOjgiB5kAJFVm0NsKGpBUE&KOr zUyYN7_t4=d@2@BHiurXWKOp^iIeSIEKo|N+>NWJEtnW#`m229ITn@|15bGX0cI@nE z@7S4{Pt#|o=48pOI_-~!WqI}qwZG!Owl@mJd^ggz;n?UpKQA*|ZabYm3WwOZGs_Uq zQkXqGH#@U9eMnArZq}geqRhga0_^hJ%b0`dn;A2*`6g9jQwV&hetN#+o5eBkax)e! z9F~_;EO)6(^?AFvj}>h{p+D|yugkxdn;KC52~Ktq`1osa9{QiOpGdx}pMx)dCO&61 zcL`4UCqK0R)4V?7n>zNG2mGk@k5*jT+P(-!br;F`eTnK*;6(y!4vY+Q2eIn=42LUWz0~^W5?gU#jzOVutCnnRpTu_KAGiL#DsV4 z+&4AjT>+NgGSQwTfTPwFFLyvSGhEECw{s~KdvJ-37%N7l0!{5_M0*`hcB{0U*A>^S z^i7Ll=gap8u;BwXvh;1GVm7tEJ%-#9uPrMrKci837;Cw2%0p`&@ffwAHO(h3p-jf! z2gsq(aXAHI*H4;AjDk=5DUF&o3od$G{s6v-wZ9EDir}u{z1tUHjaHi2cQ5NmoITE3=k^SRaG;w53mt?^>J$sE;sHTsn}{Iqi{w?!~LgZ+%T9wzeuz7UFO2xrl)XupCw#_Jx{?JdACiCo8SPaOm|0s~kFC zA1c)n;NoowX9X2+{&{|ym3?x0zGLpXr*gB)otzAAM`CULFUcLlN@MH}guPyAVQCQ; zPtQQyb(t}^urR+cB~`s!U@VT>AjoZ{RvzLYix*$Z$y87tT7a2&oo5<$>a@jh+ipoh zL8*RZ$3oc!&JY7G+*#WFXR5bg>Rzg&8n^%(f&Hu7vLqBZ;YJl^Wfx{=`Pz7|th)@j z5osgp*rh|g3F0W#F(XASrl)3L=Fh4Zi%7xrxBdqK+` zv15IYx6Wc*39VX%V~i?|W3!9>Rf=8<_2a~?(jg0ix@2BQXT44C7q8vL`Ci;a{G+%c zHC4RYB=sS`L3y+?MSNnNmC4=2-y|s&h`OpDId2(F!369f2AfHf**QADD5p3FJqlU! zbKdXZF*9WpMZ@w2{Rq76!o-+eB$@_*fb91uuiic+B=H{PYL?0Gq7vgn0$A=5L zcIcTtFuSlgXL?R%Msc>fSpIH!_QJsnuuWjzjBMN@Rr-Y(mXn*Gk;S9d(fP>lBHqQ} z>g|{_x2Sl8>nB#nL{>&|hLM(5l$}}7scW~{9n+`LZN_o^!E!E5o7CgqtvmoJ%Aqvg za;qS zqainV9tE6^?fBJOkvQPcZlvN!8(=3~`Y&z#J0ZVt_E^3d_hdkp#o3ML zTf67yIpcp%46mY;(S`ZN`I-5-qcaLK=47K@DB_TIqgHGSUqTZ+?rX1lSZ}WbAT@ig z`fahQ04J)+DnF0WW<5DbZgrhI>08O2JH><)1;NwpZ@sxcC_6WMMh35phYjMsiK`9~ zgZ)B3ePaJmerMf5s8#g)NT;4ku0X#1&%2PYt^im?hFQwTrW)9?^xui>V6pkKA;4d` z_Z^|TjW9-8i4~$NDW%sFkzalR&$^=YQG&-PGju!m7E9RNcE*hCLc~qQh^&jy+Zfey zL+egK%AH^lehX9a*>B}_bdLCAY^)dkvE}Bac9714x|54vePIGpz9+8PAg?SQU4f>@ zl+sqL$jg}3N$ILD*DlOM;LfQIQ60&yKm^g5L*_D6mM*k`Gc$7X>@FDsE>W@6zfd|M zt%X}?fX%akBrMj7n~VM(^Pxf#9XLlv!#+Z3?uL2PtqYuKY@l)@?nrEfkIBAtZgx@e zBvIrXLy}$WA;}_KFx4^ASST-%gOmKrsJp3A%C=~zf0V zvGY>~U;joRB+93ing3284NMt`i2t^f!b~bCKY^+9eVR>tCw1;5#vFU_hF(@yc9x3t zi+D@J6`neON!{IDoZa1}z?7Hy!L)y=!*tgx{;RN)7-Hk~N(uQ{K|x<(S_bkXV{Y+G z^w)^qM}Olpjta8W119?X6g^gGP>};nv0MdO?^OBrGO(bYoKA;*nbUDHH`me9!7urs zq8c;l;u!QUD(leKNeG%yv(9PsK1Y0wvWO%FEf+b0MGEUc#<UHOEu{)pIPGV1x=~sk)m2lD6$pM zM6-&_zqm@Pn1F#EhN3hCNY04f(npzW*IyH+=;Xs}{@A69vr7R=hTx6uHK6uSt+-5n zB-Wo8x^7o-mqlOiy6B@=U8a}dt+ZWmmD*ncuQx#VxeSNIJ&TW4k!8sfvD zn0b_qnN$V%5R()pEN11hOX0Xl0pvggq$a+@4@a zPAC#s__1vZn`qUVlr3}_ad<7;==sg_C=X9v$N*HQ&??QDz6j-b3laWT#QLSQ8u_*UFh4z)VM zvH6&rg16b^EWo1nyajK0d}mEZ-d{yeq9!WU3rUW^-_cnT@2w=ghO@J|gh|P~!#@*IJqG>ha_^k>Vm@SS*Q*s*TC4&IgMfxn zUNKMRUoEc*bKN=W$Qw_!ZqG0f-8@RQ=n%*#mVHdIFI5$fBWJv@zEteOrM!zVZ_iQR z+1+51+1&U;8L`E%H9!TXy=vOIyIiTa-JYwgU}JZD`;y;_8Wk*3I8JRH%3Bd9mQP#9 zGu2DXD)EM=E?B!5`R|{IE2s_@CROI>Nd$?$^1$15VwqG_dElKu70_{M=dI8uT!ynJ z(U%Nf_4=yVRX^9mFG7txCnFEb6xfY-z{)VJgaZ3DR zxlER|FWLB!a@`$TM~UCdnFyD7QA&%4>m(=lO!44PtBn1nm!z;oN7stWO`rHT(eDet za>822giCzNl0h}9B`0_D;;+12UK09BuIF_(l+~-}CRozf=)K4?wuYLo9G5*Z;O!a-Trb|M*vNMYm?`Ws>I&z5e-g@suJN8*xPG zE9GPLiJK8F@o$3zYA0jkK8G4Amz9B`M$hA6MKA{XI5pLu2JU^9CNBO0s9+6 z385B}=qU)7_^wCqY^}rJpzy=ZKXTyP`mcdy(ZZXmG9y(|CEQTtM;gvSr2im}IZ+~9 z;!7W@vqy)2UpuV7$x};-UpS?zEC09O#aJLAnT3vGpE1yY%TQi60P7Fzy9E014Xp39 zt*W&Ty1W@)BmDj^ig-_V-l*)`xtjCiXZe5Y%G4#Q#U7 z=9?>7*!&~HC;KJ*54$(x>(57(|C@io`nxL<*~&q(JhM0T_Q#)#rxXP+W{BF4UhPw= zKDHR)6K^?WD&OC^Ne5N_!^;0$b}81Me59duof!lF;{I}dJi`BbQCMCxR@$v~19hNs z)%y6BK!aeNN|l-fCrkggTH)Ub{J>S%tew&pz5HJMR+ojv6|^okT~3_zPW+?V-%r=& zf9Ho~`3s~y}I)E6y!I$Q*PnvxBSV!y-Qd?1zJhJNw~!6jwF9%;GQdV`CqRP<==sC z`owR)QszIc2S~WYNp9jVZV#mE+J^UHn;R6V`w3W8<^!rIX*hQ|`x0`AVGRCca=xu!>Ipqiqve#DQ;?5}43ngrDSsQ&FT820zvDfBaDzUxo_>6eGaHK7d= z>sseQE9VK0U%9N~SsdRyP0B;~m%#r7p11MYd;ah*{U$6Cy34rD0~ZzlT|VRCLpuNe z%#*67dQ`4g>aG8`-HrNxXH6EqueG3I7cmyBUY!N*Z!M@AmPa-D_c-T7iSnKJx{q(1 ztixZf;*U@a{1ZH*+amt`FX|W2U5Gcrz-KoA3-ltIApv}E;+PX9Z~c2>>xsv7^>5@G z)c-Hq`ZwSAr~fqvHwY-d@zE-_N=g3homaCNk6+SIo2O`rIShsl0~U{$$pHQkpu z;S%55wB>qT`7iobDk````hTze-HRIpcEP_~(NYlEKf4nC9z^yZF z>F{%9Hn7kxsdp3oLC*Hi1yBz!Z^7>M1+B&nLpf*<IR z@qN1TC-4v8x}q<|r6u7Tx7K4$eB-uyF8lz#r^MYRPsF$Nt+kcgpSS({*%q`vQfkW| zZ}4ba9saj_QU9gd`0S(d!KZvDe)qZ4 z?$YJ|M=Jk=AFBAnlm9QFzF{M(u}ETlK?m{s@L%YAO2#>8cQNXt!_`;-$DAk;F7Z46 zcjN~he*J^;ia?s){t^cvPfn}OBB{UwO-6ki!FeDJcpz$jg>lS@65$em;^hl2(BW6A zCi68i;WKgRfl9ppv65vskD|U0eOi+R-a(AU=^p&-4U~uXY76=W-?JvwS?KNBf(W1T zo%nlIU)RRpqtl_!HQ0UN7gXdteWK5Q{#-nzNXGvDS^hrO`s&{DcU#-UzqtLW%NhB< z;)$sL4%KI`P=96&d@eRmg#Swy>Hos*_3eMsJMo#9@0p>~KgZ|EP`Dh&ssER8gJ3i0 zf2*X(K>YTzn%HwoQkO>)ME_gx?V5}eCBh}Xeb~cS>+sihl!`UG%6e4d+x?&K!rpj( zo9`pW0MYXVcK{D$Jr6$yQ6gO81^W|@>+sK!)i?{z-YG8i;xB`J1z>;1yOKKNdAL48 zIOjAF*%00XY#eibp;{3YZAaecFv@P7xO4-nToKM&)W6D5+Hc=M}wJgmdNW2vA^qx!qc z-{b+XuM4ZOU~XMO+}G zvd{JUKYW(76ViV?|3|pQU#&m;I-UK8+XH`7B3s`vEFRrd_+7Dr4dDGhH?C-6o5&sTs#-{u(@!4Lz{C%q=isvKwZ&LObn69@! zL;RXCst3LudE*SO{~nE`-`=MB-vbY#{jo*fn_pu3#Gm&!;;4B^RmuuVDN)KCgY64*!Iz|3Vdvf7GnnM~BZks{D_GA4FbrBK@-~ zk=G#7e+b`kqC|d|c)tgZ{h{-}2JpjM6WMCjo?>6h@=t!3I4_qxrAWqpScU_{0rWid z9O`Q;ekc63jdrJS|5M-@|9q)B;@{^RvYeIDFPaKpYQ>&^G3-@&XTl$*;st~D(IVg& zeCLeg>v{jnM1@cNpTlcl-=eXN*=HRkK0BcIe{1@?@pmXc9^+Jhr%0K#Y&APRZaQz28`d`WMYuNavPyCh& zpFJ<*R>C1p`X?Ux>f8r)<*!*y`J~2IQf{yQgRpzETe3CB;NkIZedmPT=U#j|Uv|?@ z(f{Yoe~xedTHn&Ysh)%MN8D?Fjk_y*?Ye~^T%6>l4=3yynvD3Ti5LF}FaIwzwD8&2 z{_=kh^}ih6Mi4Ge_{7bPS1i`)pLLQF1}>NR=+%FNbKUwq@s<1hbkFy$hj5%+airaM zRbhXP8@uiQfo+&i(zUiN{~>?!ll_Nk?r@;kha@-gHb*1c`9A|Y%lJQ}aJ}-+7$oHl zC0AmcT41UGFXxmxVf#dW9H@qVED$BarSre5y!9Y2|At3?fq&GtKlY73`S&F$`@2!! z|Lw)E{q?|4boMtN_8<5t(bB)^6aNp@|3dpxlbpl}pLo|HwMOdfFLH~l;euB)C9_CcWkD0r{s`lo;d?>q0SK4)vRh_`bofJ;OZyM0a^%hb z3(+*7yykoZV4Uaw=Q$_&C(?o9{eC>{Jg)!Mp7FnPx559`wf!&q&R_oLjFkBw>~_F| zBu`0h;wcM`{-cxsMYKP73Le`nxRl@4|02FUXlLBz^D2U@{s^20K=;8Pi1~*&4)for zM7VUm?DBqFA%8uu|N9p8Z}7#2EOe`ke_4-B;u5Fd@S~}aEa6Nk{(|9=RcQn zeDD0%%YOiVPxPfKeD;Gse5!wA&3`3);*IWjnUB9m^?zM&qW=3lk@fAQ&Snje|2Wwg>w)k(mU~vs}g4E@bj*cmKHf7?SJ+Jxf3qw&FBFA zV18|2TpvOI#q;oUvbp8(4`M#(*gnhvQNqWrw0~90F?A9Xo6PjYUt4RzkM(hke;n55 zKidJvheZ0HenQ$G&D(Q<;e_NSKJVh&+Uw-cxkTo0Na1oEr~YaDD>DCF#)-zCj0NX1 zPBi|-79tSfq>{J%En7Z$H|+0J`kwkf1peRkneoJz@~aZ?*+WCz_&9gsM{rJwjxYftdn2h{{#8Y`$AqCOMYO7 zYP#{mICtWkwQT$VJ&58LRJ%Wn_`hC3W7%&-?GN)E)UU5LWRY8>|E2j{bp8EJ6EPZO zj|b6w(BP)VEWEz4)&6Ch8#7}ANgZu}XZAYyf=>S{=gIOPO!!nh>9V%&@_#ixrLxBP zUyD%QFdu?G3siG|uf&bA|9X3SYUe+nHd&VczyujbH7auVe=%4rpI;rhyS|`;n&^*z z8{=PhVLTYrqcsq5Zr)R0kQblM8<@>AdHMI&f19rc{_71{*G%bu+0Xj&&!3B@6v@~M zYX6<5Z-0^hB7WrgYrfX`|6q6EA4s(DO@&W>pSTyF^g{X|J*dZv(*I}6Z(FF#{~0YM zLgYp%$F&39`looqe7O$B;p?z-76JkN9$_4FqVW*+N*zqH0;xoDQ~7@;vHCE`A65Sj zteeOJU)kQ;{6(+-n)k}zkp6Gam*pi^{Yxc*@HgFk9`FB&ia&PUf&Sm`Y<%{sKm5xJ zH%dug+(aU~xEFustc!-~@K>)!`TO3+H+|w)Z4efCW?wx%$xVFNOUdT|zbic?`TrJo z0)GI;j+OtR{+w{#PsC3ftNHSYtOMguSyU^LIp_baMweUg4a^7Yh=v&_l_>v-f4uVY z4#1C!e@vABz~MwTo#MIQr2eH<%Dy0e%OUVHJW>8ry-4)|`C<91X#aQpnS)yD?Ei;4 z(*J}rr2pYKy81VCIp&yv2#+ns4?!00e{jx8C6b%?sQ;_lg6F??{>QnkF#a*5HtRQ3 z)(htEdi!gx#;HmE$*RB3_~BiGbny=AjDDX|EjZq3f8VJ2PosOH|KovFHdKwLv!iJ}iUB=ikfAS~ylKA1(djC(j#FzD&F-?cx`#r?B zm)iKIPyF9=C4TTZJ$|y1i1?`kzAV()|4qQ>DR7^>&*8=T`B!GBCgVi*AHp#wvj4!t zm>&V6M7YE&P5bqE9scKa6@HG)$0WEAXZfT0C$Jy)2T^?!!7-=ZEr7_!-*L=|65$g6 za^3Bw4u34SKP2M;DgO%0$I;=3?ybc*QT-ReF(-N+V_7Z6i4x%wpZ@T{ojUwVYGRE! zN|xhT_~!4>KZx+dIOat7Aslm}M7YE|%>1Go+W%4SU;fGU-?ARt`iF{tj_d88KNn9a z3Lt!jvi}Yx*FWm#?2Lw|6zKZDmcsu8pJ`#?n?CW^s`Br*|LdGKog3-&f8Z&V|0kr} zW-GV-Q9Wbcd>Z3K_8-PEC(HhCIgJHClp3o8(*L;oHXK6vk7|E$e6vOa7P@(}xS}L{ zR>O^N;M|EH#5pA|{)9KPo^bjfs{gm4{D(K4!a@yI{{N-VfBsxNQU1UEt7`wo82_ev zkK|AM_QS~>-`oGP7UeIv*~T|Zi61NeBV6K(-hSYFUH(tGR_1^3;9eo0)W6-|)mHT{ zQ+uaB=DYCY(55Dg(^qf$Yya$-|D<;QSMVH(A1;voZ^qV2F8{Lk6+cDjgN-yZET9{=N*)5xlL zzUr7CUvrV5Sors4P5oVmziX<*5B($U&MUuF{&0U2WR*W0he4M8*8)C>lGpxc9RD(` zD}MsNP6HN8|4#hKGYeh#!Dkn`@EOi2QT#=G^p*dY$L;@mLzc4zO=SG>Lyt-z4Be%`yUf8#<0kvSdwO8TFhC-M5n?(d;_j-j5@87G?WXmp#- zI4y;N1;4Lm^~aDJ2$%S*D>iD!AIBp9Me4mrFo|#X{}O(9`*g;M@Pmz~Gfp(`GW;&S z2T>wi;t!nP@kO2dRSwH5B2UQpD;9oe6XXXGegwyY1|oLDd|YEQ^Z}w&R~-=k!Ixj_ ztE+$Byc_m6x;A@exU^@MsLy}?Ts);nX3c+&RsVSX&$`*wKjHZ5a%=wc${ncx8#b`; zO`rJPe^>SI`jX=>lK-9yfA6l-KgZ|EP`FFsz~kjbn6rO1fD4at`MMYf_|!a5O@2$$qIt%XZpl{ zDqrE(`IMgA#Yt}B?dH{JsLTJO&qztbPdUq<9sgt_11R?4d?LCy%s1`zE-GQ@#Q8lv z1nHl6?U&~5(B=OcE`JqA{#TXyr+g>w)j!!K`2+Gpgimr4-}27y59#W^i>5*Tsy04L z_Lu+tRrxb+#{jG*5iaqYljnBT>3?Z&ssCWF{o*dN{Mq{7akkX2@mMz2Nyui~ACu>i zhqD={PtV0=h{q@o=uzZd>5Q>!*EXr4n}4+SGR&JuPO^Vk&7b@o+R6T^NDTWYxrx7e z#%}HSU)8fz4nO0xKfC^+_J8<&)Gr`v|FRwM^&o2h25`)Y65$d*KC0;oo&H;AN==30 z;G4#D#)$T&{sf3*C;37L!&;fHX{iSSJv zbD~7$j`$^;ldjU0zhAGc%)-?i_FqHhKb1S;-tzaKhUmAwrVe|QLoQ8bk3$YV4oivT zCcbrB6~6vUXZoJnpXMd7zv@ZoTb6ntoPheFG3Xs}WQ>*LbHNv7JDJAG!d+#%!TTN( z;Svu{sq?H(|BD;R{10Cv^?&LRcl-awY4CSj@xH^{_JXKA6vR2FEAhQ(pW)a5QSz3* zf-Q5$>&o8{?moKKV-vDAh)Yd1pNg(0-o04rCq)5d#F_s`&q4f>rGI|K=YK_7%6fyw zA6Z`@)J|f*GKtS>>C69zb=~+h|H~Mo?|&w}6VLtQipO>OH#k0$d6U$Ce!6@7@qFH- zTZ6v$Ms)<`55PJ6U9dqNK~uO{;M{0ZM-a|LBD*I(W$5cky#Dp}zi;FAx8oG{&tEG3 ztF4#+i(2wIN&l79{D1R)>9+`%ILS@?iwUo4eT0M!!s`b`55(!a0Z%$xZxF(_eS#%75}lD95KIu@3oRd1)OfKb3pp zb+3>|B>$eP5N|zLm$lfrdq0FzqH=F2|E>5__dkoo|ptC=Y&y%5WIgYdcm*g~m z9?v+Dyn(~xF>W>9k~{q4c*cnm;S#S}X_$8W>9+q!e708F(b=Q=$LUZNJUx$^7@~|FS-A z{Wm=<{Y9+yj~Bo1$o)_2@CV$C`RBVDvN{u0{>Q-oX@(pB&*QTF6Az!Btz1_e5Kp|2*=npiE$#l5RN$!ZUo1iD3RR6PrvqBzWz^C`|Hql_+H4r;MK6aw1Hm! ziQC-ef592>L$6k6|3EE#eKOt;Xf7aY!)Np$ieJ9EXI(!3!n^*<{zGVge~3wBDwzsj zYQ--9Ui@Fx{MX1q{rg`F)cuIRd)EK>{2$BzL|V%Jx6ys!|35m#mcOBtKOTNlg&!L1 zul=>6&tuhe?T^(cf1%wCEqv1_{&lMT5gaM|ZAgE_sohCAvTn&8)1C5@|Gn-$$p5L0 z&l>rYzevR&;f^vsBV6KyOMF+u8=lq4f6*22Uk?47KJlOaTlIhZZ!bZ*xL5w8XI(i! zCx7BAz+cta(my+;bn=Iu*4rP+O?=j8pSJ;iPkKnwf8G8Vf6l1Q>JE|q)Qo|D~@pJCTOroyM|iF@%+Kd9vQ+5S9Ze%sMH{TJT?gx>Yo z-mPKzsEzgczwQ&a|7-q#(*FFezw(2z@+O`C&pTb_YdGTzfxidy@tpPlMKfgm61;9M z<3#NbcKuw&>Dl+>_aPi}qU5#zyEgAHe^--G==+UFClhz5M*Scq04jks$RS z?zf2`U7YNm_$`}yb=1kfMadr-EB%O9{!a>(c1Qpz{f*}l-|AaPsh|M z-mVU8FBX(F6ZYD=1`ECe`9b%>egmy)urQ7}Q6jmC4>W7NtSkRZu0i>4ox~cSFZ**? zQz<`{d*a6~ktH!j0noSr!}Ia^7xDVvCaenf)8&8NPvm_AkI42P$8p*};h1gbGfsqO zw42X35w4Mra}XtxoAm$bv0c4+{(Ix!F3k}C&Zuq6f4Y=kK9wDRc;&C#LfU_<_>*vn zKYeIj3tj!!3i5{@OSSM#pZEvWe7Vq92S{WW_sXB&qHYgy z@{|7Pp?+wa+ePR9fBg;i?Z7vE;+tEgy&B)i=OrBCq<7-smy?%6{;2+^&;CIF|H9g^ zIr+p-y;BKC37G9DQ}D}g!~xB-3^sm4oKt^OgUj$fei-fEdjgW=W!C#Lln=Lj+2UHR zf3N>Bry>3TJ|*)Ez5e-g@sy%|7;pV2L;a5Gfx-Dz5;?y5m_^k1!v=Jpg$rBK$BZ@i zhrgWS&#!me*E)_!@5I-g@iAY2BTE0LLi5HI@%2x37EAvj=${iM!X^IW6Kk?{_?35} z`~#oQvFFK~|Fpgq;fA`R!bPI|e;)cXk^iB)fe)fYxWpeH_~$s_N5y|#A%6t;luW~) z{_lEJ+Q0cc8gQCKxWv~snORFG|L>!){+{Vyexr+9{@yR3{)PMj$j*rp;S%5f?P)LQ z@UO@9p%U<^`~^>w<&MfB>3{4nl)p`NSmeBbpjh~=)^5_4|03i+TM}D-FFx6!7e6>W zz&KGNxrt|;G3f@K{Cgj$gmpV&<6HKpwgRCZxiyHke?GJ!X^IT^`UQc_IE4f z4+GyyXO`0bUh-#ut=~#qr<4D>6qNsK{L622bIV_x1N(#g24v?%iR31};=sZ@UHyAE zt`F^P$lh6_;@?*Ov-ccl?a#k50U@w)x}@EcguP& zm?HZzULNl5f248N;9aNSeVbFP@&6ExInnrk@NRq$qC~jF(`P+*iw?g4^79m4^^xF( z_1y6v;YY$vP|r58@Qsa47$?GKZ=h=9q!QuM`ELm;>LUN6-v8OX6!`6vSoKOO{yj^d z|KH)ccuG+>+;*Rg|BU-Kt54jlt~w>&d+Jcp|KhFx!)L(%bg<(u(@x{z_AMEWOwMvwZh>+o-B zB(t z*(J*#1{Noh-?$m`F+n7M7{{C_5iar14~$RO;a{)tLn+ekV(S0D&_9Uq!#L(d_>mi+ z9}uM||MSn3emegn@OxnXvFb-D2|x730vCQLvcQEO#`ly+ZsIo`e6y-f{^PTh{iRCz zzg;Zn{7|{M7A}p?>!JMpKjgRbJd7^)@agD>R*CRy(t+Z~UKr4X_dlDS^~VK%&jzfT znor5nCIEf7s*HY#n~`G2m}+W8t&5{_unU$ok(<&+A5y_P;qx#y8O6FKLGM=g1Tb->e|~ z7v^MY*Z(n}l20D^K#o6o?eC+DkiY%V-;|Ros6XOuKHe3Yl`4q(Bf~i7M2YlHyhpEP zTKi*zWl4*~z$g1Rnx!#LWdC6tb0Yf>;g}O8!X>_;&za}y?7!b^iEr-I%TM^`>1h}z zwecCpa^Oes9VbeJOZ@6FUA6PCN5cLhEY;5c^op^+zpq}T-G8kS7yEmM{kN|e{I4H4 z++3&sJ7E7j1%KTuxYzzj|H0;Ij1%R5z(~Wmft~*bjyX{xy%T@?s#~=EZWWN zKkML6{?huN>h~v}qLaU_vj0#!8Gm@?r}#H~tPSHt^?%?*8^+11|M6V}M5(SiAo&Na zpK<}}|ET`Y^`lXLcCzD7*3qB*iE8|f;s(McPPoL!E=laBlmADR{~?7d<+tZQUV{3c z>K4uupLU;rfcZhr?+L%LNB%j1eti5ls{JMK@lsE~RsWU^KXkM0|49GDuc@P7fAD(9 z!#XEf_GfmI`lo((;#@C0rAQ{$edT_b$^-d9^>x(y{~w*V@Fku8_cfRCM_`#Oe;3r_ z?N57u7xM2$=Q)hicU7gnLnm?>r-Ekk-1s|}aiTXUWV%YW<4OJj2q(N|2m|_-N26;fA8@p{O>uo{!N8X<({|~{|hwr z_`Vq3KSVtCL3Os}H1Lj;+vp=w4@8!AV%)Poarx;vssI1T5RCs^+=@PCth+z?OWXhd z%nuuO>Fh7_LHM63^;n(nW&fKQ1OKN#rJo}EJ6q{L_{&%JvpbGR6T}aUnE9&C|2+)* z<0-sZ_CIhO=lCPVAIAIee<1R=0UUE8zZ=9cCrV^@#LxS2`%azxz5E^In(C0hhhG0) z`M+254+3Y)b|c{uC%K9Dt~!{{|Bf1ec?bFr+-~>3avbOQ7uD~?%{4GMBTfA>ylCn*XbUi?G&#D}c^OzeN?^*_6i|AD?XzUdRcwEcg1l^Pg2 z`+xc~DOd20&xB-suX6YQ?VW{>`TM?ArU~Nv{{&L-zHilOf+#)+;hYmC(mU}gGk?*( zfAO*^e~}(C{+0N4{Kelt3f!K|!k=XbT2deOhWQY|eHnsodKTwh?e(Y#pY%?A_|Zgd z|Le$WF#ea}c>k;S4si>q6}$iE{8jG!-%a)3_x|R;-}2U%+Wl{40H3G8ol^fC#~FW7 z|4Xp;G^|lLjjiVLLjFk2X@Uw{;(Fvyq!!LWlt^ykt3T;i1pAMwf3^*R{r5{^)2<22 zOZ!Oqsoo(z;4XPY_CMIbxCQn^83!KTTa#si^LaXyyygGLo4RP{e@F2Ap}uEY_@=`5 z>feh$qOywrVyr(vc1QfC<8Nr&pPTa((%n-39LMSZNlvymopB<0LpbI{avS^787E4F zOZ=+qTF%#%zZ0tb1-8rj=h!9s`X^YB&N!_CfYG-)W0wL8w7Ug9cmwZ4;FuF7!X^IJ zr{ABh!~gqEDS!B4X~#<*am!Eh{LIUGGfq_AjhcNJr|V%BydA=7^^v3=fN+VwWZwE8 z9sZ1mr2PlKk#W>59{tlgXQ6F<&`#*XXuUJ`7Vto{?pXlGoG5wiuTo04_jUEpL$F(O zT0M5~6E*%9(3k(sn5WEBiUL@fR$HS+5C;n;wvHNuSKYFONzhEEf|GA!>@4p{A z4u!+M0&V*Wy72~_^ZMxQzJku2E&U<&0jTVWntxNJ^~Nqb|Mwa4KQJK4mVbcW|9SI& zVl$LO_&dHohtZ;@*asl6&K`9jxrtvps)_dfvtG!5oXtC+@T-^0}_8jHXnbm`~NGWY7AVA{@>31 z1X1}9cj?DCy)y(CBR}Hl|Mp3L=X3k>#y=OI;McciU#Rza%z=9Q)=0k=4#;-I{84WC`%jSm z-I(2xak}L^JOuKa<#rTA_7K21CrX4%JiGr*f9ddhoGI}G{Y%DYSK{6v!jIsX6X6?I z;rT$6NdLswcNsfZSN``w{=kqVc2B>J^3owv{}lHS=X&8OMgB^Z`$%RDM*Xv0TObZv zPtrz@|J3Z%^q@}u-JeVQ3&)W^a5MA^BKbo&=0x&GaLkDk$xZy#-4|)!|IJJ$+c`W?zF23=9I{mY~sDDS;_+}~a&8^9-Ll5}>HB{DrN)~?KE^nXRoKk5Q} zbAm(u82C$8$U6~!oBDFTlA+d(BOKy{PyFd^bHCI1pYYvMF7t@2|5keZf0ME9@s;x~ z0|JjnPVX%!rK{@yZ_yiZ5I$4MoBzv(Zsz@;QTe~_Vfg=fC`2lm!}a=qwwK%fj;ZzP z!gclbPjVA))8qIgo%|`6D*2z>C!T=gINN{Le7iv-7z0r`58;>-y^j(eIh=8#M7YFz z6?M?Q|9jQz3V)Am|J``C8~=@l@Gt1+4SYCP5WNo)+J*OhK#KqnOs~#@_?{CbvU|c` zG^jZr|BCAWn)n6$@1wO@&5NWxvGeu%|AD`Ef|Q~FBI^Bj>K9ZWTa0jt=NA6DNZbGW zG3`r@^aFo2SE{1N^{b8=sBxhd(C{eu@Ww^017vIerJv z`u8_-`5pMCPkfS}EzrwP_D|f%{foE1qx!$TX^H#~Cb4FLvE@=I?c=b~{@{yJUS z3CTs{FMkh1+=KC#0plbmv6IyS@%#3y`aoxYQ(DXTH#kDJzc`N5{}4{#y+(`^jrRm` z%!$T*B0C!~PLv3jxY7TK(K`HMg>Rf+GJg22MvN2TM{vxE@Wb2jJ%|$Nop|o`qxkyc zQTo5=5yYR}E= z?;m;h|JZOY^gpeE{lhU5U*@(Qe|hmIlK(k>i+!!*h@ONvyLJ30I{gcLTo+Pua~x;? zFUc9)(FXfHw-Mv-TwZE#lH7D|Jpu`!KFI2@={T2vv}gWfa2DjxbjUx}pZxc$_uq|; zay-bwRR<(D@!Jkn*6u$k@NrE@={=VG?3p%<6XiF_>sS68S}wd&C;y-8Ab*xa{&D`~ z|5nA{e&x^4?YT{t{{o-Ouk;>Eesg&n#>ubzq<7*!^kO*52wtlBXm$@tx;V?;lY7$!=`QI8nSCxTz`LziDd4y#~JHM2X}ke&XDbc{==u)=2!&B$@BA z@FTZ2Wt<4#ysatYWX0V}fz3&!4vHI!*L&iN_D=f?HBJ`50)KV`7Wtnn&+HPt{qg7G zDMd2Y`#I{6Q#Q9fOwxLUt7=Z&)feQM*I=Tvil#|RK5IdA9uIE;>|xIT;fmPS&P5_8in6| zEyhirs?C;mm+fye27bZ0QcqO=QdIjZ6l4C4xBeNI_U0VmN6r76gZ}xdzhdpah4CFHN?!f9TG{P5FMsqs z>HqZ^u)pUW;~$xN{qI!c1f+lJfA<^z7ytT`HvXU0MA~0S;c^_O{8awf@f^mc)_fDZr0`hl8>eQ ztm9YW(IviJ{_cT(sO)im@o(<&nBV~S_as00UE*!l|7R@Ef3N@Vh<^P*Q4;(4TGjuV z?JxhW`S-`(B}f-1xrw*_ym>u)>oO`rJP z6Q#d4|MrLf)fN3#>F}R9T!|Sk+4^TQ{K=0u4ur^|i~Z?8@ZgJ+boj;hq5t23Z~DYv zbf=U*@Q*+Fr)CbiQis32G1lL4;IocjC+HtDu=y>*R0S2J>$n_$VW{?AC- zCGNL;FZcfT`p2vL;$zG=GN+y=h>v%Q`A0Zsps%^=-cM#B9CM=N_5VBfU2(du{tJx+ z{tLkCFHr}-RFmL|^J^f!>mf@ERl31-%B|e+2m;cAJ-1zgiOZg){ z*Wdhbe6v2f{12^DPg;Awcvz0(9RFy9h~38R1VpK>Iv{@NuV4B4gHhvu6aSyM>i~?R=>8LG=)Fl> zr6mCps-QtQAoMCIq9Jf0xfDq`FPG3n*Fy0Vuz)C^s3-P67L<=7s4N{t5fua#)?%m%0-h1=r&6~2bd9eQK*2*MV*q@ru_0MaYKL6UhgW3Mh z!@9x1=2~R+P_Q4^1mq1^N9rnqMQ9?S+?bE)-+6^h{*^+0tr7QQdp@fi6lq%45LGV5KzpFXf;9u3DuXO#p7v!hOy^hEKR{Z;2{QfSuKcxZp z!^PAe!Z9Vv5BUV7Tm|@)L_)bSAM@vBQ$YVc@q6??3;zrEzg>U-q%vVIzog+ImWSW} zTz560B|!OuUxe3JH-dsP#;5$prQ@Go>pzvQe`fgbqd);KcP_tvf4cvR@%~o4AEU(2 z=-K@qS^F0N{kz|+O-}9AIO|@{2bGZ~%qd?q#j(GHI9-2o^v_+fGW+XvoFllJ$n6j9 zT-^`l4TSbi4nSE0q1~%+ObJt6ae(>oPntYS{hu}d-v{!$wl~-1za={Pn|9%T6!)h? zT+Gq#Ft3tyi*)`|i|6(qXw2JxtNr8pYxm1g|A5F5Kmhv>z%ivmm%}+c{}O~_N|+EA z^Y;QDw3O*TxS8X-ni%o*_3wwzfM0?2t-&9!Vub5G-Jz=prFRd5Ki&oP|EH@s2?h`s z^Hkql>H4p#hd930R$l(N&eZi1)PEqvSK*ja*#E+D5D1fk2O=-YT=yE-f2r}$>o-ID zm(qsZ__=ugrAS`>S3#UgQ=GWpOfmize2K@Q;^T1EC49sW-mY`odlX-_tpCXYeD@$7 zUv-G@dRdM?)PnzT$B)-ge62a}=i>eYvjJZntm6~EGx-BH_;m$7<{dp%+_LsBWjfUV zyDO7>e-qGE|JZlD%~XoH z+&A?%w|{5p{b78|eP=sHh#Q1+O4obg`xZ5c>#lZ;5Z@aA9-CHS0?1!#{FUOXcQ+u) zG9G_K!VeyAON{vHv9>0BH++u?<;MJMty4>6^1F`nE0hv@`L&JkywUCL7$Lq(1$lu` z{s0_P!eo_y*ZxL-%jBo{>f8oIiy(g(|D-NI#SWg(<)_$gI430uS;Ykzaq&uAac+VC z${wAR1W$>lz@Ip@uy9%``z|3n*Pl~7H8Gv8(dv18UZHWY{TAlvH}U*v?b(}Y`x$2$KiKjo^bJ34MP6yTg(Slr$o0^)RAH?|^^-Fku`@}Wj`5O(+wd2=>=WkqJ z!TGUkuoz2?pZEJ!873?L=UP-GfdiGv$=@{gTWyY9|2wLf?QcK@-hWYdYz<=?576!~ ze_&qk|H<&zT@Uyl>-etQ9OCbc4u5j~tu1BvpHTdRI=4-RVqz_5JAZ_a*0jBEw(5suKwY zb$rbszP2wq{BJ(`_>>I4>7N~ma!ki}-Q`Sv@?muN*Q7SDD#JhfcSqtruH$PC@m(K9 zhaVjE(w#E=-2*}XlRCcZZin(8hz>tzUA^iu{JX|iBFdLKzUCDF%;Wud2 z687)Y@m+JB$*&%a4*%VL=eAXl>|YiO?>(TY5*wX{apcWGcCO6d&T=iD&l6)FwD}zO zGh;u3KiKZ$`DHJ^a0KLUW{rPu_yE=q#8%Pc-+6NR|7rYt=)=8zW%~a>1OHzQCW%DS zqQno!zkka0Z;d}!GZey8zgw}IM18GbV02MqXHl=x-E-&p>b zS6y>$583$9nvCX5^MUq!{CHb}IsP3~ALe#Gfj08&Xht0dz~!}JKJN^i1JV6mf)Cb& zwM(NJVL2i$=E{?mzn0<8qYFYI1v}W|2S2R_&&Ca4#PI9Eero&R9Ej~-^GHpi!1t6e zAui@ypX)wFhQBYJcZt+EdwlxRTKBvC8Bu(#KFGfZ&VeYtYX!&;$CNN3F6Lv-H2hX( z|KrcZ66LqXx0$8}U<{LXer$$pfo?4bt3cvpBRLyRurI13#Q z%q~nc55sg)#F%1&7_=zqnm9f;yTFqvyQ2~p&1L$yVSc(dRlpiX0~25%EI+r%lQ@>= zsZotj^F;V%)TGLkK0Y~9+>EXG&E=)AJ3`{BOMc~!@H0B zF{*M0%qPG&yfz*7M*>=#%Fh+}o)RX+#r*nx8JY~=JD9I24feCIUs`H);tE{Hh}Exg zFedW^oCDGN6{uf}1mKtwCd9?upa0@`S^bLJ*@guDdi$a*lGiT{<_&0y69CJ8=kqMC ziQB{{<_vK$Z`FF^Uow36JMD>5tm6k9;;U1l!}lx?O5>X^UTZ_#27G0)Gx@dj=<%&7`h%kX!#???jkbbRFjx%{^HCDGv@4Ba7pKSRgM+LGXW9Y5d@Uz;8s z{=&GvEoAb4pj0Bk1vd{l6;* zVxp#S4n+Mw=~auUa7+mk);r9-X%(dVQ`}RlBKt}3(@$6~-JkHCs>GE$gc04JP=oym zgE>POvHc0*dtAd~hyR~L4OYtZf8a}~e~(rn`GYj})4&qB{zt($C{1zfFCicMMEi5E zMgJvYI+RU{4lD3`d|Bxk9zHQ@A6toO7He2!_(5LoRBtzLQg&fyal~g*Jupc$EG3@K z>o7z<4GR%gQBJzolNkMcET6F%K

      oNf5; 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%0DGUDTjko%#Z4)c(cLg10%lqbk-JdExEIq7U|| znjf6qQQd20s;^$eR+@cfV^hD%DeHmi2_x}N>>kj;&%Awqt-Vr?U#UlQA$t=nv(X@8 z*c_Vc6s6GICk>b~)(e)3Lgj~@6t5&4j(@}QhW_1Y+phP032poQD;1cpT_1*@ZhaKo z``y+@=q4p82;@g~9L|ZB?kJJv6$h!34ynjn8YHfMN>73W<{*--978En@lCl|?R{_w~tNid31? zC3dS(t@xln-{>*P`Lp#CV~f`aWP&}*&48iV*9LIQ$7USJ>otv8?THzAKl;r!bJg); z&n)O`=VzwQ=XLYbFzdU{Pe*2c!fsXo(Fk`?H3O47(16cD76HpULhR0+AGM1F`fEtx zszqI6(_p|yTO6vR!?YxkCC0JBS;br-2-_0I%){MExW|CA4xrda-l5|ZDnj%{K=Et5 z*M22i+@N3VhYS+WpJ6|A%^QAn7T^&(lz}Cx1fBj`)HK^hD|_f&bBoOe?;ZE}*RKPL z`B~49|AzcyPh~rG@bA3myTZRAFpWjugGdFN*B!Alv+YO>&tYu$kD9?Sl2tl)$ z>3oTcK=$`$PjK7okIpWf$lv2uXIJB73V-YjfzAA*o14lF&uR=;_107fNJ}j!^~~Le zLRHQKQ#N}*!s3e`PEb{JaUDny_Z1HRPH-x~sn<$4^en*_THeC16t;${@|xzx)2ywq zUKsUetP^CUokDD8S+c)Mt!x&i$Cg>lU;A8!@ z0({3BT-Q9QiQrpY_d*)(?NiFt`_1*T3QP5t3d5NSFDh^q+AAt7^DA(jar-zd7U0e= zu*S|v3Wr>F6su9DFS_+4BUZQUmiNxz6x>fU2fRj&DKo#wje1}EA+j>I+Rkr}=kH)o za`W7aA|P}A#y6?fVOrM?!ex>$!iPP1~BMeQoOV zNX$|h62V^Y^3=X_{NoJ9rF;?XSPh6}3}<;!X>e50bk!F~bO#0Mws(u=fz2u^c}8SM z4j|P;>frVKxcG@s>--(Eq_r*xf0JV8!>_x9LDq{dZfpzQ>-c9BDG?4rQNI;Dk= zBMJ8OP{7;np1ZoV(@!@c<+sr<_xecptNnX@tNZobs~MFePQ|kx%73O^c#m{)t30Fw z{Z48^>rln#4KKr03{>s-|XYYqLHo3n~q9PP{2GZR&HiM7n;qUbP0A z&acy$K^||187{un&@B+G&k1As7H#dbcre`$lb_@ru{j?uq~YzO@U$bQ93L53Iiitl z=suf_POixbhi+S%!tUoD4G~XlncRR=vgNvFrEHlpxj_EF$=W>G*oPGFxw5s45O;}S zof#2s#ew>Y;3}53QWxY$_`kjVqzzY36Ny0a;OYKA4~tQjzpA# zuGifNoXN&KZ;!c>IFA%{X{UK|801mIzxo`e`SG^w$oIq#1(9egX3AzyYACUBaBiMH zVMzKkb*Og;mDxM_=>6C7ixB4prEtZ_NQgC_O}gfstu2VeMj!6k4e{MY#(xs^h^>P2zoNKwOziR^ z^`V-b1J%SBRslTDrxeJ9+Z4EN(W6>?nh$ksKD>}z$zYGi2cbXmVDqaXLOmnp{U zUbWB(9rV3CwKsbEaHTVUw9qX~wGdk*4SqQD+q%5*1kAVC%Oo?jtr2{4Qe@xvw}h}1 zT6hvk%&<)*$hgSZ6kHy(qy(&4pVHb0B(nH`=)esCaX>3STH0%=M29!8S7nS-)KOJv z$y*$NKqq!x%{MUo3ur3dOyp?^P>UsYl66ZF^KqjL{g9vJA{lJ`!XOK2He z^}t?Vh?0OVP>kppM4lZnN^C_ljBA?k?h6bvjGYIryapgB3C^D_|Co{+{vUg90v~0O z^p6M3KoH^#M>KLskO)CM0$zy_O)%&a2oi+V03N{uI6x^KbLZhtRV$CnX^b2kl3ZAD6k7n#kf)4KN~a%`K=6qvj!&G43a9RUHD(PA4ucT$u?Ykg z6bVEqgp(W{STMu^=VI4|z(Z8811o;M01gFWhWL3u1Qrjkeu&?1zj`3Lty6)k2g~AC z761T8834!K0{}SfgY}~_rvAC6K8vXdvGvy#FpE^<+Jfs^6$Rh0JYF1pN_gDm?>K%g z12yGM1<8um`9mx}m*YG6S>A)6^?Pi|n(^}~&xvI4*4AQf3yldXE))5^oTj3p<$n&+ zhIczK< z7K(i}ldZdbqSF6@Iqv?U6Z{&t{a`b}S(-W-x1HBFkk3tgE%K-PPq0%~r>nWoD3Pfj zUQ2sc-Zp%wwe+w0xuYtQjqq_eP)A^p({vVc~v z;Ifzm9cpvr49wU9S`?mx_9-Q8so*L~{(?w%`vXe*;z|tIO!xz^J|+*SkMt)2vV||2 zE{buraLZ0Tu<4D4anr8evT-~M)HCp0u}%D}5#?%0+RTz(!-AyOqC37i*tMu}rGtZ( zH=X8P)Fq`bJnZFy>hF%c;gGq2W<@vFFGek_!SWGYWHFtz3t( zIu_Y+WP{g`fhYCa4X{(;HhS=tHC5$=t*PpEq>*-AQ}UqwJAVQG#=e@bjUiB_AP{Ky z4)H3X8=>S)qlF!z$FNRhxkpfNC&Adpk2q8tkSze#pA2kNN8%TCbU7AF7=JQ?E1~@M zl#S4ZnLX9719KZ8PJ1T#`_R0ULuL7RK4q!j{ZkB0esM0&(lob(skNf9s1&f2so@g5*@uaL&No?jLqDnj6Rh)c+M7#R!* zX1JbXZZl=O2hQ=_g7s{|Iyivm^&TS0rgq9`0p*q$U3`#m?4EDk210zfW@uKqL zEGV0Rzk!D`AawLz`B0spM0ggIvG;4KFN2m%+v>3+gUa}wV#W`=h5S;268jy(DTrYy zYDxyABGAF;p5;?d&IAzxYce=`w6D(t)P0N}{aZ>KpH9G(k%p#!N|{gT&GnRP!$N)r z7At%pfbV{f8j=RyBTM{uZw`{|7hnQn9Cwhv_7+x5KpF z({r3LV@mwpCQh$PK5>A*b9Ggl6a1;ut5Pyf&d%}HOhzMEZD1CZe@oP)zk!j$X^|hg zqj5SSKnE=R9D8j_94Ds4w~1K^g_0nRk~&19Ou$sg0!GYWqo|gCRKl+nK4p7%2VfaG z$%LrGr2u&YKUGmvWfjoJb>zu&$n)2W6wJj-{|J8{7cYBZ6o%AAG}I96cbOONye##?nPT+KH!_`c zFpVyq*{spX<8BjLzQ2LpscEBv+DA3|%H13_U-G%EUtng<_sb#TbTzXSDOSWel{Ho)~;>D?kupkl^;=AX6cmc?dV;>57h(+-js&19CLzU z*>1BlR)HSgiOumf+gW(I=a-Hl(^WHmmK)drc( zC6oo%nH4Oh-F1X_=%x|Dy7_o*wg;UXRLA{Y2Ajq|cxRimFzXs-NL?O=7NK1M1`B)swGhX4R_;beu{Sw^%^+3A1u(sH zYtm!ZFesP2lpb=Ht)KNaTE{4t;)fTLPEJw-fe!Bf4017(82n!FSjWcTOH?w` zO6{11GE^cU6(VWsNbzjrSt3Yn8WFev5yT3vkx08y*-q}LtjcbIyeC+>(yKm(vpPQH zH0-(d3z%)gJ=VVit>NL#WCIGKU;#E~lWm(w<&8EUMQzIF5;3D)XEti191tf;7tyMP z5a*Qz@&-u5oz<_UVHn>QlJoTrPbZi&)E1h@OCFAU2DNKM6Ve6-UO+S<776VC0?ovO zIAf@g>xi&o_Ck&hG`tB7(iI)@pydbUg1ZJo^yKh@N~jIvIYQaRp|i7#`=6avoV)Vo zwm6MH*%LXxh#UW%xa?Qm*bia>q{xO@RZ8Zbo#pQy$Sb%Ngs$UI4pisEp-mI!IxZww zX}Nr3F->uBp*#0v*u2PZfae7Fs4EezQpcuags+f5jhKLoX)Zz*GAmzh zbRucB9nA@AQK#+W59ytA&3bABMs1*Ym`^D9zCfUXmFb}%o+Cn+A&dIunK`UaDS3uq zLvAI?_u!L%#o^<*B+~@ISM+4C3q+7bhy;Jx!|NoSp^f=#cNf;kPYtvZF-~d}wzOfJSDAhD}G_^O`4do$)MaavO z)<974By2DQR#12*A7S1XRoNNGJ=7c!_cz3dUubG|&s@44a zAw{s7EgF3k5GY)mgb9vdv+JCp~e8W^2rn?&m2+Ewsp>Knj&eZ& z$h_0HqY36sGn?fs_sfNHagX1 zBTA(FB<~!Qm0s_sXbFne!`KuBpgz7rvrqIVS<2M#sdg?;CnL%JVqg5z?N=`URNQ#* z{DZ@gP&P61*C$>-y^HdFiQi}*7c0O%3hd*R0AT#cMhGpvg`WeHwPCRZSnnte>g5v) z9zU@>Wq?KahapFt6!|5T*7mR1k4gYo*mHHmu}Ny}XClRWE+PzQlz+IH8YR?f>|6i` z$C)3whh)}Yb_ImI88?d6(f#;c0)lVEU}5P9`Tu5fRv4v z$Y4}Ojxh6XHTH8hWhw%`{N6Zo8_GMOyL?h=jzp%o&hYyQtdaMdW8;kY>)q;`of_YK z>9Gc8*Y68CEd=WTP8s4twZ1r~5XhTLBA5PLv(@&>k-&@lL1&|h<{moIQ z;ad7Y-ok0@?_sugk?x`&ZM~~WpGTq3qfMW2F({OPB!Lz7oPjK^%cLJ`$D<$IXA=!* zD-LvoufBpc@tO!23ookp0(&bchmbO%rHdg)HDEON;Gm$Q; z;CEK#xWn(Xcd9!`go#7&#{yyYfnVb{Fz&EvIxQxI$YHRIgRwQK252F}BULwIi&==4 z0*$S1X$OZx;KuBvn{j9AjrsITZ;p(G$AI?Hc@N9^p(APeKGnjpLxFMwfdAd^A;y8N zsqoe4e-k_q2riW)IEp1V+=HZLD2*@!U-ioiQH?Ebja=r0TB)a`xyoKmnzJPs&W$da$-9^ftLN;OFLo19 z9r~X(-kk4IPmgWR81L-_8OJne#t>H*Mw#3V#<(QP7=%XbV;N(`NHE5d{6vhgeF`wP z`4I>etlkwD=VaJYRmc-;MVS zDm{lwT{#wOleT{{(&ac%OknM{KvOvX!>PAOl!(n*fMr&I>r_s}Q$!_}Uny>-0Jy^^ z)%9`zsQQN$Uwu}p6ZQO_kSqk|f5GBSlVR%LEhipgI?DMZ$Zca4ED$^K$v;*XIRymd z9eS+4qe09uv5Z(7r2ZUD&(L$#>>bb) zu<)#HAt_>7jJsibE;mAQ!*;t(*wci296E_U#d9+dH^^0n?UhTr%w+45T->Jcqd+F} z?SRIH#VD+fzX+QTNV!?8fz3>Ye45yg>1!4MQJiOJdmyC}g!j;?1lgs^cVD};3nu{1671*8Zt=WJ& zVrpeuP5}F@}Kn+BsoQ%rF>F{^o0N*&mZ)+P+5n*E*o*A#EaA(S1KNeJK zRS7vcZ;E_G0n7TV#*e0Lz%YZM(*XGTHJWt|rwTl~=wU6?sWqWw!CiN!o!mW+dxMiZ z?fBnvau3hK;vPGjb-;k`(anfssmJ>wo|oJUi(GN=E%n#)5@9i5S6#y*WIs`-VnNvN zw5RDZU*^XG(5bR5Gi=pG4k-?V?wQ$j_&|!jD)v35w2= zt|6$EU7LMit-1&!+1C0yd^MVWsZ0{@p?hHI2$Yc4)J_2ktQMKoQ*c;!QW zkS}A+JyFAtdD`#(ef&^&|Gx0o2fu$8_$SJqIq)e&AA&ssXYlG0*~~K0+}V(3<0!?R z#nDh$f)E#>&Spz%h~j?n8$|s_+mC!d6~9RazYHhlq_I6n7I${KClx*DN&2iY`M=wT zq&L6AaGSnXj>oogH_GnW=}PS6)~h#hgD{Y#_W{C4;`jDmWyY)FxM2Dzq;VH;UsTt?)C^QMp$ zB|1kdxpcMQN!o=fvQts>(ntV8zCB`S&PUI~GKenYTa-yjzjW2g_FOoXD5N)}Hl@M- z$DhfF&G?u9H2(C?3}WUP`a+erjs%l3g6ZbRpupPd6#U!D#%W-E3$Chb=!oBTo7w&V}3)N9P>#aS+z0lM&5S*nYcL`kbrRkET1NY`;@Frac4@k`n z3pO6|`G8@9$E6tmI9ydqI98=R1y)8sTRGy)#WIaxkoRPNFz8mUoF;@UaC(v-+gzP% z$t(NsT+eq62%G2)(Y_lGTtDssa%%Mu#G)boyWWqiBsKzV7@EToW}VaqN`Z7EG`)@$ zo%f1Ksc-;k39b0My}!epCJjTA1JW|*$@t9P0N_fG8wJy*R$-xG#o zGKZK6sjjhYMgF7(q@I6Y17Xt!W)F{0#5T117Bqyw1jL*5`1@e$QgZeIY9#_K!k#4y zk4aMR^kXn=RSNBym`e`320{Xq$_398Xc_S=ae~R2d`Q8J@}187)N>n$dM{|ayf}37 zF~}|mW}lXso;2-LxW~giYFAB2l29u0g3McHEuY?fXi|X$&Cu-%?f|o>&4)kG80m{z zdWO><63+9lo{%JhjvR!7@RO;Av=jl*ePO9?77rtzy)#|cW#ChDY8qsM zd5Yr<-HQCdIik5a5r%*Pk1(Ki3 zfYl<$z=j@B4QSLG$i#X(Q5-rKj_C6<>M%DhP9IvcwO~2O*toOMyKYP{ZA-rB1$1rXNatsP8Z5yFHz z8;l@sXN)_fDJL@+qJ;4$HJCU&%tWQ88jqrIBICu)K6?rl!EVrG)q_YBYYPee5Xz7@ zTf`CEky_;htCcxne#KKcX%6{yb4HRM!KxrQM;#n@a|ZGsmUF`T)NpvXN6-d)a~7lc zii2lkMxCF{CLOX4aNJyp^B)Mf3FQ6bN>rlVTB91l(I`6tH)o4{QCp{T<_~h#oh<`R zMn_)(hr3POzXA8`f>xCs1KWOt|Di9ZPPqw+A!W3fBV}}Og5?*EkHg`DKw^YI@NFhk zj4y-Pc=10)XT5|UQ6jU3E(`na-eM|$iP{3DDXiraF=YJzmo}3{BxFXzH`saayt~IijYE@=PuFJxT3k$db@6+@o+f z_WKx?9JTZhZ(()R2Nv7WVu!>k1L^~L4_<~Ltm7E!kfzNy8ASd zQAf_ejkvx-Tw(B6$s8=Ojgk#aZ3C3T!rkzd;2bQ2kaX}lmI<|YKFDXjI_Xltd?gb# zl}}G!WO$0a4TPanYx&fr1r`(jI^2wXiW5pwPasB1GZe=%MUAr{BX3)#jQNyly$>hq z{@#Ok^79d9i}=^1L|_vA7SsIe`+KkTw|=nBm_BB)R}f@SqMZO!xr=fF|3p6SAv<9s zoiS}Ekk?Z6`qd5oZu%sHkXQN0U7nu>Orhd$FGC^tKST!QM7pR>rXZOf0!(ZAt<<3R z3GxM&wq?`Qzu*ZMN2ipH@%S-(kC;(Q#Mr@2l$+$wt^@xQ08W^`E;SL!|6~OfKIj(Y>gPc8XON;!h)6E)j%mm z#R4c#)o6#Ra6*j-eG4&Ff@h=CPyid5%Y*I|o{B(>!YEf+BrffDcVdGun^Uzl57+Ue;5wcZe5T`**Y#xKGfVB*ffiu@c@@U#sRSNQJ$V-!MJT~A zg4VrHkMzL$Q>A;4!E3LFC@ni%aU+Uh;tdU+UigX$p9QEH+eI|faJ%?r zCY45DTprLEKjU=&7exDyab)}^xEEZECSvj>-B@Zh*dA0Q(jj$A)mCJ7l<_0uW6b$` zs0{)SO0Xua5ZUToSy9^fCc;5`Ql|PKQ%i$is~O0DY%20csSORG3zh>o!fGxAS;!Xp zg-#9_wY)^-rn<2-c7RzYy#Y7p84`#LjFuKHPy%5M8RDtolFfZ!{74yOuZ|x%9Nv53 zlj)zPLnJ|m(BT&H;Go0uP--8_@c^^o#)T8W{&2hTD~zl8_{4v_CeZVj3EHJ%UXf_} zRqAuk@zreYQbMgV`wAN~0gT@&%x?qgmoZWR$>f6{;;_a!y_w&60|JgPF)KKhn9ta& zYh+ijDEOimN^w@+%UfN-o`IWjH_T@YPlSw=BACReSCSpb`^$JTrHIN3T=UWPdOdU% zQJ(zfIF~2EL7so&YaPO{{EtIVT<2*G*98A?vC6l1+`x0APB8VmkqWbY96>`0{oZdx zYH9<1m!q&j&j)x^OHu{h=Z=AEwo$6Sr#$P?xpkh+crQP#^Sosq19>S1Vu1_su_(m* z2=N>o6;wmINPNhkBL(^o3*jd~D)J;X>?-&LctRniI%fbB3@Wv=JQw{clB7<2M+<`T ziP*=S&-SUx2crcz#}STZ#PUc_EVF8=fCH6bJktlL)8-#*crl!|0Oyp^QE*!bKcb0G`(bLd zUC%Xr8w4Ub??{1wg)Q}3sW_ZM^>SVOB^KYZj>Vrf#s59YGO80To~Mi7&fW zu@3N;xD|RvD|FEnE@Fi$sW8gGzs(j;+ucw4L3BRDqsW%sAcH*6mMIVE_8|)o;IK=d z($a<{DQzfE@E>1&_@sWtx_sp`uONsD|EvWOp;-rz)Pmd+z$l(=iZ_uq?;V9cjCm!2 zv>^&s+B}a^ls5f&*-O~7<_)GF$;bM)Hlf5h>jHP6DRKUAT{DUERaTtD`50d*aSnM@ zB+ka+R^qgZN}P50F_5Ru*W=y`Fhz+=dlA2Deb4h09@RNeBPlw|WP+!@kUBI;C*2Ku zieH2=@X8+Z8rQ;-9QNelD`#&RmhcBoLosIQRp+?xd&IooU5fXd4yv#F{)a`;`fp9f zdx{R#)_wnvnD>FB@E$>eNoq%TX+MzHgI(ct0IrBR8d;&2!ZPVr>XyFjmay|1cvKZo zB?Ea4kYr^0qfuCwa|XKQ^6;n}DYug4$iLrRYYX;`7VM5k8NY7SPeH3vO{>nflORq8 zkXM5=uK3!~^aW0GzIJopfB6?p3%^_s*l#HG_}^7R~w_XCYXu5#k|@U zt#yXMP?=Xd@o6yZ{g!TPw|SKWJq3@P{;8%`3VxF5k5AUZd?wpk?V(*a%;%bw3FdPZ z0IgtAjONE(^?V+mCG+{44bUE*S*7Q)6p3mNH;gtTha{Sq%Nwp~HkZ#hCT=dDh_7nZ z>zc7jz*uri&Zc%)Vml7P)wW>;k2clG~i(B2l!E4^%}*%_E7*M>(h}^nd{#=sUreoIUXraUwGgn@QP>U*$Kqy zV*D7$yO)3wuA{BGpVAMpq%Z9W7P#25ssf?r%?dA(@ag5}kC6oj^*9eLmg0no5%eeu!bvePtze60>QU4T0{br@e@ zU$H=n+gxzwBzD-dw_Mlb>j*U4)UKxdJx$8bm+zjhO?i18?JRw4Xr!8jpqk-=J)Zv$ zd%7o^ZepwAd8R+RSvpd8^A7lvWs9Ho0Djl&aq1jAqS{~H8I1d5S7=tq!8YQl-rsW? zW6O+Pa6U?mUX0E32`mv#eQdhC3FQ57t{HRKX&`w0bS->Fm2dHz(2ep!{ny*>4)&m~YD}cv82dtW% zrsWUi3HYDzEUY!riV9M$RF}&h(Tjt$-r1$ncPQb55nvk59OCcgAqxK`C)je9^HvwA?8zrRHqV0 zEp3ah)N>)6wi`}TE#}ivgOp0wV*V;qSMNOb6uWhOZr#X8TlepW*t#O+kB_UnB3kzy zIF|MD@{(J3zFSwM{Fh&7oI455Ggue$RR-rSxAufe+w!GuZ4vU%o7z69T^Mb7oLe`m z%+~GW))l6>!PLb@8H|-8b?y4n&8>d?Ikx(a*0$5a5IJ#8Zx~L3!Sj#hDIf9`-ecYI zC70OxkGb_l9o_x8?zkp+FuwjgxBi{y+WJ?z^*O$3v8k`u<)Zld}_FvTX98+JDZ^N+o{$FnUzh|he|Cn39J=@>S(?DQW z-F`5>{yew-=jFEkm2UkG(tlH5@3xEL>yMAtM<}Ca_`Ys^qO7Xo+Hc4DT0cm)`oZ}E zMDzpL5k)^3-p!rT6Afa))Kl>zOo@nZQoV=5Yu+=dVNeT>QDY&~_QUrud93{u^Sdp^ z$EcKQ>S_=N^E*Sk+O)-_CkkyxCnmzaN&6>=r=?MG5s5Ez=F-b7;Y+nlBmnNY9yh&* zBthOFHO>GaE8_fr6hJQ*z^sl!IRa=60Oj!jjx+$Yta;TT2Czqh{R=_dt?(FY{{LON z3*`_%IXWK7+f-N44{}r>uSTFqKjyjsmiBW2Bm=-lNtz2yKkhUDG#Y0`0gQD4q(w3C z0Kois0HX{5@)YjBBmgUa4tGK9&UJBU0}vO*gE-89(1Y>vIqqQm6|QYfg|~hzBo~sF zZ2_QrJb*W#TapTTD&HIhFvkUOsn(JSAO!%nHXb9w+fZS)0ifq%UKGG+7r-q;+%8a~ zm>UmZxB;N4@cr570+qgETwWxq@^FD8Qz64l1t;B|3jfRz*jUj|!jHzPo<0OiTjwT@ zgE;=*2!a{@FIDa8HOH5T{M`Gp{>J0Z-4Jdk7Q=49d({ue2>)w~tKpks;%oRH?qyB# z*?nz?yOCl+R5W^Sab`C)&H&IPZyyEF%LVXXZFH}~o~KRS5-1e|>L(!oUpG{z*Jbli zmr@R#F3IBD=COM?l_U=#)SMJ`yy*>t2fNzdbOlo1d=CZZtqrkrpqdcP`UlUp?n`|i z+n27K123VPQF4kiyQB;wF)bdz2m?S9^nFaY!{d?^ax?Tc*}ZtWrfQ1=p3m(+}`fdA=DXn-VUE$eBv%Lg%EL|w8V z)TtO^8u{{)<_~jYK~z3Iv{(3JDwRsiD81o5E{f0)7olOhWl92}H&KV=Btka=A;{N3 z2Bojga#5nUGt;0%RXApRM;L4vZ*i0z-=hGz3m~g6sH?fS%qK)WzKh^v*5kY4TZ_w( z7+iL}1mZl4+9Xc7U?Tp#Z2I@^6$dqZ6!EC6TCNF`1yp(@n~4KYzbCi{s9bJPX)m0T z7Dc7Mi%P?BcAQ>B4NI2(cLS9^29AiBJ#Scdkp~1v%>^Hbp09cLOJme+n*f<0EaoS z9Q`>TAV}I&=?`+HLfp|fR#F$qQd0myeu?Q7-^sQo)Z@I)lz!u(e`AKH72+GjUMVzy zUU|r(($KA0$`{u+#s|Ir2czph=hS1s&t3m{VYSikf$s8U6OvG(79}+Q&wE9qeqMn~ zxbpFqaQFXnj8S>Um@dQVm|6`O>M~QWYqVarTkm?eUiX-KC9K!q)Z3nq_U!t&3r=Fq zzr}9N?Ys3TvBf^D`Q;jo=>pcQwEFcjw`wo9>SHlgzg~)}i%ivPq$($z3b^&Y{KR(h z+L(GzqMq1?Ox1zWs*YRrPj1zdW2(+#lV_QFd(L#}>T~N|?AH7K+h{M-=b&DDQ*RaP zS^B&Szp|!J7q{lBn40h2g_@h7>5&O%NsE>~^W3UOx>awDsXFiXsCt*FI)YWT+)R&v zgHxa%N_~(FeqFO(FYvkRwf|#HyI|_?@uN{)%TLF8eVJab_vhc;-+S`+^<`#lhiBX8 z&lLsclL|mH@*pe`7Pr2bQi%7nh>J6 zyo-2l3!TUr?ell=E-LDnGrS`X=m4(`2xK8% zIzTH;r(-l8<<04Y`vDD&w0zjxSuj4sl$->vm_~};kl{ZTQDn#)ctaL5{0zZw=VS|& zyEvhdh(s8N1VlJrgZc>xJtQZV&N$6KO0<$4Jl20PWg=QYkz^EY zUPQwmXyNy>@H1lIchT_u$ciw$gOlrYhykPPJGTCrw*ILx^^Z06j}AEDr=gH9 zXSnc$6UP&#)3NwV|FbRpz83ybG4MMX_~<0z$6#ma_tWbO{}))^3;8fR`-e)Bb4Mrh zNCc8@}erof3M1kf@is^-9lJGQ_V$DSI?7m@p8I-B58(|5e>|9KAj>R_-TBapQZ z_TOC45!X#Q>3B-_4-7dOxx}K*LtgIi9CsQvCwUwe zdi}jKZvGhzs+*9j-vUr&xDYQx#?WRvl;_Y*@0 zfm~Ht=dm#F?+ZgfK_kYQfi5w>W$53Gd>Ca52UemJD7;>q0ax)wQ|US)4v)xmeLl_2 z|112{%kU3^;T<2w!pFoQ$YKH`zPjdz7CQLNNwFP_EU<$l{d3RH3H(HG(^`Ow^)DXq zGZwJ<6!;ff{x|E>kXX4Jw>~|6m`GEEam)3HM*f2}d}O^MVN#d%no-Xik4peJNc$&8 z+c&(|6?`W4LoO|VjDTO*zrSyRcrOl&Bi@rSeH8cyzW%TVu1(G3lICNL1)7`44 z)Am4HUa7P3Cv{+cG$9daZ9abF{U=#iveeHflw z%wD`0hQRARr%?a%s*_5n!okaTsAy3L?_@I@C95ichR?BZUbpK4ioESB<{i+ zq5ot)-~>NTw-44sgE)a|6mAkHu<2Js^&0L}20eZ{J~UO-VQ_FmjXMo`o6VO;ip?T~ z5aM?cX$PTIBOujuXwqh$@mOUz`B08mz7x<*Ci&NhxOxwb+_e`2H{e0-a);cOLo{8* z>%D9NBJ)rEv))8iFs`ARts$;K_ zh_*2JQh#R=s7`XWZH{h<31oW-D>KTSHJG1)T`mgc6o+tl=)4r1p7Yiq85Z~*8%v(+ zDJv3X?=^B6jzsTa|5D((qPpqiZt>o_O-hr0k-z9M&=_wj*m4<}qC_3Chu8=kV--hS zaUk!+lgNz_#*AmoeU&vz;nf>Ef`f%;NnQ>s0{o-4NHG0|Nlw2_SQMOZ-*Z-OPj*&* zcc#G34#;!J z<=7D@((p8);A=(0$IPdI1*aAtb9G+$d)W4Td<%*uH=jU0GI0kBSkW-6uGkFo~RUA+Ez=E47HI`Lg(O#ndMk5 zD6`avY5e))3|*p)M;>CsS<>*IrD1njjceaKvjL-FaL9M%ug}QeQp%umng7c;YVr*d z3Ebu*zh+soW&21rbGje{OmWF$*g(Ah02z_@zrsa~{J+^`LU0)7XymXuwQLyi#ux67 zQ8^p7MRoy7ksJ<~21^Xi*R(;5cs8$hhxrV6A*Ldq_+h&|Rsf2LIvX~qkictd4a2bI zL&E;{lIE0)k+9eHZ$`ry3A+hAN`jVX3HuSg3bSp&gGG>jH{m~T?QKFxI;X*Z zqe#fw&Hj`Dy9R8=JrBsT$wM*{v#qusMxvS(?F5hI#TxqDLLeh1Hx+ZH14e54FAaaz zUfjH+s_xik-K%RrVjt<1@Ta%-N_>@GU9441!9TYN{{9g%f5`Q?>Z+dCxZ%WR>>*6lt9Zh1BLKMDB}Dj|IY|55*8s+CQ~v`(xtU2g4+x@r7;O#%nKX-hUZr73$ZF z2r|ZzKSa@ZP|%o1G^G9Cn)WN~{Jf66#$E+<$3YDoO~*L}tPOa;K?NKi!vjt#FaT1o z2OMayvm>IJ>owK@yv2cBMBS>Kn<4V#?529-LW{TBo@EeisFERiDzh3)Ba?Z$j1Yg; z_>DC9A-redMP4P%(q(-Y!fg`5z1AGMnICq2O?UZE zjz@w{P?5;{AeKY=m4JSwq~C?2fD6cH8EX+De>pTpME`w=^f&do*RPPt9lQASR-U-dy$Y z492IWKGGYBsJMN3Z8ece5j^Gz9)EBf$AfME1X*kZEI~qR6_9mu;nzqFv!n@3JHP#_ z1@23+aP2es(>wDXj6@R}duzAiM^~NL9}iK$)o$>2LgeO=j9?F)(iI=Lcmm2DBo8bs z_#dKBg--b%(TI|rD+jCXt_T*7w0}J!Rd(P5*N);Q3cHpb1Q!nMec)W!#&Thup3rG# zLN|11I-6zw{-zmiZV}pm2Wv3Gy4y$VKJ=D8@P0gW40$={ot&V*yB?PQev6NU{f%KX zHSXwGi7IlcVPX^fnYxE#+)$nn|1r(*=k**M+pL(01o@B;`QT7K6jMH6BZOFWjvwap zkQ@mnef=bKr-@ZcrdmrALe1^f4F4A8?76mI?)_VOeDNR(DdYdM%GZAnj}=x2B40~04xF=pl6Sv(en8622ze~IS57Y0#L2)Rn zP2CJa2Ti}9XMeOw>&pkbKk91Hjw*mH@!`+AKkAhLUp2dH?5G~#{^)02f1W6e6*vd7 z{%ko?T-(+r)?8Kz{W1#luj>`7_(S#ppwO;f~|HGnO{4vo2XxoRg7ho9< z@U;b-iXiCRVND^5wz63O5}vG|uK&zH^VUA_6ZAVAx_R)E!lWe<6QBHvHFqB1#z#GO zL@Z~Ep4!qp6aT4b3P%6lkACO+A1$>`H2NJ-{`_N$@~DsFP*%MxLXo9Wtz@lGuHGFA zq2ENKKU({=xAqA`zfy8U89Aby98m#|s3J#9V`hVD6yhy|+I_+!q}btLn}f|Rd+yNC zRHF6_5C%qiivv`+Rr%qXlF+)j%LP0Dg>nvX4)@c=+)v}WDk$g3uWD3gV?R8{?gY-z zI|1pR-9Ov@`N8dC7Jx;7mWT`DP>h*lqSR~e*V}1{hgZB`k$XsCZDM~!C~U(HeqR3k zeh&s)&OBWHQQTm&KYGjG;y$EP3mr&cC;K`1v&cpH*==zstLa?~Mfb;_asF95hThs? z#;N77^Cjd_a4Yidfk(^9qrails-V=W(mcfb6(1*KgMCnmQZDQn|Hzq$@4J=O>`Eku zLBgC_>GT(ghYhk2T>B-8oy=liL|6>wHYw|b4s#H58Aejcz*;cPZ!&i};DVj%)WPf+ zypO`U!C4Az;{HE^^^2b%pXZ;&Pi;ZF0kJ=XyWmnSPWXAzo z`?CtF-kmjdf$M&aQg_3H;4-kc_Az`V6VrauFc)83Y0>w4)=%&Zv?T0|%6K2MYL(&lm#^EUzyYk;HkAu5&HurNzhvfl;7209R zckHmtJ=`4@9xHuaoZP@qT;wed%cK90Vfh?6UeuCyaY>8Vp>*{~N5kAvt*c>UJeju{ zGB^BfA0!s}afP96w!6Mr`3$yat~4|WAq_7Xc)xIacPW zQw>V7s?ek4Xld2I5BugXL0<{y5E8@wIw%h51EKF#-k+Pk*1v1{$1na}m%dSaRk(di zB!2s_W(=+UyPCxN_U|r;%7>_b_c8p)^VQy(0G_;ye6z-6Lb2&F<&zx{d7c@s9fObJ z%oA14?-3Lv7E_FGNlIimb1a_-?>=noNPRLEb5UQ58ulDtWz)IS=oiC?NmlfU=K6Qh4&HSIso{Lr^7JcbU2-Pyg@d^;lgGFqHtQ=-mMCQ` z@MAJNV2UF^77tFaOD4Xgco!vSdKX=o*^1u0)=-p^wSiL4@4fk^eeH*zFYV8D+ZX;H zZm`I(JsHkMPmDI&1?_a_y%vb1y)YB;rNx(b{QcBW3Z&U_V2$&)3v29HhjSaNo|}vNJ!1Ky zP_qPt-Er!XQY;bS)F0l5oJQqrqD6+d4@p{<9YM0jF~qM{Ct?VRKR(m#)W-IfCm8?8 zew7&g{a2PLXnu_ApXrtLjQaDUGZV+K&h74XyQo2Ms=$JB?a_u2YMe0dXvX}Tn&)NABrWl|15Px z3NwhKAUU!fIr30&WCw60GXAqDw4w~|C$n7tEP?~7IXTH6-rD`_&wmnsK6I`XoSHu; zwf!adQ_I(f(G$Z7QTh5O{HWL8oAKm*(Kivqf}gcV#y>>Lu3V!R;1kq~q4))Os1~%| z7m-CzEj>>p?c47*k+hEugrsFIg?LFDc`1>kRbx(f#q3pW3?XFyVfXiD`5kU0?GP<# zb^n-<#q_Vl)sgw5tRL6nkOpGH(Yxa`;_`2Pa6RSw-cf@73xki2Stw))nV>ti^c~%? zd=3+%9XG(@vW$rfbjJ{qikd&FPVATtq`fuQb_Vg^9=m9ei6}wJG*3;iJt@^aiO$*B zC-%z9pqsfWPu88882GNWzuUyRz@Ao>7r-Gt8i-|o&9ix_y=o>TMb1HiWdD(M)As=S zE!Urn*B$liu6&(^*B<{-;oFkx8yly8*Z6W{()B)+`RpqJ@j(D(n9K&Tl&?WnFUmoO zh`T5;-rC6qcj))cJg%|WYx!vLKZf{sMbcltx4J4BIS#6;Jh=GQ7!1+O$hc{~bDklw> zSd;RJr_)R^qt2IwMC-V<_TUtIPDHKE-zkXAPK22Gttozq(D40aBoLp^sN((Uhh zsf|B{szgeGT%w^PK9H1xkpjwa_325Kh^83=`xQ?q4P!=sy1v4mey@w|Wypj2eEjbF z5+7O+=0N;Yl3~lJAx6yd-bGN%Air$oq~}!THS3Fz;K7 zpQ>woz-XY4a|qq|!+qH&EPoyl|0n+({2v8!ApCFf>$AW4S_5ninC)R#u_qX2K*|KO$v^QNA;6E(ya9NOPU~Csb^@1zR+S+g-9<+aJsNp}0zkewB??4dD zNB+)u{8W33OXLx^QU5}r;}Z$!Xz73SKE@Y{b^Pw=Z2|WN!P)w-dnd&g`kaO8B0CZ^ z8uOEk-zld5*7olo%@K3RpHwM)v=Q!7qq@pSFpqkhY^#7Z84uOr`@};Lxr@}$9-M~+ z{rdz9X}^2Z`QJy?^tTIblrZX6-|Vrn=?xM>0)74O2_X_)JK=UD4u2PZPkPk~nly2T+r+`f_uBO% z$KqecVJ{3ZZz9~(>cz7~hp!0rfhNxATdcv^SScRL!xn^zr>UuD=~H&l)XSe0O+82K zb6bzMtfF>)XK4^54TQgBeY->G5OO;m^C0~n(Udrisq#D<)r!ZiNtX|Q_zjRuZ_0;e{rIzGMpY8U^onl{(cSY~j*N8T^IHds-?f^^ zYE={buA2$`x+cbNP!zv~$GVh!W!Eo(-&<$NAUjR*EBO=f>z)|Dc~86a^F{GH<`=>5 zM2+8ql}+e3@JHa+D=~h1pK|f5=;zX}_P-90eoa@N|FbW~2wyzP{QTMNi*1lKQT7`L zW?y{q>j(b#*%yasX&$wI1Ib_B{{8>Bf8&iDs}`z19Nn{vl@Alm!o$M^r_ z&woPx%slm=Z?)>~e!Jp?R@+vVR=D459>-KwSrG>kqS*bYOs&-e3qEj5_!@{xi0E&pSH+fjK}QKaJ^Bd#favgK@v4g zq4`3u&p*jOHbWm53K;nN$z6t*n!o!$dIBQJifS-wz{(s@WwL9)JTI3GWC7pCR z5*K54fp2Fh?ukBhXw7DLc3_{7Ty!yZzZYfxJZtBVh2J$$)j|A1KJg26jQWLQ>TZ>~ zf3avb$TpKOUFm=I>ee>5ZB7a+J#9aBi`CtDD z{`o)sGFG~^DBqahAd!62ageY(>eD(c$+teo?Nh!rji343CoS^d|6KgcrP@61^5;Mx z`OC|p;|8T#A*3jOnvCRQqae&|3c)e@6V@3&vg zlr%@67u?0n1(T&t*xn+eilWLuFGPE>Jfh(d;fVV&>~gFv!3pEjf0F*XDl2~dz4N1A zf@w)f&t8Dh|l1EMJST`})Ff3G;WLv>m%_`)lq z)*-uZUDU5dKL#pI%gj)3Y%`sR`Xa=e-cV`CsLj;XWLV+fhDovwNW{AG8#%|-0g0>^ zM*Xf=<3{p+5OK&~tWGB~RG1|8$lpW(Q3s z;R=I|x0XrbbbK7c=R!7wOmaAayg54W6^}^L3zaYbmdL+l@CEdS2L-`c)Bdb&#c&28 zdQ9TV+UYl|DzvMkgl|gu3J?)CqBiLFL!Q(%%lIDo06n|zI45b@IG{prR{qPpP=Ik~ zbMF!Za|QbCMXqE$ZYuLbGf)j(Wn`k+o4mDs@rxcHobTc5M1(QF34irBv~m4={q;yO zKf=_h;=O_+QPp*Fn}75J%j}Z>NV^kT%ztF#hh6`+oX=kvtD?vFp87t22#*{e2)dfSRdRwKV~4BLGoEc8J$O2yXi!TN|< z>Cv}@=}l6z@G+nsux^NlwMAfU7FewR<%Ve4yNd6Sd zKW_g|RG%zuPIVe8RQtI07z>`hzw@Wp+xQF@{yfxN9-Qd%fyuf!^Gm_AI=KAi*>8>x-uuUwPn>$63=lc0z_OY362W zrn7nxWfHal!y%&uj@a@*W5YmMXH0;Ax0dnQ9KeR$eJ(JW0V_#O}IVj0b9+zh<3DZUW@w6}d6(}^yl+5lnM zD@2)I6cr9qzE%WpwD@1QPyAby-vPE8Ra*{9e(xv}`K|CF^82)SSS`u#&YX1++|2rf zQE3%lYr9ORzc*RIg#O1G`n&7<$rM$fs+=4~>igi9#!aB9mBzB{s+I4?5;5`@c2+O+ zE2XJrY)ar~HiZvO2yBf@Rgtnh4zl`<1sZuJ3U8CZd#wrT@->$J3D>W^?c&Cv>G~!3 zjWzhW`p1pzp{swKjM-jYbxKkt&fTS5eF4Yjl;7ZEKt1f6?bVVQI5Ww^gm1cO+o+|? zV8cyBzSdG^{WX?woQqg-pcIN%%_FRj$UROz_nC<`5&&eIc47$vQX60`ky28IgTGONntS^RYgim6uJJL z#1uh%ZZ|^{GcEgDN*t{zA>(&;lkxM`PAB%@;cOX5PWpU_?_@5A5*#8WOXI$m;^4~S z;9DXuFl31aOOiiCtt#sEw-aM3X&^|8Z0<308aPlglviBn85k;-c6|3WuZs0kI-6OCbp; zs5RGagw>Y)-)5lciUUsJI; zs_NTK&2WqSNifm-$9AK8EN3h9m5u<5m`IEdv5_J7swb~$mK zh51q9X=#3(-yA`a7?>YZ4bgPyYU22?2?oC$i{AvU6bvFR27j6OHE0+J21G7+thD;X zB2ATf--vf~hoGRr}?pknydTg{o^L6;r)WuV z<6lm=`F8($OjLiFgt;@M)CpZ*()g~{URn*Q0#+RUQ3kDiR%8u3rxl8pPlCz(%QNs@`8g?}><^93k|k*`Qo0le*X>KD#t5$W-)Po(A%0Zi zH{4+6pcb_Ojzk0XM+}DGXZ0%=KjBZvcP39K5zf;(YYS_Tx}XIVBEp}#)qU}&ZQrH; z0qJ)iy&l`~pGm))ZGrw&{SKF8foQn##Ml?QCGAr_#L5@fKDeXtUL#X9|L(&+n6Un1 zKdpXOy(`8wpMOTYD1(-1-yG)x69Kmm`(`KBZ@ZY+4nSNS9bd17GitH;$JgJEyPjeM zYYX*-f319V`RBZ*@&m@Epyjoclb><^11Guh&#{e<#E zWQVNkv0D?>-?nfN^5Z|KKhEBem;g~}@}Jiqcdt*3(*f&`MMnO*`o+!U4-s-DTtP}H zPRprWj0j?HxYN~wB)!%~b$4hbm*$-Pso?6*>k?xcrC!6;Mix8K{0{rtKk@#d`Vq2; z8jXo19hv^=VoWjW66XG)v+%~MMkP*YZW+Iar=efC#wRB6*SOD!o?JV$CZE?1q3dey zSlm>VDy9|K`Bi`1u)vkS)a0k)^*kG?U}0ZX#tlTth|sKZG*BEmoSrSL5{DLtE>59? zE5ixh2;p}=G#2P+MSov?kiu5Q;bN9u6x>u4IuZ(B2jH#Fxl`kq;RLxtp)EY%0-xUsP)K0zaE=9` zC*ph~Aj=PuFbh_s(J2jHyut-bq#^{>cdx)YGzU4Zcv%iTEqY7zBz}>V@*zAlRa@Ne ziRVAABO8*U_2+r7SSzloLqm}_qk`mp5hU-puo6A&7k;<5UHI9*F#L^cej@%>e%Zah z|2ob;@B?@FU^#8}S!H8QB&mXO~2 zrSH7n;1w|~sg0|DV*i`14>9~PXqI#jTCJ-1sqn3T%H1F5k-nG|+#k!9Nostm{({)ZzCMR2G{Bnh#)|@bb)b`HYj^_aVwk=Lf7P=T<%3qw_6Dx5*@2 z+^luUWRvmrk$o#h{4f8v1z^gdJTsrMy@m4mg0$;e_pm>XseY5Gj_W%+I=G@uvC8x{ zB!rxM9}tE^INamL-y-MW&?PukuE%F3r0b#r2VH(NgA=sQ>f$e0$>()anB zn$b7Dems3Iln6!wn3E~xfKt7nxIA;ce7+#W+zHLj+$KE&t>rVw zdqAMS2K9}4aNpnbAf52DGqVJI>WVWa$k%KsZho%aKtiOoo+5<61zJw%P6EOXWnvvR znP{e(Uvt-cYsa%)5PKGW;9nevbG_uB{8*0%K>dEq@k07^v{)R*DBB6iqwxo2YgZ- ztS=6JjMxt+oOfc^2}vseC`moN?Gf0rYclKb%?aL@d5?U~&YaIrkezt5Sx(AgbWHbi zPUd`mM?JDTQv+*uPdme4pMvVd-WKC5A{hR@Z|qreKiGeVLDATM@u9}P43&s|xqQyf ztl;N9u-|B~-(s-ehELGGdbFnfZuvSVlf^g$vALEbUQml)(rrM0xlFaMh) z>%zVjx3B5KV#O!bbg9EU_}yi$eV1%<4h%3*eQRMpVK~{4lh9{?+bk3TF$m|UvOi+le_yS zz^*iPa+?? z>7T#3RZ8ZuWD0(&Q>~Ztd{)EOJqgz(yHrts@y<*~XUrO!p^Co48Xxp*e~AS5Y`u*H zhYJPI&m8lKJY${352BxP%MR&~`bniohYh%SG?;q#BRh}~IHR6U+|Ft&JksJ_O}!Pr z>)TyD)9?t0Pi{l5sg7ii=f^w`wf<9#GV2`U*6DwbTPFjLsMBi*tP4k?j`V-3)O*3y z`wXsW-PYc_-FiFmh$kQzxN1bd^-j3UW?mm!v~u^EMZGo-3lBa7J^pa| zpd>X8*+t#u7E?fGHRi6KF?DPWC`sG>1+(JZRo)pvv{M|EpPhB`GjK?%X~k_JbnZ93 zJ!|*_kZ{vNPeyQ})-Pg#7B$wRPsA5+CtpzVH3~n%Nt?jW`AJ zwt)f33rE74jWI0_%^;K!!Ly)~$Rk%C_NFKZk1=j=+~}BY8N`Q&yVR2?pvIw2_+`3Z z0(rLy)KjVa=YvGcs|TSEd%2Z$)E9O8B9&Bti^v@t@?UKKKQjGC9_ZN_K-CPX6RP8Y z7l)HOj|k_ta$3EQvGmS3g1?2Tg)(~3i~4OU#yA!Md?s% zz2F-7x~SjVBU-I-a^LmNc%3~D4@a^0idKGi=7?UKhKC0uzQNOQ%ODILmc9=d|1kaz z_Q{Yobera}8G?|Jhr`3kxY}Ul^;58}3pU~8`Xb!5TofLRJ@L5Z90iCgO|RJiPI?*A z<9^ZK5k6mrUXamRn7hj$iOg6~fHN+Koq%FKViM zU#U)Ve^=#rtfNc_20kE4&GEvWm@jG)Xw&7#pEtY|Tc5yWpC;P9t(RPCk>JDwA+< zQx>Zy?nZqJH+(-`!(7EH)j#{*-$+9r2(Sv7K#CAPfNy0Sn^NO#7OM;FKf`eGwEC;e z9l0&@ybQ5+IYDL)L-Z*gz=m%x0UP=yyL=ApJsxqW!%QPq8DsA`l%XM@S$<+Wo7(w8 zVmdW^+k$Why)=Cos$}Q`$1t|W)r%KWshL=Z%Vopz9LUQiij_xkOt@ICI_3<{6m{cl zP7rRVF(!C%%f^@)5<5SZa}vP1R)_ef#RS!b=EJb(yH*8B>SPy6a2;UmOdx+17L(Eo9bf&5zmm2S!2ULeC5 zxvmw5;Zlowe3CRWoQ%i?#05k3tR@f^sDMC+n8$qwZnBIrn-K+cy8ViwN$NMhhUXUI zPG)Fu960CR7fDN>+6*7Fs0PDeB^nOVF$Di_R8vJzYsB55yh7^q;!rw({B3VNl+WCz z*9QTP(Zsu3HpWP}J%7_9uvSop{_tt_MXT$aFb6-}WkAKhPQyZl;3uF}|c_-ljMZ`<0Ck@_84{BC&D6@eE>+VTb$OGdSFp7;gT^43}*qUiqR1 zu|xdX4wRg=MP!V83Kyyyo;65C>Y9om^4~Vif45uyoBpY=TF5D#i1>6|YB7>y6du(I zEg#}|3t#1rwbZQ`>my<6wY$7E5)Tx@Z51%a=WysWi&e>XQ=~apnAcPh97E7pS52d0 zi(3T9>(!+fxZx_}vpqBN$k9{2EUq1cFcsQnnl(i#YfKjLR7Q2lR{&E6y5W`dp!gHTf{CA;&{ zPAHqU;^KD^3LeZWhZ>y=T7h|=iB$4m3z(%Z0|%5Ruwg48K&DV z1Gb!Vs`5fAJn_h3U*ZJUy6r6?M@Ph!OK^@bQ5?Z$y@sc=?0vj zIzLxW$~CTaf(toT_+h>KgI+r4`Z&o$x259)vCc1o#|aIxV_aDvZ^tuSvC|CyqkRz+ zlS;K$kKsj?^!D7JB|vV^)<7o30I3M%JwzbT&wT1VxTH0Nas#2MK$%>apO~I!u3yS17Og)hO%S5o2nV+IMl!^4zY6Wh--CY#iP!!ywP6RB{ zxvZvjAaDAgL7+P9ub03*F7&yr9(2(C6Yts#eqVBJ6b(}^B-0Sk4-1jGs6#37|9NpvJeb;~_wYi%ftSG=%`X{*)boWQ=?PR*ay2cQUkxmx{!>kb=W~TvGv&AX2y05 z<|p3(v>Ds!1WEo_0;jw5KW1>*&1JHpZ~caSB|QRbO3cPW{b_+2K*T2|lA2L1hx*M< zt>0W=2Wk4JGA$qqwVrcN1!(MqW>w(>v*GdaRwL9yhlm2~o^)YZKGc<@Kjs>`Imf`5 zE6ZjGvFxF$4C)takJ0P@va6}HLK58Z6#A6rd}Vc|Wc;S}-v{h+rhJc?QE8az4vJpCmRiyWJ}twp zWGM)}YgI~RTan$7e!EsB9K2-ukz3(DSYmT^>x>(47}o^Etx)wGjVlOAvCzq zJ@aMI>K4eLfnn8`W6>YH#0;cg8q9`b&&`rzx7C?qU#nM94DSjNPktJwxKk9^)7syQ zQ@&(k!Svk0gZ+oe9gWyduYi&n>5F;1E20a?S`S@e99+R7Gjbj3+t9;L>()i znLick^xc|SO4(>TEw+K!TrwT?Yg}3uV3p8qhX4ApA1GW3X`CI%8~X&Oo=@EgAGsEz zSw@UzQD9XRhh_@z(E|4&IPcZf$6%RXt+rQS*@X-}lJzy;m15^UTwLu49ErwLFm?p( zRY1xtOGq(3Irm{KxZ>Pl$I zFKfLSH$`rN?H^7Hksr%s8Bc`}AuiyO=g1{>`McJ(u1pR%$r&74jH=L0s5Uc>YG0F^ zQ4<1-RO|gXsn!wtE1dEP$Oi2ro@~EgrOEc>wVG_(7XZM-I;$~vQJnyYv(;%vxH1wB zYAo)T+u7I{@c>gJ6tRAH`wC()MQ^<8w4`)Iq>19)OnjfqZsx~}?=5u@-<=P4`$zG8 z7SUt>ros)brDp=^4M3FMhqJJ^=5na0YPc=6;{96i-|pyvA0Mr61ph1pVkJDw3FSU#kox#@&4W&?-2d}K zmIrIF3$goW@66XBI}HC}Fho8y;lFo&CH!~xyIlV!pQh}2|hbW5YztY>mf4}eS z_KN(s`cd`@{I~aIJBkVT4+-Ak(vaq9OyHKNGJ-UNc-a}FS>=U6nyOB5q*?HY9`KJ= z?1M6ZL&{8(vK`f5Y}t6dii<#CX*Ch_Uueieij=_Ug6^9Mb((3gLV%ovAR5#CN%7tH zN;%#AOeyPjpMt4ET?@V$+}>MT{{yKI+xXf1TG3RikQ3mX77HquaLH#C@=c7^Xuo%n^ zGa$~fAfg&)Xjrm$=|`SPSChOG5e#MGJ9!fA=JRoLG}x~AO$`0L91ZaQLze%Sn_gar zUQPzj6@ch7Scrdtytz`4;Z;@Y87bS|SvN#@PE+Gh6jT4zpl57J%!;e!@3KEWfU$rb zsG%b)F;T_VJW;=`)B5d2RtQf2Q~@T#N>ZSAIYAv2#I3*fijDSB$%HL`cuHO55GS~Y z=B?dQMTZp7#*6VZyJ^}RSb4sbc)=*VQ<3LnbVi*M*yHgJoSxgO*W@cI+wfb&S3M>9 zI&aM*C=UIG?>q7RH52@Y;!TCO<~F>6(sk&~{bUordbHWZuizRAyUpTKn$pl4)K`N> z+}{}KEd}S=g2lmiQ7pKt48_pHBy~6n(ReTmUo_*w8Aj!vc8mG)iB3?DhlvM2NoPa0 zv&%E9Sp=O1`S*0X$%7b*$oa5=!5)&g!P-OayaKv!d>aOUY0C*2K(TF7ODrki!C~F% z&>HA_bREJ}k~Bq3B~$)IQ_0`dsLRAo0`UcPjB&9|@Z4`R5qQWL3@z4^LT>q+TTgUo zkZV9GI?ozVP8v=U+R<&PCk{ynn@q4K3qTopSZp8G+lMVev;c=#&D%t&jfhD`0f&)PVyu$4t~=8G*br@7IF1YOxix2#*#)i%;xYw{V=a z!AFdQXfNzEIxGJ_-rfX0>f-z#PeKCW`~48UO*7ZPbF$tFZ-tTATvqvuV z`~AQEdA+iqYv!4mXP#@Gd1mJQ)Z)PG_UXQYvrlROmuLXR!R~O3U7cPWNNtayrb0z+ z_lgIStBU#$0)-%;1%2o%vN_GX89Gg0|yWsVa4>=%YIw%6tf=i9PKI|vL7J=c9@52z%FN~ zUk17sena&9SGREL^?>^EPdMP8p*=}u#R04Z##1hC&}C~k0pogqguDnQ$gw|yOdji* z)MBh9)g9oZe^Wa=Dt34}R#VF9=PDWdJ6I?Da1aqnTRcGz&>brDfjvOK1@A;ZKWLB7 z8}*!;^H}p;6)ry;Q#87NUTdX)Ko8}5#WMqVLun73%EkO-2OuHT`R~HvptSWH*=}e- z@pjC}E|2t7JAcRW@j@(FyweUPEZoCl0Kpk<1bN_R?!h3F3QG|280tLeR}8-@0#ceG zhrbY6!1?zf2cZOXxF&}YH-j9WO>dqY=v$4_#CMXzhjTPJ%))rGMRHjF1kqw<)qAMl z$^`lUjTY`4XVb!}6E-bei+5^4s3k&}`P1eJf#aL-8Q5n{td7_V+8;{WA7PtFR(&c$ z2cm2&h-U1Po()2~Zhp&q*djogZR zkcNHII3J)cv^$(|k{JLe;qo&@fRcM>mOxaWhk(`V5j6SNLf?l7n*1ArCL`^t3QzB0 zuw*21&ZJSFF<$aGqY(9-Xd#5YFmN*P4_5#a4@WS*ZmWsO3AqAdq|-ltr?u`kXc6&a z-T#)fQJk?;APu-0f+vcBEkG_1N1?Q%V}bq`+mQ~?x0~Ua0XKvYFJTl zCFeR3&WIWspJ91(NtsI0+ey`G2qlDngTK`Fx)P|5ml$s7) z;tU*Bt^=&jnYNyhtMUd6xZC3yJa^TS)Oqtf=Mf1@XtrpLiVh#ufYtV^_G}RJvcvG% zlmW+_gQoR6n7l#^EN3Acu!Ya|v?_jv=%5UuciJ1L-=EmyH31pIIPz9;S0`RBHV{n1r^esAjPT2 zP9la@2nyT*0u=Bzs6Nl}qu}JA99aGjl$ySvBWsKJh5HS5P!8ogss=_gd8uE{-0)0; z*eUAD?Tpl=^(88S8kFHP*B1>=LVOWq5oRST0t6RIdkrr&d7@h7YMcJ-!A>YM&^f;P zo~$ldjzyxnGcEsCD5Yq@iI~@(PuM!N4cS9pT-C%nWB?9k5|log-Ja5j_F3~e%f$)# z9XW0CXFp{UEns;!wutOl70(SUJ2Pegg-a5c17cL`S56lh`={IL$3(iUmFTg#&=cQfM!Zc^_5^~yEXT@pH)9ekW zO!BcyN_A2&Q2#xX!9WP;GVN3TWX(V{Dz0|oJ$R_JS0f$*0b*ppK6I$7KVof#C;^yi z1_KP}$6=^ZOc*wz2C5X;oZvyJllnZ=3USc-gbB*TgdTpMv_kn-t@Uds_|1)c+aX5~}q6v#!CqcE?x6)`dHfwsS|M{mQyg z?!Q2yudM6#6GlYtXYaJGJ@A#&y6~WN?P2DrLE3|Jtr7dJHAhhc%3ZPAA%|&baDo;Z(iD&N$AM@C{d~H4VsEH?=!aie25%8SEnBng%HQ2+C2MKq5onrMjw{tO?<=@1Qp&mEgI|?;5GxVTTU1NL7&%B4N z(ZXT}Duz}TJ81p7@fWCnOmHU(F%n#!I{N-I4SEEyYR?Y9BrDsk(v}c~o>UHu97RA; zu+7}6LdJhw?+RXyX)fGd?ki|tMSH?h6EO*19O&x`V$n1QjhRm0QfHF2dL-1SrrY4< zj$&-q2)rx;DQaPi^PsKuJD~M+MF>B`^3Q<$V!FFA*X8gxSQUAEVK7z{OhKv?Yt4J8 z`y?s>M)3IVO9cg@BZe@k@4gJ&o~v)OaNAAa=HgbISibx6aQh!*L|O-KztXp5xIL+F z=i~OTa{G!G7fs(*#R2__^nnB%F~X%v9gYMJym^*yV*9&k#Hu|cQoEH>{R*!ngj|Aj zg4HHo5YnzX+8?u%4kSu-55RA_=Q9L95qxG2h9gL64nU4WZXl*ugMCX3L z?h5w=vTtQ}aA!5Ip|pM@IGorduhq!6?GZ&9UTga8yJ}Md#;S-pe&{*+2vBkvNX+UY#xhz5uc>TB%!Z%E z?0s|qL-}gr1MUT)jeHeh5_K$@)s+zAWrPnS$V3hRO`8Q>G>Yi53#C2(%Rx!vXT-M0 zhiD&-$HDVn(ryJ)f+Z*wFhXGBl}JpNB7vv{jwc%SCMA=#B}s#$jLG>8$-&h!be57( z2lXM$8|;9My_XHhhABv|VHxmQ0Iz0U{)C(zHWD<%X2pUB?6f9`;01PWsPoXPNlx)$ znds3x^ys-Iu^zqnVf5$#K*RjcSQ1lw6v4ArvrzQ*|lDm*^USrP5k*p0TY$nM6zg081sj24z#ubfO@2y3<8ck(=EXz{02G&0&OzL6;$ z#@vPcjT+(J%bRpSUw*#89aJ$nj_tRAG|pJ%;`u zyHSblfIpme23n(QV`{-kk6wi|#uvIhT?)NRQWtpIF$g9pf~{Tk{7ZMCAJ}Kfo?dvD z?j1M4(NmU2MLO%JyCUsI9p?Eqhy91$7dwNOXJW!8iviT>cVcSDCjep)|%=r zy34&pe8mCAch%mUG_fK3@0S1HK!5Pcj8*m3Z!BpCqmaE3>T#}%%y7u6ct?8YT6ipb z3CCVqXl*-(_M^A{x|NxQ-f`0`KTTFVTK+=ZgrC6=-rsHc&!9Nm-D~+tHQ^wB03*e7 z4`F!gr>)FF*x9&g(=GoYq?G%6EdOh`hy4)d)QGo!`pN$d^H#G zp^h-kb~bY`KVLUVr@q>KqdeYbRd91@re5ft8m3#6@9&xG87UAvInDI^s0Q^67JA!b z8ZWAZz1)%Q-rIl`g7TC%lTEvse%vJIs(R>b=0hk!KgS4+e0KpjKj@L zy@3z#2KL-4%YPGw9Yw+GG749nIX?Wg2dy<-q1B>G;P6&c{Af~0sK>BkL-Co&<^;7v zL}ucXD+uDJJ3bK|o#%~>Lx-a|bo4nzbl6brn#!yxG<#z-bUt(2Nr`poQI8uL=6}sm zQ1_V>Kh%_QShGc1WEfwwn#9WzwWjDP$c*Fe!Of<&dr#y~__+?ur6oDFytao#N0BVl z_V=0)s=fA){AXjeLIJC;Q2$S-V%jJF80IAL4E}@e#;PqtVwXu-mpNa7F~`4^(4YD5 zE?!g|y6P-MLaMc9YG>9)CwB(BV6GOft%F$pK(8+L&e;48kVPFhYGVS8Dkl@32jMe$Rgx`v!@*$K?~~3Ku#m}FIW-R4Db@XKf`M6GX8gM0sf>p?V2_x zyXEE_OHZWl%m4Py<5tC!x?OA0E@=}rcjNx~IdaAt;X<5}GYB#Af9{USfZM1$Zavz# zJJ16UU%T*iJwbpT7&y5<;$Nh$Yf<+E{GUdo3@a+}H6WXELss>z;DEZ277f#W{PYJYm0+PcE}EcER?j zL-o+6t4RTgy;B@GSd3*&fw$l&D27An$Oo>_?P$wgX@A5+AqTNGTQgc=EwTxs<_^6 zk*8bhm1Q2pKryK6y|KE^lbPG^ zVBQw$8r6?NO>3wN6RGK==%9Yp9&Nuw(R-a}PF-$Qcxv2J_)3<(l2>PFB=>PY4CjB=9Ol@fbNmG%h01$>=t}QU^X3>lD1(*X6bENTz>6T`I zu$Mg!0J%U{gY$u{0RerezD?lR9U=G&zfQ)+n6i{O#JF#!;Bvh@BR`|MxWCd>2o*RY z5f?qsq^k!3j7H0Rtt06WAZNF`7Br_DpeNd_4)y zlGiUIeqbQ{ksfArYH%^e=uLVI0HywFdozRvkDs*SK8)%YWHpmpRW!{795@UPoCXK- z3$_cLLvrpiG24fAbaW-@3$;0A|#Aa>g zfB#b(iOgwRb*>=6q8BvSrp6)$_3-AsBs=NgR8)5lSm__NU(kh}5lTBe^cLvP$W$26 zu0X^UcwbdXAu@%hGtq!?OR0(k|+u=NtH1P1=s(mV__##cMUT96>NL5Q7&h z5E_`Io_U!G_T%wBKK_)Cp|rav4^2`BKE(Y#M|vNkFVuNr9hZiI$IaSihWZHPIpOo+ zKRx{=IA>-J@jI&$H_~uDuEY=wZj)R~M^?$A}*6fePD@<+KJ5cmLXH0A^ zikOH)}BYTI*89JRe$O=4oO%&+lU?Z1uGhVkClAfLWL zkk{DXKi;6%Ie&`q5>RhT(I=t1nx8*lghx*Jt&>eA5%l~BIn2zD%qMGj@ytm;vD6V@ zH=ZSyX>YK&^`SKSHQnJaI@yirI_&H>>NwGK zVImn60uS&3Rn09DrCSi-L#0jI@b*|>*&+*TA=70HXW^VHAndgj+y6&-2VwNhbD)xs(< zJc~}*EDb;`4|`;TJeX(;c=#-P%|hoV&Ifios#`EBkzMVM76*%+dehcw$)v+sx%CZf za8#hw*&wk1@)d~Pf>aFSDP#K(dTxbiFp+3MxmZY`)K?(s|MIah+ARhv4ptGuik$i1 zSiZqREbIx?lSm*(vPTdy>nI7P)|%ieplAo)B2-;gSG=WajyKRphST>@N_Y;amVH@C z2&k5{7}avHB&XW_Aj{X-rt!go$VoHR9e>hj#;yXps`T-$c#laF*?*Kfiga~PYz&!m zE$^slN02q1*qRisItp~D#*FMdj4uznhZ5LkQ_U*5YNgG3vD(`CrE2~d)B1+mxQ)k` zs#lPFok+Gq8k8STKBEQk2>_CKgHyOsMZcrM?(v6?7P@*~l#ctvZ=)cHEWCX;}f zn4p%|5QA$&{X30_X@MKtKnq-mkLr_NI=bQn9-_Mt{q&Sk2Q|zOIQnX$c0y^t>!j5I zU#tBu*y`YCc&%Q(snz-MCvJ}yYHT*BlHrIH`IsL!3oT+(#tC|wM!e$^5k-_1N=Dk!%>;yPOAE z6pdOupx%VnP$WF$yxB>VvxLszqg5}` zTS&@_6}hZg2JT(KD{`p2%Ur=}kO6uS=?Y#W5sgcv(Hdxe+Wcvl!NBN1f{$&~ZxWUX z7YNwSKSC1abjXmYg_IKcr7QiAw2FAuMFh>3jdEIKZKh{(Vp)NSIlh7m@AyQou+ar$ zvGH|2GKhYZfVU~RI^ykm#HWUzA>x`X&SLz#Ge7O|5;P0M)J(Hr-`tLQnw3bQ7F@%>_r;m;M}7`}Wb&f1e0C!OAt~%l2PY!ndeK1q_VS!V znVU{aL-GYLjo^%D10?VboN@#+ z3I6L;gc!TPYx~2Ev;>7Ydr0S}N%GHXGL%h28klG&auZuyjsGOXKTVIZnPxj~x)W*d z^zBTM{&T@U82S=EL|1T@lg@OXza0t#@69KL=K>7AK&|$By->nl&H>97`<7;i_3;b}-F=p-=;$%=s}y*y7b-7wTI#0BYMt z3?~^WemKo9Wd(Ivg@M$dNFcX|5oa z_m-tgj{kifNM8&+=Gb>LuM&k*M;CB&Q8=uw9ffn0$wU30?PW*dJd#15LIO6v2NsG0 z*tK`JX@AD|g*k90)23%}I{h=Oy_cTC4kM`a-nqve(nYUa@G66h<#l3afu9*nGdeS5vjt zk=o{)FE-!nsc0_5@)D$_X!o-DpcZPGre+^ybj<8Kc1W9j+(cn|c#r7c^}-~;KkO^Z zzmL!$Mg=-*Wa}=Lq9@gV8X!x;Sd{Xy#)a2V+NCQ731gDuoFPn(;;O<}tbvF|cky>q zM*_>*lu4_TWGnm?zUtcsdQRS6-n1mq{~NI^SHdE7lVWa^H}xnA#shqEjT)yWEqSJ) z3MUnib)@nL+657^!P?OH70^WZGQRR}5~LZe2n0FV&O)r3L44!lX8Oz(noJUaeBf5n ztFL1AsPSMyzxTC(gf!>24{sGV_tpq!0=zL-cNEb`$&#>_YDA$!F zaC@TcYn8IX|3Pr9ui(5nRF)ZP=29xkj#Qc@Sl;XkOeu#}a`zRFUL6rYtf)hb4n%#} zEiAhX8>PXZI96tq_gb-sU{It39;qn<31#i-^;q4@?M9~LGT##1Kj&H^;8ZIT|Y@U`mwOMAHT zMMF-K>Tor^R~(lK|1Mq5mYjfoQS))Dy;v8pP27q8n3{!`;Quif!AB^&%U+;mT0wF&Wu#rZYMhf*q+ zSqf(;(Dx@Iy1Qfu~2<74> z0M7d-UOX?JoJqm)lk%4*dG0MiOl3*_@+>!Yj5rW+7b8ZqICujFI(6#S^QpYo8rDi2 z5zso427&Utr~qlXoYHZ#l%}igg5K7p>q1SWY%S79I-oe?pO>iF2^i|j(6$<1QV|uk|NoQD z#rT8Pg78OJl|nqo`r~725^k$ncJu!7TFL}EfuRR7D0Je+{NWsIVq_2UwSV`2&_v_k z&GO}?!pg^p4#JA7M`vVbf_VE%Sb7$Q*Z`J6^O;^GKxMl8L(6Aj(C{Rr*&K zRH-xlTl-C2j>0aWpAxWW|C1*q8-2q6Aie840Rz%fZG&<8RMWorc z@Rnf#qaH%gaq|K|)1=uT*G*DHNw7@`_7WZbnT@@=sW6 zCqYUQ5KAZtIx(6)JCl;4Q%SJ2TyFp ztJi>Y2a&Y#Sr9^xzV;+Q>ji-rZ*bTxvKuNWkJW;GdmaR7sQ>VzWl5^?W41je+;le? z>l9El;xIfw=dkwTe~+X(efv^4SP1Qf^9=3)Y_IKr{rQ&V`&nm{f%UFS*fTjO5MME* z?NmqKKqj6GefbFZXBc0x@7}Bwdr*5N2esokrag&7C5TBulsyJQvQi=ZzP!5*!&xj* z=*r=2^wVCJfkxU?P>N?HlacI4kvsKBHpOd?WUuX~m7y1nAzkVQ>h5Kiv61vyE@AiR z`s;cVr&0#`mt_+ZU5^bZ8!ADcMfT*nK{(|opdv#wa&x%L2XawxVCX+TEPk8^g&`a z8c6w?OX}Ns&NHK0Pfs(b75{@7*6xaQ0~JTQ@CPd-4o6b)Q$@c_7KzCfx;D84&XUy= z5ca6)r>HKyD!dx{Ni!<9NQvXon|JekR?Ihyi`AuZGg|55@NfdQ8y+|aZ(aDzOay^Abk}LH8h?FvK>pcaKrUML>8uzd%jz6$QBgqqKSn2TLH10t zijoIC>LsgGp*YCaoPK&zV2M0JqVNh{^vZMEkb5vxg%QKgn7==)N5j~*%dXxJz(Q5{ z0*-%?m35&upQ(mCDfZOUeYNQ&wLoP}>CfG*2g+Ge8C?st=%@^m$v)C1=S-dA8+~@M1 zu&fM|7SH=pIX+8zJRddBk_XSqJWD=2*Wwu)qg4!`8zgAz7u_y3?NhnknmLF{r3 z-EmzGY(-NtUEmPNugcOHcQ2VO#BzZC^V)G~kXCY${!Cqtwva35;|l%U7n7^9n-sKy zKL3t$*k#fw8<0e9w%9k-l35EsXK+;|s-_-)Lg?WfLl4YE?Xg*s+PjcpUR|Bi3Ge8w z35P(LaH}NbL^I~v+H!3u_e;S1EEf67Cv$oqbR*ahsU2Jll3xp;Wzz89Rf) zKJaS9Z(=r=Kq;_UZYeS*?ql{=CUoVLKWT$qK#0M<_)2ZCZ@tqP>{DQ{H{QpL(1=#8 zawfu;UE08tx~2wZcZIb++Q68nVN4HZcP$Crl0G$%id|D`?7j_ON#7&5V?GQI*_TCA z5f^^KKkf{z_#6fs{NsGq{_(Gw16!di8c0_W{o}?@?HixuuztE1n`ZdV!ax2x(vd1G z85H48eB!oGdo+FG<^gLSDo!&i^*45x^;{3?b7u-kodfLmPSeqHNoa9Z1g5t3tEfY8 zjc~z4;A{BM{Rn$Zm}zC|Xc26odg>|CcWeSU7b(=dx8a8zd>g;mick9?vCq=vWbtO5 z7GGq{2z3%N`qhDJGhQtAW6T-p`hyl{O{zmTOPSQs7V8jcpcFC>OQ5RPCFmJ+wd;9Z zeNAdwCWIftAkt<@T4q?^@;f0#9Iz(9jcG{`nHJ^DCaVHxim}*6o$tfz+_`gqSUfTF4O!05@qtEB2jkq)Pkb1 zL}8Vvib`oeZPaPI_h??Iz?0UJP|-Du3Y8;!Ayje*8oDzy(H3&O{eP9n`5jGW_B`A zWl0IncEZVW*6NSYJ!J9e!J_@?w$+D0xx}}S5!JkxHGju*WsF092quQZ2j?qTIu!_} zRMl+3W@n-Pku3G}ZSaPeM|f{zDN2nO*I5qwB(lzjHUnd@?V49!GCpO^#fpSj4WRU| zI?;$5po$r2CjQCe z{0TnEE|=n9Ai_SNd;p@Io%wgLgj&A58!z2BxP{JQSQoFuJ~&>`T671-_mhyjC07sp zM`y54y6x;~=F0ev@@V|pOAv`Bz9WNF0(&M;t}mI`aJ@w^jU5L+Dk2SL3sr|Ltl;`7 zr=`9h-?;w!uvIZnK5vqto4RoK9)n=4`OSj3ijDNQ6V?D+EsGGonda03T z0M|2VQ}0GqP>dvl))XmdngrVmaYJe9W<7vl61Dx$V!DUFg%e9G6@zVLA%q$6pt8)gvaRv6O z=Y9t{0h=i9)dsxs6?{24%89z*C?{s#OcI1u574qOJ6rr4N2@fAWmP6trSYzcrpjswR=bX zCIn`bDF8oS3;%8$2mX<5XPhYU-nbIqbK50e8!J(DM0w2=GbX;6$#Q{_jfq+uLF56m)-|N zbR9i6$0h}F`U&W_&{v<~=>yjcIutXx9#CPSZ(OS7zY}+nyRrWgmW}#v#Dhix#i zVrc)%LK_KJeHlf&YJ0F*B#itx4%ZXc+PKcdYc)Dwws$BJ$qZJuREa!&*6~F0EoSdY8 ze9>LTH%_;9snfSB&6!{7Sc!eBi?XvS(JAVk@)SmtVL1}s@MOmvI0DhzNS%LZ5wxx| zud-iPXM+Q=pk7K;t!{jKGH$?@7;tUlN+okQI7v4KU=cv#!1;KWnYzn?k>Pph$++s7 z{Q+G7*|?6z|HPVNJ_7Ypxl&8Zf1Di0nmU73n|V(M-g$8~wpPpTS*Z2i)UKUb?T817 zQaq#VL;&tbPUNK}E%B>5bq7g3IriOGk4*)9Oc{rfyD?h;*xe8nWY844J{hwIi>Bg5 z-rk}P$sL?NM`?=FS50hT3*5cl%W;#8;~L}z;Wc=vcJ_L?okDW62t5k==sO4a18TeR z8cLhj0d{Jr|D+GgbbNtYI+ny#qrNWF=_0u5F3|Kj>r#XN@I&Cic+|_ioXyYF43QcJP`}%;j`deglp{FpW zZiC79K5fJicuc>|yS#EndK=Ug=~EW9a0UGgOBed-@xDzzT?A1LJrA3+B2OEz;6VT zGLSDhlrLO4=0ZtG0iP_*9pB5sO<=E8hP_tF3l!&USS9SWDuKNKCkC&E_RsbkT5C7> zZ+t5ahke?&kw9z2VYE*(kwmYrNVoZH)u&~oQ_o&>7$|vmSbIKXQ zk7@%=A?GjSGMH7GLL{%=XaIKMgyt-*T& zRaWF<1{STyHTo@BDaZ*{F^Mz(pykstyizcA$6+?a8G=qDHL7=}NJRCNSa!TM@)J@A z1eaaqEBI{zu%?X>GSwL~l{9;UZr4|Am$hxoXovS~8;=Q$%EUuEJcy9(h==x` ze${Q54YQNjs5^iEGKQ|6Yin}*8YhsrMQ;9A%f~wJI4GD)KIXLk*xuQIgXQbmFNRmI zpxc*ok{Yt#ayIOM_qAa^mp~qD4iK8}ydKRre8T++k80+4DaIU|rE+?BOXmnBa^>3W z9k^g(rz2_;<&XTTbT)b27G?=<73&(OBe+7TSMi+MX+c+8oKridZE=1b0(4Jfe=;u5 zat7PTkl|~!G3jvxWNFw83BV^^9ye3gHQ)(ZYjI}vIOo13xaJXw?8wN()mQN3c=8d% zl`~zv@FOx(M+Bg}`D>1$omfK(a@dT7IAsELOF~;h{ZgEvSv9_bHj;BB@c~p6G1v`rPrzdkg;6}s zS93a3GVv3-y_Bqs@12mp_=J^Fgd@_rw&5I)7ZtL)Ci9k9v$_^$H0n)&M|VOkRzfSP zPsYSEv$YNH!ad_SI#EGr`-=vW;dJ1$inMIze_^(Ev)0^3_P<_| zy-5aGy65h2lF!Qgtrw_j(=pO*TWC*pSC* z(y{ubkzdnW~Ug8s2*HSG_`CtYpzW8e)hE{VSAeVq*6F_&V5{k~PiB!f(~pps?6f=N`b z@infMgOI~la9|8uX;G(<{*OUAkhL7Q?}* zF#g6|<=pvksx$dZDkwLb~SOttsvpNQ3t}QK$(rj##jGgPnr6a z0I~er**;Wh#PH#$QZ9`CSd~UJSEZk5Os%jJ3Vo?rx=v8yCcCeCzcAQf{r$`^sk21a zcu}N!0Ea-LRbUsBK?@!-UsHCeYQis#+eBl_VOB^JzKs(uf2VxTpIU0Idz&9XfUwVy z8jZeW(2T;#ME)gm4j@*t$8o({gEomR>I!wgiXN7=$j@K^?oc?BU&^Nh`<*i-=sE|s z?Xq()9@lMACAzP#Wg0A*f;m|noSlKFZC6GXR_|nhZ*)p2j{MzMixUa$VEt8x%ZV_n z;(R@zX;pYYxaC0p#-y`YKx$~bgw__2yA}VWwK@$wX5=%>Q;ewy5e==}ff_+ui9Ot~ z%N6u)<%|473$K*9tRuDw`J)V2$2CvVgd~On4=|&z;6EcN%etwtQz*pX4Jdiuh6EQXIXujjOVF+7I9T<`eQX6%cvN5phjda*6i z`!9{tUAa`Vh_hiG98ky9+Wb=+q-B=>Pk3PK?2lCa>bOJ5#s7qSgpBpRLaCYLage!( zi$okbLT3ZL4{wgMA1f5pT_vehKp?s&=%?{md<3*!p!rOzHf?^al5$X#&9-QOaOd~9 z#^HI~kOVwGmxyPL-ven;`YZ*B!-kkmUdGsgn|ha_y^hLd**}3Co1Da-S!C_WLM=9H zgJQ6%K|L>xv;3C=A{$r+BBy--Z_X)R8g{#aRSI{m;0Bsk3`xJ*#cqM`&!+a1|L%wV zX`ay34juXcA@~Zc;hNf=lZDz{!G{S*$MoN?VFFGu1G{US0V%H}F#Ek)l*pnm0kgat z?x}cO0eOX)@yI;Xko@NgUDv<`rmJ5Bcc6A;pOWD0*K4ujwu>jD*tZMIP@=iUA_W1J zB)?a}xWs#r3DD38ByWJ${N^asc$)L^;&0Bltlu7W1s<2?Hmu5Gs{{KfHZYO}o~>;_ zt(RN2SK*VbjwfS4e)-%goW|jq5XJkj1iX(r4Wt($p8b-`guXCN2f_t#goAV6o>Gu} zLnTW@yNQ49rd*Q$p0%30m!S#7+VtRzBbeRRO$$~L*Cusw!$DX6Ve9??69)u-?Y~Pke+5yjWLCw41(ZiWozYJ>iPhu``q)*@ z(0q*Tyto7XoU&H`9Sq|Pz9<4O=-ylF47|97--3_qkV{Z9!I=X;+5OKmaX?<#j0H5= z=xTJW+KtwYXD5t}Hl>A5ctJ2=`6oza*b(9%oHasGMJ1wx(SIAWNsAhv28iSeN?@PhpL$Dr?o=C-CJFJe!LP8lZ9fZH{ws~TAJFBLB7@xuePcm zZUNaP>W8HX+%C45(GP3K>Ao1K88@4>UPALz$R)e z=%P(no5P-eXJ?%|1(m3H)gcSpT8a;kYRdb3?8RVM2(1M_`Yi7z8|7S zqD)OMJGJvygm~L2>7*i-6rC``eqYju+BnKzi8R%m%aH5#JEP*QG$D6$jYJMi5(4f}TQ)yg7 z{+@z{Tvye&A*%7qZXZ9C)$)HSh~11|fgUr468#5)E^mp@`jY=P zV(oBiygaVOUYj#U#-E-scH^TxotP)a|Hwc+|C-GK5RFDAHnNPCw?+W*_Q~IpKmaq> zH70xh*#A*I6E%)7L6H<$(pus1W?2~vKOSmac)AqcO%?u-k~Vukn8y)950&6F><68`CJ!qEY32 znow?dMhi1gnttzwx{0S>J+{^Q(en2ddXZr&JTO#hSf}a=R>qkj3}c@oW=P_Sn1YkA zMDo_gx=33hx1AfMkByl77T3%R1ZSr9G-MbfSfnJI6xN8<>Iz8d(*rYh!X()$)V~gso{2pBPRxRR##2(oTdqhJ)F4(Nq(#gp< zYPG@gyF`J}tVHto5v%i?2B-B~45D6UpzN*Hp5ui@k`wE)No$u1)`vG>87C^f?~OO?>Xqk$<34zAxb zdHya{_zvX}uLYm_wjbhC`aTdNjvWBuD{%HBadcCw#{K}w(M3uZEht)6MmFN#giHZj z=@E(QoGDM@q!an9w(B?l8@99ME?4ybE8pmwqv{U1J*M7|y}Aas>VN7sLM7FzVmvg` zIO=yjo3iYjZ!z-F{COj6FgHxQ(_bJ`Eb(hz&`AI(sD__RTDpGNaWDH5sth`m{?N` z%Kp+??WVmO+^Q+t^(Hv9jvR`JJXpcffWTfJ8KmbolX23n9lyzQ)kcZ6jC}xVkS~!{ z>%gk}oq=^Wt0K`Ub+S7dz>5lqXg?_80k!vz#|YvVtd}u=g)iYu5%YJ4BzsYFvG$@! z&4P~*Y0h9!QX2yvdq#l!^sAUtM&KZd6{)}58)M`LMgyZXFk-Aaj+I4?%ref||JY0n zB#AaheEg50;FY}JaFmxoWsX3q%EiT3@Q+N*XqlMO#>Rojn1%P+JHCOpoYy5RU%^X~ z6qACL1f=#}#2lOr<|F^qi$+gw!h;qVw)egnV>sS~c%l|0*kg5!1a|;}uV5le#Q9v^ z)V)#|);BeEuQX#0BQ`<0FVP(C!QpgcbGTKp)&_Wm{Gfc)uI(Qn+4g;dCQYnp+@yPY zX?$nsc!cNvG61U}AM;?0GMr2mG7z=#+XH4~^x~ zpmUnaqn{u+GZxrj?zDVb5VIfPhv3kW^EcXlaOXxfNeg!Ah9TrbPpQaLOpd5EISKsP z3DDzUpxY3r)7Zamw2@0-S^gRlx}*$N3DI+P!ErJHSsUj;V7sg;(m0&F=8@9g?H%x&V)-ZIf*Q1Ucfc=>=eq>YhSwk!g`I=d!pV)Q)X!AuM=eze z29D%hc zN{z4;QdnB~rG zn{JHMZZc_DDQX28@ERDWamp|2UtrUXt2CQp{_lYuXtJ+he>aVyWGT5>HigoYk-zbi zL}v~U)dG1*@k0p27mCFp_Qy;W(p&fHNkSQaju&*t%>Gs;2kmy+*G6XlPr5YWS;QyL zq7~8dpXOgKmoWB49-%rbD|67Tj>>ADUhb&e$`g8uD!oH-LEMbDzU|5jy!C1Bu2s18 z3{i4?q;F3ic()^xKrrD}^q053ogO=R>)X4RfI*gJ=KuoEFBy2v0Caf~mIQ^;wk`e; zVa45RI7gm~7_2)V#HL!Xo?#%kvU9Ytf^FNr*n_n;68Nz%MO@i|>oa@>ndh*-GSrpB zM64oiGF|JiiF%TUwfeUfm%KelV?ipIh(B=zJ1X7TeTuN}YF{<5a}#umOW4}RB-|U4 zwgE>)6^gGo%7q-n8(odxBNVCQ6z;L zk*;OOHzWc|U#vecul{Pkf?U(~l0D%`BL(=u&@z*0v_qS-%rS@A>7(G(FPFzSl@NRd z=VoY5y%tmDE!e06M;r}ca48Wq7j>jPp^a`tXwDl$9W4+U8$OkN4YKPS=*w+h590)W&mmj@#>7LHcefMucdejf+F_?$Wc&KJw zAfe*eSR_84RcD0OsC4|qVM#4XPe4&PULt)bewIQqCgNv^!Px&__-Wr9emX?)lOB&B zsLxjM^BICUl)_IuerC3789z~~X}rDy`)i;d5SF3))GVx+fQ1zeZC6giZ<+`31eG(9 zD9j{$kAq2Z=dG3=^uVttpPg+gmk?B&O2#kXvW0opBcU*^iS9?)MoC4AGM}1&0oe3M8=tx2bBi5LA*7}`T)^`9gmoD%2 zboq9y^Os5P zcCUadlOpYy|+HYo#w62@{IIWzbZ-k0(&C0R-^)|#d3JVB0BpI=!~g|uRh?O zXK?Ac1r2lGNd29I0M=fxvo1Xk9`3ruT%iwYg{kG-w~C#^5^(D^w;2DYYfbyvK%;3N znvZXK*szMXPDbniXk`^Qf)@q={h$|OMwY5+lfZ}XQTvjpiR}RY5|~Zt!Rj(RsoUXdN9}TB z@nUv`@k%PJvhBKtuWw`##Su4db^XTyYP9}RyP)tq?TZ6A3X$lviCt8Cg8!<5^KKFf zJ75BvHR5Gbs~tFInzgWxG)saJ*{n+4tSY%wZ@^{LX*I3CBw{SiaAIyaEE0pO;Wn35_|#Z0nJ>8($9Pa*#eBLBgq)=UxVFPK4X1+e-zX8BtA9#_SogQF=! zX)FFLYf;wxqAW>0T)WX|HMJ(mpbF!=<8jDJBu#lT@)x)<^qEC$lgTnjWL55)Rc}lO z&;mFh2;|4$hIBFME13pZ%)~{#FkUCKyLt*=Q>%La~ zx~CB66(mcRvxCWlmHdoyYH(3gq#Uja;bQWAt0XIO+tiq4xHj(E@~0}p&Od74E|gfO z6^iIuP^mw!ZN2TW4QD-vDQ=zR2`9PR>Dpk1+kmUeCds!Ug^Cd;KE* z&RGCIFnT-#^}7{!cAw8o=(ni-d<>W8=zvHeWU5@YjACZgFNEkl0+Qzy%-%G z>al4UE`o!n&H@MAKmJ%|ix_}Uc_v!z42a$3E4Yh!Fs1WL$-)_@QhYWuPP~Pyu^g8K zI;c^-`X$f+7tv&L$AK)m>vGhRx_FYH5X+Pk;^?W%3D>tuAeuh*piDy_xjKFa^noJ8 zdnAjgmvMmz0(%g&9={A6b`V(O(f_bnTHHL>%Vv#98{>!@W{-@)%xZNGOyJp1!XFl=9*oZjpJ|mm zjDDSm0i&UhGLpd()OZWp0K(pii?3k)8I8g>da$*qZPn&zYqh;djrJ(9=c{Y8Y?wIF zhkH7CmnIL#g43lb!`)rI^&>pp@M46gGhU4Fw3A^bM#ebM4$IL^xv%Pl{AOW4jCsKW zmX=_*Yo6jX>LZ-sK510LsMBPQLHaUEUxw(*V13~r@S;(t!wR+9>lHA2y)sJJ>t)ec z$IH4 z7WjgH3ryi~i!lxw2jcBsb(KNM4b4sV7x{U*6As=j~DC{EO^g94;Jrx@RD23|0S!$U=k5|Io8VYHbi$?Xq6wFI`b+kUkPbH($WLm2 z)EqMR55jl2&x?$jaKqw`RTE~pyHB{moe>#0q0HR@HLPF_7k5Waok7#Tn1LE*A$o_AG*U8QoJUXXT;xI{*te)zjX`L^ zgv;E0B12HEPN-D|YSjt)x%Y&n?$im(JzbGQC)DLex)2XU61Ln09^z2K`K61ButOTo zXPnR;ez1zu(yQUas44}$gS>SC*=Yn>O}J|~dhwEY=2AP0W&bT5+60zbhAnHhb#Ldb zU%9v=BG_2!{3>jP$gB624S=2G?!eGCGFqe`?jqQi6uBgE5xEj6MF6nnC=7!6tj%e< zDfmTwq+@Z57T}k)B(squP;EAOFlr55q}QXPwS%qoWYN@f+4QmK!7NXKD|AhAVf)wc z8q1O=wciN}2emTUjO;NrfYsUZ{{?NsT?fnm zy1v`xxxf{gruXNvRJ;wV3-CPr@zfUH>J>fW{anD93~=H6BddAR_OfmqY$YT;2*%9!2Sva5u{b| zTfPcS(>sp6h1XI+fUSGhstEFx9O>my{Gaku;=)K1u#c5PBhgA!sMHf1k>I{jS3H?~3dw6oIeDR~hvU*l-O5 z9Korayrk)hp?Bi?=*2wr)z|qqww4#F@@Gs5au8ere+u9MEdhG7>63d{i@$|lndVU_8({# z0-dv-RAw;+&c*o=$D33LC(fDdEb<~A-+A(kq9-A@yo2P3_Rbju9oXjHPt*{ zZm#3yTBAne%4nRSxHfOcJoI_cG4IYN3~)9JoFFwLK-D4v zszhIkuOMJR?doV(=~N69Zvkp+94JmRyMnM&*lqcW@qJD~tXW*`6x@F2hVvf>=%LVV(WDfNIG+eCiSnWQPY`p6_}SyWfuf{N_8obV4L zoa({2OlS$#k~h=-FT}BTQ>?PFwrgxQZokM!M2ZRUChh;yZogIW2vXQhu&=PqJS)DV zPegu<*Y%pxT)o^A>^il#XO!5tjk=;YsscB^-bf@4o7KP*{depQSe_VH!J(pteiAQb z;9r5ZjTb15?zMb*29Tou6|;4y_HW4kq1^~SOU(xzf*vrP&H*ixarad0jtQj8cB)^< z3$vB#W%9D9Px5y27KcL}TZCyU*W;r(e{ItU5j`bcP*R1Psrb%NMV?XN>w{i+t-G`&MOk<-N(Tt=I zWM(i?LGE*EPLuGEtMmSzoP%^^|5YatE`zgQ+@1S_diF6u{PK>k9ED>;RAJt zula>^c(Yv>*WB~%Ry5b_X#7%K?@kv&^3>S*epu_T{AUZT=l-m*7AM}B_CtZ1_B%=X zaK^Z}*ujo;Ce>eJBVmL_!u`+a^TXUd*}Rz~mvZXVGLE_C8(MdQ@<8eiA$4@We3pcg zg(bo0rjWGO(SK~Mre&aa%`I3wne(5+7DMxATmCx0@YY|jU{RRSP(`7MhbbR0CP}td z|4qNytDoMIlm#9a<=-xOn6lfX@`psE@A?baKJ4I%B>u+*j;tXc z6cc3Za>84WZJ_mN=0ZJoIVJiPHHr>uy81q-r3b}CM~Gt#jvZ|3c^$dmp+*Yb;fQIl zpU?=<+dPdB@9>xA$$6~CIn=m|q3PK=XEGvcy0@u> zpMVtM*ggo~ROQn`{&Oe`M(zlwdh0qYO!Mu`jkNLY#I|kd*}&`S79;|Gp$|t%I^X+N zv+2eQFdP#GBDLGp_=+_>>g!ahyc!k3wb}85_LaLnXr2kQue?hWXQ-in3@Q!%=MfG_ ze;I@PaSR)opp=rpNh1*k3FU2)XS6WET*PlbCCGqFlu5t@Kr@ftf#(nG04RnN@-!#p zA~W{P!z@&!7td}%7Nn8XAe6u^45j!w*B)PURK4zJ;0YOCpTW%)=#h?5`lL(DsyG9n z6yzhps5%tT&hN+Z9?#;d(br}(5i9glyer1BG330}JU$&AJ)>hXpt+Z;lNfNttsnXV zEoSrJVr273Bex-kX=nE~anycE6KWr1sQo(#J$aYJMn?va(sR`$p`Id6+gkp`QofB@ zQ3B$+BL9bf584G1;3T2f19xzeY|?kTJOfHX*TLxl$HudO0nE+r2p7qj3iomwKga<8 z#jD5=O}a=Yy|ttEk9_O(oL3UM1CER^PKwvx=5>T4<3C&6aP`!G5J}~)XQ`CKc=AFo z^2`Ig6z-pn!Z~O`;V$N?d)9L$_-Vu>n5;wQVtx|4gAY)D`8lab*SrxW34v&=JosNi zYYQX=xoU)#F_;9|;qI?;Ps`^!TL$p?W=T;fDU4F(*|yS^JQEp64&MeQ5e@{&e%~v3 z15N|s4FlI(or7j0)=L{B(Gvgwm0OjZpG?2OQPo$jN_8{O9nG~3u8<$<3}ZpS_g~{m zKSKo9*7*PLt@3}9#R8iDuZ;N*Z2l*?X(3?qKV!2bTx+lnS!x=grGE2o!S4|2JmGZH z6$Bx?qnUjMHZwR)5uhyuVgy=Hivn0!Sg9A-3r50vet1>+DVN)htm_Ub1!l!Bh^Z51 zXTcvJDDZz@V4D0t0_^U84_J@N2MUA=jwW3}F{EAjvQ4TLdI|46@ zpcUGP4<+3DU*L<_8K8@Fb)$bV%e_qP#o15#JBhYPgh7IQ_@rg|aM<@jyf%bo{4_nYM)F1MJ?tk2ge7IiA2QERR zd|(qHA6CZXLmlJ;5s0m`bkeh$n{VwFFCTua<->dW+q`aCKIEYkkq-po0}v4hzeXaF z5pKZLe%A+ez8TC{|Ey;gmC$h3pJHM#YYic>bt9?E@_!0IE%W$~jVSq}or;2DxCn}H z0PiR(E>x*e|AplzDa7DWv_f+U$wD>B@hf5%e8|jja%V!65B8kD9f4d}-@NpR?-Dxq zZu%ZV=L|UW`wE-J>0*qTz>?8Gz)Z9ijXsw&;@rDR3n@7_Av#GLC+cWytp4_A6i$>s zOZBZnvQ=HS(}uO_OVlx&qf$gw%f@YfVVq5$}=E@+l`hYM(er8uKZd zV5GI9xr-7IV(glBIm!Y`#_q<(HCg3{D8z>-BW-eY{d4{35QvH@=T?M$p+Eo=(1#=LOE{gMuy&ob{d5 z<3q&FpI`<{jth$PWd@uVboLZ8v_l4Iaw_8?%uI1DFon?@_GsyZbER;KjP8vi>vaph z!e=le#=c%4E6G>a$$D^)+@!CZ4J+<4Y^?6SAlg5^I_yii5@aJy+kP`rs!D(ge;Iu@ zhwt2c_qXUf8b6|+)hvEs{E@G&!^%-OO#?hkS+U)XBp5%9=l5r#8Sf^r!F3iSPOgjDha{zPi~~1(l`FCFJ}tQ*fZA-wni_=m)<32oJ03Hsg2YrK{>H zaCHyV_K|+;ap+7p;fpF}ju&vJ-%aDYi}{Xb$*Q`XEC7};1lE65-4Hyx=dP-2z}FRH zaK+6^gF_GAsk(<78eSGMfODLf{Sn`O$hS}%NfCp-C4Bn^-+}@V>UL!VPLxQYby*5= zJS?thrA+x>NEyN083DTZ;$gfX3%tzSTE2rz5S0_&jXK#%q|w!^pM!RZX(xe6O&wKE zQB8gKCoxT3+PtO)D7y?=!5w#gj8hWdzYII}6eYju%HL?=7FLE^ikl6UX27hq-FXA~fg}(Ky$?9QIpl1ADDd|qXTgc!z77k!gl^1* zeGdEQA>e6i=*CO%r0(X!e{q;n^e?D*ejkq;HC8{V5xDZ}1^P<*=_|KKRX6jgqq(-h zmE)c>U;nJ3T6zpe2Y=275GnjKJJtJmKznfaF7BB2EnHhMJ8}=TW_CQ>>@2IcKlVX< z#r&i2ZAayUsO=~5nWCmtJmwPnm8D4-`n|JzImWo|CEog7o~~M*mmxjWd4>BHe201^ z;p;E?_yU=IHMNP?Bj=w{-}jIVDO=nZalGAz!|l5?f9Y%r2$CGvYWv`IJi|VCc5ant zl6Y~&M0Dy68GXBQ#i0cXj4rT=QsAd2g#s}Rli-y%4t0PTA*^GpCOXy|a4ZZYd?|{g z4(q1X)(%$3{Q>m*8Q34sp@F!A{qdB(6Z_*TiQhopPC73v3gm+Qu?&e~_Jcii2wesH z1F5+f9VNw&KU^U*{&+!uv&SFsPn;2>h1Tyv*?FwBb{s};wr*qk(k4(-2 zr=ekyX>9ONGk}k9b<&98-etf6jA@{6gl%0$(f8|*1%1)ohJYYpxj009gT^&Ql*ZFj zQ9Lo?pYjjycX|4tuDb0Mo5*Z1<#rRlz)v~&HJWC%P7{Zpeg;2_<|40+8;s4)d{9N_ z4Ix}W2$-syK;&2zy)?iS_-_s^%3^^j7?)WU4H!+v+yS4oe3%OYw*9BgxlVyH?K)W|!t$b*6JnrrOIi8;W&8u_vi-t@90p_{0)afe;mQ6DU}m&NIj#C;ps{w zr#HZ=*n~SKGx`bq#}Gm~ADH%x*E6&vRA!GKT>0-?t3O5#e805~yaV5EaXbDWYu^GN zRdM~F0Dy*;wm?dX;QY00kqm~mf4e5d_-|2=1LU@$#^5l|(BNb^=3T04_}5)y0ty$Pz!A>r@X{o?Om05G6v z$N0N?w|q4CTmFW`4u-#ix>8?DW?K+Cao0Mt_;!$>Z~mi@12NLQIy?9a{BY+VV(M=M zNr0)pAPUkx4g9-I=W=m1Y5pO~YMY?J>|f~Az*fLl5El0FGU%_s)K2=FgQ=K*9Q#-B zQmJY?W^&0h3H3Yk&l%&*5q0cO2i3@xmgj?Q}>=SF=(LBNjmlb*wbHV;Z7|8_d(UOxK z`zZ<&I~e_MUwj~71qwR&oT1(#i1j<_1R0?^I14P&aYM<3&`I#2Uvhvo0S`H= zVz{1=rYA_)K>ZF+>U8l)aVl1g3#CpNCUhWDSetO}rcNAY}yU`wIM&w@>T*0p`d0&s1@F?I9+B_>qt_ zyc?Z*hzTIxOyuWP*RUU%GLngOTrG zH66+`D9bbJzn_@*WxoFt@WD5~8wwR(ia`Uuk;aAj)cjIEy&gQuo$cR64x}|4wDKNT zKSB=R2Oad>w7=GAJLI3U^|y}r=Xt_Exd18r^K4G?azC?g{wSTxncuVZ{C?E}!(U!U z?K1o_$3tQN0i%ss{&=#?lhvN>#0eM~on#5T;JWn5!ZE;NgL3Oqu4p?iBQ03d5zya8 zRG$6v2t?Iw^H`2^DJxv>fpFSY&HLUtm;t-o7DXhHmijuKF@@AN!XxfBJ3D( zx2^3MaY=uNCVx9uFc%$3Asjn9)9yY+?kiTK9(hEJlQ{%9KFn=0{LOR!@Eq};x*5(^EQ(jT#~7k? zwVG9cTjXr0X5&)9C^Dh?CJw+*?==`0#E%2#N)RaN^Y#l(-!f{@Lcg?d5Id2@Ef~?X z(&6A!4=mL!%z{%k49!*P?e0guUi_PIKe8Mh#Qf>tPt%-=Tb3khO*~2cBc1xC(i%W( zDZ42AaSS*jS^<2?QYW*UiPGi!zSm60T2>`WO+0D-L$%b@Q4WXtt|+9O9yp~LR-_vEMpxp!S)X^_Ehb`36DR!XKNiIHT#E(e~q3+)TV1emh2~n$xckG7PEO^J1a|35C zJ%-SBZnr@%D%guM%ztVyW^y83E_UGryNuky+pop6LJvuMkMuyjuYQXT4S4Pkxp4Sw z!c~MjBn$EbYL!{xF{wdOFv`fe3y6u9di@0IUvcV2d|Sp##v>e7F?xsdKYksQ5UU&n zFx+u6so+g@@>UrsfdkQehs9+1x z6!cnza77%zCE7Qz+R8qtHI=oZqS5Mw2U#zd)=-~2HHiG-sr?6WUE=-Us7DiFmkl9l zf*Qs8!*ZV!@t$DMU_Ubn@hrkVM@B&fUg?+@$?jQcX#7|(Qx}1Ge|rXoTVGKaWT%hh_iM`u+oJ z?cTG)pY&xj*dN{uk0~TN^qraL1xXS6e{bZeeH}Mj+5|SBn_gUtN%jG(WI8u~^Y-fH z?4@ja8W!`1cMl8>^}X~-_nC*|x7#diMLM#jv)}$!t{5vt))k$w;ogTA?~mft=1*;BpBKju;p@L#jT> zN~+-T@84e>yb^^keEn=)YA4goW+~+{)4WBxdD-uw+jgU6f9R**lEFW8##=Y}&+O!C zetmr2eZE>@8qonCZ5X4gdKkTAgV}T6OCP7t8o(lT#Y?2(I2U#BsryWl_UW^(MtTjo z7EfB;NcF`DPqeDn$34-C@tOTD8(NdS4f#3nO%g83Ucu0yxr0A0Y@YHxA+(_rnasF6 zTxWh)oim?>YMgiRORdE8;trV^pX$9W^NxJn?Ba+HDDFE-_xMSvzBBOm_sgYySp)&v zN2e`JN1xVkI$D&SA<;$I`tzdfOam#t=ln>=FYI1E|L{V4OZbyver!1Pz4T?bSOCyr z+QRSFW(9mj@3f?2rHGrj!P(mkmc2P(e^^ZC1C24t>hI|XVYku1u0cZVkEYZx?#5q$ z|En?G!CQ&{-${=waKvq`TU;i~^@-XPn0F)%4I3;lg}p#$)1@~{bR0%+?#!Ne_yqe6 zEGZ2uw%_#oUW&6XPe@9vPG=Qk_GVvp(1-KWc71V>-rgFpKQFeofj*(UxPuadC~#J` z$O9SjOKAslqx=@gZ;4xGbm+skfz43jAw(!6iA^F z4anr9f0P=WF7Ux=ebE8F@DQ-n#{|uZbInM_>J-8j+>m5|$33*QOFI)pg!RYn5|wK_(fu2fiOt&|$~Yb*y($@mq;#b? zXwmA)BMkiF;X_J)(NGj!%A~+eXvMXg4~ab$fIq=B7(Ws@G5Tw=3!Debd5}V*1H?rJ zP-g;8$NWy{mq@rMTar1Hh4*EA??BMO%BZeD9n%x7aprH3u2(jy@j%P1^_BvM4>7g~!%=4iDm z3!;5x271=qeP(w|k%wP@HQjDRRL6p%+IkcT7dsq2g5k-s_o=R5rBbsE-Xv2#ywo5B zSn^wn>>H(QdNc~I$}nPFfb;Z7!4qTz9_x&!Qi1^u63x^!5!_x{7lpzJ`G~TQm?J8? zSdnSK^lemyvw!Cp0QRd(>iKow9}foWc)eGlbSYauP`@m7^~*)zO!iWFl0#^boAw6g)D{%}!Rtk)b#sa-h&w)q4~92rU#C z(h6aDp*136rNDUdPRl^m^GBc#v75MGMa38ixj425qd-R0j23cERS3bqmhHt<5bfRn zPA$(j@GBs@QBo}tL6Pnrl-k-$zR6PCJBCi}tq{l{+_E-~ka_`oxP7aaWOIw2^Rg}$ zf&?ja4blX&t<0_>X^vJlQpai0^^=Fw-D-n?-UEiN8#Nd#4*W{fWGxK70WAYwS%(L4 zJLrY!*gvcu`ItOOn6i^t%mqxZ{afX#Fo2tl-7t^sN>L*|XBD(20UC9D(}$3fN%P@u zSK)ryQcfI8mf^Oh-3(*-%M#DH;fN@+3 z4)B<1agP9Ki98OLhs5(HKXH0q{8wQIl z0sAA(AEwQu!39pf7|@pPn8irgw0(k2VgAEVWd>(Cs+|?VaXo$-MAsNywu#K>`|kxu zD{j{~+QiB*D%%)F(=P0R%QD8|*|Bz7(M6J5?6WUl^;D}`%>rcTPCyyz+{Ym^0qpD= zNnyE!0EK#X5IHfln%CoZfCfPyvwx4-_Tv3IxsZPqxcuue^v&=uk(>ZYEr74l0yi2> z!5pU+5XX41iah9jpJ}p|LH1ROG+0?4HnIWw_Z76|Vj{7kqfRcrIEJPN$XjySl&fl!U+NNcpN5dF2bjb6rSa*5U#KzmDSL>A=I>#({d z+1!I0&VTAz+A!fJl9qo2Y?x6P{#CzfNTy&p$nBJf$yVmLk35YWYZ|G-N>f4^8x`r% zx&^k;^Q7ENl>6BrZ5z!3Yx1MlYE_8Ea}JM=8jTmO{9xady~~Q?N9}ClOho&rhO)-L z!K|lxJ%@vWN_*i!<*n#=29x~p!3UVUFokjaQ{3^#iB!(`R~cZ(BwUldT*6h^D-e>@ zz`8KaP&z9W4ujVRLyM(I1GG2;3ip$jX{><1`lvnAp*x8V$--uellx zklQJd8(k^tc+ubt(@1gUS6kr~$Wdbp)D03LyS80k-jkRGS?0oYeI7!Y#5H~IaJf5^ zP>OZzn=lHi1_{qw3-*H95=RIexQbd0PXO={kg z9iweR$QAkako=qIvu*STj1?qCw-b;;eKnlhe5=z#dycQ{9olnZWqNpR6K?CeBPeN! zOChAN>@L}yG1KAAmvN>VH*0C@1m7jC*90P`9StJ})+gpX_C(%M)IhNdE_;<~A~?H=4}9 z*FhLg;@=M6UX@*rF(IK^5;}Zc^J-(D*R!M*f&akm>5hC4Q@pyQpONoBf&X;ktOysY2r$7U!K&XWld5C^J#}#h!iAR>E8{=Lb;1msFV!4W6A1qtic0+ z!~4>FwRBjh9zA^ctV&<)eRvL4b(zUUa7PkYC0QZGJc^G_T~6I<8y1(~x`xB;lhfBD zaZ3Cw$zr~Q_ofEn#iq-H$jGyrr_Rj`jXlp-(+LR~_0{ZVK1M@hZ}HW9iCAdtoxYln z`ML!^5DGd4uWeJzd2^4PQ9bs&$$EzYA8&>HpnZGd&m$Mgo;-IjK1@bs58?$MQT{>} zyF|xtxfQ+_)njkHrSgt=HC_QedpifQVLGYBljja$-g9s=={=p!sSGeOBRB<-8I@s^M4UR;TS(QUt7`=6de4A0(8<9J&4G!S9pih9-(!;57WJ7pY zDveyppauVegGAeRIO>V_u9?}{V1YASEz`+zO955r)ak(?)=R^OUw!>8SIxYWs3A-~ zuTRhymo*ymhW9hTmdon}oMPNjzZw?`2)fB#8encO+&LZ;u*4W$S84G96p_x{-~kj~ z>lS7I4uO`$qP^eWb7hKpas3L?@0?+*g5=}ObKUg*lapV}K$aFz2()ozgO;!0 z_#%!LGMi>fPd8FSzvk~ElK$U~S|rt9YVDKwf8)7 zw5e~x>tM84Sc?w*;Y}nI^WXX9Xq|&<1{HCB7V^X_fTUT2NkXng5h_ot_NL*w1zSaueZobs4}~;FLTkgF;+ynB zkzOmt%_)_@Qjh^Vc2LP9{g(%Y-(MZ6*#kcweUSveWVr1QR9ZK!5dd%ryz?DH@!N^| z{Xq2p6u$D+iu&z)bzsX;h<6F5TfWx@w%|KrX~8sW`oNa%cH;#FHfGjwDe55~WW>gTbh(^2+I#4W z%MT3glLh-utfI&nT?uhfx@D|3ODV@Mqs62OWtjhZwwqr+Mc1G->|w5t?P_ zgP24+voHbJnZ?q9$zi#?e@ss=U@gKN95b>^CF&3Bz(=A3u9-_0i~=s^2O$7-rtXBB zMSy4T!d2|6`l6IqN1!nH$E7a+iTK}ue8hiNo`nC)@j@L>5w?0gdq75l+Io*(Jv>ES z_{q|a-6K6J&2vi+3d^_Jz|w=?*BuPM9oFmcZ9~GaeUVM{eyIR$ek}_>@Vna@?D4HH zl}pmIr_Y-f<>XK zPUi*3%6@aq%9}47pVE?x1YLs1RgXU2f6I*EVa~Vb_^p5S=o9(2*UOrjr#%bi{@>(E z6o*}UpqtimzKEv%@)pp=ZuplJt$qMFCIGRI2M_4r2f@} zXH5c&6ZZcV7)@Em1U|9B1;i^%xmgH{V1nR&N=_L$64qpAA}r=51KhX`hk;IWdd?`M z&VxN0yh8x)zv=iM?~BhgYg&>IE1nXr${vl-ttT?{tXU#Yz0y1aZ`TIw&FcQkMXG`~ zAF!XEV@q@ywKyF~S5JN}&B3(IW>Usyv6RbM4fG-1?l@T_ze*#*KX&rXt0BXRUi_mU z3qX!v88%-pl72%fgI5tZp+$!-dfmudSgfP`I&A{PGjCg*HteTvzrEdWHzb;@o62=F ztQTr~Js<`%)5*}U?R}R0jT$|X5}>w%8lo=1VRkRVFf;kq{&7n}q0(gs^%e6z}$eI>=s#F#L_Ygz}BXGyXUeM_(#M zG@O6mQksZx4&IvVkaQ_6D-EV1fDocSJE?ZvNK4TYK~>^}PUfs4x^~RLYe+rlC&Uy~ zkfQ3})$)4-t8;M8u4_QGM7fQ8ZP#s-R`g^m;0=!V^>`m^8LaYT$z8|wO(gY5sxRxQ z<0BJq(}ip^(PkZOmNH*>m}Np`1;fO96#4m|*hC%GMK&dhnFrZcqb(n&0cX6R@JqT&2LQY17-*g^2VB}?l^V@$bxr^`)2 za?^W0sy$l(Ud&ji7&mtznO1w%RnHrD2AISy<6;}^Qts#ib?T7PAsJ_(gq&$P$L!Pl zGz%=J9TBTr%!q#sA) zv06VCqy+E6$FdYG7lmh6qy%rW!Y_yLEhTt0o;VsQ!BRXCrYXVmy!J&*rC2(U-(+99 z=+Fx%f}f&|?S1I3f({70U`GfyxMoV1;I1lRP4-3!br&IDLAEmMrIA_bbJK5 ze(@&BHFU{MTL1rG1fc#6T|7Ry_z|pM!Pgnr+U4T3X$+=mGVo2;>C~m`AU?8A;v?JA z0*uv9bkg?C8#n;%>&W$)nOwuc)(PkziAb#-OIGjH)o~qID7Nem5-oFpY%E^@A~}xC z>qnr_qR53^;70LDif| zV=52ho^rV)DE>Dlj!c5iKRb(-Q&sg8UzjTM-sSd;y=g6&9=6MHAh`-&vXmxJofE{WmfbgBVce z{azS45ZADb{~g^2lse(!9WfOIqC*EyhRk`i@JD><67;!Wy7Eg;eU*}Y_v6T?T3S$X z+!>4oSlLzAUo5Z~oftKzMh7+yUg^d=O%?Drv=sc*d=5T3_*rbfPI}7350?o9dT6p6 zAun!_7VD21OFH=$@MJ{vH&y$0bDNKBiXuGo7Q&_K;~Z)i@iZI-9*2;0&cew=#?&j`#nnK+8XxcRbpFdM$gQp1UVY_5D=c z)4zg|1}fV^&PMunxOsf!wzNraYGFWgiSrA{bjtWGG8J-<_RoeP|CtPJ-{8pmYR`v5 zCrAgBlQyfHwyCCxZ5Q@hAU`r+m}5m|&h1gLkI{Z{fd`&%yi&mEZi-w_-||CUV_wXY45Ug#jH z#?K|7uY=-eOylR9tCH|@*%|HdbK_ZU@pCBw2LF!(;^)rijNSl5VwZ@2r9^DRw@H_w zBAK`b0q~b`;Ae$|k7ZX$xF|csFoB;bEG`*8mm>x7lS3l95aQwdMG@k~FyQBi-7bEz z_3GOzh@WdjHn)J6dzpHMAiGrZorA~5G9WylFK^`m`>+Nghr+*V~Q2b1sn=ydDnAm zM7-4Y-Hc%GcxQpVeoK#y+RNB7w_sh7is51dS#pJa_)Dx7u~iMyDqSPR2i;1iMG)YC zl|_+rD0Mfd&g%ABI?}h?$yg`E@G%9qG9%U*u?)s8XROPt?qW#A`b;qlz?*kmsh5P+ zvrp-@V5sT3Y@Mmi+OPQ}bz$w-MA0R1nl;%^BD5kdEk7y@6gyqmWg`HwXIW&oKz{ZB zF8t8J?va5Vq%Aod5Qn zuJK9Y9Be^D2B_0vUSPE>7wm##?+8_n&@Dy@LR?*dvlm@; z7^?J|>?+i%ro9anF={ z0Uro4%;+wLpVM70hSy1Hu*ykkX}2D&SAO|g&3n^X_$|e2HLHqtY1CMuYn<$<@vIfj zI`fIB%~@yuINhu>>snv~Os*}}TU&p(wlA|$TN-K;7?dMVq_YaXB~Uo*8Vv=$m1&hB z+LWu?^fGm01BH@r3>4HOCu;~WlM8_&G>#>-Y17T9+=@buL|UKh-<$o01BUb2u$%6n zJHX5Wj^jqacw*$T4L~bB*kTKsXk3N)6|TaaoR1EjG3RI$PYe(mvcCz~Z^GJ4;;LsR z$Q85?2BPCq0};Pf%p=f_<_jDTAHIiOhEBrbX&obOBUM3hq}P_>$bBJst+Bi~GPR1% z^sJ5N%-0A4f(myDxYEiZV}M`(T-qAWKP^l)d<-FyD-~eD)lD~==^lW&gI$r&U>Q;d zR~R#_Fd)DKBNC!~4un=Qu{MU-ApV8(o93|&cuka4sm~rGyT@IC1y%e=PApwV!R)%9 zZa9X3Xl?lj5W@LmlnES$GtpuSp=`isK{?hq;+G>U++44dijIen^y5D;aii=M_9@!? z%6#|}zHt#dl3brFIMIYOYBZ8{B12vm24IFyjcL)6oS-@#=Cv@#fh=W1 zFcNwYx6OGuoc~OS5F3o48~=Abbm>eK?Ol_Hq4Q1AGOm6%ssiskNH<=b6RAIH%rX9- zFSCB9(y0LR`4DrcAFm~6L^DLAvmZ@@bhfmE`q#8ae-f;3N-i`B)|=;QbVzrK>|t% z>r2c7-@kE~#s6EwY{NVbV3!T^${-!3Lf^z}Zij#n5c#ep&rQHK2@D(W(O^i$%Dy(k zbbxZ}U)1Lx#^Z2p)jm-p;TD7Tbl_pW^-i{|{eCpSC;l@0(>w4Ba9-*CecYFB)&Ow+ z4_RAEP%ahBQDbo01;oj7S$+;Skv5TcM&x!+Egx>V{Zzc($k);S@8C@5E>?6%A4&o^ z0XapDL0QZTHpw%4fO-;wh&2CL2Ex<5QW;J+;xpWJ0NuVXq1Bl7Rgls`EEJr*4q?mb z6MTKfXd}&BFygt*u6Bg_J>xe)+_FF)t)Z2=6FR6{&KS-iTwIB2aEuF&B)k=mI5BT2 zKH)yobnE(eR-mrp$druC;^>eJw+dcaa_?D8j1HH}<~Vxamla0>8Re*7Ov{h3g7BE` zzM8&LY#k{cMHCs+^L^}2q%Ie4{jE6vGe%~CliOz9f)icA`t__G9pyV0n@c8s`Iw+q zh?(q#%oNVAoTG8-S*(l$rvj0AETY&RPc=eV5BI~!9-#o%T*_sYR(2^#FGLT#Am|lu?HM;ZU$yrw1_em2$s<#dY3-fZZIR zW5%c}&p~@1jkCS{hDEA^Km7;0v;Q_maQt$%kSKPo;K$$@r zXg?%O67L{mKBW5`nvFgO;ifeOhvjFgKR>85p>%8`nxE+ZL(+fDYy<)Mt#lPAStg(; zjx5Spiq6YO-A}+r>Piu`AD=S3)#FpbWbMc2)(PnE(<*6vm?@n9-d%cpdZUqgd{~4T zA3jRs4q<%QGIxAfwrQa?AL~DxB>ZAc;R5V37~*zAXNxBu_Xq#^PxNgARA2p$p;9B_z; z1~Np8bf*gtIP_)c$HFT;KBJkY{rGGikIwdx&MwJjfuJ8|g8avZ!YFg|1J3xc2s1u> zJk;@Fv)u7v*%%+bSUitHQfyNaap-K1`CBclJ#rs-I|sgmB#qhuS21D0_<3w%aBWx)}tyZdJ3 zCPeqb?BYqFj>~o8az4ReH>zTAwf3Zx{;OqYIWMt|bg>&z>n1qwbssMDJ8`5t$BD$& zsk_d1KB&zXx{pP0Iq=k_Dlc*3$bOwSa#xx2MOSo#8wX5K)BgAhM8%)MDI_CkFvVWduj3#wu|w z44u77V2&w;6$V~a{M6VLRwV@IWMm@@=P#)wQbTvVCtdx1F?kex?DHRZrU-T1lWy7P z0iQ3;*&fa=ob5u@-9eZ?Lr;(Z7D-4DW@vAkFWOHd$Ez(upn02cN+ z0c26C$>H>#i%&S@z(QDpx3B~86Q&iJItnC)X?BhDyrx??f7>j!9fyLZ-P#P1n+{8X z>`XQ8T#}<{p-FBW2bx^+~T9e&?P%Yq@95}Ken+|*Yf-Nb%X&2$w_ycH{6M=t~ zw2Yxh`qa4Wx>Dq zBP~`*E?aVi^Y6ZmsMSxcjyTgcGn;8!%CU99jYZpbYl;$5fD{f8&*RYZ=nNc{urQ0A zkKCWjSJ6@&K8)Mfz~tlmkWIWW-ih;YaSuoU{Z27oEe~(@H-==6V3*-?7?O}g1_<2b z>>qv%XeEmuHIe{^u@Vo7>5cxhY>CVUD;0%Or18+2_WfcSDkJnmSSe|+xI-iYt=&{X zfN=e`^ZyxI!(tl}sdvYd+;mC@kGM|8kDf;U2my$VJQz}K^o9QcP#+pn#aD7jaYI5W zDwBtDK8U|mh44PG5%7!(ENXyJa8nUQBJh+3E6QEBU>N0UMu}tIKS{#fGTEq>P5E0Q}1nbca4%#~ie8!)F!1w>H0|Z`ki$>so*X;*^#g`UDgjGpWh`$XY zqhr9@1V1MB#ek4dzUCbVX9KV?7ym|xfOj*}Uq;YArjOJ_1dh2lqd@TgGHPU46=DQv zwo*czA0Z)Db0iVQk(Spc6Dg;P6qF;KA>s3?%d7a?2;vDpz}am30&n%v?@K^7s{VA5eYJmYVD zQ}`cG{#^V%ug++d{-a0mQ-9vN${P^Bre`beAHkbu+RJ2k`>ly|uq;EvCuhezM?V`@(d; zje9x7YJpa?T>Fy?zfKAtjKZNmEIUB)E!}Y#AdXRl=a?wO+XMC+@gbPrRT}t#M+B&& zz;fFR!pG4>c-3Jh@2BbT+A3GZPnHj#MGr;J-;aEF3r+kyO!7t&Q3Ujhts$K&v+>)d z@<{xqRc7M1Yh_4h=J@`A`)b9{3 zXLkz08Z0#YFs~>9a9JLK$-G19Z{Y%cE_)}09u!bBukj9le1w()lgD=nDDpt#yO?X7 z9N&wCbTR!Wq-@AfU4t_Mky1?fWe~2*vjU*)(P(nvh6TG2Ktx-h5c(tclJ)u{3&>*S zI`lp$4zD*d9_<48t{L)O7aWtmoATWPE#K+nsHLTkQ*yEWRq=@9Z*Gdjwl^+z7gMG*5xeoe+fnTF%*w=GyVODe+oWl~j!dZe0j>tKJx zDxgKO9`Kyq>R5CtXrt_ER{1n-c zf4Ssup24p6Q-hrRa`Uw=Vkw0@*sWhLjg@q^G(`%b9e7o0L%}X`LiZcaw&g^awX8 zqx=J;%XtLlwf?ZakT*EZA1SHuM*w)cE(u0!uGKL5_gphZ9l)rn9Qv=M>%}otzn8Rt zPC*%Kt7okpQL@ZmYD_qpjQ>#PCF59p43syQTep88eb+&2*ZSRON4oUAt2=6isFaSK zzR>S75YTy~4??a`q#)G(2Rv?uB;SGzVCi7keSI~{u}UxMHKuc-fL62hvNc#h21SKT zyeI$f=c_q~^c~*a-&ZpqoyF>70Qa)n@4m|Zzs8@!dih-=zpu!zyyw9yXb+5v+#Z1^ z7yxl@hi*ERheAm~iG(Uep`@bZM+D*uy>6Uom{V{3T5tzU4h57-h?WqvE$#aesetQ8 zRT)?q#KLm0vZ`DQVhu!c$S;7&esuRon^{WUcHjIvhq8kZZrA|2uJQvs0!B;x8crp1 zIH^2i&N*=o0CqI~9sAe#X<+Qd6L2^jisgn!_p2OD&cWIUV1b4JK|=}3gERn~IE4*B z(%pbl{A+@c0AR->6(#61`dR?CZLzO<{Eb?U^(LuItL0eTVPBp3TP{_(dx-9%Xmb?5 zS-LX_fQ5#EX#$3dO)zV2lbkiTNH1P)*~w`0sFSro{uzvW?WDtBA(OYOT<(;LFfv+= ze9UZj>$uN>$ThV6JflYf0Lc-6ED}8BBws*p`7FL9ma+Z1Kc*V=i%5ktr2Y0j_}B;R zJwys(Ip=0(v?7&M1NCe{@p-gw$y!p=M(Hq*P=W|i4svUd7qX-wS0U&mzSa6m{C?o4 zi1MUTS#+#kuOB-ew6cQ^+6sa*kQc`lOGmJW$%8@!?RfB>NFJ;ye@`*Smkvft-TH|c zD_*7sUIF=yNLgvMLCbb@FW(LE0+z&=01gdLk?shG+7accd-EgqcjL$Y?k;l0tJXujqF=Fk-VbV-d=3)EVjS&+yC<0|FP`1 z>GNu^y2##BY&YUG3tO2_BO)MPTtenjQ8ZBo6K%<2H0IP#etxZ7$ zU7aM>CL)fD?yTlE5aTJriGnC)>0=*321poUspx7w!uUv34Ih>7Mq>X~{5DK29g~WH z1}xj7P>42h267yVHX-w`s1#IO9hCywb8|WxBR1#)G}pCH%(=%%mN?4=DR7iSvVBZ3 z8}McqLIPzs<8AC?DKaa=N0E~)(qu3WJ`KKX0l`a{f4TX#LPBsUNrRaNeWigS=khq@ zHrmi$+vKXzY>~P*S4*i(=|G3-v~(!Zk(VG5X+brXgOTt@mU5h8fLRs?73jeN{PqP9 zR4;{~`od+bFhlLSotkh@97_s0>B974dm;qY81WWGSQ4z{H0ZbQ=Xm<Ps8Wrd2|+a`OgFN$Oy?(BA^%dHf4Ss8L-O}i6;A&9WAd3r{F#rCKI_?& zaDFdI+84#LE8tIRuw?273n<_4kEz+{aQ=tW*fEH;F*aN63bK7n%BYi+?F;As#ZAf< zs=vBP8Fi9YNYXktDQQMM>Lz8>Nm?gKFL#rMnDkaRDWm*5u$hzg+q|{6pA8DwhzwTL zHJuChZeu#HXPFR0+s!%Zg(}#NPJwqz00)~sjR>S;WNv`->k}d|PN@0RS0jsj;n6q= z!a_;FSV$Blm~l(9gqIU#pfXc8!y_nRH!V?3wCvmeg1zt0nO?=*kuN;-HNwyrrPgi8 zMp|fQ2!zaG_YhZzlhN#w5HuzsL^q)|Efz9e%*0nnOK^^(iLW&A<%pBFui$&o;Yta? ze-P4%eH-Io!4A!>no3Ne>1xsjm*&_vHTc8?&5_pl(p@1+vcHYLTa#V#I0PbD{_qb2 ze6=5g33-9alaRZI>g&+rPL-ThQiBfN6 zuh6_w9K8eSiuM(g!{55OIPVAFyepa5 zmO}jY4;;e=CE;rq9v+lT{^T;W#ug^o-vsP=5@Lsjgy5Mb z9f^(kLVzOktuW(NXX4KI#SrJ5yp-=Te#<3}@sxDQ{B)&!!~TB>VID`wG2V!f2YQ}d zwPUaYRyo0-X;b}KQ^Xmwp$3c`ye?OiXbWaBhQa!VBZ%4 zxcv4b#F=n@ipigc{K9t6H*EJdu-yj?1b{gG&s1hvfw#Go|_+x75zBjfG4u3W^6%uHU7{{+_sspEFu?rliDE&n`>Sv3D# ziKRfl{co<9^!L!7%V9kDwUdmS{-2<)dSoLVH8Awh-$ukqe@zl%-?D_@vnCzk&U_Vy z9v%9tGI59gLWol;tmAvoUra)rD2An{B;=Ub{&OL#%}}Rfg}j}KZIQOep%e?Hun=Nk zTPxd3rigEEc8c&=*%oP)5k-`lB1&`-nvi14F_4gdq=;7+M>!P|)?`;9BzY`l+(RBy&U474Yose_1S_^Un@U(miJO8bu6mlr?_!vU^TyUa*??gF#(jaTSSF8!8ce!AL6}cFM z!cD&Cl?k`i{OymDO8BQczAsXi5tM&PWb_(H%+lM13=?tG+yWkY`7ckMyOk24Wxf#TXvgWb^>U(NM0gj(J5M{4zIc2#R2 zZ?|uLA9Mx^m0rr8(+E}Tl>+@rFJ((=t97HJ|N8S9ee*V>K)7nQBtB3w&P_zd+ zKZ>uPCgLhW2SX@O@(ewZm2(){CdfVwLO2j z`k(0 zeIZPmT=f7s&fZB@XD?(NamANs*$r z!3#EE$2oqpdt-ks%1*}zB1xu%&U%Qk2Ll;On9(dOag5j&ni8czkWiDvVJ|MkNxw*! zi}Wae0`JBdK!+Y}9%l2y&G-guB%3=aGN(`0 zX-3|MJJO<~7WT!agugydXEtypCP8bML~hBHT|H$qj+fG!ZOQvx*u%tqJZPw)74v8o+f*Z_WtT!$qNTYtZ<=_ z96rEwVdWOvRbEmc{Ix!`%WuDhWr+CUxKIJ6M$r$(fE@9R>rPcJJy>{w$wqGfJW4(& zb%caXs;_+Arg|Xs_`TExvNH?n=4202w-s{qip;Hd;{W7ZjSul{&HG`w9GGVeNXUWYJj(?V9<`=sG~#X~p{At7c;{Dd%Pa6)t5Wt#r$Txq$q5p z2UozA47RSMvFL-{-K7m0^&EGw{vV>@xETl8^~MPSUZZ%6OM2L8g|S3O<)wIZ0FUUf zPW%HQI_O3C`WtvM@B?S z;rdkFICh%0@?p=p;sD#Gz8;`u0ih|#0@C1wf%GWTKt}-3ot4Eu{fNb8oUhKy$jKiG zfwpUZH{#u)to^wXh^+tRvLx+Nh_#>!T`s%k_#F1o3FK9D4(A2<)@u4sH2<=z$$w;j z3f;QBi-S`*8BF1#tat->edghnEHWH`NXT=F_X2ZFA%RJMw0E90zy$MGPxenh(t!p2 z(MsKpIs3B`?OR6%dT6fm0|4Uoi%K2s$4DM4PGcMvFhLEgsjcEPLysRT+6xCm3d6D@ zbKX|Kytj8@&Ukyb!=m6vPWa(^*9XIO~j<@K)-0hPPtokgW~vd20s_A(RiNF|VOU zb)M5cZZrdXg?umkbpyvTyf?#FLk}=K_3_pG8Bg*ZT=yxyb!UYAbKNN(t~;+fi|a2t z{?Gy6O&iORAISENDg7y|S5__|qme^7toM;^`)9q9KEZll-FsC+xoOKE#zX89tsVRq z7@Od~)_<4(rsuQs1KJ2 zl$hSAc!>s~@e_whEVx>aUlsz4Oq~QV&iUc|m(L{R`l)|SF}@$MkbI{5N1Z%I#P!0; z+Y`*CXGM-=tC4J25EQQq^$>DHUiCO(#NXo(MGI3c8bG!aC$!H7@Q5w+AG^sqcC*#G z+26X!|NVCV+C66nhHr#E)`@yxy58~Da-29@(sPR}+$ex{7ieVbe@C_;?p-)unO;>u zAMkp3{S#z}?vehhmxU_%8VXejHlMQt6p@hF9OUpq9$*l}K@P}=gB;=)>Jc0*68K^b zwMpqX5Ri{nczppRH197o%K_j*s_Bv>R510Q=EaA2FYUJPjz8yzUGDzPA0f+{`9bV% zwC@S;hD8;jtDkJZAvGTT;RPYQ`lsn9+%*fR6<~^UdQ(UKtN|IA)>LjF7UNh`DVXz?Pac%T1aU2!Z+Ks1=ycHWWu< zRcr$aN=M6BP=EEM?@^} z^0(hYL}K?y#cW78|JBo3KB%~k?Nd!9B13_S8RehD3W9jB|t&F%{t<>vs;;tvHRH zrhIYsZ(OVs1o5ROu&x97Vw`DUGSfqq9UZ!2N^6YmaL!f0Rt2U6!A)d{qU z(q0640JD`Ng23qKCGwxH$T?7(c`BiHG@#afc|rt%{Mt1EvjnATO)gpf=#1%u%>ui~ z!MJtcw#m8@Zks7mV}{Br{&{Yj4X3ch8EQ{}$om*0VKAXqsRw3zV00H}}-L#DJkNm3?&*A(ZN3sVjwghpN;U;C&Nvc`hyKYj!o<2}!NrB(4 zfGM%66vkaK3vfk`=CJ&!zEy*}|dZ5A$uMHnXKT$q-%daX&^L+zeNsCDX; z^B^Lf$e$Jb`7M5^UJqtuAbUPxS-+kR z0y&U=z4%XNBKZXpLci_<{rX&isAn>B6x9w*mR6*`8Ds0tv5<>>^LMfcntM5~VREbF z$zhJmZtMOxTu^`Ax6(9e6^eD|Hf{mZ^80?~w>oL{q0MijXJUSP;IR($=vPi6TJ%%j zSwCfdgKwP7Z>|!J`E3f1+24=-Qqm{pw>w)pp5Hn{s3ia6{8r$d-~P+`^Trd|Y0hs~ zKAJqgot)~`72E00SD&vN=#VUhEwi~tKf30zMw!<&oN#`P*=1{K)8eSAFR#Mj)&Pn` z8+ZRfXHz_psEm7+%e6TXQ90NkgyfD1QH-<}F$P9jGDH43YA!{`ohPu9+{Jv?BZ=uq z6{mQ6h*`)}e;DE);lKax*}K(EU<4i_#r$@RmpNlj`j1GVnjavobqwIV}tgy1k?Bo59bWYm~*k?YGl?cF+F`X zCxNxW=SYJ#Hlb!y@J1L3d_HkMh#iEv$=*OYfU;N`eN4s|^( znba^$7{6Nta6fH@>f)Qg;s5kd5+;`lChy2$$NQ=N;~g}%@cv*L47Lbh@HAD*A#6e1 z0N}EBnb_NKyfzC0|Ka@lGZzH3#BvlHj{70>lEA2Oj?7Y^;P=tNl0X)k9M1ph7B_TcAOo9-W;-a@^68!oL>RKl>EdI>dXNbn{@(_*__2D z51Re^T#aTp22GZkFnw6CgyJ+IJuhGpo?NYh3V4D94zkSj-Y;DIe;_d(i2Zyo@n7S; z0|>`XnyjBp2kR&PqgOe=(GK(z3IqxLq)h6>`3D6*Pd~{r`KKcP&(TkskJhL^$jQHd z{p5K`>gp$rXS2qR^^=8?6dt2SKUwCc9SxxHFQK1Y;T9|UNrjuVy?%14o3tFos0nUT zMx9dY@Ep!hcaw^Ka)g`okoA*U6Mvd+qG{bj_MS&|DacIyFMpcwLy_J>hy^um{~W_F zr^}lrbrK`T;>ROGP|jBm4kK%dclySnNC-~|gzCKC8vN=-Y|;AT7<_ByXG_+%ExNXx%i-PW#1 zhax!0)$>4SLXGGQ`wh?kuU=1Z5}(oYmR>Su@+O8?8giD#L|s6#&IEVQQAPiE6^6sr zm9|2hAue!E><|r!q*a28WXr@w3nBlAi)2nG;-aOF`Bvkij6HA>*zVSR zxv9CH#kn0z^a$tiZd2!g2Y3)stv(_N2^S=gkocE4zx6*T)9|+(HXHay5+Z+NH`Lq9 z4K8ewjwBtgDl!{rIMX<yrD$5ermxP4o$VuDNza+HKA6bXdY`=A{WT& z=0y8XLv8OXjKur9(1Q2j;a9y2{eT-&wL)k`?rV~ux*37tpLwtQ=C7Cav->vkqkAT8 z|9;>dIIpFeOB5)9c`VG{H~h-rSU}d#xWe4qSCiSrqg7I=tkmUe)p8UB_=i{_?(F%~A?va?JGDJYXlVbzj^qbGWVw*wf%UZZ^20M% zKz`_ECn1N{)J6{0$Z^9c2RROf;SP{icr>*)p9j45V~EppNFG2hpaz;4NN)U>fR=uKv*>9J8{qU66%Rye^ZVK^95`s zg!vML{G&k1rgLi9)sHB^sbxXPomvEOF8M;!sB{uuGJNUS&lB@Y7*d&cej$YD={35K zul6M55P5@L-p|5d!gl^HQYRJw9ou;a4z@F}KXHkXZyKaKM!n++Yl0t;(I9I)C*Snw z9IAdd?qbpJmWA}JCS&E;D*oD+pc4IV-w8zj&hXqm6mdfjvql%K-%aECO!ayVEJ1Mt zw}asa<>u(9n>HsQM=OLMjsaB;iz)|{J8p(Tw2V=hKH*`%UmJsi3ZM01|7c^FbC1ie z3)JM#ym&wxgIB%?o4Ot4qW@^*=qo@qr^SnaPg#J}#OBNTU z9Ti1?))F-CPuR({kmh9P7LIrJ)lz>E$i|$9<<7%OJU{`0USdHlDZ!v5?-}6|3=<g2g3 zlU0Z0`Oy$)lWTodBOBtYummIa5$>3qj50#?Hd3YfYQIJhs$VFPVJW`akMKmmFJ~A{ zi=1~{irR1w5d}MH@y@sUKIW{;@U6C)tIon*d$fSbGBs=+ggSV`DjBE^^LL>#=u`6* zLM!rW69QZZ*31B|u=9uWHIP^=Xa&Ro88tM3BY{hsHzEN})pWKz8Lly3YiUvr)J?TM zrtjzD!dvaPuqVV{LH0l-ZRh5X1nx0JM>fRb>ky)KypVwRyHt3#USwq98}`2*Mq z{s?`lc2;rfmO@`fD)A~8-N18aJ{RccF4>HfAcFfiG%{&C!;aMW zQq)b97>&=Q8{!|(<%g|<5q(olxeII-gSe5ek&LAd;A&{CWSdvtPlD5fvFbWB4%;o2+vO^Nbg|H^v%@Eiq4F!6#qgLMAmM`!& zY!{Un&?fbiI3+t}EYf+A)?!+;L0X^p2J*aNQ$fk#u$zT-0t_KIeP@cytS~T6 zbc`TfCLSmBrv?)+D6&ZaB00nP6M7NlWd51`3upde8D?QpinDe3(bJ|`Yd`0uj=5HJ zS`*ekBy)h!Zje4FuI)90vcP{F#s-((;Iq2)Bhs=->of#?tv7Jec}_#&w>Og!F_W)P zXFfK|V^=;By1qW=fQo=-92QNj!fPGID~20zHYAPvL6YpYu=m<`DhG%2OM0@?K4l-x z9`_7HI_ZmIprjb~kCPBaSoWP5qNy1;|J$UWD(P{_WgmTH#YnPHnjSSJ`deS;C6Li8 zQDYz?Fe}dcz!zSEMBG$PJP1S{CrBqpPq@Ip_A@L7%sByj!?RDA5i8F7Nbe56R9qzp zC?ZV2-iaN%ls~6!eppzc?yrLZ`|CIN0u!L(7a=>r0WR4Cei4l9@l!D?%9WDa)d;W! zUSm5LA?Vu$Dag1qkhjejC0|Cng%0zYec}GFK=G`Ga_P_0>`x$i7RddJE|VgGeDvq0 ze6ZM$E4z%`)N;PFvV-da1NO)2!ME9qLvOt^r(iPSRmf-)eeb8B53$77wG5ob4gOix z9pf5IL!(>z1|nBurrNG*M^I-Q0dIgnbZE&3RJkw3hjBUBm6nU;>(TK7w4a@3cgQG+ zHQ*A@ysP<1m)n#1NysGA+<^RK9#TSn+z~V!B?T#jqhvS_S}DtkOp!V-tOjc`r=`MwKzHISSUt3`@BX8W(}C3vsTehomT(0Z+-a z#qv!yEafPZK^Q}%PO}s_(m+^Bj03FgXXkr%g*`I?({m&G?2e{wc*-~3NM8NaaYqS5 z!M1FcVD4h#Be$NTfl{9>6$PSQrulJK!9;F55#I6)3kl+qQ3##H;i}@iEiF?CyaoZH zW*d$yf>9WP_K?*Ow(9E-$ZDoQUd3LMDl6}wZhaU9DZua@8VWcH6Qli6@dd(nSc2g@ z91vfhPUJgT@;EL-8sC=cK%c%vy!$E;JvTLww{F()Vu{}FFyXmH#{u!ysfQ~Q@bcq4 zVBU59<|Gi01>(V+Ikq_J2V;G%D%RLD93uVwpnv&FqD~KB?^Oa_Mb1KCYC)oZGLg%}UjfoZ z*;y?({TD%~emR<+5LYin?PfVa(aBm6LYh5uI3z*Newg`wR) z2D7Zj&~Bs#5~J=Ao6rd%F{V?TuA;1RY@x^y@nYi{tI`pNRRIisKt!$Xh2@Zu=cy);6Nm#(854os2M@xhRxBJ zuQNmMtJPcaxYSeo-8~bbeKV<*_su-@n?qq5Mwr{z~k$rRlEVmLTfEs*V8DYjdVy@0-`zvJ_?fU zSe$6`k@Yyp(N$)ZF?$xetneNYZtl-^}+|2Aa215=h+jZ?f`+K2q^f zO0dA}pX1G>kpYYG3d2Cb6(@C+ZhyEHS8yLj60$Z_FGn${Epo7VuD;4t>Z{$61V1Zs zAy)o2w!ZUXZ>hG?vOffkM2DXB<2dYJdX^kXw5a=t##UphAh!rU$8;he8ldTG+7Kfj zPEGgQ(;ylZ;{W_itFe&F_GAR%^%yP(kMM}oc+`X}$G$cOPX<47|Ks4t=a7{&8_@W1 zs-u^Ozsj+~Rprz#r7j-Kc0Cy@eXWo4)9LQJT1#pMyaT`J4*bN$K-uBxYi;soC(CZ8^0>Ax6 zv2St{@#ZMuXE-zr$Jhig9*QE9t_VCWskX*Y14`web?i4S{W*WW9qbKyYmk>TB%oo^ zQhOyE_7Z@f(lSWEn3Dh_9!I_-^zZcld8A`IvT#@A;f96;J}aB?#aD|V!~LR=?|>;6 zxvk5R*2Uk#M?+AR!{aAHH#f0ZW#4#btj@XAW_u#!ufCc}3XW^=nneM&4`?`}CAxiE z?zq~rBkYUQ3ABzN-q7VR=;3Rvyf^Ow>Pl}xwlhC&IR>Q1LY(}4L2S(L;1D{mx*SP% zv(d7@QFp?FME#3yB&{Lh0^XVab29*6@jITVZ(TuENm1 zW}TFLx@E9Vx?AW2>38{RkA`gg68_PYy}oi);B{Up6Gb!(Bmx3Kz)lpiSn6;`*V{EcXE47$e%ARCpl5&dtWzOVbn*iP^J`EdUSMXL+X*!l4cD))))mb;w$s`#(u-0X0R&xrHAW_h^5@Py$)K`hzs~!{7Y+e72I-6H&N|GB-j*7l43MyWC=tu;b1zF! z00aH-ihg1UCyN&#TybZqjJre1|Uz{EOI)nq6My8^gPO~rJztPNAf@#viG+B_CCc)R*mo!*PS|ugH z++31gguBx>^q0a4?HwquYH6apfL)rEV6$yorOPUpvVcb=>5$)M>!Pgi+D`uIO_=|$ zl;Ysp%;wo82PiH}nl{MO$&*ZB(E&LviAEi~lS8GX&3g>EO4HS+{n*37*7SGKr0y@V zutRB*?%{l=Ai#Z@6hye+`0#<6yMm;A;73u&&=feJeV0tB(uy?K=X&)51*l+(1rhyZQJ89?jcF39s-if@mX$7Vd5_A^y9t@1V4J)%Qj3169_>RKKJ zQ`!l_`Sfh7wQ)k~PAhNg-R02M&nTul(=_lxF!e5}xE=w-)qvS5RQYy$h|v+kO5GFA zfB*XgowW3E=;WNI65|!H%Myqf-kVx^CY_^#Juv_53!#|1kE6~P?1N}ZI--Le`!il+ z>0~aF@Dr$X&h3TKms8-ftmi+?es5>S*4B)ax#<(^kK&CS>vjXIcU>MQZS7|$5&o09 zy&y&Z^mhTF4Z%ajRgEwoe3$6^*H|akJR-X{5v5}u0kq&i%>%7j_AWl&!N+J?(^jrL>Irla8Lv^{?HSiuC$(D+B?v{uL5F*?Y;?pFu&~bG&ap zua1D~F&i&7jQfAYy$gJl)$uo;gj?j|69Fl5(V#)XO@o3aAi7}CUECllt$x@Ep z6LHIA`$ZS~qixRJHJZ9rM-0UQ8MLqntR_3woilAxahr&;Bj z@MhcS(@yisaRF&*b&IEat(!LE&+Rxr4q3?h@1bU|xDtl=XAy79NDCzf;0KrrP z0s7ANMnB_1VBSRkkbuCvTCA@Gf^3KZ2Lie%9SFK3EsoGUB+%GHZ0y^s*J3!Z$_?H>d;-aNeWnpa=wD-SU-5tRveNEbV4U}8L*hnY6sesBaD zk9MjtI1xW8GR$HIz&8=_O%V9p;aJpUI2LP*$-^;AUkNfQQI~^^6;2v$RIm*iJNUPM zvE4}_xxhfOnqQG?4WH3A79n|kY6@ZeTkw%g7(Xh8k|FuhMOtZ2wbMG#QRAf1Mitvg zKvFVXaPrE_N+-Md6}f8pjJ7Ge{6w%wAxz2<1{^~GB~7SguDnq?HJN7UD?toZCI>N@ zP8to>C4&R|u0X&UY{1E)bV9D~d`8=R_X{BAxnf0(Y2>q~8`JA|@+JimTVDwz`A+LV zjK@i%jXY_i)9ek339tVA?L8z-EF{X$HZNY=JIy}bK!8_(s?)gN8VEp2c!dt7ksj&m zmNe>~!P1f57wq^Hl}*9QRa70Y6mL+;^11SY6QmYFC`&N2S+I;8N9j?43azYBnHE+> zD>dDn>D8LfWtw&~{l07DXqsfLF zX_gSendG5G9i0NBg5lNq6#DbM5v-G8IT~(d!o^MY*!`)%&{LgD-!h?;2odg;Ss_0r zlemqYWmKM5K#`+-dhSLP1&GxuXa25FYrx1TO4907FI8y_e%0sHse)6+N8e*T; z83&Xf%hDm89RCPZnaQz^^_kel+9VO5A%R{Z;-7e)gU_{w?O0;NjD-TnFEcM^@Fnkf z;mb^+L81`E5yCqq;Nu%an(Hw06Om^=MPFv+ib8%`jZd&5S(|U4ev$#lClY|nf6?O~ zHx-h}S*i+8Q{i3aQ?>b2llbJ>q808opK9^UWIB3$!$$pt@sSGmEp4MZ;NLP`A&U!pe>LBHjr?N^?FLb3xY@w z;u6L9Jn&49ZQz+`o0Vstl4j3cx1ynRUjRN&5a4|LKLsV}^{kBhsZHd`)u&7UC1Brj z$Q%CJ`~6-oE}bv=I74Fj;fu(E-4yNp%<<=^ZR92wd+7?gKxK2uhfp50PJjfe#7=c+ zLJ$2}0O$b#WYK09^mZH^Ztr-3WGoryXO@gS@Hx;E#OY-y74K>fY)7(1nxVUqEL}1N z#Jw-o>fSg5{VA6!gcHW2iuFWgj5I+w2n3Ea18y~>Yq)j*q zL9CF_xF4+piTbbq0#WC=Ue&}B3-!NR6jTzo;R`k-&Pj@ge9N=|Ik!Q6<7NtZ>Xan2 zcrIQ@BA;JM4t8GD8V7{K)zf=wR|l8t*Xbg)R1z_jVBv|C>#84TIEF4hz#)npKV~Zh zB6O<{F~l2&oPr;_?8;|llzYi2!-z5!&? z0o}*QH**43SvkJq?QE-*YyPo$_=#d|g9Di1>YIa^)0fO|ee=w~t^9pc&?@^ma`4^E znU#TQu?sbSyI>B#PoHU(4Kv?wo{IBPa`7WHzil8eJl0!tcCgC2F!geuK7s3Q{M8&d zwz1)#QUH}^PQB48`xY8^Xny-y(^1|=nsd)A&Zk*GoeXBNlbGQo<~xZBB*6R`I6i|i zh&fr58L7n1lF!TCD+5{18#P;@kUu2(5QZR6EIyj=S`V(m0*<`VQc;HCpV+kH;ReP~ zbs?A_ohoK8+ZV|7Mml}}F{lKi$f38^XUVw;o!Rrquy^qZ9?Nd=PELlG$Dv}9Sn)B; z5y+XP>t~1B1lp4n*!6gCCpAh3uM*e&>Cg>8sfr0XH+V}9Wd^(WHe%$iyJ_m|TZ;-Z zt+v|DjO{@V&WD2A$DdI zjBL={hX6A{bDZIcQeQ!5+@*t0(?=~?AjJ1a{1_El&|b=0WouZ>45HIz`*#q*gw;zh zKvd)9xlD9-0`XhaM*9QeH6opI~TeGovf}q zdxrUH{t%Pn`UVa(a@>Qt*&Asy`qfX`o6-X$A zFZ_)?c*Jw05*)RfT(wfrJKrk>mA(ZdiBr&g%nzIx7s9WofJ|SKpLeyjd`ld2jlLPO zlPpt2AbETE(h(pkZ*&r-&{a7hbjTato0v-Fjs?BrTY8K2V3nuuwK2W^4U3@aZ0WUD zAz2hVHyx6`2f7J(Y|()uR*e$&mpaOyKGt-URgvlRW^=@T`5Q+u#&%d63ANnFzn*D^ zqrQIqC>lZ6S}kfbWM^eO8x!SO4`Je=5oAZ#a-zi0=&Z=GCH}V)Z75hs~VCp>~Ae25rEc!R+2Fszs|mUkT6mCqb;KM zi>I6Ec^yRb5z7)bNo_Ab?`9BMCA2-EumYFDwvakormz~a70G8KqrLYIze=gfo)HB}C9rxRU9cbg zm3{F5!RQ6QX%VB(JlRZNH*7zezG8SckXVc^5W5FIWInWO`b+b(#JkY!RQToEW|}WJ zn&#~rw2`ZS-C`eo&GE>)+m51-c3W-aM<}F?Cv_v|rZv}-n~$au(V}7Y%c=h!EcL81 zDw`?~iK%kAY7CuIDsQAIU{FMZa5M&cYp#sNpq6`Z@)OOB#WR0C3N(>^?c0u~1Z9W7 ziO!0q!w7h1ReUJ0nz5^+1{p;Rq_IRU( zIWz4C?}Moc|Kpi-DRs=Db08B`owji(Suf1c9JsePJ^@elMk;mGt;homAFjevEZ13I z7b1Rr*{TNH+Yh+MEl<%l|MNSTwS{Yu){u&1#aK!X4ZqLmY<~nB6v`T` z(#v38F*|r|Cd|OwnT&K^GQ1Bg zLA4L9vg??A0c^sutK@T*w+u5n{U3#q$yr5_;!LbPo&Ujm4_RfLz7UV>1syu}s~@4_ zWv5EPjyb;Vqcb`FB_kjI8&DkRfX3{Xzk9?i8qHfX8lH&G*5y@Sd#wSoI#FeB$`MBV z_HocQFt8fMz2WvHBd=x+*nf=kpQHlpFdGXW8qZN5oe9mKLx^o8fbHJP=e&V1JNyQ0 zpQ9du>0bQyMUr94O2Blg3)3ec+9ojdQ<#by!}QiZ_A1M6cNmB;HkrZhv@_KH@)jJ2 zYXKd2eUVGifeAVJzDNd{Jp?FWopiRMWXK`=XowvEHc9;RnGv3$27KlC>Q~w3wz-56SjORe*hX~(o zzxj z4+A9~vj@Fx#3g)Fd9l~%f&#O7pyhR*jdNj|ak*5W-LcVgGDK+gU*@=6x)6R=LZ6Su z^wU0x%|ewbwJxcHYy$U3duL`C#}e$fD}Jr6C048DQzZa6pBLT%#8_{Eu6OJ?W2Iw7 zzRi@A(4n(eNr(Dl^Bvc9TaYD`A>pdnW_Z!q$9&;`>FA}+b~KdSQBTC_=zvmov{`8- z@^EjAJ4K|+9KS2RN3Wy3k56}eY1coJ+Tnb<+>=C}>9Ep%Wvo3av(MTE_unP;&4_Ty z?`oCb?Ljq0ehY1YMjRro667BL{hCkHN?xXGpaDU}u>3ZE0^4Iw8}Ejvp45MEczD16 z(i`o%7h&^l;9<>R?4-B<*9hv1&dEs1D7g@pacPG4oqCfAC-H)7!M)z_d-TqFH&~yo zK9>LS;1!fe{~E8`di&$LF8a%(9cO!^zI1XbP8n#EB~0^%J)@8q#t4xfkZUNSf_V-B zjsm`;7sLSBPPqY2ATMHqu~vaah}%&SCJpcRA9^=8AZGV%{w$_J6_V~_u9fF9L5uyE z97l2dCr^Nyr26nSxPcK^jJcM|skA^S?A=r03=mKnwh(YHM@&CU1HH~BKdzR_7cvMR zj&kmB!2HEEaL9!jyl*4k)gPHgH{G@(-VSMF8uW+%B^&P$*#O~Od_hq`ZBh8sBFkT! zm_K%)(-^U$@Q1$sZ}@N@9^DbX@Avr-nC$EGhA({|V*r=NSq1j-+_4u4U;nM%{@c0! z;~=9BHYSFAKOJZDeFfk8EdRHZ4}R=Vn&`(SZAjAqu!W((?$h1kr~gXiBXkW4LI)k= zi3wo9=`ad4=`d>Z1Em-f1j`}X!@4U2P8DClfw{xBwI0!4UPl*8{C&&@QzM3Z9^Ci# z#bm7|TS>jR4I%uxwEqpI1_EAo*yEApW~0n+<>?Rag#6ef->dn3za;DJHF#Dg)FXRE z4ZA>X2}6+;+kt2`R|(SiJ#Va}0-z93%`@vJg%qLM2jJ#kzQE`qNBAR**1& zpe~{M>_8S!6yWxQ8ocB`Z$pThFdlS;cpECJ`La=6ug^jBWQEq#@wo3chl1_I{ShA) zexu~0+Ry<+?1~E{o)g}KcwL6;9wYvi>6P*0N?GU~JG|-dAmF%)4VCD= zhZ_5MhR;BU?u2LM5%%vpLhST!XctfDP^aJoZ*&2+XW&fo8hpj|m|fBl;oCllfOY9; z2KvsP@*g@a%1DXCpdCVvD!k3WYhouh3E8G2KKKyMA9xinkZNz0(ym8pOYl^-MEXNp zQ<)T68T7*sxnegl@;(2}k>783k!PLV0Z$$U(#rfk_$9yB+25FFT%I-d zCwPKVR6eZ5tYbLAE9?CJNQmr!Nc1W^im*w#{8r?_Ymza8=Q7oP0RFNA$Kh`(Uo=zx zwC2k*jJ=)4u#X-S-i&y>TGWO>bBU0yj1L|Yt{zqL5rWtc)FLA_$M^}zRp+)3-jLXJ zy6VJsd5+WqDL0WKB^P(z26^z#y$|<<3cWEK71;kghchrfzRI8USBnZZk-|K92}75$ z*M6aw@^9%x))uK$>7aWu7>IwCzE-a8dIq;%mHZ6vD!O(6sZ^m_k#DgbNC6vEdkr?n zMZ2~K@TGV|)Ye!_-<1R|+NwgrkI#N(%cAg`Mg2GPZmXg`Z(ba2-OFF_{+!{AR`5_{ zLX_|JL!k*D@P?r)4qNvStm(MZHO^Yd_BJBZRM|iup)llgpDt!fZZV0rJ^_jgW$a&J z(Fj5)nQ<5K1B67TQ+=x7c-`lLYa0 zvwfo^_j6a!)kxx%H(YPO&$rPw>+Xk*677B9rmJv2*XD;w#w=4H86|ldl1Vckkl>y(4OM-5{T3Hxv_FLb zPon=lR{0QZa0;<@5aRe-;ygML0$8pmFXzrj0OZe5sooy408;ralBn*)DT;bq`MLE? zIjP#=Bwwqd@N2&QHNMStV4>Ii1#i!}fb{RBk|{hiOLz#|)DEao8Xb211L)E33RYn^ z4l@eblZ*C{sE}PGMe+I8ABXk;Ood%CriX`iKx}>oZmFySOs$~VIgHZcY+=N>gHEu{ zc!oIvyM#r5`WZ;O!#)rrqwKJslP7p>hka@y*;A6We4CX>wvnV1ueV#^8Ie!+728^1 zoR39~RQ^cX-wJ+1u$1m^%?0|YCm?+0kheh2FS0=J9F`UNWEbpg2LbS}2;Q1u5h@9FL>c$pf<;u9c|_GI~% zRHZ>D@)s;6hgf%sh>f=1Qxx@pj`CIhTBY}+bS1>vo@@-@9z-2xi1%UpXm3w^LHx@O zTQ@;W_Snb%gTAVs5JFvNFid(fXk;uT!h(r7#-x}x$7-2BJ7sW8{N7JkhBuxcyq0C) z9*o>6ic#cYQ3@l^3kRp1g92^&q-||=#~9LGHlPQ(dJ%6Y=^;C?5AMY2m8ClZeW}<@ zz<2r*%b>r?28!--?rF(ZJOz<@a&Wp72KnH%j_<*LI>T?z+G>V6X@4v2>lJEW{{ayU z#=fpaYqUc51u%DLgFt{KL3vprh=7=$ z2vX^eqMVYU{;yD!(C@T2UwT%0dr~dPAeq5&Fc@eXV_F(--`qvBj!4d`khNaaV-po* z`vzPuPM{hxNi^C8&>_V*w%b+lK^<_TR3U=gT0e9+g14;Fbu5C}B#&VuYmhTBZxfm# z9tHFTUPGPit81Rvf5w-)_2pnAlcMty@=Y|#LNsQr4-AJceF&M>5{T$L(J$qDFY`S^ zzlYg$Vv>)}YXu5`V367Jd%J(nbnY1Mljxne5}X)Hz%NsOe2kNU(cx+KY>;jR#?p>G z{V=@yNWm1X#TV>WJPUgVw?Q=R(K%iTU2O2*~7rvrzxzF z3K2(<70Q3>2ss8(hz*CM_^5&DNCqvK5M763eyblI$igVzJ_s*54#(6oDA))2s*w*4 zoE=^q2Q)S^<(SaeNZ^=?agowv=EK$(cPnX15>-y31_=m)JKzN88i5d9)DKMK2gMV4 zikZ2@P%Xb#se=`(3?w3N)D!~80E??k!@kNI)h-7pqV(Od$_}!*ghU%}dN;k?k z2Y1P|uJ+aAKpgmwBy9%pHmmd+6cYRFN~?4j(iodXR%v@p4YErA0d|t_gL!;`?)ino zh4a%_lt_;OxsXqgNe>{WGe)VbX6(COP1-*XR8X>kW07{dF@|%RX$1a{5om_)R_z_c zVYXd;s#1XXe|tXJn3_{T5N^Lu5R{C7;Xx?-sQ{eP3;^)IK&fxkzTH2m{grEvp#2U_ z+8i_VKA!X=fyn>SL9Dj>!+Hg~5Ric)>m@ay#c4y6@klMHDzUh>hpkpWul@ z_Sye9-Q+&FrZIfT-Onn$3JpQO!jF@!(la^bI{Uhv0p8p#Jq_agRK8{}aOm#2#vflBvJd++9YVXe$!De8 z$xen_nq-jv4Kjp!X_L>JFx{uw3(!BAn}#&aAgjfboD5k_GC0I){|84cNhO~{oHm;L zCSjkSe5+~lZ4=^h)9kwLCc__^X6V2S?>iapYMi0+wM_^^O|$>g%~Ub7aSmv2D%xb1 znf<1d@%$zk?Yt(hARjj!YijP?$tnWW=;r;7P-rHxR4}zg*8-J^OO)I;< z@dvm8szg5D_BSY<@ITFwXN`S>`F)LfUSXb>nde3F+;5+6o+HfjO!FKl&pP`QJS%C7 zWZEk>I(qGC|4H@ks())Px2JsS<=GsO*_kjY0@LZT&h|z|VGL+{>9PO zxbmbHr<|2$&Z1wxr0&>YTjoQmCsWr4Y=P6bF#NlZb)wVYfs#O z)vYuQ;?)jG*fPd%zlQjee%i+ZGbudHox15Knt%re{~3Kas*@Q1Xu zY)%x>bHdn5dkA*cZn3jUIXU3i5xnv385Jr3aF5~*j4uD7{m@ws)xmjm$j0_L$YE^6 z@EFT$@hg;c5LvT4_VV`}G57G~=Ea;^UKdFj>|gd~8v9iWQr0b$f=3|h#D0ROY7_^` zbd-G*y&Mz;Yr~kYmD1mczrGeW>~lR~!*-m56=-;AkjKRk5HuHSL0!Wb4uhcgcsdo; z@N6jZ@9nm-U^83C;b1B(omt0SnB}(Mm+=r>!!qiQX2!CaF*Df=Uo>DXF>3>`PnrVI zRK5B!3MO2m`j4jVE_fP#s910K0rEAr^6>sI+JF1i{=32mxHcID4N;XYgrzMI?aFb{ zj$1&c7#rB3IbH~>m>HF0a4yb&nk`TdZ29(&j>hrMpO zoa{B*1E&TSLPtZ37+VZS2hNM!zkx{2vinQkRw?l|Kkd^T4Bq zHa~yCk=09uFuA{nOQcGIyjIt^AS#JzBMPm%zY~fv;&7LB*Zcep0$q(<@W*E1Cw%6a zcyI+dvN{bZ!Jiyu2@#Fly77k8h)!eun?*5Dzyg;gAsK;_S2S)dT2#UU^1e5?O2HT ze3c6Qu~vyw{@^*aFZuq*hS-UM3YUSfgI*a(B}*}wX24=)Ag1p^#39FMhRZ$0N!+tO z7u<7jhH{T$PMnG4p7F;2Ap8S4pUgiK56?dgSHk@lFD3KOf8KWZ=kmEN@y|Mz0RO}! z?|;ERB>4pY$gfIsFxir=`jOm3{#0(_Qbkr`5k%JENzHl0na2Ovx2-b_C&2-b6=q?C zq?k)g!CQpPu{p_61CDm0_nRf|&-)w@8vY#5fi(QNxEmR22H${Yiur`%5Fez|){?Ev z%bBZ!#LLhM$qK(-cY%Vek&QWn6pm9Utth1|CJzoNn0o~tKHPm7ekbM}ew{5{rLV3# z){n>mRUG1E4siTWiSzl}|JBf^*;)#x8{pMw8S+Gp{5Fmlyswqt%k`jS@CvmYZmP{A z4^-g?=ig-df8VJemz^R83q+rX_^)q&1lJj?L=*!+j>|t(JeHv{^j{=Lq_Dcq9~NAI zhbUw)VG7>#`p=S=AT8q)Q&9`_;DSEHp1$V~@1;v}*?W|!*X>z@nlFw_>*4hkylXAn zjF%ThCiL)dsmEXNaj@e>k%c|-ar|wMy!a+;*@&;VFM=TRLdSRwK_x9ynVs`2JKJ=< zO$Ic!%~d)m-@5}FD&IfBP#XFXDgm|3!Yc$7aO?$ZhtUoowq5O@babBJ-#&PfN@c0X z(GU7QPgWHD;EFdzFq`R914u=;J-@@7^$t=o=^_T>db#0F&F6Qfp7&wv^+BldoP;Y6HP0 z5zuuz9Rkv@OJoIEEX~3b2a0!>$Gs}CaWFJL0)MsgTqac7VrEg$k-5%fPLsNp>d#U= z$QP9DA!U;d-01@p;9kDg#o-?~qqn;x?y+zE>c<9$9674wbed)9Pa6`6LGU+c`%ub| zKJr}p;PR=V4=-whd||KCaF0RLg*0?$BJ)Hx5J6DAnU%c4hr&ny!U%J^Vp~*AKGZU< z?ylAi&-VlaW+M;mnDE8XuGK}+OJUs%hb=>w|3%TE)i~f=*P|ZAi%Kv}^?oo@b=^gg zDb-Dlo5%hDB2oPd=FLkxocUu@(c#RSnJh(}4PKljQihhzV^ZeGESn`;i8&fK8N@~| zyG^YQ z)?X&5Q!xYc&p{Fe-Cpo6pF8nXfoEU1)==*B%Gebx)2`C*w45pxZgF(o5U-#O-DS5O zl1!yjCD7@W_DY=O!1bzoWPIErGH$N*eTRG$;}S+p7)H!C7%`wv+S;T~1T1gE^tUH; zo@0Dtbhqsv8=0`J4yza2n$l;+GeECPpT}=^=(FcVhojFopGGM|pC4i6SQkDsq|A}h zCy_(?Oi!WDRf4KyyBj^&Li#M|2>M)pjnXGE>e45p;8Th7)V~h<^r4 z7zVcq(S;1yfB1QVJ`^&ck0wcy$REIwd_IAvk_zn8Ck(B`AO@RCxzzdZPhghj=09jp z^JR!tdNoHX_G}zmO+vYn9F5M%#FcPDs37D1m4p}Kr`$BqU#wEbcUJzCtLEJ&&A3CB z#juR59_fF34@WDjoidPRFG(57viGFSkEmpQzV z-~bQ&$FT(cE4GFHor%20ewhIxAo}O=RH7HN!#??OL-=A?#JV&`{f+I1c^EiD|KmA^ zjjRUy%g>a?3uS;+X|^YQp)YfiUh1%>J7a-irCXDe5AFNxq+#uDpYW~@E4$E?nQT%d(M~D8F_)`< z-N%WF_IqOdU|$^kS7Q8#Q*#||lceZmI&w1}OBuOIunH0eU!xS|7f%4yDXw)Zcl;(Q zHdE)ReH1^K_Y^(mtPR&G+DIH7K=)F;#*g96Pl_Vn?)X(+{wBC+P980419`N2ipnFw3asB*l3g5&l?Yh9eU>CHxN6!K5Pe{v2+Bw79?Mq3G~i{T#?RnB5UBfj|@{Y>SXBbvgG z`z`rKS6fc~lfyKFMjei6K6uQO!4&@WD~`I?Mamp0)2JkBJcWxVC&e6brtq;Dpyc08 zQkEeijz-oGe(NY?eWUsLGY-4RR}Ip!NOb>;vOS3vsvTBHkYb)ah7C`wo3JD~u|Ctg=T14Ms6FD~B4L zmsrn37Pw6RusT6uTVGZR+wSr3Bf<>EBg_CEoQcJZSvX4y-0l*$Ri9c^^G$AyjU;W?WPwSBc_2vBWu>3g)=qwre_f@6Lvd*e;USwg(_^C;Ll97XYc>y|22Ppu`+?74CycfuQG=pjz2d#Wq_o&UUHE1 z?*f+jKhB@M4}w4EUz*@gXGz9dE>1j$<6t1Q$ftH4LZ%&==oDyTAk~t=k{4KXen^_s zo+KwE@n;rGfD8W*@Mp#UI87z-=U0217(3szJ1EIy$qGIOWx zTk_{L6!RCXAxl_yZDqFTAQZe2u{4YDN`q;bxvnU(aA#9j-q{b4YH>)K*Mnti+lM7~ za4Hs+ag!j9#PFTX>jNj^+kC8b7fn3Kha7QWJ6U7E=u}rM1 z6I?8+)4cXa1WweEi#oB;Se(zBh2#B4ZEJ;A_DIYhexKl^{|ANA;_aQEL%zci7o|5r z522m74p?I7eOYJZa!I$0X0a3JbQJo>>CzR|a0{P5tb98SE#Ur(2MxP}b-PFbPOTee z9F2S<9k}|(;pJP_hY9({o*Vr`YjAt7j2n|}G+0FDi3Ott|1 zGl~Ddfdua9$>Y=5pt)NJ%ph2ua!nVLXxJnz zCRLjCfuCAUdhuS{buR3{y002GZ|5COaSAzQAbszbGL*jSrOc5kPCD?7*OEx76;pCf zO0{X6^`zKW5DtYt6%JL%ikm2NPI3$zhhUq=kGu|^A>CppC@I$-RRC`#hPHXCy=G@( zTpLrZ1aV&d2UG`EoQ$WkB0$cv-&kfwm{4U^#(EykJFDlL8U9>}t|X1WAi!bI`*#Tq z&vFH!YL%uO}8ALKUdZyy4Qp$rF;5T`LmPLwV2DF$^P?G;D<0nL|>!pDvwB{ ztW@PDS<~5Zc)VqmLxd)yken@<{dJ$k>?qM-mG+XoM#cxVw!=Hp0B(H>hv|^0hXAr3spX&m{fhXZaXeo=p({brW393;k@j7;pOk{uIpdFu_}lIt z7n#tuW?W=S+giqKm9jrjvneg0W>*RPMFpQ*<=kNB*Ly#4&EYwx<46`9s=|7rheqAO6iM{~UTdDxGqAM(E(0pj_b!B9%>vAj?=g1><8*y4i6A=z9p& z$HB`5qQ_B~)s6H;e~#^;rDzkaA}+0bu~s_))z+^KBDh}&9n~WK;ss<%yok%m%i1On zfp#*E3;WwvjSEj{TaDO=wv3G^8JWGz#+-DVJ?Zz4;4bwp<08}AZYT<0lZmMBwj0JE zrmJM+j}d0+#KEYskCS{I#%?ccTSL(Jwvxfc=v7g4G6s215D}9S)6QUHydD=`)s`eO zF1)-gw}ldnP`ni>(A?8!&XM3PhNL_+ygvasAjeI7`mV=&`Lxi=d{+HR_cn4gI(hRfQrrv_=Zpfvg&JrY&BkLh#Rb z$eblxD`%kg*e#%*=7HRR&phhB3G{xRH2Rg@0|6+0?hpUUwj^20Wb4G+1E6b@;Y%d3 z8H*V{k+)S$?v}STJbLUelB{NOizIQ}#7FiY6K|hRBp*c*$GkDa1Cm6s&3431%J|#2 z$#1mtjy(&>4IE1x?`2=ZAJR4a_yvBT_elAXGKR_K5~C)>{)iZ<=GAwJAKU<;uPXd1 z#Ppi^wTfc~vud|I5qZX^i4KHW4O3CqGH6|cuewV%xQy-3Ucj*N`WudyZtEbqX?Z!j z%p6MK@kVhzpFJ6El5hPGn<#e9q)|nF%6(k3(OT}9fo+Ab`6)T)$O&HdSU+#W#(fLG z#B>xWm@o>vwMJYhWm;Kfe-S`UnF2j_y_=RPeU9H?URDq``~!HnpaKa3Jkh+N$=DLW zdijw*irjV|7^vL8T{>P`bh_9~Bp>bm)odj?Y}qr#$&0K&u{$q*^Q0<{vbBaM;!+;* z{1h+U4irKD$TS=p7=B#LC^{9YSSfOnHxl82dZiE#$7R=ehrkMxuh!(VwhQGuhI?SA-Ty+m(!LTaF3>XTec0(pLZg4tk@@q=WX2X5CRoTT5tv zq#uNz=J;x~uksdZQj99Hcspgu$PsQ8nf7?MitT4g z6`9`1Jz0Rk8+l0RJMx?e*6=O4s3gxDo|K;iCWtVfhkcxl><%q7A@_We&e`@h(7g7a z^mCy!;go5Ce)5C)-DRl_ooC{q7AcXeJ%hfKdNh;9{0Whz~x8(7M$Q8eaqnKZ= zvVPAJk@Y7yXl+zoJTGYwnol+=0Wn5yf&{DLgApPRL--iog6BeTf@&}DVLA$qu)F<1 zry}W<1KwH%Z@7XdtD^iKzb6R@?5{rs2k<~tr8bJeSN%;|e^I`RW&`!K8+1OXA8!LT zo*#kJ1CQaG*#F=K5?iQ0jD~g*!f$8=IQVBK%5(pHH}1bL3wDs~cjK#+|2VjS1tjNi z&FN>(10inWzaAPy%ql-YKg{d~739Y?L2T4-=oG&gf93c;=%8mwd1^gUvLC914x{bA ziMP@|3fHaG_T!xef4I!WD*FteutKYJwWgp_J%AL->M3EbObCdM`wFF$)ZPZTn%f zz_1Jcn#+!rg)WHo@mO7$h}DH+h$rV%f>lydqpqIQVkq-s-=p!cD^yTh?9+cujibu$ zCr`MCJ-9#2yz63~9n7FTseN1bsst*GwM=uXl-Jvu1G!JC}sb{t0n2 zHX7v(aa*OcO!;^lp|9X6AdR`Rge<_95{o{fZk%u`K; zfpvEslqeMl{TC&4QwoIG2l$jE6F36DLkJ3<(7#to%C_&*H+IB4OYkIqZ!^z1c&cKj zL5QE+N@)qVvwCQUBD%Rb6;JoaAB%ZY^tzJIF(bkq4usHKg2|8pz3@b1HiHIWNIz}y zVCf3@%f4cv^yXByRZN8+@xRQDAY7>h%LbkyJ8?DA7@Wg37~Ry9*pffvcs^gaiYF(h z)&bj4wVD-GfQLIx%O^n$!GvFf-#8p@P%qeDKjzKO#ovOt{5xuPFZ`W6mw%_uZqM`e zeq1p3*!X-rui~M8KMoGgl+zS(a^l+p|I-{T?4b6Ryj+cH;Y+y+wgNkjS)8VeZeOj@ z!JB!TGud!ct79LdN0tDI^a1xqlJ8cFg0&#fFyx97!{ZA=1Ma zz9JJB4XEf7j6hHG1I>+OG(buF5-Z25q)j=7T~Z|tw5LiMD6x@}rf0J};8u}o zKjl`jC!136k|R>m1VBFz+I+|E|4<4iHQN7a-#Is#vDhca2T5It6P!c1a$B}dB(Y33vXqQ`=2k;1UXQ)y zKA9y!{(rk($RFqsVTDLI!2yr(K?2D23I}P-&Gk}6mL70{`Rz8hn!SUMeAYB9&iV0o z4t{i41p6FP43HP{`!)a$By~t)1P4*hlVbcuaE~|~-m%vrSt;&rk>ri&Pxc?%Z32fO zLfLg3TZ*U(=lo%Rg8qOGIj0>PGS~*>3~3ki*WDHFxjMj0<~B5Ne1-G`xgc~FL(htZ z`$<3Yu6&JCa85Vc1UP9<*dir2Tzg7@qE;LESVXPtQ4k2elKvpoJL0(G19{fc z7=F^fR$$%ncO)COgz7UEUxY(fes+GeW5^f1q$b*NY=u9koBiN#bqqXC7p%MKHPmjr z925qE{*B(oCORS-@HQc@aq|p$K_Xvsk0Xi}&1haCp8}vtM)q*ZKq8+mWhjwvUUf7Q z8L;4%x3XoZun9~r&rQJeHkOiAJjUcG%%-zMj=)szlmSdDr3_(O`|MG|R9Mm0p;|x) z7Z(pf?XdiC)M?MW6hk zExcUYSi7U)udh17YEb_1ys?$ z56%{F#gn-j6~rKRRa-P5g%8nZFrTLzoA4mJ-LVwFA>_tcSJ`gKXop%8R8EBPP^^1*{EU&vQh8dX{fPe zei`$OfpbXUGViU*qZLlEFLnzmTl_i5dL-nTHXSGJ}hL6x-L_ ztvv||O8IH-r|06Kk)L%k9IG@28-Bd*BozouaZe_8B0)crKw+u`5P`bUANqjT9wv(0}61e)*d;_+i7&266S^~f>v+{Yf>Un zWKrB%RLh&4$N7FP|BjlSL;68#^4x6vojN-ce;3T{8efR#Re_G`A4Pg_@OrNA-TP~T zyj=TeY&qQTCYpfJuZ=ZVjNy{5(EeL_qx1%sii?6O>YJ$q#GM@*;)q-A8Pt?4^ckip zacY(+aRq`d7t^kSr-u4DjH_HWo6Xs(ST6-IY#IKBCjOQ!^uOU)-kC1ckvkPhONk`y zpO;7Dr;8|Bx(087s@6bC-FbmwLLW#D4-CNHL4h3ny)tkj{w@l1$KSqz&a{8)JaXVB zj`8HN?_6x3!Kf<7K25AIjFp%!#Mc3dN-z_Y&B0y5>*6KnjY^bPbPI=AA%38@jwlfa z`f^<}!IwOKSz)pP@6Nfy+(U{V+FijEZZwo^2*Ctmxr$JABl*7Gfrg49ecni zdXP1nH_Drv5?!c)0!A0HBV!zD#DN-mHXc?Aq-!Myx@`Oz+IzV>8?_2Su3j&6q_cP8 z#?9#Q?|z5}-opPcKxEm0J9N^4vF;0BmWk{hRR+w&A! zX=uffn;J{DYA@`2?xdip z8>7JWy?l9=>IqdpscR(``XF0$Pm^eDNwUT0V;PHvYyw%Q**&h;=}f{qAX4(!pz2ws zb=VuI4Pps86e$KgScOLsj>50>7a+do189!;M*e_uGU2%NQ2jYp8E+7Q{q>+qGFEHf zl=Q<~rKA%vyp!-^Bu&JRXHtdoi2n33>ZPz#$dXN1`iG$^{9M`>`-SF9=)k#F>0>CA ztO|9-?~;+9U+<8E$4)PE^q8?v@t)V8q^RCf#agKX-e#WAi2akLPA$W6*d1!g1mej; zK!}jKv)MFp7Oe?PdAG@2OB5kf0 z{`mJN$ZIXF{$g57)*nZ@Rb<+ix>fYeKN|f}!Av6UBS|7s<1sKc6czhnJSDv39s6!1 zlf=I8=fSDTQa?7Rk-Dh<$7SGEXH7E?IDZnfWEP8m(kbA9mt z5zxfhY_v8Ejq$kQn`v3{2;g3ETk%;T;%oydx< zF}NydJSP0(vmWMz-}{EMAUpB4WaQXikvy~PlEq3fk%^e_>B^?Fg_~^W1CUt|2c9fk z>Hv{`f)vmtxYMK%oh`dR5s`jG!dPH+VD?6y*EvpypFczxO4%UZj#UVuzUl3i!rRD) z`%&NYg+HLcRsg4QA!H_rjT&BbQo0uxjKY3?B1{B`k->#Iq>#lJBdAA=5$y+MkbsW~ zW;K8$c08^w2X(>Vz!7L8RiOR;Dxv4IIXzdP*pXHPz32Wd@j=3?^C@4n^%h!XR1Bs* zG(Z7P>jExz-0VA zH825xM+U~p{bK_I7vNV;z=OYo0=S{&htmQ>@wZRlH2Hpe;8gq?5Xi<~ToHl4xq+_u z+dpuue7}P0sy|#A9ALab;vB+JwmSX??*jLzFquMI4O&9HH}dxlPC_^%7GeE3R5J=; zV>9>;p0nZ3pg4|O>+a?5+W8k(%D^4#gyHB9d!V0r5y~-M=8@j0vt;Buza(5bkNk7KBmI`1 zbmU6C;DF1w*Dm}i86yYSQX+Wht?=3}P5LR3L#Dz_g)D)2)*CBPyHe$k&#@azKA#1F zLYAU_K?>)HW7ruqDO`@%A-sM$4I(Rkc~N*`=7kmhQyT1DVM{s}xC9x_`lp$rV%L zhQ#x#YH~*3wp*Yr1vE0ccZ2h+yIV3Iu1Z!3Wgn?}4Z$ zuAJ?~XQT?|4&?e7>f50&E|?4MJ%E}v;-`Tf4x{-u%A~><9(+fdLL)gVJ)A{p=i~=&+!w zDq5HX>Le*drT!XLc!VC7lC8k2Oh|Y-6AF?N(Z9pqiYO9@YObhml%y=KK8s`}XUohM zmBS7beo9iuW+d5wJRd7@{{P<)l5YHamEaKi_txN9;T+u$^Np{a(0#{2Yohn{UNo!| z$f^L&@?VW%wR@DR;Fgk(p4Hp+uaEczXKbr91Q|sks|_SO(ImvR0Fc3{z6LdNeX(=J zgq#aGe}?J@29CicS610VKxRKvLca3nTo^hq(40LaEqSd%T&o3Vl-q;@$w~IcpDP67 zByb@>UM=a^sv^wAowzzna6njSt9B06L#D>@D^!nIgng383k)WR*dOCSFZ7utp?s0pcqMa@BQku%G=L z0;xIn7c@8aW?Xq47z0qS+hdEwug3m_>XUlWbQ~uA+(DhkzUgLX82WYlZ-$|hTUVxi zvRha72mj45AY8IF7S?tcS|V+W<>L^xU-j#KmkMGf`dxWTxBxbi6pZ&x>U>gCD3f}Q zW&_?;rCGt@kWkAzI=RCE-J&Zr2S$bAFIT|(hMJD`;-{oV+oure3OL9leqU0%D1VAo zb_-s6VVkW+VprAhgoItG^ynn@V;|Z^O=4RPlm-SlBBAao*Tpz$)Swvvj<*)Nz)SUxI8>vLC7h z4ne9YT#UEUKJkzJ1yWe|7mO+W!Ycb3$l*I(l|c$5K@WuJpXg8z7rqWoP12LVT=pL% z@gg$2dH#mYIob!57hq0uyYZ5KGu;TB#p0#|a|F~dGDw+eMbR5XfB(!XzYZ?}|AbzE z9~*Ri?h={VVetJp;c>)R>-=e#FG`{f&M^s2HX9F=Tfo*?=sPTv?($g8nLDvTY{laIkH#ZzvR z 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