Skip to content

Commit 5c5eea1

Browse files
committed
Make MaxNumKeysPerMessage a config option
1 parent 48bc1ba commit 5c5eea1

File tree

15 files changed

+71
-47
lines changed

15 files changed

+71
-47
lines changed

rolling-shutter/keyper/epochkghandler/benchmark_test.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ import (
1818
)
1919

2020
// The number of identity preimages to generate for each of the benchmark runs. Note that this must
21-
// be smaller than MaxNumKeysPerMessage, otherwise the benchmarks will fail.
22-
const numIdentityPreimages = 100
21+
// be smaller than config.GetMaxNumKeysPerMessage(), otherwise the benchmarks will fail.
22+
const numIdentityPreimages = 1000
2323

2424
func prepareBenchmark(ctx context.Context, b *testing.B, dbpool *pgxpool.Pool) (*testkeygen.EonKeys, []identitypreimage.IdentityPreimage) {
2525
b.Helper()

rolling-shutter/keyper/epochkghandler/key.go

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,6 @@ import (
1919
"github.com/shutter-network/rolling-shutter/rolling-shutter/shdb"
2020
)
2121

22-
const MaxNumKeysPerMessage = 128
23-
2422
func NewDecryptionKeyHandler(config Config, dbpool *pgxpool.Pool) p2p.MessageHandler {
2523
return &DecryptionKeyHandler{config: config, dbpool: dbpool}
2624
}
@@ -73,8 +71,8 @@ func (handler *DecryptionKeyHandler) ValidateMessage(ctx context.Context, msg p2
7371
if len(key.Keys) == 0 {
7472
return pubsub.ValidationReject, errors.New("no keys in message")
7573
}
76-
if len(key.Keys) > MaxNumKeysPerMessage {
77-
return pubsub.ValidationReject, errors.Errorf("too many keys in message (%d > %d)", len(key.Keys), MaxNumKeysPerMessage)
74+
if len(key.Keys) > int(handler.config.GetMaxNumKeysPerMessage()) {
75+
return pubsub.ValidationReject, errors.Errorf("too many keys in message (%d > %d)", len(key.Keys), handler.config.GetMaxNumKeysPerMessage())
7876
}
7977
for i, k := range key.Keys {
8078
epochSecretKey, err := k.GetEpochSecretKey()

rolling-shutter/keyper/epochkghandler/keyshare.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@ func (handler *DecryptionKeyShareHandler) ValidateMessage(ctx context.Context, m
7373
if len(keyShare.Shares) == 0 {
7474
return pubsub.ValidationReject, errors.New("no key shares in message")
7575
}
76-
if len(keyShare.Shares) > MaxNumKeysPerMessage {
77-
return pubsub.ValidationReject, errors.Errorf("too many key shares in message (%d > %d)", len(keyShare.Shares), MaxNumKeysPerMessage)
76+
if len(keyShare.Shares) > int(handler.config.GetMaxNumKeysPerMessage()) {
77+
return pubsub.ValidationReject, errors.Errorf("too many key shares in message (%d > %d)", len(keyShare.Shares), handler.config.GetMaxNumKeysPerMessage())
7878
}
7979
shares := keyShare.GetShares()
8080
for i, share := range shares {

rolling-shutter/keyper/epochkghandler/sendkeyshare.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import (
1717
type Config interface {
1818
GetAddress() common.Address
1919
GetInstanceID() uint64
20+
GetMaxNumKeysPerMessage() uint64
2021
}
2122

2223
type DecryptionTrigger struct {
@@ -54,8 +55,8 @@ func (ksh *KeyShareHandler) ConstructDecryptionKeyShares(
5455
if len(identityPreimages) == 0 {
5556
return nil, errors.New("cannot generate empty decryption key share")
5657
}
57-
if len(identityPreimages) > MaxNumKeysPerMessage {
58-
return nil, errors.Errorf("too many decryption key shares for message (%d > %d)", len(identityPreimages), MaxNumKeysPerMessage)
58+
if len(identityPreimages) > int(ksh.MaxNumKeysPerMessage) {
59+
return nil, errors.Errorf("too many decryption key shares for message (%d > %d)", len(identityPreimages), ksh.MaxNumKeysPerMessage)
5960
}
6061

6162
db := database.New(ksh.DBPool)

rolling-shutter/keyper/epochkghandler/service.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ import (
1818
var DefaultKeyShareHandlerRetryOpts = []retry.Option{}
1919

2020
type KeyShareHandler struct {
21-
InstanceID uint64
22-
KeyperAddress common.Address
23-
DBPool *pgxpool.Pool
21+
InstanceID uint64
22+
KeyperAddress common.Address
23+
MaxNumKeysPerMessage uint64
24+
DBPool *pgxpool.Pool
2425

2526
Messaging p2p.Messaging
2627
Trigger <-chan *broker.Event[*DecryptionTrigger]

rolling-shutter/keyper/epochkghandler/setup_test.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,4 +28,8 @@ func (c *TestConfig) GetCollatorKey() *ecdsa.PrivateKey {
2828
return nil
2929
}
3030

31+
func (c *TestConfig) GetMaxNumKeysPerMessage() uint64 {
32+
return 1024
33+
}
34+
3135
var _ testsetup.TestConfig = &TestConfig{}

rolling-shutter/keyper/epochkghandler/trigger_test.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,12 @@ func TestHandleDecryptionTriggerIntegration(t *testing.T) {
3939
assert.NilError(t, err)
4040

4141
ksh := &KeyShareHandler{
42-
InstanceID: config.GetInstanceID(),
43-
KeyperAddress: config.GetAddress(),
44-
DBPool: dbpool,
45-
Messaging: messaging,
46-
Trigger: decrTrigChan,
42+
InstanceID: config.GetInstanceID(),
43+
KeyperAddress: config.GetAddress(),
44+
MaxNumKeysPerMessage: config.GetMaxNumKeysPerMessage(),
45+
DBPool: dbpool,
46+
Messaging: messaging,
47+
Trigger: decrTrigChan,
4748
}
4849
group, cleanup := service.RunBackground(
4950
ctx,

rolling-shutter/keyper/keyper.go

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -185,11 +185,12 @@ func (kpr *KeyperCore) getServices() []service.Service {
185185
keyTrigger = fanIn.C
186186
}
187187
keyShareHandler := &epochkghandler.KeyShareHandler{
188-
InstanceID: kpr.config.GetInstanceID(),
189-
KeyperAddress: kpr.config.GetAddress(),
190-
DBPool: kpr.dbpool,
191-
Messaging: kpr.messaging,
192-
Trigger: keyTrigger,
188+
InstanceID: kpr.config.GetInstanceID(),
189+
KeyperAddress: kpr.config.GetAddress(),
190+
MaxNumKeysPerMessage: kpr.config.GetMaxNumKeysPerMessage(),
191+
DBPool: kpr.dbpool,
192+
Messaging: kpr.messaging,
193+
Trigger: keyTrigger,
193194
}
194195
services = append(services, keyShareHandler)
195196
if kpr.config.Metrics.Enabled {

rolling-shutter/keyper/kprconfig/config.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ type Config struct {
2929
Shuttermint *ShuttermintConfig
3030
Ethereum *configuration.EthnodeConfig
3131
Metrics *metricsserver.MetricsConfig
32+
33+
MaxNumKeysPerMessage uint64
3234
}
3335

3436
func (c *Config) GetAddress() common.Address {
@@ -57,6 +59,10 @@ func (c *Config) GetHTTPListenAddress() string {
5759
return c.HTTPListenAddress
5860
}
5961

62+
func (c *Config) GetMaxNumKeysPerMessage() uint64 {
63+
return c.MaxNumKeysPerMessage
64+
}
65+
6066
func NewShuttermintConfig() *ShuttermintConfig {
6167
c := &ShuttermintConfig{}
6268
c.Init()

rolling-shutter/keyperimpl/gnosis/config.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ type Config struct {
4949
P2P *p2p.Config
5050
Shuttermint *kprconfig.ShuttermintConfig
5151
Metrics *metricsserver.MetricsConfig
52+
53+
MaxNumKeysPerMessage uint64
5254
}
5355

5456
func (c *Config) Validate() error {
@@ -71,6 +73,7 @@ func (c *Config) SetDefaultValues() error {
7173
c.HTTPListenAddress = ":3000"
7274
c.Gnosis.EncryptedGasLimit = 1_000_000
7375
c.Gnosis.MinGasPerTransaction = 21_000
76+
c.MaxNumKeysPerMessage = 500
7477
return nil
7578
}
7679

0 commit comments

Comments
 (0)