A from-scratch tour of Bitcoin in Python: Summary [WIP]
Elliptic curve; generator (point); private key is an integer; public key (point) = G*private key
public key is representated as [prefix+x+y] (all concateneted); however, this representation (uncompressed) is wasteful; you can do with just storing x and whether y was odd or even (positive or negative) as you can compute y from the elliptic curve equation. (but will be square root so +/-) -> this is called compressed representation
Need to get a wallet address; which is derived deterministically from public address by hashing twice;
ripemd160(sha256(public_key))-> base58encoding = wallet_addr
Every transaction has input and outputs; where sum(outputs) < input ; remainder is paid to the miner
is it mathematically possible to solve block problem every time?
whats the incentive for running a full node?
if a wallet generates a wallet address independently from a network, can it be duplicate?
when new transactions are flowing into the network, where is it getting saved? is there a temporary table/database? what if the transaction isnt picked up by in a block, is there a TTL?
resources:
Bitcoin/Blockchain basics
bitcoin white paper
3Blue1brown video- But how does bitcoin actually work?
karpathy's blog- A from-scratch tour of Bitcoin in Python (summary)
Bitcoin and Cryptocurrency Technologies ( coursera, book [recommended by Raj]
mastering bitcoin (oreilly book) [recommended in karpathy's blog] (plus I have oreilly subscription)
basic/simple questions
using elliptic curve for crypto: paper
Other questions?