2022-08-12 12:44:13 +00:00
|
|
|
//go:build gowaku_rln
|
|
|
|
// +build gowaku_rln
|
|
|
|
|
|
|
|
package node
|
|
|
|
|
|
|
|
import (
|
|
|
|
"crypto/ecdsa"
|
|
|
|
|
|
|
|
"github.com/ethereum/go-ethereum/common"
|
2022-11-09 19:53:01 +00:00
|
|
|
"github.com/waku-org/go-waku/waku/v2/protocol/rln"
|
2022-10-27 15:23:20 +00:00
|
|
|
r "github.com/waku-org/go-zerokit-rln/rln"
|
2022-08-12 12:44:13 +00:00
|
|
|
)
|
|
|
|
|
2022-08-18 14:42:18 +00:00
|
|
|
// WithStaticRLNRelay enables the Waku V2 RLN protocol in offchain mode
|
|
|
|
// Requires the `gowaku_rln` build constrain (or the env variable RLN=true if building go-waku)
|
2022-08-12 12:44:13 +00:00
|
|
|
func WithStaticRLNRelay(pubsubTopic string, contentTopic string, memberIndex r.MembershipIndex, spamHandler rln.SpamHandler) WakuNodeOption {
|
|
|
|
return func(params *WakuNodeParameters) error {
|
|
|
|
params.enableRLN = true
|
|
|
|
params.rlnRelayDynamic = false
|
|
|
|
params.rlnRelayMemIndex = memberIndex
|
|
|
|
params.rlnRelayPubsubTopic = pubsubTopic
|
|
|
|
params.rlnRelayContentTopic = contentTopic
|
|
|
|
params.rlnSpamHandler = spamHandler
|
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2023-04-05 19:44:46 +00:00
|
|
|
// WithDynamicRLNRelay enables the Waku V2 RLN protocol in onchain mode.
|
2022-08-18 14:42:18 +00:00
|
|
|
// Requires the `gowaku_rln` build constrain (or the env variable RLN=true if building go-waku)
|
2023-04-05 19:44:46 +00:00
|
|
|
func WithDynamicRLNRelay(pubsubTopic string, contentTopic string, keystorePath string, keystorePassword string, membershipContract common.Address, spamHandler rln.SpamHandler, ethClientAddress string, ethPrivateKey *ecdsa.PrivateKey, registrationHandler rln.RegistrationHandler) WakuNodeOption {
|
2022-08-12 12:44:13 +00:00
|
|
|
return func(params *WakuNodeParameters) error {
|
|
|
|
params.enableRLN = true
|
|
|
|
params.rlnRelayDynamic = true
|
2023-04-05 19:44:46 +00:00
|
|
|
params.keystorePassword = keystorePassword
|
|
|
|
params.keystorePath = keystorePath
|
2022-08-12 12:44:13 +00:00
|
|
|
params.rlnRelayPubsubTopic = pubsubTopic
|
|
|
|
params.rlnRelayContentTopic = contentTopic
|
|
|
|
params.rlnSpamHandler = spamHandler
|
|
|
|
params.rlnETHClientAddress = ethClientAddress
|
|
|
|
params.rlnETHPrivateKey = ethPrivateKey
|
2023-04-05 19:44:46 +00:00
|
|
|
params.rlnMembershipContractAddress = membershipContract
|
2022-09-11 21:08:58 +00:00
|
|
|
params.rlnRegistrationHandler = registrationHandler
|
2022-08-12 12:44:13 +00:00
|
|
|
return nil
|
|
|
|
}
|
|
|
|
}
|