New Packet Def.
New Required Fields
In addition to the fields currently present in the existing data packet, it has been suggested that the following additions be made.
- time - absolute UTC block expiration date, after which time the block should be discarded by the client.
- computerid (user defined) - for use in stats to cluster/group statistics by individual machine.
- computer guid (machine computed) - unique identifier generated from semi-persistent entropy data specific to the machine so as to reduce the frequency this computed value changes. This value would allow unique identifcation of machines, allowing for more accurate estimates of total machine working, as well as isolation of invalid work computed by the same machine.
- ticket - secure hash computed value generated by keymaster on block creation (see opcodeauth.html) consisting of block specifics (keystart, length) and a keymaster secret and a salt value.
- coreid - which core was used to process a block, for client platforms where alternate optimized cores are provided.
- clientcpu - platform identifier that the block processing actually occurs on (for machines that have alternate secondary processor boards of a different type than the compile-time processor).
- testflag - boolean indicator specifying if the block is a “test” block.
- stuff from dan
- hardware detect id. - raw hardware detction flags, very cpu specific (vendor and processor stepping).
Possible Database Libraries
- Berkeley DBM (or GNU’s gdbm implementation) - this C library already exists on many OS hosts, showing its portability. Resulting database files are endian specific (?) and possibly have other platform specifics (?). Bulky in size(?), but functionality is well divided into separate files allowing easy inclusion of specific functionality.
- MySQL’s ISAM (*.ISM) or MYISAM (*.MYI) database format - MySQL provides C++ class interfaces for accessing and manipulating its database files. ISAM is platform/endian specific, however MYISAM format is fully transportable.
- Coldstore - a very object oriented C++ database library that is very Linux specific. Uses mmap and is ELF dependent (ELF is used to deduce structures schema of native structs/classes and adjust the stored data to the currently executing structure, allowing for easy schema changes.)
- Metakit - MetaKit is an efficient database library with a small footprint. It tries to fill the gap between flat-file, relational databases, and OODBMS. It features structured storage, transacted commit, on-demand loading and portability. It runs on Unix, Windows 3/95/NT, Mac, VMS and BeOS. Includes interfaces for C++, Python and Tcl.
- Reliable Database Manager (RDB) - transaction log based database format using text format for easy recovery. Designed for high efficiency and high portability.