Closed shufps closed 1 year ago
Update: After fixing something in the the-mergerator
the check is working.
For the invalid milestone index
problem, this could be the reason (in inx-app
):
func (n *NodeBridge) ConfirmedMilestone() (*Milestone, error) {
n.nodeStatusMutex.RLock()
defer n.nodeStatusMutex.RUnlock()
return milestoneFromINXMilestone(n.nodeStatus.GetConfirmedMilestone())
}
func (n *NodeBridge) ConfirmedMilestoneIndex() uint32 {
confirmedMilestone, err := n.ConfirmedMilestone()
if err != nil || confirmedMilestone == nil {
return 0
}
return confirmedMilestone.Milestone.Index
}
The ConfirmedMilestoneIndex
function tries to retrieve the Milestone but it doesn't exist.
works now :ok_hand:
For the merge, we need to convert a Chrysalis2 snapshot to a Stardust snapshot and bootstrap the DeCoo at some index - in this example 7143515.
Milestone-Data:
Chrysalis 2 Snapshot:
Stardust Snapshot:
Tendercoo Bootstrapping:
(on Tendercoo, the
coo_start_index
is the next milestoneIndex to issue).Problems we see:
1. Event for solid block
On bootstrapping the deCOO registers a event and waits for the block
$messageID
to become solid. Hornet doesn't fire an event for this blockID and tenderCOO waits forever.This could be circumvented by using the
bootstrapForce
(and use it as CLI parameter at startup) here: https://github.com/iotaledger/inx-tendercoo/blob/develop/components/decoo/coordinator.go#L19The clean way probably is to detect if the event is for the snapshots SEP and fire the event right away because it's always solid. Would be a Hornet change, I guess.
2. Requesting of non-existing block
If former is circumvented, Tendercoo tries to query the Block
$messageID
but it doesn't exist (and it's impossible to inject it because the structure of the block is totally different and we can't construct blocks with a certain ID).The error:
This is printed in a endless loop (about 2-3s apart)