Dear all,
Since we are doing a bit of interviewing of candidates for roles in Bitcoin development I have compiled a list of questions that could be asked during such an interview. I have based this list of questions on the "Mastering Bitcoin" book. I have created also a list of answers, and can provide them if required by someone.
If someone has some similar list, I would appreciate if you could share.
Alternatively I have been thinking about creating a quiz in some online/offline platforms to be able to test candidates using SW.
Thank you,
My list is below.
I can also upload the document to github if needed.
Questions.
Chapter 1: Introduction
1. What are the main Bitcoin terms?
2. What is a Bitcoin address?
3. What is a Bitcoin transaction?
4. What is a Bitcoin block?
5. What is a Bitcoin blockchain?
6. What is a Bitcoin transaction ledger?
7. What is a Bitcoin system? What is a bitcoin (cryptocurrency)? How are they different?
8. What is a full Bitcoin stack?
9. What are two types of issues that digital money have to address?
10. What is a “double-spend” problem?
11. What is a distributed computing problem? What is the other name of this problem?
12. What is an election?
13. What is a consensus?
14. What is the name of the main algorithm that brings the bitcoin network to the consensus?
15. What are the different types of bitcoin clients? What is the difference between these clients? Which client offers the most flexibility? Which client offers the least flexibility? Which client is the most and least secure?
16. What is a bitcoin wallet?
17. What is a confirmed transaction and what is an unconfirmed transaction?
Chapter 2: How Bitcoin works.
1. What is the best way to understand transactions in the Bitcoin network?
2. What is a transaction? What does it contain? What is the similarity of a transaction to a double entry ledger? What does input correspond to? What does output correspond to?
3. What are the typical transactions in the bitcoin network? Could you please name three of such transactions and give examples of each type of the transaction?
4. What is a QR and how it is used in the Bitcoin network? Are there different types of QRs? If so, what are the different types? Which type is more informational? What kind of information does it provide?
5. What is SPV? What does this procedure check and what type of clients of the Bitcoin network usually use this procedure?
Chapter 3: The Bitcoin client.
1. How to download and install the Core Bitcoin client?
2. What is the best way to test the API available for the Core Bitcoin client without actually programming? What is the interface called?
3. What are the major areas of operations in the Bitcoin client? What can we do with the client?
4. What are the available operations for the Bitcoin addresses?
5. What are the available read operations for the Bitcoin transactions? How is a transaction encoded in the Bitcoin network? What is a raw transaction and what is a decoded transaction?
6. If I want to get information about a transaction that is not related to any address in my own wallet, do I need to change anything in the Bitcoin client configuration? If yes, which option do I need to modify?
7. What are the available read operation for the Bitcoin blocks?
8. What are the available operations for the creation of the transactions in the Bitcoin network?
9. How do you normally need to address the unspent output from the previous transaction in order to use it as an input for a new transaction?
10. What is the mandatory operation after creating a new transaction and before sending this new transaction to the network? What state does the wallet have to be in order to perform this operation?
11. Is the transaction ID immutable (TXID)? If not why, if yes, why and when?
12. What does signing a transaction mean?
13. What are the other options for Bitcoin clients? Are there any libraries that are written for some specific languages? What types of clients do these libraries implement?
Chapter 4: Keys, Addresses and Wallets.
1. What is a PKC? When it was developed? What are the main mathematical foundations or functions that PKC is using?
2. What is ECC? Could you please provide the formula of the EC? What is the p and what is the Fp? What are the defined operations in ECC? What is a “point to infinity”?
3. What is a Bitcoin wallet? Does this wallet contain coins? If not, what does it contain then?
4. What is a BIP? What it is used for?
5. What is an encrypted private key? Why would we want to encrypt private keys?
6. What is a paper wallet? What kind of storage it is an example of?
7. What is a nondeterministic wallet? Is it a good wallet or a bad wallet? Could you justify?
8. What is a deterministic wallet?
9. What is an HD wallet?
10. How many keys are needed for one in and out transaction? What is a key pair? Which keys are in the key pair?
11. How many keys are stored in a wallet?
12. How does a public key gets created in Bitcoin? What is a “generator point”?
13. Could you please show on a picture how ECC multiplication is done?
14. How does a private key gets created in Bitcoin? What we should be aware of when creating a new private key? What is CSPRNG? What kind of input should this function be getting?
15. What is a WIF? What is WIF-Compressed?
16. What is Base58 encoding and what is Base58Check encoding? How it is different from Base64 encoding? Which characters are used in Base58? Why Base58Check was invented? What kind of problems does it solve? How is Base58Check encoding is created from Base58 encoding?
17. How can Bitcoin addresses be encoded? Which different encodings are used? Which key is used for the address creation? How is the address created? How this key is used and what is the used formula?
18. Can we visually distinguish between different keys in Base58Check format? If yes, how are they different from each other? What kind of prefixes are used? Could you please provide information about used prefixes for each type of the key?
19. What is an index in HD wallets? How many siblings can exist for a parent in an HD wallet?
20. What is the depth limitation for an HD wallet key hierarchy?
21. What are the main two advantages of an HD wallet comparing to the nondeterministic wallets?
22. What are the risks of non-hardened keys creation in an HD wallet? Could you please describe each of them?
23. What is a chain code in HD wallets? How many different chain code types there are?
24. What is the mnemonic code words? What are they used for?
25. What is a seed in an HD wallet? Is there any other name for it?
26. What is an extended key? How long is it and which parts does it consist of?
27. What is P2SH address? What function are P2SH addresses normally used for? Is that correct to call P2SH address a multi-sig address? Which BIP suggested using P2SH addresses?
28. What is a WIF-compressed private key? Is there such a thing as a compressed private key? Is there such a thing as a compressed public key?
29. What is a vanity address?
30. What is a vanity pool?
31. What is a P2PKH address? What is the prefix for the P2PKH address?
32. How does the owner prove that he is the real owner of some address? What does he have to represent to the network to prove the ownership? Why a perpetrator cannot copy this information and reuse it in the next transactions?
33. What is the rule for using funds that are secured by a cold storage wallet? How many times you can send to the address that is protected by the private key stored in a cold storage? How many times can you send funds from the address that is protected by the private key stored in a cold storage?
Chapter 5: Transactions.
1. What is a transaction in Bitcoin? Why is it the most important operation in the Bitcoin ecosystem?
2. What is UTXO? What is one of the important rules of the UTXO?
3. Which language is used to write scripts in Bitcoin ecosystem? What are the features of this language? Which language does it look like? What are the limitations of this language?
4. What is the structure of a transaction? What does transaction consists of?
5. What are the standard transactions in Bitcoin? How many standard transactions there are (as of 2014)?
6. What is a “locking script” and what is an “unlocking script”? What is inside these scripts for a usual operation of P2PKH? What is a signature? Could you please describe in details how locking and unlocking scripts work and draw the necessary diagrams?
7. What is a transaction fee? What does the transaction fee depend on?
8. If you are manually creating transactions, what should you be very careful about?
9. Could you please provide a real life scenario when you might need a P2SH payment and operation?
10. What is the Script operation that is used to store in the blockchain some important data? Is it a good practice? Explain your answer.
Chapter 6: The Bitcoin Network.
1. What is the network used in Bitcoin? What is it called? What is the abbreviation? What is the difference between this network architecture and the other network architectures? Could you please describe another network architecture and compare the Bitcoin network and the other network architectures?
2. What is a Bitcoin network? What is an extended Bitcoin network? What is the difference between those two networks? What are the other protocols used in the extended Bitcoin network? Why are these new protocols used? Can you give an example of one such protocol? What is it called?
3. What are the main functions of a bitcoin node? How many of them there are? Could you please name and describe each of them? Which functions are mandatory?
4. What is a full node in the Bitcoin network? What does it do and how does it differ from the other nodes?
5. What is a lightweight node in the Bitcoin network? What is another name of the lightweight node? How lightweight node checks transactions?
6. What are the main problems in the SPV process? What does SPV stand for? How does SPV work and what does it rely on?
7. What is a Sybil attack?
8. What is a transaction pool? Where are transaction pools stored in a Bitcoin network client?
What are the two different transaction pools usually available in implementations?
9. What is the main Bitcoin client used in the network? What is the official name of the client and what is an unofficial name of this client?
10. What is UTXO pool? Do all clients keep this pool? Where is it stored? How does it differ from the transaction pools?
11. What is a Bloom filter? Why are Bloom filters used in the Bitcoin network? Were they originally used in the initial SW or were they introduced with a specific BIP?
Chapter 7: The Blockchain.
1. What is a blockchain?
2. What is a block hash? Is it really a block hash or is it a hash of something else?
3. What is included in the block? What kind of information?
4. How many parents can one block have?
5. How many children can one block have? Is it a temporary or permanent state of the blockchain? What is the name of this state of the blockchain?
6. What is a Merkle tree? Why does Bitcoin network use Merkle trees? What is the advantage of using Merkle trees? What is the other name of the Merkle tree? What kind of form must this tree have?
7. How are blocks identified in the blockchain? What are the two commonly used identities? Are these identities stored in the blockchain?
8. What is the average size of one transaction? How many transactions are normally in one block? What is the size of a block header?
9. What kind of information do SPV nodes download? How much space do they save by that comparing to what they would need if they had to download the whole blockchain?
10. What is a usual representation of a blockchain?
11. What is a genesis block? Do clients download this block and if yes – where from? What is the number of the genesis block?
12. What is a Merkle root? What is a Merkle path?
Chapter 8: Mining and Consensus.
1. What is the main purpose of mining? Is it to get the new coins for the miners? Alternatively, it is something else? Is mining the right or good term to describe the process?
2. What is PoW algorithm?
3. What are the two main incentives for miners to participate in the Bitcoin network? What is the current main incentive and will it be changed in the future?
4. Is the money supply in the Bitcoin network diminishing? If so, what is the diminishing rate? What was the original Bitcoin supply rate and how is it changed over time? Is the diminishing rate time related or rather block related?
5. What is the maximum number of Bitcoins available in the network after all the Bitcoins have been mined? When will all the Bitcoins be mined?
6. What is a decentralized consensus? What is a usual setup to clear transactions? What does a clearinghouse do?
7. What is deflationary money? Are they good or bad usually? What is the bad example of deflationary spiral?
8. What is an emergent consensus? What is the feature of emergent consensus? How does it differ from a usual consensus? What are the main processes out of which this emergent decentralized consensus becomes true?
9. Could you please describe the process of Independent Transaction Verification? What is the list of criteria that are checked against a newly received transaction? Where can these rules be checked? Can they be changed over time? If yes, why would they be changed?
10. Does mining node have to be a full node? If not, what are the other options for a node that is not full to be a mining node?
11. What is a candidate block? What types of nodes in the Bitcoin network create candidate blocks? What is a memory pool? Is there any other name of the memory pool? What are the transactions kept in this memory pool?
12. How are transactions added to the candidate block? How does a candidate block become a valid block?
13. What is the minimum value in the Bitcoin network? What is it called and what is the value? Are there any alternative names?
14. What is the age of the UTXO?
15. How is the priority of a transaction is calculated? What is the exact formula? What are the units of each contributing member? When is a transaction considered to be old? Can low priority transactions carry a zero fee? Will they be processed in this case?
16. How much size in each block is reserved for high priority transactions? How are transactions prioritized for the remaining space?
17. Do transactions expire in Bitcoin? Can transactions disappear in the Bitcoin network? If yes, could you please describe such scenario?
18. What is a generation transaction? Does it have another name? If it does, what is the other name of the transaction? What is the position of the generation transaction in the block? Does it have an input? Is the input usual UTXO? If not – what is the input called? How many outputs there are for the generation transaction?
19. What is the Coinbase data? What is it currently used for?
20. What is little-endian and big-endian formats? Could you please give an example of both?
21. How is the block header constructed? Which fields are calculated and added to the block header? Could you please describe the steps for calculation of the block header fields?
22. What is a mantissa-exponent encoding? How is this encoding used in the Bitcoin network? What is the difficulty target? What is the actual process of mining? What kind of mathematical calculation is executed to conduct mining?
23. Which hash function is used in the Bitcoin mining process?
24. Could you describe the PoW algorithm? What features of the hash function does it depend on? What is the other name of the hash function? What is a nonce? How can we increase the difficulty of the PoW calculation? What do we need to change and how do we need to change this parameter?
25. What is difficulty bits notation? Could you please describe in details how it works? What is the formula for the difficulty notation?
26. Why is difficulty adjustable? Who adjusts it and how exactly? Where is the adjustment made? On which node? How many blocks are taken into consideration to predict the next block issuance rate? What is the change limitation? Does the target difficulty depend on the number of transactions?
27. How is a new block propagated in the network? What kind of verification does each node do? What is the list of criteria for the new block? What kind of process ensures that the miners do not cheat?
28. How does a process of block assembly work? What are the sets of blocks each full node have? Could you please describe these sets of blocks?
29. What is a secondary chain? What does each node do to check this chain and perhaps to promote it to the primary chain? Could you please describe an example when a fork occurs and what happens?
30. How quickly forks are resolved most of the time? Within how many new block periods?
31. Why the next block is generated within 10 minutes from the previous? What is this compromise about? What do designers of the Bitcoin network thought about when implementing this rule?
32. What is a hashing race? How did Bitcoin hashing capacity has changed within years from inception? What kind of hardware devices were initially used and how did the HW utilization evolved? What kind of hardware is used now to do mining? How has the network difficulty improved?
33. What is the size of the field that stores nonce in the block header? What is the limitation and problem of the nonce? Why was an extra nonce created? Was there any intermediate solution? If yes, what was the solution? What are the limitations of the solution?
34. What is the exact solution for the extra nonce? Where does the new space come from? How much space is currently used and what is the range of the extra nonce now?
35. What is a mining pool? Why was it created? How are normally such pools operated? Do they pay regularly to the pool participants? Where are newly created Bitcoins distributed? To which address? How do mining pools make money? How do the mining pools calculate the participation? How are shares earned calculated?
36. What is a managed pool? How is the owner of the pool called? Do pool members need to run full nodes? Explain why or why not?
37. What are the most famous protocols used to coordinate pool activities? What is a block template? How is it used?
38. What is the limitation of a centralized pool? Is there any alternative? If yes, what is it? How is it called? How does it work?
39. What is a consensus attack? What is the main assumption of the Bitcoin network? What can be the targets of the consensus attacks? What can these attacks do and what they cannot do? How much overall capacity of the network do you have to control to exercise a consensus attack?
Chapter 9: Alternative Chains, Currencies and Applications.
1. What is the name of alternative coins? Are they built on top of the Bitcoin network? What are examples of them? Is there any alternative approach? Could you please describe some alternatives?
2. Are there any alternatives to the PoW algorithm? If yes – what are the alternatives? Could you please name two or three?
3. What is the operation of the Script language that is used to store a metadata in Bitcoin blockchain?
4. What is a coloured coin? Could you please explain how it is created and how it works? Do you need any special SW to manage coloured coins?
5. What is the difference between alt coins and alt chains? What is a Litecoin? What are the major differences between the Bitcoin and Litecoin? Why so many alt coins have been created? What are they usually based on?
6. What is Scrypt? Where is it used and how is it different from the original algorithm from which it has been created?
7. What is a demurrage currency? Could you please give an example of one blockchain and crypto currency that is demurrage?
8. What is a good example of an alternative algorithm to PoW? What is it called and how is it different from the PoW? Why the alternatives to Bitcoin PoW have been created? What is the main reason for this? What is dual-purpose PoW algorithms? Why have they been created?
9. Is Bitcoin “anonymous” currency? Is it difficult to trace transactions and understand someone’s spending habits?
10. What is Ethereum? What kind of currency does it use? What is the difference from Bitcoin?
Chapter 10: Bitcoin security.
1. What is the main approach of Bitcoin security?
2. What are two common mistakes made by newcomers to the world of Bitcoin?
3. What is a root of trust in traditional security settings? What is a root of trust in Bitcoin network? How should you assess security of your system?
4. What is a cold storage and paper wallet?
5. What is a hardware wallet? How is it better than storing private keys on your computer or your smart phone?
The github link for questions and answers is here:
https://github.com/userbtc/crypto_developer_questions.git