The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Crypt::HashCash - HashCash Digital Cash

VERSION

 $Revision: 1.123 $
 $Date: Mon Jun 19 15:07:46 PDT 2017 $

SYNOPSIS

HashCash is a digital cash system based on blind signatures, as introduced by David Chaum in [1].

HashCash features a number of optimizations for usability and accessibility, including blind ECDSA signatures which make for more compact coins, and a simple protocol that enables the system to work in a permissionless manner, requiring no user accounts or registration.

The main components of HashCash are: one or more vaults, which issue and verify HashCash coins; the coins themselves; and wallets, which hold and manage coins owned by users.

HashCash coins represent a claim on a deposit at a vault. They are bearer tokens which can be passed directly from one user to another, and cannot be tracked by the vault.

HashCash coins can be backed by whatever a vault accepts for deposit - some possibilities being precious metals, fiat currencies, gift cards, etc. The distribution includes an implementation of a vault for Bitcoin, which issues HashCash coins backed by Bitcoin.

All messages between wallets and vaults are encrypted, so there's no need for a secure communications channel between them.

HOW TO USE

Usually you would just run the HashCash wallet after installing the distribution, with the command:

    hashcash.pl

Then you can buy or sell HashCash, export coins from your wallet to give to others, or import coins received from others into your wallet. You can also exchange coins for lower denominations, and verify coins you've imported into the wallet.

HashCash coins can be sent to others over any communications channel - email, web, instant messaging, SMS, directly by scanning a QR code. They could even be printed on paper and used just like normal paper currency, though with a higher level of security and privacy.

You can easily automate the acceptance of HashCash payments on a website (or via email or any other communications channel) using the Business::HashCash module.

You could also run a HashCash vault, which is a potentially very profitable small business requiring a minimal amount of ongoing work. For more details on this visit the website: http://www.hashcash.com/.

FUNCTIONS

breakamt

Accepts a single parameter which is an amount to break into coins, and returns the denominations of the minimum number of coins that total up to this amount, as well as the total number of coins. The coin denominations are returned as a hash whose keys are the coin denominations and values are the number of coins of the corresponding denomination.

changecoin

Accepts a single parameter which is the denomination of a coin to get change for, and returns the denominations of the change coins, as well as the total number of coins. The denominations are returned in a hash, as described above, followed by the total number of coins.

SEE ALSO

www.hashcash.com

Crypt::HashCash::Mint

Crypt::HashCash::Client

Crypt::HashCash::Coin

Crypt::HashCash::Vault::Bitcoin

Business::HashCash

REFERENCES

1. Blind Signatures For Untraceable Payments, David Chaum. http://www.hit.bme.hu/~buttyan/courses/BMEVIHIM219/2009/Chaum.BlindSigForPayment.1982.PDF

AUTHOR

Ashish Gulhati, <crypt-hashcash at hash.neo.tc>

BUGS

Please report any bugs or feature requests to bug-crypt-hashcash at rt.cpan.org, or through the web interface at http://rt.cpan.org/NoAuth/ReportBug.html?Queue=Crypt-HashCash. I will be notified, and then you'll automatically be notified of progress on your bug as I make changes.

SUPPORT

You can find documentation for this module with the perldoc command.

    perldoc Crypt::HashCash

You can also look for information at:

LICENSE AND COPYRIGHT

Copyright (c) 2001-2017 Ashish Gulhati.

This program is free software; you can redistribute it and/or modify it under the terms of the Artistic License 2.0.

See http://www.perlfoundation.org/artistic_license_2_0 for the full license terms.