Bitcoin Forum

Bitcoin => Development & Technical Discussion => Topic started by: StackGambler on March 16, 2019, 03:10:51 PM



Title: Anybody attempted to generate a bitcoin address without an electronic device?
Post by: StackGambler on March 16, 2019, 03:10:51 PM
Yes, I am aware that it is pointless and tedious to do this, and we have computers for a reason. I just think that it would be a super interesting experiment to create a bitcoin address using randomness from a physical source (like flipping a coin or rolling dice) and generating the private key/corresponding address from that entropy.

I might sit down one day and do it myself, but if someone else has already done it, then there's no point. It would, of course, be just for fun, and there's no real use to doing this. It would involve creating a secp256k1 pubkey from a private key, manual SHA-256 hashing, and base 58 conversion... basically, a pain in the ass to do manually.

Has anyone heard of someone doing this? I think it'll be rather fun to try.


Title: Re: Anybody attempted to generate a bitcoin address without an electronic device?
Post by: Coding Enthusiast on March 16, 2019, 03:31:07 PM
It is impossible to create a "bitcoin address" without a computer because it will probably take till the end of time for you to perform the necessary mathematics and functions that are involved in the process.

What you may be referring to is creating a "private key" without a computer while using another source of randomness. That can work. Coin flip is an option, since a private key is a 256 bit (binary or zeros and ones) you have to flip the coin 256 times and each time make a note of which side it lands on then you have your private key. Note that you may have to do a check to make sure you didn't produce a number bigger than N (order) even though the chances are minuscule.

But to get the "address" you will need to first do:
  • the Elliptic Curve multiplication which is the hardest thing (keep in mind this is not regular arithmetic like 10 + 10 = 20, this is modular arithmetic like 10 + 10 ≡ 9 (mod 11) with 256 bit numbers)
  • then take the result and perform the SHA256 hash on it (which is less hard compared to previous step but still very hard and time consuming)
  • then perform a RIPEMD160 hash on the result (again nearly as hard as SHA256)
  • and finally do a baseX (58 or 32) encoding which might be the easiest step but still time consuming.

In all the above steps, it is not just about the amount of time it is going to take or the hardness of each step but mostly about the very high possibility of making a mistake. If you do a single operation wrong then your final result is going to be false and any coins that you send to that resulting address is lost for good.

Here is something you can read: https://www.swansontec.com/bitcoin-dice.html


Title: Re: Anybody attempted to generate a bitcoin address without an electronic device?
Post by: LoyceV on March 16, 2019, 05:56:52 PM
manual SHA-256 hashing
To get you started, there's this: Mining Bitcoin with pencil and paper (https://www.youtube.com/watch?v=y3dqhixzGVo).


Title: Re: Anybody attempted to generate a bitcoin address without an electronic device?
Post by: odolvlobo on March 17, 2019, 04:24:32 AM
You can generate a private key by rolling dice and entering the result at bitaddress.org.

Quote
How do I make a wallet using dice? What is B6?
An important part of creating a Bitcoin wallet is ensuring the random numbers used to create the wallet are truly random. Physical randomness is better than computer generated pseudo-randomness. The easiest way to generate physical randomness is with dice. To create a Bitcoin private key you only need one six sided die which you roll 99 times. Stopping each time to record the value of the die. When recording the values follow these rules: 1=1, 2=2, 3=3, 4=4, 5=5, 6=0. By doing this you are recording the big random number, your private key, in B6 or base 6 format. You can then enter the 99 character base 6 private key into the text field above and click View Details. You will then see the Bitcoin address associated with your private key. You should also make note of your private key in WIF format since it is more widely used.


Title: Re: Anybody attempted to generate a bitcoin address without an electronic device?
Post by: bitmover on March 17, 2019, 01:31:47 PM
https://m.youtube.com/watch?v=ieHoQ4sGuEY

In this YouTube video the guy flip a coin many times until he generated a private key.
With the key there are some options, using a computer, to generate your BTC public address.

It's a very informative video and you will understand much better how private keys work.


Title: Re: Anybody attempted to generate a bitcoin address without an electronic device?
Post by: Chris! on April 06, 2019, 04:23:13 AM
You can generate a private key by rolling dice and entering the result at bitaddress.org.

Quote
How do I make a wallet using dice? What is B6?
An important part of creating a Bitcoin wallet is ensuring the random numbers used to create the wallet are truly random. Physical randomness is better than computer generated pseudo-randomness. The easiest way to generate physical randomness is with dice. To create a Bitcoin private key you only need one six sided die which you roll 99 times. Stopping each time to record the value of the die. When recording the values follow these rules: 1=1, 2=2, 3=3, 4=4, 5=5, 6=0. By doing this you are recording the big random number, your private key, in B6 or base 6 format. You can then enter the 99 character base 6 private key into the text field above and click View Details. You will then see the Bitcoin address associated with your private key. You should also make note of your private key in WIF format since it is more widely used.


That's essentially what I do, although on an air-gapped system of course.

Roll a die 99x or flip a coin 256x. For a die you just convert the 6 to a 0 and you can plug it right into bitaddress. For the coin toss choose whether heads is going to be a 1 or a 0. I think I tried to input binary on bitaddress and it didn't work properly, but anyway it's probably just quicker to convert it to hex before inputting it anyway. There are simple guides on how to do it manually or you can always use that air-gapped system to compute it as well.

I've done it many times and will continue to do so. Unfortunately, going from private to public key then public key to address is never going to happen with pen and paper. That's okay though! I've come to terms with it.

You could also use a segwit address. I've been eyeing https://segwitaddress.org/bech32 (https://segwitaddress.org/bech32) and will try to make a bech32 paper wallet soon.