I believe explicit is used to check if the GossipSubParams instance was created by the user either passing params to GossipSubParams(...) or GossipSubParams.init(...). In the first case explicit should be set to true when calling the Nim constructor, in the second case, the param isn't necessary and should be always be set to true by init. If none of those options were used, it means the instance was created by using Nim default values. In this case, GossipSubParams.init() should be called to set the values to their default value defined by nim-libp2p.
https://github.com/status-im/nim-libp2p/blob/5e55ca3b69e18a56a0a5a34941676f4df08523ae/libp2p/protocols/pubsub/gossipsub.nim#L774
I believe
explicit
is used to check if theGossipSubParams
instance was created by the user either passing params toGossipSubParams(...)
orGossipSubParams.init(...)
. In the first caseexplicit
should be set totrue
when calling theNim
constructor, in the second case, the param isn't necessary and should be always be set to true byinit
. If none of those options were used, it means the instance was created by using Nim default values. In this case,GossipSubParams.init()
should be called to set the values to their default value defined by nim-libp2p. https://github.com/status-im/nim-libp2p/blob/5e55ca3b69e18a56a0a5a34941676f4df08523ae/libp2p/protocols/pubsub/gossipsub.nim#L774