Per-Peer Message Capture

Purpose

This feature allows for message capture on a per-peer basis. It answers the simple question: "Can I see what messages my node is sending and receiving?"

Usage and Functionality

  • Run bitcoind with the -capturemessages option.
  • Look in the message_capture folder in your datadir.
    • Typically this will be ~/.bitcoin/message_capture.
    • See that there are many folders inside, one for each peer names with its IP address and port.
    • Inside each peer's folder there are two .dat files: one is for received messages (msgs_recv.dat) and the other is for sent messages (msgs_sent.dat).
  • Run contrib/message-capture/message-capture-parser.py with the proper arguments.
    • See the -h option for help.
    • To see all messages, both sent and received, for all peers use:
      ./contrib/message-capture/message-capture-parser.py -o out.json \
      ~/.bitcoin/message_capture/**/*.dat
      
    • Note: The messages in the given .dat files will be interleaved in chronological order. So, giving both received and sent .dat files (as above with *.dat) will result in all messages being interleaved in chronological order.
    • If an output file is not provided (i.e. the -o option is not used), then the output prints to stdout.
  • View the resulting output.
    • The output file is JSON formatted.
    • Suggestion: use jq to view the output, with jq . out.json