Skip to content

Suggestion for questions based on architecture of the Bitcoin core #9

@shaavan

Description

@shaavan
  • I have prepared a list of questions related to the current architecture of Bitcoin core.
  • I used this documentation for reference in designing questions.
  • The questions are arranged in chronological order based on where they come in the documentation.
  • For now, I am putting the list of questions as an issue so that we can select the questions before implementing them in the final documentation.

List of Questions:

  1. Default questions (Question given as examples in the beginning):
    1. How does the node find other peers on the network?
    2. How is a new block or transaction received and validated?
    3. How is a transaction created and broadcasted?
  2. Basics:
    1. Describe the primary purposes of a Bitcoin node.
    2. Why is it preferred to do transactions on your own node?
    3. Explain nodes and wallets.
    4. Try using bitcoind, bitcoin-cli, bitcoin-qt
  3. Protocol - P2P:
    1. How does node find other peers?
    2. Explain the two ways in which a node can be connected with its peers.
  4. Concurrency Model:
    1. Script Verification
      1. Explain how the number of threads used for script verification is decided. Explain the use of -par argument in it.
      2. Understand StartScriptCheckWorkerThreads(script_threads) function and try understanding how [PR #18710](Add local thread pool to CCheckQueue bitcoin/bitcoin#18710) improved it.
    2. Send And Receive Messages To And From Peers
      1. Please explain how sending and receiving messages takes place multiple times, though it is wrapped by TraceThread(), which ensures unique execution.
  5. Notification Mechanism:
    1. How to register a class to receive messages from the g_signals publisher?
    2. Does CMainSignals implement CValidationInterface? If now, then why do they have the same names for the methods?
    3. What is g_signals? Explain its structure and the process it employs to notify subscribers of the signal.

I would much appreciate feedback on this question to help me improve them.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions