[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Automatic Magic Money Client



	Before I say anything, I'd like to commend you on the work
you've done with Magic Money so far.

	But this isn't automatic.
	It doesn't make the communication with the server
automatic. People have wondered why no one is using their magic money
bank-- it's because it is *SLOW* and a *pain in the ass* to use!
(That's why I'm not using 'em at least.) You have to mail a request
in, and then wait for a reply, and then run it through the client
again...

To remedy this problem, I have written code.

	I have written a wrapper for the server which allows it to sit
on any internet port waiting for messages. I have written a client
which is not as functional as the one you have described below, but it
automates all communication with the server. When you have incoming
money, you just run the client on the incoming money, and the client
communicates with the server, the client takes the output of the
server, and processes it, all with *1* user command. That's
automation.

	It could use improvement, no doubt. I posted an earlier
version to the list. I'll make it available on the soda-ftp site.


> 
> -----BEGIN PGP SIGNED MESSAGE-----
> 
> We now have three operating Magic Money servers. Several people are
> attempting to give value to the digicash. Many applications of digicash
> will be entirely net-based and automated. We need an automatic Magic
> Money client.
> 
> The existing client is designed to interact with a user. The automatic
> client will be designed to interact with a program. It will be controlled
> entirely by command-line arguments, and should be easy to control from
> a PERL script or C program.
> 
> I should have some time for coding soon. Here's a rough functional spec
> for the automatic client. Don't write any code based on this, becuase it
> isn't written yet. But please tell me what you think of it and what should
> be changed or improved.
> 
> ac -[options] [inputfile] [outputfile]
> 
> - -b : display bank's keyid : prints 64-bit keyid of the bank in bank.asc
> 
> - -d (with no inputfile) : list the available coin denominations by reading
>                          the elist.dat file
> 
> - -i (with outputfile)   : initializes client, accepting key length and key
>                          name from stdin. Generates initialization message.
> 
> - -l (with no inputfile) : lists all coins in the client's coin file 
>                          (allcoins.dat) output will be one coin per line
> 
> - -l (with inputfile) : print the total value of a coins.dat type file
>                       if it is readable and signed correctly
>                       output is one line (number)
> 
> - -p (with input/output files) : process a coins.dat type file, preparing it
>               for exchange with a server. Reads from stdin a list of coin 
>               denominations to create. Writes to stdout a 128-bit unique
>               identifier generated by xoring the coin id's of all the new
>               coins created
> 
> - -r (with outputfile) : reinitialize. Generate a new initialization packet.
>                        Does not regenerate key or prompt for anything.
> 
> - -s (with input file) : process a response from the server and store the
>                        coins in allcoins.dat. Outputs to stdout the same
>                        128-bit unique identifier as the -p generated,
>                        followed on the next line by the total value of the
>                        received coins, followed by any message from the
>                        server.
> 
> - -w (with outputfile) : withdraws coins for payment. Accepts a list of coin
>                        values to withdraw from stdin, and saves the
>                        coins.dat file to outputfile.
> 
> - -x (with no output file) : if old coins exist, returns the total value
> 
> - -x (with output file) : accepts a list of new coin denominations to create.
>                         Exchanges old coins for those values. Generates
>                         value and identifier just like -p
> 
> To use the client, the payer would run -l to get a list of coins. Then run
> - -w to withdraw the coins to a file, and mail them to the shop. The shop
> runs -l to determine the value. Then the shop decides what coins to
> generate, runs -p to process the coins, and records the unique identifier.
> The shop mails the output message off to the server. When the server's
> response comes back, the shop runs -s and receives the 128-bit value again.
> - From the identifier, the shop determines which transaction was just
> completed by the server, and delivers the goods to that customer.
> 
> Any ideas for changes/improvements? The biggest mistake I made in
> designing Magic Money was to leave out a field for the keyid of the bank
> which generated the coins. The only way to process coins from multiple
> banks is to try each bank's key in turn, keeping the files for each bank 
> in a different directory, or to have the user specify which bank the coins
> came from. I should write a Magic Money 2.0 which handles multiple
> currencies automatically. I'll do that if Magic Money coins take on enough
> value to make it worthwhile.
> 
>                                              Pr0duct Cypher
> 
> -----BEGIN PGP SIGNATURE-----
> Version: 2.3a
> 
> iQCVAgUBLdWtgMGoFIWXVYodAQHmOgP5AVyfF37rpUa0v+YheW5Mrp9SVVP+dxdl
> HRArT3tumzPXGm7aZSXswmVppHV+/ed/TeY+3Bc0+8AY1OAyuch5a8rBfUfAfG5O
> A5HRXaa23nTsSFsi+dPawKY+w0d5pyEYinXIiU4cYrsGqzUvIjTn2sUzHPyR+XYa
> sKpS3NxrN8s=
> =ktLe
> -----END PGP SIGNATURE-----
>