# Re: New getwork

Post by: satoshi on November 24, 2010, 05:21:01 PM<br>
Last edit: November 24, 2010, 05:31:31 PM by satoshi

Quote from: jgarzik on November 24, 2010, 04:47:42 AM

> I suspect something weird going on with ByteReverse (or lack thereof). &nbsp;It's quite unclear whether or not 'data' and 'nonce' must be byte-reversed, and in what way.

getwork does the byte-reversing. &nbsp;midstate, data and hash1 are already big-endian, and you pass data back still big-endian, so you work in big-endian and don't have to do any byte-reversing. &nbsp;They're the same data that is passed to the ScanHash_ functions. &nbsp;You can take midstate, data and hash1, put them in 16-byte aligned buffers and pass them to a ScanHash_ function, like ScanHash(pmidstate, pdata + 64, phash1, nHashesDone). &nbsp;If a nonce is found, patch it into data and call getwork.

I should probably change the ScanHash_ functions to use pdata instead of pdata + 64 so they're consistent.

target is little endian, it's supposed to be the same as how m0mchil's did it. &nbsp;(if it's not, then it should be fixed) &nbsp;That's the only case where you would use byte reverse. &nbsp;I think you do it like: if ByteReverse((unsigned int\*)hash\[6\]) < (unsigned int\*)target\[6\].

Quote from: DiabloD3 on November 24, 2010, 11:31:11 AM

> Satoshi, please fix your implementation of getwork so it complies with m0mchill's specification

This is the new spec. &nbsp;It shouldn't be hard to update your miner to use it.

The changes are:<br>
\- It does not return work when you submit a possible hit, only when called without parameter.<br>
\- The block field has been split into data and hash1.<br>
\- state renamed to midstate for consistency.<br>
\- extranonce not needed.

---

Source file: bitcoin-forum-satoshi-nakamoto.tgz

External link:
