(The subtitle of the blog is "Computer history, restoring vintage computers, IC reverse engineering, and whatever" and it is full of fascinating articles, several of which have been featured here on HN)
Cool that this article implements the cryptography primitives, though!
e: Funnily, like the article, I also stored some BTC in a wallet and challenged people to (manually) take/steal it. At the time it was worth $10 USD.. now it's worth $123 USD!
https://github.com/yjjnls/awesome-blockchain#implementation-... and https://github.com/openblockchains/awesome-blockchains#pytho... list a few more ~"blockchain from scratch" [in Python] examples.
... FWIU, Ethereum has the better Python story. There was a reference implementation of Ethereum in Python? https://ethereum.org/en/developers/docs/programming-language...
http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and...
https://gizmodo.com/mining-bitcoin-with-pencil-and-paper-164...
Was on front page yesterday for a presentation on Tesla's Autopilot / Autonomous features: https://www.youtube.com/watch?v=NSDTZQdo6H8
Cool to learn this is the same guy.
― Bill Gates
"A professor of Byzantine history at Princeton once said that von Neumann had greater expertise in Byzantine history than he did" [1]
I don't know for sure why, but I think two possibilities are likely: (1) An extremely strong, natural intellectual curiosity and/or (2) Working on other things allows them to bring fresh ideas/insights to their "main" work, and in this sense is also rejuvenating.
Agreed though - impressive he has that kind of sidebar time or is so capable he doesn't need that much time to figure it out.
Everything I learned about deep neural networks, enough to apply it in a live product, was essentially all his notes, videos and exercises. And it’s all out there for free!
Thanks Andrej and keep doing cool stuff!
1 1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH https://www.blockchain.com/btc/address/1BgGZ9tcN4rm9KBzDn7KprQz87SZ26SAMH
Some others: 2 1cMh228HTCiwS8ZsaakH8A8wze1JR5ZsP https://www.blockchain.com/btc/address/1cMh228HTCiwS8ZsaakH8A8wze1JR5ZsP
3 1CUNEBjYrCn2y1SdiUMohaKUi4wpP326Lb https://www.blockchain.com/btc/address/1CUNEBjYrCn2y1SdiUMohaKUi4wpP326Lb
42 1EMxdcJsfN5jwtZRVRvztDns1LgquGUTwi https://www.blockchain.com/btc/address/1EMxdcJsfN5jwtZRVRvztDns1LgquGUTwi
1337 1DN76uuAUDY1DLxABD3JAyunhhAreJbCjT https://www.blockchain.com/btc/address/1DN76uuAUDY1DLxABD3JAyunhhAreJbCjThttps://keys.lol/bitcoin/22486853933768128433444208678976948...
Finding one with a balance is the hard part.
Does this make any sense? How is a curve going to have backdoors on it? Or he means a specific implementation? Or is this a joke? I'm confused
https://miracl.com/blog/backdoors-in-nist-elliptic-curves/
“Working in collaboration with the NSA, NIST included three sets of recommended elliptic curves in FIPS 186-2 that were generated using the algorithms in the American National Standard (ANS) X9.62 standard and Institute of Electrical and Electronics Engineers (IEEE) P1363 standards.”: What exactly is NIST’s justification for making claims regarding the method that NSA used to generate these curves? The fact that a hash matches is publicly verifiable, but the distribution of “random” inputs is not. I have heard NSA employees claiming that the “random” inputs were actually generated as hashes of English text chosen (and later forgotten) by Jerry Solinas."
https://csrc.nist.gov/CSRC/media/Publications/sp/800-186/dra...
It's all quite public.
Quoting from the paper:
The standard given by the NIST gives a list of explicit parameters ... describing the elliptic curve behind the algorithm.
Examining the points P and Q here, it is obvious why cryptographers were suspicious of the Dual EC ... once the scalar k is known, it is a “simple matter to determine the secret internal state s of the pseudo-random bit generator” [6], by observing as few as 32 bytes of output.
It goes on to quote one of the NSA contractors who admitted that instead of being randomly chosen, "Q is (in essence) the public key for some random private key."
"It could also be generated like a(nother) canonical G, but NSA kyboshed this idea, and I was not allowed to publicly discuss it, just in case you may think of going there."
Straying from the prescribed points was discouraged, and NIST only provided FIPS validation to clients using the original P and Q.
More recently, GPRS was also shown to have been intentionally weakened - presumably to pass export controls - although in this case I think it was the algorithm and not a "cherry picked" curve: https://eprint.iacr.org/2021/819.pdf
> Money was changing hands between the NSA and companies, to have them install this as their standard for number generation. That's deeply suspicious.
(-from the video)
That's one piece of information I didn't know, and doesn't usually get mentioned in the discussions I've seen about this.
https://en.wikipedia.org/wiki/Data_Encryption_Standard#NSA's...
https://en.wikipedia.org/wiki/Differential_cryptanalysis#His...
Can someone explain how this was executed?
>secret_key3 = int.from_bytes(b"Andrej's Super Secret 3rd Wallet", 'big') # or just random.randrange(1, bitcoin_gen.n)
(Obviously a private key intended for actual use generally wouldn't just be some ASCII bytes of an English phrase and wouldn't be posted publicly. Though, of course, there have been instances of both...)
On the test net! On the real net it would be like 20% or more in fees.
I think we are well past the point of debating if bitcoin layer one will be used for day to day transactions however. A custodial service or lighting will have to be used for that. Additionally most people treat bitcoin closer to gold than a dollar currently.
"The raw 25 bytes of our address though contain 1 byte for a Version (the Bitcoin “main net” is b'\x00', while the Bitcoin “test net” uses b'\x6f'), then the 20 bytes from the hash digest, and finally 4 bytes for a checksum so we can throw an error with 1 - 1/2*4 = 93.75% probability in case a user messes up typing in their Bitcoin address into some textbox."
There is exactly zero progress to make it scale in the last 10+ years.
Lol, literally this week: https://taproot.watch/
Taproot is the update we get after ten years of the BTC devs doing nothing except gaslighting users about the protocol's scalability? All that momentum wasted.
Taproot will in practice have an even smaller impact, as it only affects special transactions that normal people won't use.
So yeah, it's not zero progress, but it's certainly not much.
https://digiconomist.net/bitcoin-energy-consumption
Just watch this video:
https://www.youtube.com/watch?v=UDKntG4F0hg
So in about 5 years pretend everyone in the United States melts a wrench like that... Then a month later they do that twice, a month later they do it three times.
Hey, at least it will be fun.
[0] https://1ml.com/
Disclaimer: I'm involved.
taproot, which recently locked in, reduces the space needed to represent complex contracts.
moreover, bitcoin aims at being a concise and focused base layer on top of which secondary layers and sidechains can be built.
your absolute statement "exactly zero" is absolutely wrong.
Have you ever read the white paper that outlines what bitcoin aims to be?
Complex contracts? Are you joking? What kind of complex contracts do you think can be done on BTC? Their scripting language and capabilities has been neutered just like their blocksize. Good luck writing a useful contract on BTC.
(Yes this is on the Bitcoin SV implementation of the Bitcoin protocol - where they're using the original protocol that Satoshi envisioned)
Either way, bitcoin the protocol can handle waaaaaay more transactions than the BTC devs have constrained it to.
- Transaction fees are ~$0.0001
- The network has shown capacity for 50k tps
- On March 14, 2021, the network processed a world record 638 MB block
- As of June 4, 2021 the chain size exceeded that of the BTC implementation and is currently 418.17 GB
- New business based on micropayments have emerged like twetch, streamanity, peergame, etc
[1] https://www.prnewswire.com/news-releases/bsv-proves-that-bit...No, that was a lab demo of a single beefy system being directly fed with test data and being measured on how long it takes to process it.
If I may, let me ask you an unrelated question that just 'popped in my head' only now but is related to your recent presentation at CVPR: Are you guys at Tesla fusing video with audio data for self-driving?
Just curious. I ask because (a) sound waves at frequencies detectable by the human ear appear to be quite important for both routine and edge-case situations (e.g., sounds of other vehicles braking/screeching/accelerating/passing, sirens of ambulances/police cars/fire trucks, bursts of honks from other vehicles, people suddenly shouting/screaming nearby), and (b) audio and video signals are already synchronized, so I imagine fusing them should be more straightforward (e.g., there's already some research out there on applying deep learning to video clips with audio).
For reference, I started a small Bitcoin mining hardware business back in the day, while still holding a 200/hr week/8 days a week/400 days a year full-time job. Working on Bitcoin stuff was my "break" from regular work.
Can someone explain what this means? Its not explained anywhere in the post.
Permissionless just means anyone can create transactions because there's essentially no way to block someone from doing so, unlike say a transaction on PayPal.
There's this persistent misconception out there that only Ethereum works this way. It's a testament to marketing. Bitcoin has been doing "smart contracts" long before Ethereum was even a gleam in Vitalik's eye.
There's also the ethereum VM which is a slow decentralized state machine capable of executing code...
But just wanted to make the point that Bitcoin is a global computer as much as ethereum is, Solidity is just Turing complete while (Bitcoin’s) Script is intentionally limited to a few instructions.
There will be a point in time where there are just a few quantum computers that can break everything before the general public has access to quantum computing. Can crypto work in that scenario? Normal computers wouldn't be able to work with the beastly algorithms a quantum computer could handle.
A likely drop-in replacement for elliptic curve cryptography (ECC) currently used by Bitcoin could be
https://en.wikipedia.org/wiki/Supersingular_isogeny_key_exch...
I am not a Mathematician, but what I understood, it's basically an extension of ECC using multiple elliptic curves, allows to re-use the Diffie–Hellman key exchange protocol (private keys kept secret, public keys exchanged) and memory requirements are small. So it would be a perfect replacement in wallets and validation nodes. But I can not explain why it is safe against an attack using quantum computers.
This is talked about all the time in Bitcoin dev circles.
It practice, it appears to be slightly harder to break than RSA for the same security level as we define it in non-quantum computing, but not by much.
# secret_key = random.randrange(1, bitcoin_gen.n) # this is how you _would_ do it
I know the article is mainly for learning purposes but someone should point out that the `random` module in python is not meant for cryptography. Please use the built-in `secrets` module or `os.urandom` instead.I do think that bitcoin is fundamentally too complicated to understand, mathematically, for most people- myself included. I would argue everyone needs to do this exercise, from scratch, and also understand what they are doing (the math), to have confidence in bitcoin payment network. Anyone who thinks you don't need to get it is most likely in it for speculation alone.
With something so abstract like bitcoin, it has a much larger uphill battle for understanding than a physical commodity like Gold, the precursor of paper dollars.
And just as you don't need to tour the mint to have confidence in the dollar, or implement Diffie-Hellman to have confidence in your TLS connection to Amazon, you don't need to understand elliptic curve cryptography to have faith in Bitcoin.
If someone steals a private key by committing another crime like stealing a laptop, that is a crime because you own the laptop. If they learn of your private key without committing a crime, that is not theft.
You don't own 'space on the blockchain.' I have no idea what that even means.
You do need to understand elliptic curve cryptography to have confidence (not faith) in bitcoin because you make the transactions in bitcoin. You are responsible, not some third party. People understand the dollar because it is physical and you can get them on demand and they originally got their value from Gold, not some abstraction like proof of spent energy one time awhile back.