Author

Topic: How can I generate a Bitcoin address using a pen and a paper? (Read 253 times)

full member
Activity: 161
Merit: 230
The SHA256/RIPEMD160 part isn't the hardest part of generating an address by pen an paper, someone has already done SHA256 by hand: https://www.righto.com/2014/09/mining-bitcoin-with-pencil-and-paper.html

No, the hard part is the arithmetic manipulation of 78-digit (256-bit) numbers. You have to multiply 78 digit numbers together thousands of times.
hero member
Activity: 882
Merit: 5814
not your keys, not your coins!
Your guides helped a lot, after doing some calculations I have to admit it's really hard when you reach the point of hash function, sadly I thought this could be done to extract each output value of each step, but the nature of one direction hash function does not allow that.
That's not true, though. You can absolutely 'extract' (debug print / log) every step of a hash function / one-way function. Just not after the fact, but you can do it while calculating the hash. That's also not the issue at hand here, though. The issue is not that it's a one-way-function but that generating a Bitcoin address has so many steps that you can't realistically do it using pen / paper.
And even if you logged every step and intermediary result with a computer program, it wouldn't help the understanding whatsoever and take ages to go through. You'll also just be looking at numbers without obvious correlations to each other.

You could show figures of some steps of some functions used in address generation, like here on Wikipedia's SHA256 page.


I could only compare it to a black hole [...] speed could be achieved by a massive super computer, e.g. A quantum computer
If you prefer just not explaining one-way functions or address generation in detail (it is possible - just not by going through it step-by-step), I prefer BlackHatCoiner's description as a blender.
Also do note that quantum =/= fast. They can only speed up certain specific computations and are as such not really comparable to a traditional supercomputer.
legendary
Activity: 1344
Merit: 6415
Farewell, Leo
I could only compare it to a black hole
Compare it to a blender better. You don't need the exact steps a blender takes to convert your onions into liquid beingness, but you know that if you put the onions in the exact same manner (or another fruit / vegetable), and turn it on, you'll get the same irreversible result.

To use it as analogy, the mathematical operations are essentially messing up the input in a similar manner, that you can't just redo them and get it back.
newbie
Activity: 6
Merit: 7
Your guides helped a lot, after doing some calculations I have to admit it's really hard when you reach the point of hash function, sadly I thought this could be done to extract each output value of each step, but the nature of one direction hash function does not allow that. I could only compare it to a black hole, we would need to move faster than speed of light to gaze at the event horizon, in terms of computer science, that speed could be achieved by a massive super computer, e.g. A quantum computer. I'm not going to give up on my journey into the unknown territories of computer based calculations. will delve into finding a weak point somewhere and surely will share my findings when I have the time to get back to this nearly impossible task.
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
Be careful. If you do follow any of the steps that other people have posted please verify that the private key corresponds to the correct address before depositing any bitcoin there. People make mistakes generating from bitcoin core which is a simple process but the way you want to do it will be prone to mistakes. Verify many times before depositing btc.

It is almost guaranteed that you will make a mistake while doing the calculations manually (like I said, there are hundreds of them you have to do!) and thus this should only be seen as a learning exercise and not something to be used for any practical purpose. Plus, yes. It leaves a massive paper trail behind that is more hefty to destroy.
legendary
Activity: 1232
Merit: 1080
Be careful. If you do follow any of the steps that other people have posted please verify that the private key corresponds to the correct address before depositing any bitcoin there. People make mistakes generating from bitcoin core which is a simple process but the way you want to do it will be prone to mistakes. Verify many times before depositing btc.

If you want multiple addresses this probably is not the best way and just using 1 address could compromise your privacy. Why do you want to generate it by pen and paper when you can use existing software on a offline computer to generate it?
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
For SHA256, try any input in this website and judge if the steps are possible to reproduce by hand:
Link: https://sha256algorithm.com/
The buttons at the right-hand side of the input control the steps.

That is very clearly a lot of steps.

Of course, it's even in the name: You're going to be doing at least 256 math operations by hand, according to my rough estimates, but in practice, it's going to be way more steps than that. But when you factor in RIPEMD160, ECC and base58 steps, you will probably fill up a small notebook with the calculations.
hero member
Activity: 501
Merit: 3855
I know you said you're more math-oriented than code-oriented, but if you're serious about having something to reference, where no details are skipped over and everything is included in one file, then I'll plug my own topic: [Code] Generating addresses from scratch (Python 3.6+).
legendary
Activity: 2394
Merit: 5531
Self-proclaimed Genius
Thank you for the help, I'm not a computer type of guy, I understand math and equations, hopefully will try to understand all of these programming terms and somehow figure out to write them down on paper in the form of numbers, as I have observed, all of the algorithms use the basic mathematics, so it should be possible to break them down into small pieces for a human mind to fathom the equations used behind them.
For SHA256, try any input in this website and judge if the steps are possible to reproduce by hand:
Link: https://sha256algorithm.com/
The buttons at the right-hand side of the input control the steps.
legendary
Activity: 1568
Merit: 6660
bitcoincleanup.com / bitmixlist.org
Mastering Bitcoin(Andreas Antonopoulos's book) should guide you about how you can generate your own private key by flipping a coin.

Flipping a coin is only one step of the generation, you've gotta concert the private key to a public key afterwards, using a jump table to help you with the multiplication, but the hardest parts of the hand calculation would be RIPEMD160 and SHA256 calculations (base58 conversion can be done with long division).
legendary
Activity: 3430
Merit: 10504
The last step of address creation which is encoding it using base58 or bech32 is "hard", the rest is impossible. You won't even be able to complete half a round of SHA256 block compression without making mistakes and there are 64 rounds in one SHA256 computation of a 20-byte input (to compute checksum for base58 address). The rest is thousands and thousands of addition, multiplication, division, bit shifts and shuffles, bitwise operations, and a lot more all on 256-bit numbers, inputs and points (256-bit x and y).

The best way to see all these steps if you want to see the details is to get a library that does this, write a code that calls the method that generates a new random address and use a debugger to step through the code and see each step and the intermediate values.
hero member
Activity: 882
Merit: 5814
not your keys, not your coins!
of course I will use a computer to do the hard calculations

I will be able to see every and each of the steps and record them for my study.

I'm a teacher trying to explain the procedures on a white board

If you consider something like a hash160() operation or an ECDSA operation hard, then you're basically just looking to generate the address through code, simply code with intermediary / debug outputs that you can follow along with.

The major steps are outlined here.
https://learnmeabitcoin.com/technical/address

This won't have a lot to do with 'pen and paper' anymore, but address generation is mostly literally a concatenation of 'hard calculations' that you probably don't want to do with pen and paper. It wouldn't fit 'on a whiteboard', for sure.
legendary
Activity: 2212
Merit: 7064
Cashback 15%
Can anyone provide some insight on this? I would like to be able to generate a valid bitcoin address using a pen and a paper, I know this could be done in milliseconds using a computer, But then I can't see the whole operations by my own eyes, of course I will use a computer to do the hard calculations but I will be able to see every and each of the steps and record them for my study. Imagine I'm a teacher trying to explain the procedures on a white board, how can I?
You can do it easily with pen and paper if you have set of regular or casino dices to generate random results.
There are several instructions how you can do this for generation seed words and private key, but you will still need some calculations to make sure everything is ok.
I ill post some instructions below and you can choose what you like the most:
https://shiftcrypto.ch/blog/roll-the-dice-generate-your-own-seed/
https://armantheparman.com/bitcoin-seed-with-dice/
legendary
Activity: 3206
Merit: 2904
Block halving is coming.
Mastering Bitcoin(Andreas Antonopoulos's book) should guide you about how you can generate your own private key by flipping a coin.

Since you said you are planning to use pen and paper only you can write them in binary it means you can only use two characters 0 and 1 and write 256 characters randomly. Sample 1110 0101 0001 1001....... do this until you made 256 characters but I guess you will still need some tools to convert them from binary to hexadecimal you can use this tool https://www.binaryhexconverter.com/binary-to-hex-converter or follow their guide to convert binary manually into hexadecimal.

Now, you have a 64 character hexadecimal you can use https://www.bitaddress.org/ under wallet details and paste it there to generate a public key and base58 wif key you can download the page and run it into offline machine if you don't want to expose private key in online device.

Or get some idea from this thread "Randomly Generated Private Key Outside of a Computer Environment"
newbie
Activity: 6
Merit: 7
Thank you for the help, I'm not a computer type of guy, I understand math and equations, hopefully will try to understand all of these programming terms and somehow figure out to write them down on paper in the form of numbers, as I have observed, all of the algorithms use the basic mathematics, so it should be possible to break them down into small pieces for a human mind to fathom the equations used behind them.
legendary
Activity: 2310
Merit: 4313
🔐BitcoinMessage.Tools🔑
Assuming you have already obtained a public key (point on an elliptic curve  produced by multiplying the generator point a private key times), you can calculate its encoded hash by applying sha256 algorithm [1] then ripemd160[2][3] and then either base58check[4] encoding or bech32(m)[5] encoding depending on what type of address you need. I am not sure how much time it will take to perform all this calculations by hand or whether if it is even possible, but I think if you succeed, it is going to be a very helpful didactic example.

[1] https://gizmodo.com/mining-bitcoin-with-pencil-and-paper-1640353309
[2] https://en.bitcoin.it/wiki/RIPEMD-160
[3] https://en.m.wikipedia.org/wiki/RIPEMD
[4] https://learnmeabitcoin.com/technical/base58
[5] https://en.bitcoin.it/wiki/Bech32
newbie
Activity: 6
Merit: 7
Can anyone provide some insight on this? I would like to be able to generate a valid bitcoin address using a pen and a paper, I know this could be done in milliseconds using a computer, But then I can't see the whole operations by my own eyes, of course I will use a computer to do the hard calculations but I will be able to see every and each of the steps and record them for my study. Imagine I'm a teacher trying to explain the procedures on a white board, how can I?
Jump to: