cantonbecker / bitcoinpaperwallet

JavaScript Client-Side Bitcoin Wallet Generator
https://www.bitaddress.org
453 stars 165 forks source link

[Suggestion] Mass generation of paper wallets for promotions #17

Closed felixvd closed 8 years ago

felixvd commented 10 years ago

Hi,

I've been thinking that bulk generation of paper wallets would be very useful when printing wallets that are meant to be handed out.

Ideally, I am imagining an extra tab asking for the number of paper wallets to be generated (N) and a target folder. The output to the target folder should be:

How hard would this be and how many Dogecoin in bounty would motivate you? :)

cantonbecker commented 10 years ago

Hi there,

Multiple wallet output is something I think about but have a hard time getting my head around. Single wallet two-sided alignment is already a real challenge, and I don’t like the PDF output option because (1) sophisticated javascript PDF output is a hard trick, and more importantly, (2) PDF output is a security risk (compared with straight from browser-to-printer printing) as it can leave files lying around.

Anyway, it’s definitely on my radar, I don’t love having to print wallets one-at-a-time either. Thanks for the nudge.

felixvd commented 10 years ago

Hi,

re 2): mass generated wallets are not meant for cold storage, so the security requirements are not the same. Additionally, the wallets can be given an expiry date after which the creator can empty them using the .csv files.

re 1): I feel that PDF is a safer output format to print than images, but I may be mistaken. Do you think an in-browser print command of all the wallets at once might be better? Imagine that 100 wallets might easily be necessary for a promotion event.

Do you have a ballpark number for a bounty that sounds feasible to you for both this and PDF creation? I'd look into raising some funds for this.

Cheers :)

On 8 April 2014 06:02, cantonbecker notifications@github.com wrote:

Hi there,

Multiple wallet output is something I think about but have a hard time getting my head around. Single wallet two-sided alignment is already a real challenge, and I don't like the PDF output option because (1) sophisticated javascript PDF output is a hard trick, and more importantly, (2) PDF output is a security risk (compared with straight from browser-to-printer printing) as it can leave files lying around.

Anyway, it's definitely on my radar, I don't love having to print wallets one-at-a-time either. Thanks for the nudge.

Reply to this email directly or view it on GitHubhttps://github.com/cantonbecker/bitcoinpaperwallet/issues/17#issuecomment-39783153 .

cantonbecker commented 10 years ago

Do you have a ballpark number for a bounty that sounds feasible to you for both this and PDF creation? I'd look into raising some funds for this.

Insofar as me doing the development, I just don’t see myself having the time for this significant of a job in the near future (no matter the bounty.) Also, what I think is missed in the mass generation idea is that the real time it takes to mass-produce wallets is to cut them out. Even with the current wallet generator, you can print two per page pretty fast — at least as fast as your printer will go. See the section on “can i print two per page” here https://bitcoinpaperwallet.com/printing-and-paper-tips/

For truly efficient mass-printing I think the model should be different:

1) professionally print the wallet with die-cut perforations for easy separation, but no addresses/QR codes, and sell those in packs of 100 pages

2) feed those into software which just prints out the addresses on top of the pre-printed wallets.

This was in fact the model behind safepaperwallet.com. I don’t believe they sell their product anymore, but there’s definitely a niche for this.

felixvd commented 10 years ago

Hi,

While the process you linked works, it only prints one wallet at a time and every paper side has to pass the printer twice. You also have to be at your printer the entire time and turn paper around, and there is room for error. There is also no central list of addresses at the end that you can easily load the wallets with.

Pre-printing doesn't seem feasible to me for printing custom designs for giveaways, since it might be on short notice and decentralized. It's true that cutting can be time-consuming, but a simpler wallet design and a decent paper cutter can reduce this heavily. Just stacking 3 sheets of paper would reduce the necessary cuts to 1 per wallet, for example. This leaves the generation, printing and loading as the remaining bottlenecks.

Since this functionality would address all three, I think it would go a long way to make mass generation easier. I understand you're busy, but if you have any ideas or suggestions on implementing this, I'd love to hear them. If anyone implemented this, would you want to see it as a pull request or should it stay in a fork? I'm not a developer myself, mind you.

Cheers!

On 9 April 2014 01:36, cantonbecker notifications@github.com wrote:

Do you have a ballpark number for a bounty that sounds feasible to you for both this and PDF creation? I'd look into raising some funds for this.

Insofar as me doing the development, I just don't see myself having the time for this significant of a job in the near future (no matter the bounty.) Also, what I think is missed in the mass generation idea is that the real time it takes to mass-produce wallets is to cut them out. Even with the current wallet generator, you can print two per page pretty fast -- at least as fast as your printer will go. See the section on "can i print two per page" here https://bitcoinpaperwallet.com/printing-and-paper-tips/

For truly efficient mass-printing I think the model should be different:

1) professionally print the wallet with die-cut perforations for easy separation, but no addresses/QR codes, and sell those in packs of 100 pages

2) feed those into software which just prints out the addresses on top of the pre-printed wallets.

This was in fact the model behind safepaperwallet.com. I don't believe they sell their product anymore, but there's definitely a niche for this.

Reply to this email directly or view it on GitHubhttps://github.com/cantonbecker/bitcoinpaperwallet/issues/17#issuecomment-39871029 .

cantonbecker commented 10 years ago

You also have to be at your printer the entire time and turn paper around, and there is room for error

Holy cow are you right about room for error! It’s only after several years of futzing with my printer that I can semi-reliably predict which side and orientation will be printed on after I insert paper :)

It's true that cutting can be time-consuming, but a simpler wallet design and a decent paper cutter can reduce this heavily.

A word of caution here: I know you’re talking about promotional wallets with small amounts, but you’d want to be careful revising the design because every cut and angle in the “butterfly” shape actually has an anti-tampering purpose. These were arrived at after weeks of testing with all sorts of people trying to physically “hack” access to the private key.

All said, if you’re looking for a simpler printing design, non-BIP38 (important for a giveaway!) and generating lots of wallets at time, I think you might be looking at the wrong project.

Check this fellow out: http://lazzerbee.com

He’s doing exactly what you’re discussing, I think. He might be willing to open-source his software. Or if you just need a big custom promotional run, that’s his whole business.

felixvd commented 10 years ago

Hey,

I thought about the wallets being less secure without the extra cuts and only justified it by them being for low-value promotions, you're right :)

You're also right in that this project doesn't have the same focus, I just know your interface is pretty neat and this would make it very versatile.

I'll ask the guy if he wants to open source his business' software, but I'd be surprised.Oh well, I wish I had some free time to get into this and code it up myself. I'll look into it some more.

Cheers

On 9 April 2014 22:18, cantonbecker notifications@github.com wrote:

You also have to be at your printer the entire time and turn paper around, and there is room for error

Holy cow are you right about room for error! It's only after several years of futzing with my printer that I can semi-reliably predict which side and orientation will be printed on after I insert paper :)

It's true that cutting can be time-consuming, but a simpler wallet design and a decent paper cutter can reduce this heavily.

A word of caution here: I know you're talking about promotional wallets with small amounts, but you'd want to be careful revising the design because every cut and angle in the "butterfly" shape actually has an anti-tampering purpose. These were arrived at after weeks of testing with all sorts of people trying to physically "hack" access to the private key.

All said, if you're looking for a simpler printing design, non-BIP38 (important for a giveaway!) and generating lots of wallets at time, I think you might be looking at the wrong project.

Check this fellow out: http://lazzerbee.com

He's doing exactly what you're discussing, I think. He might be willing to open-source his software. Or if you just need a big custom promotional run, that's his whole business.

Reply to this email directly or view it on GitHubhttps://github.com/cantonbecker/bitcoinpaperwallet/issues/17#issuecomment-39962177 .

cantonbecker commented 10 years ago

I'll ask the guy if he wants to open source his business' software,

The guy is a good communicator, he just sent me some samples of work and he’s quite friendly.

Also, check out: http://cryptopapers.com — might be much more inline with your needs.

Canton Becker canton@gmail.com • (505) 570-0635 • http://cantonbecker.com

DavidGriffith commented 9 years ago

You can cut rectangles out fairly quickly with a gillotine or rotary cutter. Then cut the indents out with an exacto. That would be quicker than scissors.

cantonbecker commented 9 years ago

You can cut rectangles out fairly quickly with a gillotine or rotary cutter. Then cut the indents out with an exacto. That would be quicker than scissors.

Ah yes? I CHALLENGE you good sir, to a duel of gentlemanly paper trimming! You on your newfangled modern “rotary cutter” and me on my venerable scissors. Verily, I say, I shall cut you to the QUICK, ha ha ha! :)

(Actually my favorite is just an xacto and a straight edge ruler. Super quick.)

asoltys commented 8 years ago

Hey, just thought I'd chime in with a +1 for this. Manually turning the pages around works fine when you're at home but I've been going to a print shop because I don't have a good colour printer. They charge me double for running the pages through the printer twice. If I could bring them a single PDF that had the two-up double-sided designs all laid out, that'd be rad.

I love the idea of having a csv of all the keys too. Taking that a step further, you could use a BIP32 / BIP44 master key to derive the addresses and then it'd just be a matter of importing that single key into Mycelium or any wallet that supports it to sweep the wallets after some expiry date.

As for bulk cutting, I know my local hackspace has a laser cutter... I might give it a try some time and I'll share the CAD file if I do.

cantonbecker commented 8 years ago

Hi,

I’d love to do PDF export, and I’ve looked into it, but it’s not practical/possible from Javascript. There are loads of PDF libraries out there for web services, but they generally require PHP and/or additional server side C++/compiled libraries.

I do like the idea of a master key/seed, but honestly I haven’t looked into the BIPs for it yet.

Most people with bulk needs are using bitaddress.org I believe which does a very good job of this. I think of my wallet as being more for small batches and individual wallets, especially since they require such patient cutting with scissors…

Thanks for the feedback!

On Dec 15, 2015, at 3:34 PM, Adam Soltys notifications@github.com wrote:

Hey, just thought I'd chime in with a +1 for this. Manually turning the pages around works fine when you're at home but I've been going to a print shop because I don't have a good colour printer. They charge me double for running the pages through the printer twice. If I could bring them a single PDF that had the two-up double-sided designs all laid out, that'd be rad.

I love the idea of having a csv of all the keys too. Taking that a step further, you could use a BIP32 / BIP44 master key to derive the addresses and then it'd just be a matter of importing that single key into Mycelium or any wallet that supports it to sweep the wallets after some expiry date.

As for bulk cutting, I know my local hackspace has a laser cutter... I might give it a try some time and I'll share the CAD file if I do.

— Reply to this email directly or view it on GitHub.


Canton Becker canton@gmail.com • (505) 570-0635 • http://cantonbecker.com

asoltys commented 8 years ago

Hi Canton,

Fair enough, I thought about taking a stab at it with Javascript myself but just ended up using a command-line PDF utility to get the wallets printing 2-to-a-page and double-sided. The bash script I used is here in case it's useful to anyone else: https://github.com/asoltys/bitcoinpaperwallet_combiner

cantonbecker commented 8 years ago

The bash script I used is here in case it's useful to anyone else: https://github.com/asoltys/bitcoinpaperwallet_combiner

pdftk FTW!


Canton Becker canton@gmail.com • (505) 570-0635 • http://cantonbecker.com