Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 15 additions & 1 deletion cmd/nknd/commands/root.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ import (
)

const (
NetVersionNum = 33 // This will be removed later
NetVersionNum = 34 // This will be removed later
)

// rootCmd represents the base command when called without any subcommands
Expand Down Expand Up @@ -368,6 +368,20 @@ func InitLedger(account *vault.Account) error {
Store: store,
}

currentHeight := chain.DefaultLedger.Store.GetHeight()
if currentHeight > uint32(config.MinVerifiableHeightResetHeight) && time.Now().Before(config.MinVerifiableHeightResetTime) {
for height := currentHeight; height > uint32(config.MinVerifiableHeightResetHeight); height-- {
block, err := chain.DefaultLedger.Store.GetBlockByHeight(height)
if err != nil {
log.Fatalf("get block at height %d error: %v", height, err)
}
err = chain.DefaultLedger.Store.Rollback(block)
if err != nil {
log.Fatalf("ledger rollback error: %v", err)
}
}
}

return nil
}

Expand Down
4 changes: 2 additions & 2 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -241,8 +241,8 @@ var (

// use these config for network restart
MinVerifiableHeightResetHeight = 8843191
MinVerifiableHeightResetTime = time.Unix(1767758400, 0)
ProposingStartTime = time.Unix(1767758400, 0)
MinVerifiableHeightResetTime = time.Unix(1767794400, 0)
ProposingStartTime = time.Unix(1767794400, 0)
)

var (
Expand Down
1 change: 1 addition & 0 deletions consensus/state.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ func (consensus *Consensus) startGettingNeighborConsensusState() {
go func() {
time.Sleep(time.Until(config.MinVerifiableHeightResetTime))
if chain.DefaultLedger.Store.GetHeight() == uint32(config.MinVerifiableHeightResetHeight) {
consensus.setNextConsensusHeight(uint32(config.MinVerifiableHeightResetHeight + 1))
consensus.localNode.SetMinVerifiableHeight(uint32(config.MinVerifiableHeightResetHeight + 1))
consensus.localNode.SetSyncState(pb.SyncState_PERSIST_FINISHED)
}
Expand Down
18 changes: 9 additions & 9 deletions lnode/message.go
Original file line number Diff line number Diff line change
Expand Up @@ -69,58 +69,58 @@ func (localNode *LocalNode) remoteMessageRouted(remoteMessage *nnetnode.RemoteMe
msgBody := &pbmsg.Bytes{}
err = proto.Unmarshal(remoteMessage.Msg.Message, msgBody)
if err != nil {
log.Errorf("Error unmarshal byte msg: %v", err)
log.Debugf("Error unmarshal byte msg: %v", err)
return nil, nil, nil, false
}

signedMsg := &pb.SignedMessage{}
unsignedMsg := &pb.UnsignedMessage{}
err = proto.Unmarshal(msgBody.Data, signedMsg)
if err != nil {
log.Errorf("Error unmarshal byte msg data: %v", err)
log.Debugf("Error unmarshal byte msg data: %v", err)
return nil, nil, nil, false
}

err = proto.Unmarshal(signedMsg.Message, unsignedMsg)
if err != nil {
log.Errorf("Error unmarshal signed unsigned msg: %v", err)
log.Debugf("Error unmarshal signed unsigned msg: %v", err)
return nil, nil, nil, false
}

err = checkMessageType(unsignedMsg.MessageType)
if err != nil {
log.Errorf("Error checking message type: %v", err)
log.Debugf("Error checking message type: %v", err)
return nil, nil, nil, false
}

err = checkMessageSigned(unsignedMsg.MessageType, len(signedMsg.Signature) > 0)
if err != nil {
log.Errorf("Error checking signed: %v", err)
log.Debugf("Error checking signed: %v", err)
return nil, nil, nil, false
}

err = checkMessageRoutingType(unsignedMsg.MessageType, remoteMessage.Msg.RoutingType)
if err != nil {
log.Errorf("Error checking routing type: %v", err)
log.Debugf("Error checking routing type: %v", err)
return nil, nil, nil, false
}

if len(signedMsg.Signature) > 0 {
if remoteMessage.Msg.RoutingType != pbmsg.RoutingType_DIRECT {
log.Errorf("Signature is only allowed on direct message")
log.Debugf("Signature is only allowed on direct message")
return nil, nil, nil, false
}

pubKey := senderNode.GetPubKey()
if pubKey == nil {
log.Errorf("Neighbor public key is nil")
log.Debugf("Neighbor public key is nil")
return nil, nil, nil, false
}

hash := sha256.Sum256(signedMsg.Message)
err = crypto.Verify(pubKey, hash[:], signedMsg.Signature)
if err != nil {
log.Errorf("Verify signature error: %v", err)
log.Debugf("Verify signature error: %v", err)
return nil, nil, nil, false
}
}
Expand Down