Skip to content

Commit 29e878a

Browse files
committed
Make max tx pointer age configurable
1 parent 5c5eea1 commit 29e878a

File tree

3 files changed

+14
-9
lines changed

3 files changed

+14
-9
lines changed

rolling-shutter/keyperimpl/gnosis/config.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ type GnosisConfig struct {
102102
Contracts *GnosisContractsConfig `shconfig:",required"`
103103
EncryptedGasLimit uint64 `shconfig:",required"`
104104
MinGasPerTransaction uint64 `shconfig:",required"`
105+
MaxTxPointerAge uint64 `shconfig:",required"`
105106
SecondsPerSlot uint64 `shconfig:",required"`
106107
SlotsPerEpoch uint64 `shconfig:",required"`
107108
GenesisSlotTimestamp uint64 `shconfig:",required"`
@@ -113,6 +114,7 @@ func NewGnosisConfig() *GnosisConfig {
113114
Contracts: NewGnosisContractsConfig(),
114115
EncryptedGasLimit: 0,
115116
MinGasPerTransaction: 0,
117+
MaxTxPointerAge: 0,
116118
SecondsPerSlot: 0,
117119
SlotsPerEpoch: 0,
118120
GenesisSlotTimestamp: 0,
@@ -134,6 +136,9 @@ func (c *GnosisConfig) Validate() error {
134136
if c.SecondsPerSlot == 0 {
135137
return errors.Errorf("seconds per slot must not be zero")
136138
}
139+
if c.MaxTxPointerAge > math.MaxInt64 {
140+
return errors.Errorf("max tx pointer age is too big")
141+
}
137142
return nil
138143
}
139144

@@ -144,6 +149,7 @@ func (c *GnosisConfig) SetDefaultValues() error {
144149
func (c *GnosisConfig) SetExampleValues() error {
145150
c.EncryptedGasLimit = 1_000_000
146151
c.MinGasPerTransaction = 21_000
152+
c.MaxTxPointerAge = 5
147153
c.SecondsPerSlot = 5
148154
c.SlotsPerEpoch = 16
149155
c.GenesisSlotTimestamp = 1665410700

rolling-shutter/keyperimpl/gnosis/newslot.go

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,6 @@ import (
2626
"github.com/shutter-network/rolling-shutter/rolling-shutter/shdb"
2727
)
2828

29-
// Maximum age of a tx pointer in blocks before it is considered outdated.
30-
const maxTxPointerAge = 2
31-
3229
func (kpr *Keyper) processNewSlot(ctx context.Context, slot slotticker.Slot) error {
3330
return kpr.maybeTriggerDecryption(ctx, slot.Number)
3431
}
@@ -161,7 +158,7 @@ func (kpr *Keyper) isProposerRegistered(ctx context.Context, slot uint64, block
161158
return isRegistered, proposerDuty.ValidatorIndex, nil
162159
}
163160

164-
func getTxPointer(ctx context.Context, db *pgxpool.Pool, eon int64) (int64, error) {
161+
func getTxPointer(ctx context.Context, db *pgxpool.Pool, eon int64, maxTxPointerAge int64) (int64, error) {
165162
gnosisKeyperDB := gnosisdatabase.New(db)
166163
var txPointer int64
167164
var txPointerAge int64
@@ -235,7 +232,7 @@ func (kpr *Keyper) triggerDecryption(
235232
}
236233
keyperConfigIndex := eonStruct.KeyperConfigIndex
237234

238-
txPointer, err := getTxPointer(ctx, kpr.dbpool, keyperConfigIndex)
235+
txPointer, err := getTxPointer(ctx, kpr.dbpool, keyperConfigIndex, int64(kpr.config.Gnosis.MaxTxPointerAge))
239236
if err != nil {
240237
return err
241238
}

rolling-shutter/keyperimpl/gnosis/newslot_test.go

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ func TestGetTxPointerBasicIntegration(t *testing.T) {
1717
t.Cleanup(dbclose)
1818
db := gnosisDatabase.New(dbpool)
1919

20+
maxTxPointerAge := int64(5)
2021
err := db.SetTxPointer(ctx, gnosisDatabase.SetTxPointerParams{
2122
Eon: 2,
2223
Age: sql.NullInt64{
@@ -27,7 +28,7 @@ func TestGetTxPointerBasicIntegration(t *testing.T) {
2728
})
2829
assert.NilError(t, err)
2930

30-
txPointer, err := getTxPointer(ctx, dbpool, 2)
31+
txPointer, err := getTxPointer(ctx, dbpool, 2, maxTxPointerAge)
3132
assert.NilError(t, err)
3233
assert.Equal(t, txPointer, int64(5))
3334
}
@@ -53,7 +54,7 @@ func TestGetTxPointerInfiniteIntegration(t *testing.T) {
5354
})
5455
assert.NilError(t, err)
5556

56-
txPointer, err := getTxPointer(ctx, dbpool, 2)
57+
txPointer, err := getTxPointer(ctx, dbpool, 2, 5)
5758
assert.NilError(t, err)
5859
assert.Equal(t, txPointer, int64(10))
5960
}
@@ -64,6 +65,7 @@ func TestGetTxPointerOutdatedIntegration(t *testing.T) {
6465
t.Cleanup(dbclose)
6566
db := gnosisDatabase.New(dbpool)
6667

68+
maxTxPointerAge := int64(5)
6769
err := db.SetTxPointer(ctx, gnosisDatabase.SetTxPointerParams{
6870
Eon: 2,
6971
Age: sql.NullInt64{
@@ -79,7 +81,7 @@ func TestGetTxPointerOutdatedIntegration(t *testing.T) {
7981
})
8082
assert.NilError(t, err)
8183

82-
txPointer, err := getTxPointer(ctx, dbpool, 2)
84+
txPointer, err := getTxPointer(ctx, dbpool, 2, maxTxPointerAge)
8385
assert.NilError(t, err)
8486
assert.Equal(t, txPointer, int64(10))
8587
}
@@ -89,7 +91,7 @@ func TestGetTxPointerMissingIntegration(t *testing.T) {
8991
dbpool, dbclose := testsetup.NewTestDBPool(ctx, t, gnosisDatabase.Definition)
9092
t.Cleanup(dbclose)
9193

92-
txPointer, err := getTxPointer(ctx, dbpool, 2)
94+
txPointer, err := getTxPointer(ctx, dbpool, 2, 5)
9395
assert.NilError(t, err)
9496
assert.Equal(t, txPointer, int64(0))
9597

0 commit comments

Comments
 (0)