Author

Topic: [UPDATED] Bitduino: Generate bitcoin addresses randomly using Arduino (Read 3725 times)

sr. member
Activity: 383
Merit: 250
New update with lots of new features.
hero member
Activity: 692
Merit: 569
Is this safe to use  ? ... I have a arduino lying around waiting to be put to use
sr. member
Activity: 383
Merit: 250
I like this idea.  But I'm a bit disappointed that you didn't take the advice in your Reddit thread seriously.  Polling an analog input for random numbers can be compromised by the presence of EM radiation, depending on the environment.  Your testing the code by generating 100,000 keys would only verify your particular environment, at that particular time.

Since all this code does is act as a source of randomness, don't you think you should look into adding some other sources, or some improvement?  There are much better sources of entropy on an Arduino than the one you are using.

My other advice is, before releasing a version of this capable of storing Bitcoin keys, please look into enabling the appropriate Arduino memory protection lock bits described in section 27 of the atmega328p datasheet.

Thanks for finding that library. I will definitely work with that. I am fairly new to this as I said and was looking for some direction. I am downloading the library right now and will update the github in the next few hours. I apologize for not immediately fixing the complaints in the reddit thread, I have been working on it in my free time. I was working on implementing a hardware rng option, and was trying to find all the parts for one in my area. I do appreciate the library that can be used without any addons. As I said in the readme on the github, I was aware that the library I was using was flawed, and that people should use other means for storing large amounts of bitcoins, but I released this because I wanted everyone to see.

If anyone did want to see, the 100,000 addresses finished generating and here they are https://mega.co.nz/#!U4JThZII!hd-fjZ6rKVb2aGEj515fcXEZI9OF_ZyWdXGSGtdDiSw. I want to emphasize again do NOT use these keys for any bitcoin storage. ONLY for testing purposes.  


EDIT: ADDED ENTROPY LIBRARY. MUCH MORE SECURE AND RANDOM NOW.
legendary
Activity: 1330
Merit: 1000
I like this idea.  But I'm a bit disappointed that you didn't take the advice in your Reddit thread seriously.  Polling an analog input for random numbers can be compromised by the presence of EM radiation, depending on the environment.  Your testing the code by generating 100,000 keys would only verify your particular environment, at that particular time.

Since all this code does is act as a source of randomness, don't you think you should look into adding some other sources, or some improvement?  There are much better sources of entropy on an Arduino than the one you are using.

My other advice is, before releasing a version of this capable of storing Bitcoin keys, please look into enabling the appropriate Arduino memory protection lock bits described in section 27 of the atmega328p datasheet.
newbie
Activity: 9
Merit: 0
To test the rng, I am running it on a loop right now to generate 100,000 private keys. When it finishes in a few days, I will upload the results to pastebin and put them here for everyone to see and test.

Looking forward to those results Smiley
sr. member
Activity: 383
Merit: 250
To test the rng, I am running it on a loop right now to generate 100,000 private keys. When it finishes in a few days, I will upload the results to pastebin and put them here for everyone to see and test.
newbie
Activity: 9
Merit: 0
I usually just use my arduino as a breakout for RX, TX but actually having a good use for it is really interesting, I will certainly give this a shot. Thanks for the good work.
jr. member
Activity: 30
Merit: 4
I created an arduino based paper wallet printer just over a year ago.

https://www.youtube.com/watch?v=f7y_emuo68g

https://github.com/spearson78/paperwallet

In the end the arduino was just too slow so I had to switch to an arm chip for the final self contained prototype.

http://blog.bitfrore.com/

https://github.com/bitfrore/bitfrore
sr. member
Activity: 383
Merit: 250
https://github.com/jujugoboom/Bitduino



I am proud to share with you what I have been working on.

This is code that works with a computer and an arduino board to generate bitcoin addresses. It uses a random number generated from hardware on the arduino and uses that to generate a bitcoin address.

This is my first bitcoin code ever and I hope you guys enjoy it. If anyone that has experience with arduino or python wants to help, message me.

A reminder that the actual addresses are converted and stored on your computer so they are only as secure as your computer, but I am looking into generating and storing on arduino.

If you enjoy please let me know and if you have any questions or complaints just tell me. Thanks.

EDIT: This now includes a more secure entropy library that has been tested and shown to be random. The program also now stores private keys in the EEPROM of the arduino. It stores it from address 0-31. If you run the Random Address sketch, this overwrites any private keys currently stored on the arduino. The Read EEPROM sketch can be used to write the private key to a serial monitor, or to the generate.py script. This is the program you should have loaded on your arduino if you want to use the same address over and over. Also added a seperate generate.py file that only generates the public key. This makes sure that the private key is never written to your computer. Please leave feedback here, or feel free to e-mail me at [email protected].
Jump to: