Bitcoin, as a decentralized digital currency, offers a wide array of opportunities for developers to engage with its technology and ecosystem. Here are some avenues through which developers can get involved with Bitcoin:
- Bitcoin Core Development: Bitcoin Core is the reference implementation of the Bitcoin protocol. Developers can contribute to its development by submitting code, reviewing pull requests, and participating in discussions on the Bitcoin GitHub repository.
- Bitcoin Improvement Proposals (BIPs): Developers can propose changes and improvements to the Bitcoin protocol by writing BIPs. These proposals go through a peer review process and, if accepted, can be implemented in Bitcoin Core or other compatible software.
- Wallet Development: Developers can build wallets that allow users to send, receive, and store bitcoins securely. This involves understanding key management, transaction signing, and interacting with the Bitcoin network via APIs or running a full node.
- Blockchain Explorer: Building a blockchain explorer allows users to view transaction histories, network statistics, and other data related to the Bitcoin blockchain. Developers can create their own explorers or contribute to existing ones.
- Smart Contracts on Bitcoin: While Bitcoin’s scripting language is intentionally limited for security reasons, developers can still implement basic smart contracts using technologies like OP_RETURN, multisig, and time-locked transactions.
- Lightning Network Development: The Lightning Network is a layer-2 scaling solution for Bitcoin that enables instant, low-cost transactions. Developers can contribute to Lightning Network implementations like LND (Lightning Network Daemon) or c-lightning, or build applications on top of the Lightning Network.
- Bitcoin Libraries and APIs: Developers can create libraries and APIs that make it easier for others to interact with the Bitcoin network. These libraries can abstract away complexity and provide convenient interfaces for common tasks like transaction creation and blockchain querying.
- Security Auditing and Testing: With the significant value stored in the Bitcoin network, there is a constant need for security auditing and testing of software and protocols. Developers with expertise in security can contribute by identifying and fixing vulnerabilities.
- Educational Resources: Developers can create tutorials, documentation, and educational materials to help others learn about Bitcoin development. This can include writing articles, creating videos, or contributing to open-source educational projects.
- Community Building and Support: Engaging with the Bitcoin community through forums, social media, and developer meetups can foster collaboration, knowledge sharing, and support among developers working on Bitcoin-related projects.
Overall, Bitcoin offers a rich ecosystem for developers with diverse skill sets and interests, ranging from low-level protocol development to building user-facing applications and educational resources.
CS120: Bitcoin for Developers Exam Quiz Answers
Question 1: Which of the following is one of the defining characteristics of Bitcoin’s peer-to-peer networks?
- A lack of a central authority to coordinate the network
- A set of mining nodes that are designated as leader nodes
- A clear and rigid structure that makes the network consistent
Question 2: Which of the following best describes how Bitcoins are transferred from one user to another?
- The Bitcoin ledger is updated to debit one account and credit another
- Every 10 mins. miners vote on the appropriate balance for every account
- Every transaction consumes one or more outputs, UTXOs, to create new outputs
Question 3: Which of the following best explains how the Bitcoin ecosystem maintains a balance of power such that no one interest group can control the network?
- Influence over the Bitcoin network is held equally between miners and software developers
- There is no stable balance of power, as it constantly shifts between large businesses using the network
- Developers, miners, wallets, merchants, and exchanges all hold influence and no one entity can dictate a change to Bitcoin
Question 4: What does it mean for a blockchain network to be permission-less?
- All transactions are approved by the network
- Miners can join the network without approval from the mining council
- Anyone can join the network and transactions can be created or sent without an intermediary
Question 5: What is meant when someone comments on “transaction status”?
- Transaction status refers to the complexity of a transaction, since transactions with many outputs are complex
- Transaction status refers to whether or not a transaction has been “confirmed” and is included in the blockchain and the number of “confirmations” or proceeding blocks
- Transaction status is a complex calculation that consists of the number of votes on the validity of that transaction from miners and the ratings that those voting miners currently have
Question 6: Why are digital signatures so important to preventing fraudulent transactions?
- They make it possible for any tampering of transaction data to be quickly detected
- They encrypt transaction data making it nearly impossible to convincingly alter the original data
- They allow for the quick summation and identification of data allowing a transaction in the wrong place to be easily discovered
Question 7: Which of the following is a sought-after feature of asymmetric encryption that has led to it being widely adopted?
- It uses fewer server resources to encrypt and decrypt
- It does not require a secure key transfer between users
- It uses algorithms that are more secure than other forms of encryption
Question 8: Which of the following best explains the functional difference between public and private keys?
- Public keys are public and private keys are private
- Public keys are used to encrypt data, while private are used to decrypt and/or sign data
- Public keys can be used to decrypt and/or sign data, while private keys are used to encrypt data
Question 9: There is a popular saying in the Bitcoin community, “not your keys, not your coins”. What this means is that if you don’t have control over the private keys associated with your Bitcoin, you don’t directly control that Bitcoin. Which of the following options best explains why?
- Private keys unlock the computing power on the network so that your transactions can be mined
- The private key is required to sign a transaction to move Bitcoin from one address to another on the network
- A private key is needed to locate your specific Bitcoin, otherwise your wallet will not be able to locate your coins on the vast Bitcoin network
Question 10: Bitcoin public and private keys are created using Elliptic Curve cryptography, which uses a “generator point” to do what?
- A unique generator point is multiplied by 5 to create a private key
- The private key, a number, is multiplied by the generator point to create the public key
- The generator point is multiplied by different values to create both the public and private keys
Question 11: Which of the following best describes the relationship between a public and private key?
- The public key is derived from the private key
- A public key is a number approximately three times the private key
- Both the public and private keys are created at the same time from the same function
Question 12: Which of the following is a security benefit provided by cryptographic signatures on Bitcoin transactions?
- Nonrepudiation – proof that the holder of the private key signed the transaction
- Validity – if a transaction is signed you can be sure that it will be accepted by the network as valid
- Irreversibility – once a Bitcoin transaction is signed, it is guaranteed to be included in the blockchain
Question 13: Which of the following best describes what a digital signature is?
- A very large prime number
- A complex and unique mathematical formula
- Two numbers commonly referred to as the R and S values
Question 14: Which of the following best describes what a SIGHASH is?
- A hashing method used to hash a transaction prior to signing
- A series of hashes applied to a signature prior to broadcasting the transaction
- A way of indicating which part of a transaction’s data was used in the creation of a signature
Question 15: What type of cryptographic signatures does Bitcoin use?
- RSA
- PEM
- ECDSA
Question 16: Which of the following accurately describes the utility of hashing?
- Hash functions are the most secure encryption algorithms available
- Hashing is a one-way function that can be used to obscure data while creating an identifier for it
- Hash functions are simple but uncommon; their limited use makes working with them challenging thus helping to reduce Bitcoin’s attack surface
Question 17: What feature of hashes makes them useful in the Bitcoin mining process?
- Finding a hash of a value requires time and power while verifying is quick and easy
- Hashes are fast and easy to compute while decrypting them requires a specific key
- Hashes are fast and easy to compute while verifying them requires a set of previous hashes
Question 18: Which of the following is an accurate description of one way that Bitcoin uses hash functions?
- A blocks hash is used as a Block identifier
- Transactions are hashed many times to securely encrypt them
- Hashes are almost exclusively for producing correctly formatted Bitcoin addresses
Question 19: What is one of the advantages of using a hash as an identifier of data?
- Hashing is a one-way function that creates a unique identifier, yet is not feasibly reversible so won’t reveal the original data
- Hashing is a two-way function that creates an identifier that is reversible so that the original data can be decrypted and accessed
- Hashing is a multifaceted set of functions that can be used for a wide variety of purposes including to create arrays of transaction IDs
Question 20: Which of the following is a feature used to help prevent fraud in Bitcoin transactions?
- SHA256 encryption, as it is the most secure algorithm
- Base58, as inaccurate transactions will not be properly encoded
- Merkle Trees, as any change to any transactions is the tree would alter the final hash
Question 21: Base58 is an encoding method developed for Bitcoin. Which of the following is also true of its origins?
- Base58 is a variant of Base64
- Base58 is closely related to hex encoding
- Base58 is a more complex version of DER encoding
Question 22: What is the utility of a version prefix in Bitcoin addresses?
- The prefix makes the address more easily machine readable
- To differentiate between types of address which helps to prevent errors
- To show which version of Bitcoin was being used when the address was created
Question 23: Which of the following is an accurate summary of the data in a Bitcoin block header?
- A block header contains a version number, the previous block’s hash, the block’s Merkel root, a timestamp, the difficulty target, and a nonce
- A block header contains a version number, the previous block’s Merkle Tree, the block’s number of transactions, a timestamp, the block height, and a nonce
- A block header contains a Merkle root, the previous block’s hash, the block’s number of transactions, a timestamp, and a summary of the Proof-of-Work done to produce the block
Question 24: Which of the following data formats is often used for cryptographic keys due to its specificity?
- DER
- JSON
- SQL
Question 25: Which of the following is one function of a Bitcoin node?
- Bitcoin nodes sort transactions by priority level
- Bitcoin nodes forward valid transactions to other nodes on the network
- Bitcoin nodes route transactions according to their geolocation, sending transactions to nodes near the originating node
Question 26: When setting up a mainnet node, what extra precaution should you take?
- Download from two different sources
- Verify the release signature on the software download
- Create your own wallet seed by doing the math on a simple calculator
Question 27: Besides maintaining keys, what other functions do wallets generally serve?
- They also construct transactions, and sort network data by priority
- They also sign transactions and collect fees from transaction validation
- They also construct transactions, sign transactions, and track transactions
Question 28: When creating a transaction via Bitcoin-cli, when is the signature created?
- The signature and the transaction are always created simultaneously
- The signature is created first and added to the transaction when it is ready
- After a transaction has been created, the transaction data is used to create a signature
Question 29: Which scripts do nodes check when validating a transaction?
- The unlocking scripts
- The locking and unlocking scripts
- The locking, unlocking, and mining scripts
Question 30: Which of the following best describes a UTXO?
- An output of a transaction that is in the mempool waiting to be mined
- An unavailable transaction output that cannot be spent until a future date
- An output of a transaction that can be spent as an input in a new transaction
Question 31: When a wallet creates a new transaction, how does it then get propagated throughout the Bitcoin network?
- The transaction is added to the official node registry
- The wallet will tell the top 5 nodes that it is connected to, who will tell the mining nodes that they are connected to
- The wallet will tell all the nodes that it is connected to about the transactions, who will then tell all the nodes that they are connected to
Question 32: The original form of Bitcoin transactions involved locking funds to an address created by performing some hash functions on a public key. Which of the following is the name for that type of Bitcoin address?
- JBOK
- P2SH
- P2PKH
Question 33: Which of the following best describes which checks are run when a transaction is being validated?
- Three checks: signature validation, output script validation and transaction history validation
- When a non-mining node validates a transaction, only the signatures are checked; a mining node will run all available validation checks
- Many checks, including checking that the inputs have not previously been spent, that the amount is valid, that there are appropriate signatures on inputs, and that the output scripts are valid
Question 34: Which of the following best describes the difference between a hard fork and a soft fork?
- A soft fork carries a higher risk of network partition or split than a hard fork
- A hard fork will partition or split the network if not all nodes are updated, while a soft fork allows un-updated nodes to remain on the network
- A hard fork will partition or split the network if not all nodes are updated, while a soft fork will only partition the network if less than 80% of the nodes are updated
Question 35: What important role do nodes play in consensus?
- They alter invalid transactions to make them compliant with current network consensus rules
- They must collect a signature from at least two full nodes before their block is considered valid
- They validate all transactions and blocks against consensus rules to prevent the propagation of invalid data
Question 36: How is it that any changes to any transactions in the blockchain would alter the entire chain from that point forward?
- The required double-hashing prevents fraud
- All communication on the network is recorded by full nodes
- Every block header contains both the hash of the previous block and the Merkle tree root
Question 37: Which of the following best describes the structure of a peer-to-peer network?
- A hierarchical structure with tiers for each level of user
- A flat structure where any node can talk to any other node
- A variable structure that adjusts depending on the set of active participants
Question 38: Which of the following options best describes why Bitcoin miners don’t control the Bitcoin ecosystem?
- Government regulation prevents any one area from having too large a concentration of miners
- Bitcoin maintains a rigid governance structure which allows for others in the ecosystem to vote on who can mine Bitcoin in each cycle
- If miners were to implement consensus rules in disagreement with the rest of the ecosystem, the merchants, exchanges, and wallets would not accept any of the Bitcoin they have earned
Question 39: What does it mean for a blockchain to be “neutral”?
- The blockchain will process any valid transaction regardless of sender, receiver, or content
- The blockchain will only process neutral transactions that don’t favor some miners over others
- The blockchain has a majority of nodes in countries that are permissive towards blockchain technology
Question 40: Which of the following best describes the difference between symmetric and asymmetric encryption?
- Symmetric encryption is more reliable
- Asymmetric encryption does not require a key exchange
- Asymmetric encryption uses newer, more secure encryption algorithms
Question 41: Which of the following best summarizes the relationship between Bitcoin addresses and cryptographic keys?
- A standard Bitcoin address is derived from a public key through a series of hash functions
- A Bitcoin address is the hash of a secret number which is then encrypted with a public key
- Both a publicand the corresponding private key are required to generate a Bitcoin address
Question 42: Does a cryptographic signature provide proof that a message hasn’t been altered?
- Yes; the original message is recorded in the signature database
- Yes; a signature will not be successfully verified with any message other than the original message that was signed
- No; a cryptographic signature proves who the message is from but does not provide protection from message alteration
Question 43: What data is needed to validate a signature?
- The original message, the signature, and the public key
- The original message, and 5 or more signatures produced by the same private key
- The original message, the signature, the public key, and the nonce used to create the signature
Question 44: Which of the following best describes why raw Bitcoin transactions are often hard to understand?
- Parts of the transaction are encrypted
- Transaction data includes only references in the inputs and signatures
- To properly compile a transaction, you’ll need data from the previous 10 blocks
Question 45: Which of the following best describes what would happen if you made an edit to a signed message prior to checking the validity of the signature?
- A signature validation script would return an error
- It depends on how much of the message was changed
- It depends if the public or private key was used in the validation function
Question 46: Which of the following best describes why hashing is so useful in creating the race between Bitcoin mining nodes?
- While it is possible to guess the correct hash for a certain set of data, it takes a lot of computing power to create the hash
- It is infeasible to guess what data will create a certain hash, but it’s very easy to verify that certain data was used to create a certain hash
- Creating and verifying hashes require a big commitment of computing power, which makes them difficult to compute but also difficult to guess
Question 47: Which of the following is an accurate statement about how the Bitcoin network adjusts the mining difficulty level?
- The hashing algorithm used in mining is adjusted by the software every two weeks
- The number of zeros that block hash must start with is voted on by all miners every 2016 blocks
- The number of zeros that a block hash must start with is adjusted by the software every 2016 blocks
Question 48: Which of the following is one way that Bitcoin uses hashing to summarize data?
- Base58
- Merkle Trees
- Proof-of-Work
Question 49: Which of the following is an accurate statement about the variety of hashing algorithms?
- Hashing was invented for the Bitcoin protocol
- There are a wide variety of hashing algorithms available
- There are currently only 3 hashing algorithms that are considered secure
Question 50: Which of the following is one use of a Merkle Tree in Bitcoin?
- A Merkle Tree is used to summarize all transactions in a block
- A Merkle Tree is used to standardize the links between all blocks in the chain
- A Merkle Tree is used to summarize the Proof-of-Work that went into creating a block
Question 51: What is one reason hex is a popular encoding choice and is used heavily in Bitcoin?
- Hex is a much faster encoding process than Base64
- Hex requires more computational power but is more secure
- Hex works better than decimal for displaying binary values to humans
Question 52: Which of the following explains why checksums are used in Bitcoin addresses?
- A checksum is part of the address creation process
- A checksum is a standard and easily human-readable format
- A checksum can detect a typo in a Bitcoin address helping to prevent errors
Question 53: To link blocks together, in a chain, what data is included in a block header?
- The previous block’s hash
- The previous 10 block’s hashes
- The previous block’s Merkle root
Question 54: Different data formats have different use cases. Which of the following is an accurate description of when certain formats are best?
- Base58 used for text, while Hex used more often for numbers
- DER is used primarily for Bitcoin addresses, while Base64 is used for block headers
- Data is transmitted on the Bitcoin network using SQL, while ASN.1 is used for hashing
Question 55: When configuring the Bitcoin daemon, you can select which network to run. What are the options available?
- Ropsten, testnet, and regtest
- Mainnet, betanet, and Ropsten
- Mainnet, testnet, or a local regtest network
Question 56: What advantages do Hierarchical Deterministic (HD) wallets have over Just a Bunch of Keys (JBOK) wallets?
- An HD wallet uses a more secure private key as compared to JBOK wallets
- An HD wallet allows for the backing up of all the keys created by the wallet with one piece of static data
- HD wallets have an easier to remember Mnemonic seed while JBOK wallets have a much longer Mnemonic seed
Question 57: How are transaction fees included in a transaction?
- Transactions fees are always a clear flat fee that is set every 144 blocks
- Transactions fees are calculated from the difference between inputs and outputs
- Transactions fees are dynamically calculated based on the value of the Bitcoin being transferred
Question 58: Fees are an important part of any transaction. What are Bitcoin transaction fees based on?
- The size of the transaction in kilobytes
- The amount of the transaction in satoshis
- The type of locking script used in the transaction
Question 59: Why are Bitcoin scripts considered stateless?
- The state is known by all nodes on the network
- All the information needed to execute a script is contained within the script
- All the information needed to execute the script can be obtained after the script is decrypted
Question 60: Which of the following best describes how a miner chooses which transactions to include in its next candidate block?
- The selection is generally random
- Miners will generally include transactions with the highest fees first
- Miners will always include the transactions they saw first, first in, first out
Question 61: Which of the following best describes op codes?
- They exclusively validate signatures on Bitcoin transactions
- They can perform a variety of functions within a Bitcoin script
- They are used to embed different types of data into the Bitcoin blockchain
Question 62: When a node receives a new block, which checks does it run on the transactions in that block?
- Validation of the block header and the Merkle root
- Signature validation of all transactions in the block
- Signature validation, validation of the block header, and the Merkle root
Question 63: Which of the following is a potential consequence of a hard fork?
- Latency on the network
- Mining nodes may crash
- A partition or split of the network
Question 64: Why can a miner not spend their mining reward for 100 blocks?
- The miner may disappear from the network
- It may be found that the block was actually invalid
- There may be some network disagreements of which block is next in the chain
Question 65: Which of the following is an accurate description of how the Bitcoin network tracks value?
- The distributed ledger tracks the number of coins in each account and adjusts when a transaction occurs
- The total value on the network is hard to track since each user is required to maintain their own accounts
- Value is stored and transferred via Unspent Transaction Outputs (UTXOs) locked and unlocked via scripts
Question 66: Which of the following best describes why Bitcoin developers don’t control the Bitcoin ecosystem?
- The large Bitcoin exchanges can approve which developers work on the core implementation
- All Bitcoin miners must vote on any proposed software updates before any changes are added to the Bitcoin code repository
- Bitcoin is an open-source project, so anyone can make their own version of it and others in the ecosystem can decide which version to run
Question 67: What steps would you take to check on the status of a transaction using a blockchain explorer?
- Follow the steps outlined by the Bitcoin wallet, which provides users with all the necessary information
- Find the transaction ID, visit a reputable blockchain explorer website, enter the ID in the search bar, check the transaction status and the number of confirmations
- Find the transaction ID, use a Bitcoin command line interface to check which block the transaction was included in, search for that block in a blockchain explorer
Question 68: Which of the following best describes how Bitcoin uses cryptographic signatures?
- Signatures are used to encrypt transaction data as a security measure
- Signatures are used as a fixed length unique identifier of transaction data
- Signatures are used to assure that a message is authentic and has not been tampered with
Question 69: Why does a private key need to remain private?
- Anyone with a private key can encrypt data and validate the signature from a public key
- Private keys include sensitive personal information that is required when generating the key
- Anyone with a private key can sign messages and decrypt data encrypted with the matching public key
Question 70: Which of the following is true of the relationship between public keys and Bitcoin addresses?
- At least two public keys are used to create one Bitcoin address
- Bitcoin addresses are often derived from a public key using a one-way function
- Bitcoin addresses and public keys are derived using the same hashing functions
Question 71: Which of the following is a feature of hashing that Bitcoin makes use of?
- A hash function can be used to encrypt data
- A hash can be used as a unique identifier of data
- A hash can be used to delay the release of data via its encryption functions
Question 72: Which of the following is an accurate description of one way that hashing is used in the Bitcoin mining process?
- Miners race to find a block hash that meets with the current network standards
- Miners race to find the hashing algorithm that best fits the current block being mined
- Miners race to find a hash for each transaction in the block that meets with the current network standards
Question 73: Why was the new encoding method, Base58, created for Bitcoin?
- Base58 is a more complex yet more secure version of hex
- Base58 was created to provide an open-source version of Base64
- Base58 removes easily confused characters helping to reduce the chances of typos
Question 74: One common encoding method used in cryptography is DER. Which of the following is true of the DER encoding method?
- DER tags are very similar to hex tags which can create some confusion
- DER uses a Tag-Length-Value format where the tag is often the type of data
- DER tags are not widely used as they have been replaced with a key-value system
Question 75: Which of the following best describes the Bitcoin scripting language?
- Bitcoin script is a fork of C++
- Bitcoin script is a Forth-like reverse-polish notation stack-based execution language
- Bitcoin script is a Forth-like reverse-polish notation object-oriented execution language
Question 76: Which nodes validate which transactions?
- Every node validates every transaction
- Only mining nodes validate all transactions
- Non-mining nodes validate P2PKH transactions
Question 77: Why will two versions of the same transaction, a double spends, not be included in the same block?
- A miner could only collect reduced fees on a double spend transaction
- The network relies on the majority of miners being honest to prevent this issue
- Miners would not benefit from including a double spend as that block would be rejected by the network
Question 78: Which of the following best describes the interaction between public keys, private keys, and Bitcoin in a standard Bitcoin transaction?
- To move Bitcoin, a signature from both the public and private keys are required.
- Bitcoin is locked to an address created from a public key. A signature from the corresponding private key is then required to move funds from that address.
- Bitcoin is locked to an address created from a public key. To move funds from that address, the Bitcoin must first be decrypted using the corresponding private key.
Question 79: Which of the following options best describes how public and private keys are used to encrypt and decrypt data?
- The public key is used to encrypt data that can then only be decrypted using the corresponding private key
- Both the public and private keys are used to encrypt data that can then only be accessed with the private key
- A public key and a series of hashes are used to encrypt data, while the private key and the original hashed data is used to decrypt that data
Question 80: Which of the following is true about the creation of cryptographic signatures?
- Bitcoin uses a variety of curves in the creation of transaction signatures
- There is only one working cryptographic signature algorithm that has not been compromised
- There are many different algorithms and curves that can be used to generate cryptographic signatures
Question 81: What data do you need to verify a hash?
- The hashing private key
- The original data and the hashing algorithm used
- An array of hashes produced with the same algorithm
Question 82: Which of the following is a serialization method used for signatures on Bitcoin transactions?
- Json
- DER
- XML
Question 83: Which of the following is a reason why someone may want to run a Bitcoin full node?
- Because they can earn money from validating transactions
- Because they wish to be able to independently validate all transactions on the network
- Because running a full node will allow them to have their transactions treated as a priority
Question 84: How does the Bitcoin daemon communicate with other programs?
- RPC
- JSON
- REST API
Question 85: The Bitcoin daemon often displays transaction data in what encoding format?
- DER
- Hex
- RPC
Question 86: Which of the following are two types of Bitcoin transactions?
- P2PKH P2SH
- P2KH, and HTLC
- P2PKH and P2MH
Question 87: Why is it inherently difficult to update the Bitcoin consensus rules?
- The rounds of voting required take resources away from the network
- It takes a lot of mining power for all the miners to vote on the changes
- There is no centralized decision-maker and most participants need to support changes
Question 88: How is conflicting data on the network resolved?
- Non-mining nodes can vote on the version of the data that they think is true
- When miners have conflicting data, the “winning” miner’s version of history becomes the truth on the network
- A random number generator is used to select the miner whose version of transaction history will be added to the blockchain