diff --git a/node/consensus/data/data_clock_consensus_engine.go b/node/consensus/data/data_clock_consensus_engine.go index 4d93b06..4c19be4 100644 --- a/node/consensus/data/data_clock_consensus_engine.go +++ b/node/consensus/data/data_clock_consensus_engine.go @@ -546,6 +546,7 @@ func (e *DataClockConsensusEngine) Start() <-chan error { } } + var previousTreeFrame uint64 var previousTree *mt.MerkleTree for e.state < consensus.EngineStateStopping { @@ -560,19 +561,33 @@ func (e *DataClockConsensusEngine) Start() <-chan error { } frame = nextFrame - _, triesAtFrame, err := e.clockStore.GetDataClockFrame( - e.filter, - frame.FrameNumber, - false, - ) - if err != nil { - panic(err) - } modulo := len(clients) - for i, trie := range triesAtFrame[1:] { + outer: + for i, trie := range e.GetFrameProverTries()[1:] { if trie.Contains(peerProvingKeyAddress) { + if previousTree != nil { + _, prfs, err := e.coinStore.GetPreCoinProofsForOwner( + peerProvingKeyAddress, + ) + if err != nil { + e.logger.Error("error while fetching proofs", zap.Error(err)) + break + } + + for _, pr := range prfs { + if len(pr.Commitment) == 40 && + !bytes.Equal(pr.Commitment[:32], previousTree.Root) { + if frame.FrameNumber > previousTreeFrame+5 { + previousTree = nil + previousTreeFrame = 0 + } + break outer + } + } + } + e.logger.Info("creating data shard ring proof", zap.Int("ring", i)) outputs := e.PerformTimeProof(frame, frame.Difficulty, clients) proofTree, payload, output := tries.PackOutputIntoPayloadAndProof( @@ -582,6 +597,7 @@ func (e *DataClockConsensusEngine) Start() <-chan error { previousTree, ) previousTree = proofTree + previousTreeFrame = frame.FrameNumber sig, err := e.pubSub.SignMessage( payload, diff --git a/node/execution/intrinsics/token/application/token_handle_mint.go b/node/execution/intrinsics/token/application/token_handle_mint.go index 65a76ad..3700571 100644 --- a/node/execution/intrinsics/token/application/token_handle_mint.go +++ b/node/execution/intrinsics/token/application/token_handle_mint.go @@ -3,7 +3,6 @@ package application import ( "bytes" "encoding/binary" - "fmt" "math/big" "github.com/iden3/go-iden3-crypto/poseidon" @@ -230,7 +229,6 @@ func (a *TokenApplication) handleMint( } wesoProver := crypto.NewWesolowskiFrameProver(a.Logger) - fmt.Printf("%x\n", individualChallenge) if bytes.Equal(leaf, bytes.Repeat([]byte{0x00}, 516)) || !wesoProver.VerifyChallengeProof( individualChallenge,