Skip to content

Commit d4c3a50

Browse files
feat: remove current decryption trigger for service keyper
1 parent 5e08d65 commit d4c3a50

File tree

3 files changed

+13
-51
lines changed

3 files changed

+13
-51
lines changed

rolling-shutter/keyperimpl/shutterservice/identitieshash.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,3 +22,11 @@ func computeIdentitiesHashFromShares(shares []*p2pmsg.KeyShare) []byte {
2222
}
2323
return computeIdentitiesHash(identityPreimges)
2424
}
25+
26+
func computeIdentitiesHashFromKeys(keys []*p2pmsg.Key) []byte {
27+
identityPreimges := []identitypreimage.IdentityPreimage{}
28+
for _, key := range keys {
29+
identityPreimges = append(identityPreimges, identitypreimage.IdentityPreimage(key.IdentityPreimage))
30+
}
31+
return computeIdentitiesHash(identityPreimges)
32+
}

rolling-shutter/keyperimpl/shutterservice/messagingmiddleware.go

Lines changed: 5 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,8 @@
11
package shutterservice
22

33
import (
4-
"bytes"
54
"context"
65

7-
"github.com/jackc/pgx/v4"
86
"github.com/jackc/pgx/v4/pgxpool"
97
pubsub "github.com/libp2p/go-libp2p-pubsub"
108
"github.com/pkg/errors"
@@ -105,32 +103,7 @@ func (i *MessagingMiddleware) interceptDecryptionKeyShares(
105103
) (p2pmsg.Message, error) {
106104
queries := database.New(i.dbpool)
107105

108-
currentDecryptionTrigger, err := queries.GetCurrentDecryptionTrigger(ctx, int64(originalMsg.Eon))
109-
if err == pgx.ErrNoRows {
110-
log.Warn().
111-
Uint64("eon", originalMsg.Eon).
112-
Msg("intercepted decryption key shares message with unknown corresponding decryption trigger")
113-
return nil, nil
114-
} else if err != nil {
115-
return nil, errors.Wrapf(err, "failed to get current decryption trigger for eon %d", originalMsg.Eon)
116-
}
117-
if originalMsg.Eon != uint64(currentDecryptionTrigger.Eon) {
118-
log.Warn().
119-
Uint64("eon-got", originalMsg.Eon).
120-
Int64("eon-expected", currentDecryptionTrigger.Eon).
121-
Msg("intercepted decryption key shares message with unexpected eon")
122-
return nil, nil
123-
}
124-
125106
identitiesHash := computeIdentitiesHashFromShares(originalMsg.Shares)
126-
if !bytes.Equal(identitiesHash, currentDecryptionTrigger.IdentitiesHash) {
127-
log.Warn().
128-
Uint64("eon", originalMsg.Eon).
129-
Hex("expectedIdentitiesHash", currentDecryptionTrigger.IdentitiesHash).
130-
Hex("actualIdentitiesHash", identitiesHash).
131-
Msg("intercepted decryption key shares message with unexpected identities hash")
132-
return nil, nil
133-
}
134107

135108
identityPreimages := []identitypreimage.IdentityPreimage{}
136109
for _, share := range originalMsg.Shares {
@@ -176,32 +149,23 @@ func (i *MessagingMiddleware) interceptDecryptionKeys(
176149
ctx context.Context,
177150
originalMsg *p2pmsg.DecryptionKeys,
178151
) (p2pmsg.Message, error) {
179-
// TODO: update flag in event table to notify the decryption is already done
180152
if originalMsg.Extra != nil {
181153
return originalMsg, nil
182154
}
183155

184156
serviceDB := database.New(i.dbpool)
185157
obsKeyperDB := obskeyperdatabase.New(i.dbpool)
186-
trigger, err := serviceDB.GetCurrentDecryptionTrigger(ctx, int64(originalMsg.Eon))
187-
if err == pgx.ErrNoRows {
188-
log.Warn().
189-
Uint64("eon", originalMsg.Eon).
190-
Msg("unknown decryption trigger for intercepted keys message")
191-
return nil, nil
192-
}
193-
if err != nil {
194-
return nil, errors.Wrapf(err, "failed to get current decryption trigger for eon %d", originalMsg.Eon)
195-
}
196158

197159
keyperSet, err := obsKeyperDB.GetKeyperSetByKeyperConfigIndex(ctx, int64(originalMsg.Eon))
198160
if err != nil {
199161
return nil, errors.Wrapf(err, "failed to get keyper set from database for eon %d", originalMsg.Eon)
200162
}
201163

164+
identitiesHash := computeIdentitiesHashFromKeys(originalMsg.GetKeys())
165+
202166
signatures, err := serviceDB.GetDecryptionSignatures(ctx, database.GetDecryptionSignaturesParams{
203167
Eon: int64(originalMsg.Eon),
204-
IdentitiesHash: trigger.IdentitiesHash,
168+
IdentitiesHash: identitiesHash,
205169
Limit: keyperSet.Threshold,
206170
})
207171
if err != nil {
@@ -212,7 +176,7 @@ func (i *MessagingMiddleware) interceptDecryptionKeys(
212176
if len(signatures) < int(keyperSet.Threshold) {
213177
log.Debug().
214178
Uint64("eon", originalMsg.Eon).
215-
Hex("identities-hash", trigger.IdentitiesHash).
179+
Hex("identities-hash", identitiesHash).
216180
Int32("threshold", keyperSet.Threshold).
217181
Int("num-signatures", len(signatures)).
218182
Msg("dropping intercepted keys message as signature count is not high enough yet")
@@ -241,7 +205,7 @@ func (i *MessagingMiddleware) interceptDecryptionKeys(
241205

242206
log.Info().
243207
Uint64("eon", originalMsg.Eon).
244-
Hex("identities-hash", trigger.IdentitiesHash).
208+
Hex("identities-hash", identitiesHash).
245209
Int("num-signatures", len(signatures)).
246210
Int("num-keys", len(msg.Keys)).
247211
Msg("sending keys")

rolling-shutter/keyperimpl/shutterservice/newblock.go

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -109,7 +109,6 @@ func (kpr *Keyper) triggerDecryption(ctx context.Context,
109109
triggeredBlock *syncevent.LatestBlock,
110110
) error {
111111
coreKeyperDB := corekeyperdatabase.New(kpr.dbpool)
112-
serviceDB := servicedatabase.New(kpr.dbpool)
113112

114113
identityPreimages := make(map[int64][]identitypreimage.IdentityPreimage)
115114
lastEonBlock := make(map[int64]int64)
@@ -143,15 +142,6 @@ func (kpr *Keyper) triggerDecryption(ctx context.Context,
143142
for eon, preImages := range identityPreimages {
144143
sortedIdentityPreimages := sortIdentityPreimages(preImages)
145144

146-
err := serviceDB.SetCurrentDecryptionTrigger(ctx, servicedatabase.SetCurrentDecryptionTriggerParams{
147-
Eon: eon,
148-
TriggeredBlockNumber: triggeredBlock.Number.Int64(),
149-
IdentitiesHash: computeIdentitiesHash(sortedIdentityPreimages),
150-
})
151-
if err != nil {
152-
return errors.Wrap(err, "failed to insert published decryption trigger into db")
153-
}
154-
155145
trigger := epochkghandler.DecryptionTrigger{
156146
// sending last block available for that eon as the key shares will be generated based on the eon associated with this block number
157147
BlockNumber: uint64(lastEonBlock[eon]),

0 commit comments

Comments
 (0)