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

[JOURNAL] (Yash) GB : 01-08 #5

Open
Yash-1907 opened this issue Jan 17, 2022 · 0 comments
Open

[JOURNAL] (Yash) GB : 01-08 #5

Yash-1907 opened this issue Jan 17, 2022 · 0 comments

Comments

@Yash-1907
Copy link

Name: Yash Bhanushali
Book- Grokking Bitcoin: 01-08

Questions:
1. How are private keys generated?

2. Why are public keys(33 bytes) longer than private keys(32 bytes)?

3. How does the verification process using the public and private keys work?
Soln- The message’s hash is encrypted using the private key by the sender, this is decrypted using the public key by the receiver.
If the decrypted hash code matches the original message’s hash code the sender is verified.

4. In case of a loop-hole in the public key derivation function, how is the private key protected as the public key is visible to
everyone?

Soln- Public keys directly are not listed in the spreadsheet, instead Public Key Hash(PKH) are listed. Public keys are doubly
hashed- by SHA256 and RIPEMD160 to generate shorter(20 bytes) PKHs which can easily to stored are protect the Private
keys to some extent.

5. How can we avoid burning i.e. transferring coins to a non-existing PKH?
Soln- The main reason of burning coins is typing errors in the PKH. To counter that a two-way function Base58check and
checksum is used. First a version “00”(1 byte) is added at the beginning of the PKH, then the 4 byte checksum is added at the
end. Checksum is the first 4 bytes of the doubly hashed(SHA256) PHK with the version. Now this is base58check encoded and
sent to the other user. The user at the other end will base58check decode, extract the checksum and verify it thus make typing
errors less likely.

6. How to store the seed efficiently and minimize the typing errors?
Soln- The 128-bit seed is stored using mnemonic sentences. Firstly a 4-bit checksum is added to the end of seed making it 132
bits. Now these bits are grouped into 12 groups of 11 bits. These groups are then mapped to the list of 2048 words resulting in
conversion of seed to 12 simple English words.

7. What is the need of generating tree of public keys using the wallet?
Soln- Sometimes we need to make the wallet accessible from a website to handle a large volume of input transactions, now the
problem is that giving access to all the private keys is quite vulnerable. Hence generating tree of public keys is a useful feature
provided by the HD wallets.

8. If the hardened private keys are more secure, why don’t they completely replace the normal xprv derivation? Are there any
caveats of using the hardened keys?

9. What is length-extension attack?

10. Isn’t there a security lapse when the public key is visible in the transaction?
Soln- The public key needs to be revealed to verify the signature but it is only revealed after spending the transaction’s input.
Due to this lapse everyone is advised to not reuse the key-pair. Later we replace the signature with proof of work hence public
key is not required.

11. What do you mean by Block ID?
Soln- Block ID is simply the doubly hashed block header.

12. What is the use of lightweight wallets?
Soln- Lightweight wallets are used to extract the partial Merkle tree for the set of transactions filtered by the bloom filter which
also includes some false positive. This helps the user to verify that the filtered transaction is present in the block.

13. Shouldn’t there be mechanisms to control the sensitivity of bloom filters i.e., increasing or decreasing the number of false
positive thus offering different levels of security?

14. Assume that in a split there are two branches- one with a lone block and other with a long chain. Now the miner of that lone
block abandons the block but does not mark its transactions as pending, so what happens to those transactions?

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

1 participant