waku-org/go-waku

View on GitHub
waku/v2/node/wakuoptions_rln.go

Summary

Maintainability
A
50 mins
Test Coverage
A
100%
//go:build !gowaku_no_rln
// +build !gowaku_no_rln

package node

import (
    "github.com/ethereum/go-ethereum/common"
    "github.com/waku-org/go-waku/waku/v2/protocol/rln"
    r "github.com/waku-org/go-zerokit-rln/rln"
)

// WithStaticRLNRelay enables the Waku V2 RLN protocol in offchain mode
func WithStaticRLNRelay(memberIndex *r.MembershipIndex, spamHandler rln.SpamHandler) WakuNodeOption {
    return func(params *WakuNodeParameters) error {
        params.enableRLN = true
        params.rlnRelayDynamic = false
        params.rlnRelayMemIndex = memberIndex
        params.rlnSpamHandler = spamHandler
        return nil
    }
}

// WithDynamicRLNRelay enables the Waku V2 RLN protocol in onchain mode.
func WithDynamicRLNRelay(keystorePath string, keystorePassword string, treePath string, membershipContract common.Address, membershipIndex *uint, spamHandler rln.SpamHandler, ethClientAddress string) WakuNodeOption {
    return func(params *WakuNodeParameters) error {
        params.enableRLN = true
        params.rlnRelayDynamic = true
        params.keystorePassword = keystorePassword
        params.keystorePath = keystorePath
        params.rlnSpamHandler = spamHandler
        params.rlnETHClientAddress = ethClientAddress
        params.rlnMembershipContractAddress = membershipContract
        params.rlnRelayMemIndex = membershipIndex
        params.rlnTreePath = treePath
        return nil
    }
}