Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Open
shaavan opened this issue Mar 17, 2022 · 0 comments
Open
Assignees

Comments

@shaavan
Copy link
Contributor

shaavan commented Mar 17, 2022

  • 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.

@willcl-ark willcl-ark self-assigned this May 24, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants