Enable expensive metrics (ie, metrics with per-peer cardinality):
nim c -d:libp2p_expensive_metrics some_file.nimSet list of known libp2p agents for metrics:
nim c -d:libp2p_agents_metrics -d:KnownLibP2PAgents=nimbus,lighthouse,lodestar,prysm,teku some_file.nimSpecify gossipsub specific topics to measure in the metrics:
nim c -d:KnownLibP2PTopics=topic1,topic2,topic3 some_file.nimThe compile-time flag libp2p_testing is used in test builds to expose code to tests without making it available to end users.
It is by default added to tests/config.nims.
-d:libp2p_testing| Multi format | Compiler flag (path to extensions file) |
Expected definition in extension file |
|---|---|---|
MultiCodec |
-d:libp2p_multicodec_exts |
const CodecExts = [] |
MultiHash |
-d:libp2p_multihash_exts |
const HashExts = [] |
MultiAddress |
-d:libp2p_multiaddress_exts |
const AddressExts = [] |
MultiBase |
-d:libp2p_multibase_exts |
const BaseExts = [] |
ContentIds |
-d:libp2p_contentids_exts |
const ContentIdsExts = [] |
For example, a file called multihash_exts.nim could be created and contain MultiHash extensions:
proc coder1(data: openArray[byte], output: var openArray[byte]) =
copyMem(addr output[0], unsafeAddr data[0], len(output))
proc coder2(data: openArray[byte], output: var openArray[byte]) =
copyMem(addr output[0], unsafeAddr data[0], len(output))
proc sha2_256_override(data: openArray[byte], output: var openArray[byte]) =
copyMem(addr output[0], unsafeAddr data[0], len(output))
const HashExts = [
MHash(mcodec: multiCodec("codec_mc1"), size: 0, coder: coder1),
MHash(mcodec: multiCodec("codec_mc2"), size: 6, coder: coder2),
MHash(mcodec: multiCodec("sha2-256"), size: 6, coder: sha2_256_override),
]These MultiHashes will be available at compile time when the binary is compiled with -d:libp2p_multihash_exts=multihash_exts.nim.