Skip to content

Commit

Permalink
add config flag for globally enabling/disabling mls events (#1992)
Browse files Browse the repository at this point in the history
  • Loading branch information
erikolsson authored Jan 10, 2025
1 parent 9b10da8 commit a910d03
Show file tree
Hide file tree
Showing 6 changed files with 21 additions and 2 deletions.
4 changes: 4 additions & 0 deletions core/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ func GetDefaultConfig() *Config {
SingleCallTimeout: 30 * time.Second, // geth internal timeout is 30 seconds
ProgressReportInterval: 10 * time.Second,
},
EnableMls: false,
}
}

Expand Down Expand Up @@ -149,6 +150,9 @@ type Config struct {

// Disable base chain contract usage.
DisableBaseChain bool

// Enable MemberPayload_Mls.
EnableMls bool

// Chains provides a map of chain IDs to their provider URLs as
// a comma-serparated list of chainID:URL pairs.
Expand Down
1 change: 1 addition & 0 deletions core/env/local/multi/config.yaml
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
disableBaseChain: false
enableMls: true
1 change: 1 addition & 0 deletions core/env/local/multi_ne/config.yaml
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
disableBaseChain: true
enableMls: true
1 change: 1 addition & 0 deletions core/node/rpc/add_event.go
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ func (s *Service) addParsedEvent(

canAddEvent, verifications, sideEffects, err := rules.CanAddEvent(
ctx,
*s.config,
s.chainConfig,
s.nodeRegistry.GetValidNodeAddresses(),
time.Now(),
Expand Down
12 changes: 10 additions & 2 deletions core/node/rules/can_add_event.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

"google.golang.org/protobuf/proto"

"github.com/river-build/river/core/config"
"github.com/river-build/river/core/node/crypto"
"github.com/river-build/river/core/node/mls_service"
"github.com/river-build/river/core/node/mls_service/mls_tools"
Expand All @@ -30,7 +31,8 @@ import (

type aeParams struct {
ctx context.Context
cfg crypto.OnChainConfiguration
config config.Config
chainConfig crypto.OnChainConfiguration
mediaMaxChunkSize int
streamMembershipLimit int
validNodeAddresses []common.Address
Expand Down Expand Up @@ -168,6 +170,7 @@ type aeHideUserJoinLeaveEventsWrapperRules struct {
*/
func CanAddEvent(
ctx context.Context,
config config.Config,
chainConfig crypto.OnChainConfiguration,
validNodeAddresses []common.Address,
currentTime time.Time,
Expand Down Expand Up @@ -205,7 +208,8 @@ func CanAddEvent(

ru := &aeParams{
ctx: ctx,
cfg: chainConfig,
config: config,
chainConfig: chainConfig,
mediaMaxChunkSize: int(settings.MediaMaxChunkSize),
streamMembershipLimit: int(settings.MembershipLimits.ForType(streamView.StreamId().Type())),
validNodeAddresses: validNodeAddresses,
Expand Down Expand Up @@ -594,6 +598,10 @@ func (params *aeParams) canAddMemberPayload(payload *StreamEvent_MemberPayload)
check(ru.validMemberBlockchainTransaction_IsUnique).
check(ru.validMemberBlockchainTransaction_ReceiptMetadata)
case *MemberPayload_Mls_:
if !params.config.EnableMls {
return aeBuilder().
fail(RiverError(Err_INVALID_ARGUMENT, "mls disabled globally"))
}
return params.canAddMlsPayload(content.Mls)

case *MemberPayload_EncryptionAlgorithm_:
Expand Down
4 changes: 4 additions & 0 deletions packages/sdk/src/tests/multi_ne/mls.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,8 @@ describe('mlsTests', () => {
const mls = streamAfterSnapshot.membershipContent.mls
expect(mls.externalGroupSnapshot).toBeDefined()
expect(mls.groupInfoMessage).toBeDefined()
expect(mls.externalGroupSnapshot!.length).toBeGreaterThan(0)
expect(mls.groupInfoMessage!.length).toBeGreaterThan(0)
expect(bin_equal(mls.externalGroupSnapshot, latestExternalGroupSnapshot)).toBe(true)
expect(bin_equal(mls.groupInfoMessage, latestGroupInfoMessage)).toBe(true)
})
Expand Down Expand Up @@ -357,6 +359,8 @@ describe('mlsTests', () => {
const mls = streamAfterSnapshot.membershipContent.mls
expect(mls.externalGroupSnapshot).toBeDefined()
expect(mls.groupInfoMessage).toBeDefined()
expect(mls.externalGroupSnapshot!.length).toBeGreaterThan(0)
expect(mls.groupInfoMessage!.length).toBeGreaterThan(0)
expect(bin_equal(mls.groupInfoMessage, latestGroupInfoMessage)).toBe(true)
})

Expand Down

0 comments on commit a910d03

Please sign in to comment.