The aim of this project is to choose and implement a payment system that can be easily integrated in a mobile device. Among the main expected characteristics, this electronic purse must allow direct client-to-client payments, e-shopping over Internet, and the transactions must be achieved anonymously.
Our research led us to the e-cash protocol. A comparison with other payment schemes will point out the pros and the cons of this system, and a complete Java implementation will help the reader to fully understand the mechanism of electronic money.
The idea presented in this project is to use electronic notes. Unlike our traditional silver coins and paper banknotes, electronic notes don't need any physical support. A note is only information that can be stored on a computer hard-disk, sent over the Internet, and why not printed out and sent by traditional post. It is very similar to conventional money in the way that the value of the money is in the money itself. But it is one-time-use money; a buyer buys a note at the bank, sends it to a seller, and the latter deposits it in his bank account. Such a system brings all our initial requirements together. It allows direct client-to-client payments, e-shopping over Internet, and the transactions are achieved anonymously. Our implementation will therefore be based on the e-cash protocol, invented by DigiCash in 1990, which describes how to do transactions with electronic notes.
To simplify we keep only one bank:
1. The buyer gets a digitally signed note from the bank.
2. The buyer spends his note to a seller.
3. The seller deposits his note in his bank account.
Because you don't need any special material (card reader), every customer can act either as a buyer (sending notes) or as a seller (receiving notes). And this point is really fundamental; a system that keeps the advantages of conventional money will of course be more easily accepted.
|ECashFile example: All the steps of the protocol are recorded in files, allowing the user to check them or to modify them in order to observe how the program detects cheatting attempts.|
|ECashNet example: This example uses the internet sub-package allowing real money transactions over the net.|
|JCash demo, purse tab: Offers the same money transactions possibilities than the ECashNet example, but displays a nicer user interface to access the different possibilities of the ecash package. This tab shows the money that can be directly used (in green) and the money that was already used (in red) and that need to be "refreshed" by the bank.|
|JCash demo, pay tab: The entity you want to pay is selected from your address book.|
|JCash demo, receive tab: You got money from Bob Harleton.|
|JCash demo, bank tab: Before a connection to the bank, the user enters which notes he wants to buy, and decides what to do with the already used notes.|
|JBank demo, main interface: A bank to work with the JCash program.|
|JBank demo, file menu.|