Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

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

Closed
felixvd opened this issue Apr 6, 2014 · 13 comments
Closed

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

felixvd opened this issue Apr 6, 2014 · 13 comments

Comments

@felixvd
Copy link

felixvd commented Apr 6, 2014

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:

  • N two-page PDF files containing all the generated paper wallets, with numbered filenames
  • A .csv of all the private keys
  • A .csv of all the public keys

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

@cantonbecker
Copy link
Owner

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
Copy link
Author

felixvd commented Apr 8, 2014

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//issues/17#issuecomment-39783153
.

@cantonbecker
Copy link
Owner

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
Copy link
Author

felixvd commented Apr 9, 2014

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//issues/17#issuecomment-39871029
.

@cantonbecker
Copy link
Owner

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
Copy link
Author

felixvd commented Apr 9, 2014

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//issues/17#issuecomment-39962177
.

@cantonbecker
Copy link
Owner

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
Copy link

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
Copy link
Owner

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
Copy link

asoltys commented Dec 15, 2015

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
Copy link
Owner

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!

  • Canton

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
Copy link

asoltys commented Jan 8, 2016

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
Copy link
Owner

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants