Generating Ethereum Address from Scratch
afiodorov.github.io
afiodorov.github.io
I still haven't made too much progress. It was easy to generate private keys. Then I had to implement ECC. That took me quite a while to nail. But now I've got public keys on the curve mentioned in this article. Now I'm still in the process of mapping this into the public key hash. I got the sha256 hash working pretty quickly using just the psuedocode on wikipedia. But public key hashes are ripemd160(sha256(publicKey)), and I'm still having troubles with the ripemd160 hash.
After that, I'll base58 encode the hash. Then there's a couple of BIPs I wanna implement, the HD wallets and the 13 word mnemonics ones in particular.
Basically, I think this stuff's important for me to know. All these math abstractions are chained together in a certain way that gives us cryptocurrency protocols, internet monies. In the process, I get a strong foundation in cryptography as well as domain knowledge of cryptocurrencies.
[1] https://github.com/bitcoinbook/bitcoinbook
[2] http://www.righto.com/2014/09/mining-bitcoin-with-pencil-and...
https://gist.github.com/colindean/5239812
This was actually put together at the Bitcoin dawn of time by a bitcointalk user called grondilu.
Here's the original (circa 2010) thread:
That people are actually still willing to do this in 2019 with BTC above 10K and ETH above 300 always surprises me, even if it's for a toy example like this article (as it might incite other less tech-savy people to believe it's ok to do something like that).
If that were the case, the security of the private key would be compromised. But the website is client side only.
Or maybe the complaint is that non tech savvy users might be getting confused and might be too trustful to other sites that do private key handling server side.
This is why most crypto web-apps have a browser-extension form; you can check in your browser extension list to verify which version of the extension you have, and so know that it’s safe if someone you trust has already audited that version.
If it's a specific browser extension or a web page that you can run after you've cut the internet doesn't really make a difference. Note that vanity-eth.tk points out that you don't have to trust them and how to ensure that the private key stays private. But that needs some knowledge and that's certainly not for everybody.
I am fairly certain that very few people go and read the entire supposedly client-side JS code served by that site. It takes a very tiny bit of obfuscated JS to send 256 bit somewhere else.
[edit]: and when you generate a key pair that's going to potentially store multi kUSD in value, trusting anything that happens in a browser is - call me old fashioned - suicidal.
Bitcoin supports "compressed" public keys in which only the x-coordinate and the sign of the y- coordinate are present:
https://bitcoin.stackexchange.com/questions/3059/what-is-a-c...
https://en.m.wikipedia.org/wiki/Field_(mathematics)
IANAM but for me the significance and meaning is to do with being able to reason about problems at a higher level of abstraction.
E.g. the proof using Galois Field Theory that the heptagon is unconstructable:
[edit] and come to think of it, I might be mistaken I don't think the notion of vector space and therefore the whole of linear algebra would work without a field for the underlying coordinates.