I'm not asking about bitcoin's design...but am interested in the hashing capacity of a bitcoin miner.
To be short: do bitcoin miners(or some of them) accept customizable inputs and hash them in bulk(instead of accepting some more high-level instruction and do mining works automatically)?
The real question is, I've read some articles about a signing scheme of post-quantum cryptography, the Merkle Signature Scheme(MSS):
This new way of doing digital signature requires lots amount of hashes being calculated, for example:
a single One-Time-Signature(OTS) requires at least 512 times of hashes if we use SHA-256 with an output size of
If smaller output is desired, which requires a time-memory tradeoff, e.g. to reduce the size by nearly 8, it requires
2^8 * (256 / 8) = 8192hashes with an output size about
256 * 256 / 8 / 8 = 1024 Bytes; to reduce by 16, it requires
2^16 * (256 / 16) = 1048576hashes with an output size about 512 bytes.
each signature of MSS consists several OTSes, which are authenticated by chained binary trees(the OTS on one leaf is used to authenticate the underlying tree's root public key), which means, for n trees there exists n OTSes to be done.
- to calculate the tree's root public key, it may be necessary to hash the whole tree: with m levels, it takes about 2^m hashes.
And finally, in this way a life of
n*m may be achieved(the limit of doing signature). For example: if
2^80 signatures are being designed, with
n=4, m=20 and a tradeoff with 16, for worst case it takes
4*1048576 + 4*2^20=8388608 hashes(but with an attractive output size about
(256*256/16*4+80*256)/8=4608Bytes compared with popular algorithms).
This requirement seems too high for software(OpenSSL may do that in 3 seconds, but if one signature takes 3 seconds, why should we design a life of
2^80 signs?), but for hardware like bitcoin miners, it seems still too easy(not sure, I've never played with that). So I've been considering the possibility of adapting a bitcoin miner into a hardware acceleration for such signature algorithm. In order to do so, it's necessary to feed the miner with inputs that we want it to calculate. Is this possible?(I think it should, since they should at least allow some user-related parameters to be customized into hashcash tests...)