[hashcash] libfastmint, makefile & how to integrate (Re: Re: status of hashcash version 1?)

  • From: Adam Back <adam@xxxxxxxxxxxxxxx>
  • To: hashcash@xxxxxxxxxxxxx
  • Date: Tue, 3 Aug 2004 02:33:07 -0400

As a convenience I put the makefile I modified and the last change
from Jonathan (I think, confirm the below output corresponds to last) in:

        http://www.hashcash.org/source/current/hashcash-1.00/

(obviously you'll have to do something to that make file as it is P4
specific).

output (on p4 3.06Ghz).

    Rate  Name (* machine default)
 
  1715641 ANSI Compact 1-pipe
  1639391 ANSI Standard 1-pipe
   958085 ANSI Ultra-Compact 1-pipe
  2379761 ANSI Compact 2-pipe
  2078101 ANSI Standard 2-pipe
   ---    PowerPC Altivec Standard 1x4-pipe  (Not available on this machine)
   ---    PowerPC Altivec Compact 2x4-pipe  (Not available on this machine)
   ---    PowerPC Altivec Standard 2x4-pipe  (Not available on this machine)
  3278782 AMD64/x86 MMX Compact 1x2-pipe
  4098477 AMD64/x86 MMX Standard 1x2-pipe *

btw What would I have to do to call libfastmint when integrating.  I
took a look just now and the test seems hardcoded to :

        static const char *test_string = 
"1:20:040404:foo@xxxxxxxx::0123456789a\bcdef:000000000";
        static const int test_tail = 52;  /* must be less than 56 */
        static const int bit_stats[] = { 8, 10, 16, 20, 22, 24, 26, 28, 30, 0 };

which is then used to fill a char block[SHA1_INPUT_BYTES] = {0}; and
then the mint functions are called on that block:

                /* set up SHA-1 block */
                strncpy(block, test_string, SHA1_INPUT_BYTES);
                block[test_tail] = 0x80;
                memset(block+test_tail+1, 0, 59-test_tail);
                PUT_WORD(block+60, test_tail << 3);
                                                                                
which looks like the SHA1 padding setup.  What would the code look
like to call this with arbitrary email addresses and extensions?

Adam

On Tue, Aug 03, 2004 at 05:20:50AM +0100, Jonathan Morton wrote:
> >Hubert> I have access to an Alpha that I can test out.  What do I need
> >Hubert> to do?
> >
> >hy3chan@alpha0:~/hashcash-1.00$ ./fastmint_benchtest
> >    Rate  Name (* machine default)
> >    74870 ANSI Compact 1-pipe
> >    70191 ANSI Standard 1-pipe *
> >    42353 ANSI Compact 2-pipe
> >    30967 ANSI Standard 2-pipe
> >   ---    PowerPC Altivec Standard 1x4-pipe     (Not available on this 
> >machine)
> >Best minter: ANSI Compact 1-pipe (74870 hashes/sec)
> >
> >This is on an Alpha EV4 (21064 -- I think the earliest type of Alpha),
> >approx. 200 MHz.
> 
> Hmmm, you don't seem to have the latest version there.  Take a look at 
> some of my more recent posts, you should find an archive attached to 
> one of them, which you can overwrite part of the v1-rc with.  You'll 
> also need to add stuff to the Makefile so that it builds properly, 
> because there are additional cores with their own source and object 
> files.
> 
> Still, that seems to work OK (the benchmark includes a sanity check on 
> the result), even if it isn't particularly fast.  You might want to try 
> using different compiler options and/or a better compiler - 
> register-rich architectures should generally be faster with the 
> "Standard" cores, not the "Compact".
> 
> --------------------------------------------------------------
> from:     Jonathan "Chromatix" Morton
> mail:     chromi@xxxxxxxxxxxxxxxxxxxxx
> website:  http://www.chromatix.uklinux.net/
> tagline:  The key to knowledge is not to rely on people to teach you it.
> 

Other related posts: