mirror of
https://github.com/QuilibriumNetwork/ceremonyclient.git
synced 2026-02-23 19:37:27 +08:00
41 lines
956 B
Go
41 lines
956 B
Go
package application
|
|
|
|
import (
|
|
"github.com/pkg/errors"
|
|
"source.quilibrium.com/quilibrium/monorepo/node/protobufs"
|
|
)
|
|
|
|
func (a *TokenApplication) handleAnnounce(
|
|
currentFrameNumber uint64,
|
|
lockMap map[string]struct{},
|
|
t *protobufs.AnnounceProverRequest,
|
|
) (
|
|
[]*protobufs.TokenOutput,
|
|
error,
|
|
) {
|
|
if err := t.Validate(); err != nil {
|
|
return nil, errors.Wrap(ErrInvalidStateTransition, "handle announce")
|
|
}
|
|
|
|
for _, p := range t.PublicKeySignaturesEd448 {
|
|
if _, touched := lockMap[string(p.PublicKey.KeyValue)]; touched {
|
|
return nil, errors.Wrap(ErrInvalidStateTransition, "handle announce")
|
|
}
|
|
}
|
|
|
|
for _, p := range t.PublicKeySignaturesEd448[1:] {
|
|
lockMap[string(p.PublicKey.KeyValue)] = struct{}{}
|
|
}
|
|
|
|
outputs := []*protobufs.TokenOutput{}
|
|
if currentFrameNumber >= PROOF_FRAME_CUTOFF {
|
|
outputs = append(outputs, &protobufs.TokenOutput{
|
|
Output: &protobufs.TokenOutput_Announce{
|
|
Announce: t,
|
|
},
|
|
})
|
|
}
|
|
|
|
return outputs, nil
|
|
}
|