diff --git a/waku/v2/node/wakunode2_rln.go b/waku/v2/node/wakunode2_rln.go index 33f189ff6..5fa23f293 100644 --- a/waku/v2/node/wakunode2_rln.go +++ b/waku/v2/node/wakunode2_rln.go @@ -29,9 +29,12 @@ func (w *WakuNode) setupRLNRelay() error { return nil } - var groupManager rln.GroupManager + var groupManager group_manager.GroupManagerI - rlnInstance, rootTracker := rln.GetRLNInstanceAndRootTracker(w.opts.rlnTreePath) + rlnInstance, rootTracker, err := rln.GetRLNInstanceAndRootTracker(w.opts.rlnTreePath) + if err != nil { + return err + } if !w.opts.rlnRelayDynamic { w.log.Info("setting up waku-rln-relay in off-chain mode") @@ -41,7 +44,8 @@ func (w *WakuNode) setupRLNRelay() error { return err } - groupManager, err = static.NewStaticGroupManager(groupKeys, idCredential, w.opts.rlnRelayMemIndex, w.log) + groupManager, err = static.NewStaticGroupManager(groupKeys, idCredential, w.opts.rlnRelayMemIndex, rlnInstance, + rootTracker, w.log) if err != nil { return err } @@ -60,23 +64,20 @@ func (w *WakuNode) setupRLNRelay() error { appKeystore, w.opts.keystorePassword, w.opts.prometheusReg, - w.log, rlnInstance, rootTracker, + w.log, ) if err != nil { return err } } - rlnRelay, err := rln.New(group_manager.GMDetails{ + rlnRelay := rln.New(group_manager.GMDetails{ GroupManager: groupManager, RootTracker: rootTracker, RLN: rlnInstance, }, w.timesource, w.opts.prometheusReg, w.log) - if err != nil { - return err - } w.rlnRelay = rlnRelay diff --git a/waku/v2/protocol/rln/group_manager/dynamic/dynamic.go b/waku/v2/protocol/rln/group_manager/dynamic/dynamic.go index 0a555ca93..c20c6a3d3 100644 --- a/waku/v2/protocol/rln/group_manager/dynamic/dynamic.go +++ b/waku/v2/protocol/rln/group_manager/dynamic/dynamic.go @@ -108,9 +108,9 @@ func NewDynamicGroupManager( appKeystore *keystore.AppKeystore, keystorePassword string, reg prometheus.Registerer, - log *zap.Logger, rlnInstance *rln.RLN, rootTracker *group_manager.MerkleRootTracker, + log *zap.Logger, ) (*DynamicGroupManager, error) { log = log.Named("rln-dynamic") diff --git a/waku/v2/protocol/rln/group_manager/group_manager.go b/waku/v2/protocol/rln/group_manager/group_manager.go index ddd6c754f..08c3ea420 100644 --- a/waku/v2/protocol/rln/group_manager/group_manager.go +++ b/waku/v2/protocol/rln/group_manager/group_manager.go @@ -6,7 +6,7 @@ import ( "github.com/waku-org/go-zerokit-rln/rln" ) -type GroupManager interface { +type GroupManagerI interface { Start(ctx context.Context) error IdentityCredentials() (rln.IdentityCredential, error) MembershipIndex() rln.MembershipIndex @@ -14,7 +14,7 @@ type GroupManager interface { } type GMDetails struct { - GroupManager GroupManager + GroupManager GroupManagerI RootTracker *MerkleRootTracker RLN *rln.RLN diff --git a/waku/v2/protocol/rln/group_manager/static/static.go b/waku/v2/protocol/rln/group_manager/static/static.go index dbe16c528..251bf1b49 100644 --- a/waku/v2/protocol/rln/group_manager/static/static.go +++ b/waku/v2/protocol/rln/group_manager/static/static.go @@ -25,9 +25,9 @@ func NewStaticGroupManager( group []rln.IDCommitment, identityCredential rln.IdentityCredential, index rln.MembershipIndex, - log *zap.Logger, rlnInstance *rln.RLN, rootTracker *group_manager.MerkleRootTracker, + log *zap.Logger, ) (*StaticGroupManager, error) { // check the peer's index and the inclusion of user's identity commitment in the group if identityCredential.IDCommitment != group[int(index)] { diff --git a/waku/v2/protocol/rln/onchain_test.go b/waku/v2/protocol/rln/onchain_test.go index 000a780b5..3f51b4008 100644 --- a/waku/v2/protocol/rln/onchain_test.go +++ b/waku/v2/protocol/rln/onchain_test.go @@ -149,14 +149,16 @@ func (s *WakuRLNRelayDynamicSuite) TestDynamicGroupManagement() { membershipIndex := s.register(appKeystore, u1Credentials, s.u1PrivKey) - gm, err := dynamic.NewDynamicGroupManager(s.web3Config.ETHClientAddress, s.web3Config.RegistryContract.Address, membershipIndex, appKeystore, keystorePassword, prometheus.DefaultRegisterer, utils.Logger()) + gm, err := dynamic.NewDynamicGroupManager(s.web3Config.ETHClientAddress, s.web3Config.RegistryContract.Address, membershipIndex, appKeystore, keystorePassword, prometheus.DefaultRegisterer, rlnInstance, rt, utils.Logger()) s.Require().NoError(err) // initialize the WakuRLNRelay rlnRelay := &WakuRLNRelay{ - rootTracker: rt, - groupManager: gm, - RLN: rlnInstance, + GMDetails: group_manager.GMDetails{ + RootTracker: rt, + GroupManager: gm, + RLN: rlnInstance, + }, log: utils.Logger(), nullifierLog: make(map[rln.MerkleNode][]rln.ProofMetadata), } @@ -231,11 +233,16 @@ func (s *WakuRLNRelayDynamicSuite) TestMerkleTreeConstruction() { membershipIndex := s.register(appKeystore, credentials1, s.u1PrivKey) membershipIndex = s.register(appKeystore, credentials2, s.u1PrivKey) + rlnInstance, rootTracker := GetRLNInstanceAndRootTracker(s.tmpRLNDBPath()) // mount the rln relay protocol in the on-chain/dynamic mode - gm, err := dynamic.NewDynamicGroupManager(s.web3Config.ETHClientAddress, s.web3Config.RegistryContract.Address, membershipIndex, appKeystore, keystorePassword, prometheus.DefaultRegisterer, utils.Logger()) + gm, err := dynamic.NewDynamicGroupManager(s.web3Config.ETHClientAddress, s.web3Config.RegistryContract.Address, membershipIndex, appKeystore, keystorePassword, prometheus.DefaultRegisterer, rlnInstance, rootTracker, utils.Logger()) s.Require().NoError(err) - rlnRelay, err := New(gm, s.tmpRLNDBPath(), timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + rlnRelay := New(group_manager.GMDetails{ + RLN: rlnInstance, + RootTracker: rootTracker, + GroupManager: gm, + }, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) s.Require().NoError(err) err = rlnRelay.Start(context.TODO()) @@ -265,10 +272,15 @@ func (s *WakuRLNRelayDynamicSuite) TestCorrectRegistrationOfPeers() { membershipGroupIndex := s.register(appKeystore, credentials1, s.u1PrivKey) // mount the rln relay protocol in the on-chain/dynamic mode - gm1, err := dynamic.NewDynamicGroupManager(s.web3Config.ETHClientAddress, s.web3Config.RegistryContract.Address, membershipGroupIndex, appKeystore, keystorePassword, prometheus.DefaultRegisterer, utils.Logger()) + rootIntance, rootTracker := GetRLNInstanceAndRootTracker(s.tmpRLNDBPath()) + gm1, err := dynamic.NewDynamicGroupManager(s.web3Config.ETHClientAddress, s.web3Config.RegistryContract.Address, membershipGroupIndex, appKeystore, keystorePassword, prometheus.DefaultRegisterer, rootIntance, rootTracker, utils.Logger()) s.Require().NoError(err) - rlnRelay1, err := New(gm1, s.tmpRLNDBPath(), timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + rlnRelay1, err := New(group_manager.GMDetails{ + GroupManager: gm1, + RootTracker: rootTracker, + RLN: rootIntance, + }, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) s.Require().NoError(err) err = rlnRelay1.Start(context.TODO()) s.Require().NoError(err) @@ -283,10 +295,15 @@ func (s *WakuRLNRelayDynamicSuite) TestCorrectRegistrationOfPeers() { membershipGroupIndex = s.register(appKeystore2, credentials2, s.u2PrivKey) // mount the rln relay protocol in the on-chain/dynamic mode - gm2, err := dynamic.NewDynamicGroupManager(s.web3Config.ETHClientAddress, s.web3Config.RegistryContract.Address, membershipGroupIndex, appKeystore2, keystorePassword, prometheus.DefaultRegisterer, utils.Logger()) + rootIntance, rootTracker := GetRLNInstanceAndRootTracker(s.tmpRLNDBPath()) + gm2, err := dynamic.NewDynamicGroupManager(s.web3Config.ETHClientAddress, s.web3Config.RegistryContract.Address, membershipGroupIndex, appKeystore2, keystorePassword, prometheus.DefaultRegisterer, rootIntance, rootTracker, utils.Logger()) s.Require().NoError(err) - rlnRelay2, err := New(gm2, s.tmpRLNDBPath(), timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) + rlnRelay2, err := New(group_manager.GMDetails{ + GroupManager: gm1, + RootTracker: rootTracker, + RLN: rootIntance, + }, timesource.NewDefaultClock(), prometheus.DefaultRegisterer, utils.Logger()) s.Require().NoError(err) err = rlnRelay2.Start(context.TODO()) s.Require().NoError(err) diff --git a/waku/v2/protocol/rln/rln_relay_test.go b/waku/v2/protocol/rln/rln_relay_test.go index 16a8cca57..3ce6f9af1 100644 --- a/waku/v2/protocol/rln/rln_relay_test.go +++ b/waku/v2/protocol/rln/rln_relay_test.go @@ -60,7 +60,7 @@ func (s *WakuRLNRelaySuite) TestOffchainMode() { // idCredential := groupKeyPairs[index] - groupManager, err := static.NewStaticGroupManager(groupIDCommitments, idCredential, index, utils.Logger(), rlnInstance, rootTracker) + groupManager, err := static.NewStaticGroupManager(groupIDCommitments, idCredential, index, rlnInstance, rootTracker, utils.Logger()) s.Require().NoError(err) wakuRLNRelay := New(group_manager.GMDetails{ @@ -180,7 +180,7 @@ func (s *WakuRLNRelaySuite) TestValidateMessage() { s.Require().NoError(err) // idCredential := groupKeyPairs[index] - groupManager, err := static.NewStaticGroupManager(groupIDCommitments, idCredential, index, utils.Logger(), rlnInstance, rootTracker) + groupManager, err := static.NewStaticGroupManager(groupIDCommitments, idCredential, index, rlnInstance, rootTracker, utils.Logger()) s.Require().NoError(err) rlnRelay := &WakuRLNRelay{